{
  "schema_version": "qaz.bio.data-contract.v1",
  "canonical_url": "https://qaz.bio/data/data-contract.json",
  "scope": "reviewed_public_layer_only",
  "entity_id_namespace": "qbio:",
  "statement_id_namespace": "qbst:",
  "languages": ["kk", "ru", "en"],
  "formats": {
    "public_index": "https://qaz.bio/data/public-index.json",
    "public_index_legacy": "https://qaz.bio/data/public-index-legacy.json",
    "entities_json_filtered": "https://qaz.bio/api/v1/entities.json?q={query}&kind={person_or_organisation}&source_system={source_system}&completeness={roles_aliases_relationships_places_identifiers_facts}",
    "entities_ndjson": "https://qaz.bio/api/v1/entities.ndjson",
    "entities_ndjson_filtered": "https://qaz.bio/api/v1/entities.ndjson?kind={person_or_organisation}&source_system={source_system}&completeness={roles_aliases_relationships_places_identifiers_facts}",
    "entities_csv": "https://qaz.bio/api/v1/entities.csv",
    "entities_csv_filtered": "https://qaz.bio/api/v1/entities.csv?kind={person_or_organisation}&source_system={source_system}&completeness={roles_aliases_relationships_places_identifiers_facts}",
    "statements_ndjson": "https://qaz.bio/api/v1/statements.ndjson",
    "relationships_ndjson": "https://qaz.bio/api/v1/relationships.ndjson",
    "relationships_ndjson_filtered": "https://qaz.bio/api/v1/relationships.ndjson?as_of={YYYY-MM-DD}",
    "relationships_csv": "https://qaz.bio/api/v1/relationships.csv",
    "relationships_csv_filtered": "https://qaz.bio/api/v1/relationships.csv?as_of={YYYY-MM-DD}",
    "research_pack": "https://qaz.bio/api/v1/export/research-pack.zip?locale={kk_ru_en}",
    "profile_brief": "https://qaz.bio/api/v1/profiles/{p_or_o}/{slug}/brief.md?locale={kk_ru_en}",
    "statements_ndjson_filtered": "https://qaz.bio/api/v1/statements.ndjson?kind={person_or_organisation}&property={property}&source_system={source_system}",
    "facets": "https://qaz.bio/api/v1/facets",
    "qazgeo_places": "https://qaz.bio/api/v1/qazgeo/places",
    "change_feed": "https://qaz.bio/api/v1/changes?since={sequence}",
    "change_feed_ndjson": "https://qaz.bio/api/v1/changes.ndjson?since={sequence}",
    "project_consumers": "https://qaz.bio/data/project-consumers.json",
    "reconciliation": "https://qaz.bio/api/v1/reconcile?q={query}&kind={person_or_organisation}&limit={limit}",
    "compare": "https://qaz.bio/api/v1/compare?ids={entity_id_1},{entity_id_2}",
    "timeline": "https://qaz.bio/api/v1/entities/{entity_id}/timeline",
    "correction_intake": "https://qaz.bio/api/v1/corrections",
    "correction_status": "https://qaz.bio/api/v1/corrections/{receipt_id}",
    "identity": "https://qaz.bio/api/v1/identity/{qbio_id}",
    "identity_exact_resolution": "https://qaz.bio/api/v1/identity/resolve?system={qpolity_or_qazvision}&local_id={stable_local_id}",
    "identity_links_batch": "https://qaz.bio/api/v1/identity/links?ids={qbio_id_1},{qbio_id_2}"
  },
  "public_filters": {
    "entities_json.q": "normalized substring across public names, aliases, IDs, summaries, roles, places, relationships and source references",
    "entities_json.kind": ["person", "organisation"],
    "entities_json.completeness": ["roles", "aliases", "relationships", "places", "identifiers", "facts"],
    "entities_json.source_system": "one public source_refs.system value",
    "entities_ndjson.kind": ["person", "organisation"],
    "entities_ndjson.completeness": ["roles", "aliases", "relationships", "places", "identifiers", "facts"],
    "entities_ndjson.source_system": "one public source_refs.system value",
    "statements_ndjson.kind": ["person", "organisation"],
    "statements_ndjson.property": ["name", "alias", "description", "role", "place", "relationship", "identifier", "external_reference", "fact.<summary_key>"],
    "statements_ndjson.source_system": "only applies to external_reference statement values"
  },
  "schemas": {
    "entity": "https://qaz.bio/schemas/public-entity.schema.json",
    "entity_collection": "https://qaz.bio/schemas/public-entity-collection.schema.json",
    "statement": "https://qaz.bio/schemas/public-statement.schema.json",
    "timeline": "https://qaz.bio/schemas/public-timeline.schema.json",
    "change": "https://qaz.bio/schemas/public-change.schema.json",
    "relationship": "https://qaz.bio/schemas/public-relationship.schema.json",
    "compare": "https://qaz.bio/schemas/public-compare.schema.json",
    "qazgeo_place_collection": "https://qaz.bio/schemas/qazgeo-place-collection.schema.json",
    "identity": "https://qaz.bio/schemas/public-identity.schema.json",
    "identity_links": "https://qaz.bio/schemas/public-identity-links.schema.json",
    "research_pack": "qaz.bio.research-pack.v1",
    "profile_brief": "qaz.bio.profile-brief.v1"
  },
  "facet_shapes": {
    "organisation_registry": {
      "scope": "published_organisation_profiles_only",
      "coverage": ["with_bin", "with_registration_date", "with_activity", "with_leader", "with_legal_status_history", "with_officers", "with_parent_links"],
      "not_yet_modeled": [],
      "semantics": "Counts are calculated from explicit published fields and strict eGov BIN identifiers. Legal-status history, officer and parent-link values require independently reviewed evidence; missing values do not infer legal status, officer roles or organisational hierarchy."
    }
  },
  "date_semantics": {
    "evidence.captured_at": "time when the source was retrieved",
    "publication.reviewed_at": "time when the reviewed profile was published or updated",
    "role.position_id": "stable identifier of the post independent of its holder",
    "identifier.value": "explicit external registry identifier; the reviewed projection currently supports 12-digit eGov BIN values",
    "qualifiers.start_date": "start of the asserted role or relationship; preserves reviewed YYYY, YYYY-MM or YYYY-MM-DD precision without inventing a day",
    "qualifiers.end_date": "end of the asserted role or relationship; preserves reviewed YYYY, YYYY-MM or YYYY-MM-DD precision without inventing a day",
    "timeline.event_id": "stable identifier of one reviewed role or relationship period",
    "timeline.status": "current when the reviewed period has a start date and no end date, ended when an end date is present, otherwise undated",
    "change.sequence": "monotonic public checkpoint; a since value is exclusive, so consumers resume with the last processed sequence",
    "change.occurred_at": "time when the public publication event was recorded",
    "change.event_type": "the public feed contains entity.published and reviewed identity.linked, identity.unlinked or identity.superseded events"
  },
  "guarantees": [
    "Candidate and review records are excluded from every public format.",
    "Every public profile has at least one evidence receipt.",
    "Every public child claim has an evidence receipt.",
    "Reconciliation results are suggestions and never merge or publish an identity.",
    "Name-search resolution is not identity proof; only an active reviewed exact system and local_id link resolves through the identity API.",
    "Federated links are separate from official identifiers and external registry IDs, and contain only approved public metadata.",
    "Timeline events are a projection of published role and relationship claims; the absence of an end date is not an inferred appointment or succession.",
    "The public change feed contains only published entity events; consumers must persist sequence and request changes with an exclusive since checkpoint.",
    "Correction requests are receipts, not public facts; they change profiles only after editorial review.",
    "Comparison requests are bounded to two to four requested public IDs and return only selected published profiles plus explicit missing IDs.",
    "Filtered entity JSON, NDJSON and CSV use the same public-only profile projection; q, kind, source_system and completeness are selection controls, not a second data layer.",
    "The QazGeo place collection contains only reviewed geographic claims, keeps text-only places explicit, and never exposes candidate-only location rows.",
    "Profile briefs and research packages are generated from the same reviewed public projection and retain profile URLs, source URLs and review dates.",
    "Network CSV exports contain only reviewed relationship edges; a filtered browser export reflects the current search, type and date controls."
  ]
}
