İçeriğe geç

Public API v1 sözleşmesi

Geliştirme · 0.0.0-dev

Yayın

Doküman
0.0.0-dev
Uygulama
0.0.0

Bu sayfa

Uygulama
0.0.0
Şema
api-v1

Bu sayfa kabul edilmiş API sözleşmesi ile public exposure manifestinden üretilir ve elle düzenlenmez. RPC ayrıntıları için operasyon kataloğuna, alan tanımları için public tip kataloğuna bakın.

Manifest durumu contract_projection_not_deployed; bu contract tanımı tek başına deployment kanıtı değildir.

Alan Değer
Contract munderecat-public-api-v1
Contract şema sürümü 1
Major 1
Manifest durumu contract_projection_not_deployed
Public operasyon 20
schema api_v1
postgrest_rpc_prefix /rest/v1/rpc
operation_revision_suffix _v1
permit_overloads false
expose_storage_relations false
source_partition exposure_manifest.public_surface
unversioned_alias forbidden
dispatch_major_source profile_and_rpc_suffix
dispatch_order major_before_operation
required_profile api_v1
major_mismatch_error unsupported_contract

Her versioned RPC yolu /rest/v1/rpc/{rpc_name} biçimindedir. Mantıksal operation key client ve envelope kimliğidir; dış RPC adı ise _v1 suffix’li allowlist değeridir. Storage relation’ları public değildir, overload ve unversioned alias kabul edilmez.

Type parameter Kural Kaynak
operation_response_data type_source operations.response_type
operation_response_data cardinality_source operations.data_cardinality
operation_response_data nullability_source state_payload_contract.states
operation_response_data public_type_closure required
Alan Tip Required Nullable
request_id uuid Evet Hayır
operation_id operation_key Evet Hayır
result_state result_state Evet Hayır
state_context api.state_context Evet Hayır
release_context api.release_context Evet Hayır
data operation_response_data? Evet Evet
page api.page? Evet Evet

page alanı her başarılı yanıtta bulunur; pagination yoksa null olur.

Alan Tip Required Nullable
request_id uuid Evet Hayır
operation_id operation_key? Evet Evet
error api.error Evet Hayır
release_context api.release_context? Evet Evet

release_context, nullable_only_before_dispatch kuralına bağlıdır.

Kural Değer
Success’ta zorunlu Evet
Transaction başında pin Evet
Bağımsız release pinlerini reddet Evet
Alan Tip Required Nullable
api_deployment_id uuid Evet Hayır
api_contract_release_id uuid Evet Hayır
api_operation_revision_id uuid Evet Hayır
code_release_id uuid Evet Hayır
schema_release_id uuid Evet Hayır
data_release_set_root sha256 Evet Hayır
policy_release_set_root sha256 Evet Hayır
exposure_manifest_root sha256 Evet Hayır
Durum Data Retryable Terminal
available required Hayır Evet
empty typed_empty Hayır Evet
pending absent Evet Hayır
unavailable absent Politikaya bağlı Evet
ambiguous typed_visible_set Hayır Evet
retired lifecycle_summary Hayır Evet

Discriminator result_state; union kapalıdır ve bilinmeyen durum contract_violation sayılır.

Durum Data State context Operation binding
available operation_cardinality nullable_fields Tüm uygun operasyonlar
empty typed_zero_length_list nullable_fields entity_occurrences_list, repetition_members_list, alignment_targets_list, annotations_list
pending null retry_after_or_status_required Tüm uygun operasyonlar
unavailable null reason_required Tüm uygun operasyonlar
ambiguous operation_ambiguity_path_minimum_two reason_required entity_current_resolvedata.target_entity_ids; alignment_targets_listdata
retired operation_lifecycle_path_required reason_required entity_exact_getdata.lifecycle; entity_current_resolvedata.lifecycle; curation_proposal_getdata.lifecycle
Alan Tip Required Nullable
reason_code string? Evet Evet
retry_after_ms integer? Evet Evet
status_resource_id uuid? Evet Evet
Invariant Değer
pending_requires_retry_or_status_resource true
non_retryable_forbids_retry_after true

Hata objesinin dört alanı her varyantta bulunur:

Alan Tip Required Nullable
code error_code Evet Hayır
retryable boolean Evet Hayır
detail_code string? Evet Evet
retry_after_ms integer? Evet Evet
Kod HTTP Retryable Public detail
invalid_request 400 Hayır validation_code_only
unauthenticated 401 Hayır absent
not_found_or_forbidden 404 Hayır absent
unsupported_contract 406 Hayır supported_major_metadata
conflict 409 Hayır conflict_code_only
continuation_invalid 409 Hayır absent
response_budget_exceeded 422 Hayır operation_limit_only
rate_limited 429 Evet retry_after_only
integrity_failure 503 Hayır incident_id_only
service_unavailable 503 Evet retry_after_only
timeout 504 Evet retry_after_only

Koda bağlı detail_code ve retry_after_ms kısıtları kapalı discriminator varyantlarında listelenir. Dispatch öncesi ve sonrası operation_id / release_context ilişkisi failure envelope varyantlarında gösterilir.

Kural Değer
Loading local_request_only_not_server_state
Terminal yanıt loading’i durdurur Evet
API Client
available content
empty empty
pending pending
unavailable unavailable
ambiguous ambiguous
retired retired
API Client
invalid_request error
unauthenticated signed_out
not_found_or_forbidden not_found
unsupported_contract update_required
conflict conflict
continuation_invalid refresh_required
response_budget_exceeded unavailable
rate_limited retrying
integrity_failure unavailable
service_unavailable unavailable
timeout retrying
Profil Roller Çalışma DB kontrolleri Red hatası
public_release_read anon, app_runtime, authenticated security_invoker release_visibility not_found_or_forbidden
curation_read authenticated security_invoker trusted_subject, current_curation_eligibility, current_revocation_state not_found_or_forbidden
curation_write authenticated reviewed_security_definer trusted_subject, current_curation_eligibility, current_revocation_state, current_authority_epoch, current_freeze_epoch, exact_policy_release not_found_or_forbidden
Alan Değer
Strateji opaque_authenticated_cursor
Yön forward_only
Varsayılan sayfa 50
Azami sayfa 100
Cursor TTL 900 saniye
Kimlik doğrulama hmac_sha256_rotatable_server_key
Toplam sayı omitted
Deterministik tiebreaker operation_declared_stable_uuid

Cursor alanları: cursor_schema_version, api_deployment_id, api_contract_release_id, api_operation_revision_id, data_release_set_root, policy_release_set_root, query_shape_sha256, authorization_subject_sha256, visibility_scope_sha256, order_key, page_size, expires_at.

Cursor rejection nedenleri: expired, signature_mismatch, operation_mismatch, deployment_mismatch, contract_mismatch, release_mismatch, policy_mismatch, query_shape_mismatch, principal_mismatch, visibility_mismatch, page_size_escalation.

Kural Değer
measurement_scope complete_operation_response
over_budget_behavior fail_before_response_serialization
partial_response forbidden
error response_budget_exceeded
chapter_reconstruction all_or_nothing
Profil DB statement Item Byte P95 ms Timeout ms
point_read 8 1 262144 100 1000
chapter_read 12 50000 16777216 350 2500
bounded_list 8 100 524288 150 1500
graph_list 12 100 1048576 250 2000
curation_write 20 1 262144 500 3000
Kural Değer
canonicalization_profile curation-proposal-json-v1
freeze_point before_insert
persist_behavior insert_exact_immutable_revision
change_behavior submit_successor_with_parent_binding
review_binding proposal_revision_id_and_payload_root

Zorunlu commitment’lar: proposal_payload_root, action_inventory_root, target_inventory_root, evidence_inventory_root, expected_state_root, authority_snapshot_root, policy_root.

Değişiklik Sınıflama
operation_added additive_optional_contract_behavior
optional_response_field_added additive_optional_contract_behavior
required_field_added required_public_contract_behavior_removed_or_reinterpreted
field_removed required_public_contract_behavior_removed_or_reinterpreted
field_type_or_cardinality_changed required_public_contract_behavior_removed_or_reinterpreted
result_or_error_meaning_changed required_public_contract_behavior_removed_or_reinterpreted
authorization_weakened authorization_or_disclosure_weakened_incompatibly
supported_tuple_removed_without_boundary supported_release_tuple_invalidated_without_successor_or_major_boundary

Contract kaynak sınıfları: accepted_api_contract, exposure_manifest.public_surface, accepted_openapi_projection.

Çıktı sınıfları: openapi_v1, typescript_api_types_v1, typescript_operation_client_v1.

Zorunlu generator header alanları: generator_id, generator_version, api_contract_root, exposure_manifest_root, openapi_root.

Politika Değer
manual_edit_behavior reject
private_type_behavior reject
drift_behavior release_blocker
type_dependency_closure exact_transitive_public_surface
unconstrained_json_behavior reject
result_union closed_discriminated_union
error_union closed_discriminated_union
typescript_exhaustiveness_check required_never
unknown_variant_behavior release_blocker

Repo artifact’ları packages/contracts/generated/openapi-v1.json, packages/contracts/generated/api-v1.ts ve packages/contracts/generated/client-v1.ts dosyalarıdır.

Bunlar dokümantasyonun girdisi değildir; contract ve exposure manifestinin aynı doğrulanmış üretiminden çıkan makine arayüzleridir.