EcoCitizenZ
HomeBinding RegistryOpenAPI x-ecz-id reference
Documentation only — no live projection

OpenAPI x-ecz-id reference

Canonical OpenAPI 3.1 extension fields that bind an API spec to a parent ECZ-ID, an API Passport, and an optional Agent Credential, and instruct relying parties to re-check before reliance.

Purpose

The x-ecz-id OpenAPI extension lets an API publisher declare which ECZ-ID parent identity, API Passport, and optional Agent Credential the API is associated with, where the canonical Resolver projection lives, and that relying parties must re-check current state before reliance. The extension is discovery only. Resolver remains the public proof surface for current state.

Fields

FieldRequiredPurpose
operator_ecz_idyesParent ECZ-ID of the operator (org / publisher).
api_passport_idyesCanonical API Passport ID issued by Backend/Core.
api_originyesAuthorised origin that serves this API.
spec_hashyesSHA-256 of the canonical OpenAPI document.
resolver_urlyesPublic Resolver projection URL for this passport.
agent_credential_idnoOptional agent credential when the API is operated by a named agent.
recheck_before_reliancerecommendedBoolean — instructs relying parties to re-query the Resolver before relying on this API.
policy_moderecommendedLocal hint such as require_resolver_ok / require_resolver_ok_recent — does not bind the relying party.

Example

openapi.yaml
openapi: 3.1.0
info:
  title: Example Support API
  version: "1.0.0"
  x-ecz-id:
    operator_ecz_id: ECZ-GB-XXXXXX
    api_passport_id: ECZ-GB-XXXXXX::API-2Q7X9B
    api_origin: https://api.example.com
    spec_hash: sha256:<hash-of-canonical-spec>
    resolver_url: https://resolver.ecocitizenz.org/p/ECZ-GB-XXXXXX/API/2Q7X9B
    agent_credential_id: ECZ-GB-XXXXXX::AGENT-4F9Q2A
    recheck_before_reliance: true
    policy_mode: require_resolver_ok_recent

What x-ecz-id does NOT do

  • It does not assert that the API is risk-free, vetted as compliant, sanctioned for any specific use, or underwritten.
  • It does not bypass the relying party’s local policy.
  • It does not replace the Resolver — relying parties still re-check current state at the Resolver URL.
  • It does not carry secrets — never embed API keys, OAuth tokens, private keys, or webhook secrets.
  • do_not_infer and no_safety_or_approval_inference: presence of the extension does not imply any safety, compliance, or approval status.

Setup path

API Passports are issued by Backend/Core and set up through TrustOps. Developer Gateway is documentation only. After setup, the spec hash and Resolver projection are owned by Backend/Core and visible on the Resolver.

Live proof posture

Live public binding projection for this documentation surface has not yet been independently proven. These docs describe the code-proven and test-proven model only.

ECZ-ID separates setup, verification state, and public proof. Developer Gateway documents setup paths and verifier guidance. TrustOps handles setup. Resolver remains the public proof surface. The verifier does not create or change verification state. Re-check before reliance. Local policy decides.