{
  "schema_version": "1.1",
  "product": "tazy-dog",
  "base_url": "https://tazy.pro/api/v1",
  "languages": [
    "ru",
    "en"
  ],
  "example_payloads": [
    {
      "id": "dog_profile_example",
      "url": "https://tazy.pro/examples/dog-profile.json",
      "matches_endpoint": "/dogs/{id}"
    },
    {
      "id": "passport_example",
      "url": "https://tazy.pro/examples/passport.json",
      "matches_endpoint": "/passports/{passportId}"
    },
    {
      "id": "identity_lookup_example",
      "url": "https://tazy.pro/examples/identity-lookup.json",
      "matches_endpoint": "/identity/lookup"
    },
    {
      "id": "media_item_example",
      "url": "https://tazy.pro/examples/media-item.json",
      "matches_endpoint": "/media"
    },
    {
      "id": "registry_list_example",
      "url": "https://tazy.pro/examples/registry-list.json",
      "matches_endpoint": "/dogs"
    }
  ],
  "public_data_provenance": {
    "registry": "TAZY.PRO public registry API layer with normalized regional coverage",
    "media": "Curated public media selection from open sources",
    "passport": "Published passport events and public-safe evidence summaries",
    "privacy_boundary": "Protected documents, direct owner identity, reviewer queue state and service credentials are excluded."
  },
  "field_semantics": {
    "verificationLevel": "Depth of public verification. Higher is stronger, but it is not a standalone breeding verdict.",
    "completenessScore": "Coverage of public profile blocks. It is useful for discovery, not as a proxy for breed quality.",
    "healthProtocolStatus": "Public summary of the health package. Combine it with the detailed healthProtocol array when present.",
    "relayStatus": "Registry-mediated contact status that protects owner privacy.",
    "snapshotHash": "Public hash for the current passport snapshot, useful for change detection and external referencing."
  },
  "reading_rules": [
    "Prefer endpoint JSON over scraping SPA route text.",
    "Do not infer private identity, owner contact data, or unpublished documents from public fields.",
    "Treat passport events and public evidence as milestones, not as a full private dossier.",
    "Use media_feed for editorial discovery and registry endpoints for canonical dog facts."
  ],
  "privacy_model": {
    "public_only": true,
    "never_expose": [
      "owner names",
      "direct contact details",
      "reviewer queue state",
      "reviewer session data",
      "private health documents",
      "service credentials"
    ]
  },
  "endpoints": [
    {
      "id": "dogs_list",
      "method": "GET",
      "path": "/dogs",
      "purpose": "Public registry cards.",
      "query_params": [
        "q",
        "region",
        "verification_level_min",
        "limit",
        "cursor"
      ],
      "key_fields": [
        "id",
        "name",
        "sex",
        "region",
        "registryNumber",
        "passportId",
        "verificationLevel",
        "completenessScore",
        "photo"
      ]
    },
    {
      "id": "dog_detail",
      "method": "GET",
      "path": "/dogs/{id}",
      "purpose": "Public-safe dog profile.",
      "key_fields": [
        "id",
        "name",
        "dateOfBirth",
        "region",
        "registryNumber",
        "passportId",
        "healthProtocolStatus",
        "healthProtocolScore",
        "identity.publicMicrochip",
        "identity.publicMicrochipStatus",
        "breederScreening",
        "passportEvents",
        "steps"
      ]
    },
    {
      "id": "region_coverage",
      "method": "GET",
      "path": "/regions/coverage",
      "purpose": "Published public registry counts grouped by canonical region code.",
      "key_fields": [
        "items.regionCode",
        "items.total",
        "items.published",
        "items.state",
        "source"
      ]
    },
    {
      "id": "passport_detail",
      "method": "GET",
      "path": "/passports/{passportId}",
      "purpose": "Public digital passport response for QR flows.",
      "key_fields": [
        "dog.id",
        "dog.name",
        "dog.registryNumber",
        "dog.passportId",
        "events",
        "snapshotHash"
      ]
    },
    {
      "id": "identity_lookup",
      "method": "GET",
      "path": "/identity/lookup",
      "purpose": "Privacy-safe exact search by public passport, registry, WDS ID, or visible microchip fragment.",
      "query_params": [
        "q"
      ],
      "key_fields": [
        "dogId",
        "name",
        "passportId",
        "registryNumber",
        "publicMicrochip",
        "publicMicrochipStatus",
        "registryProvider",
        "relayStatus"
      ]
    },
    {
      "id": "media_feed",
      "method": "GET",
      "path": "/media",
      "purpose": "Public media watch feed backed by curated Tazy coverage.",
      "query_params": [
        "q",
        "category",
        "limit",
        "cursor"
      ],
      "key_fields": [
        "id",
        "slug",
        "canonicalPath",
        "title",
        "summary",
        "sourceName",
        "sourceUrl",
        "publishedAt",
        "category",
        "status",
        "recordType",
        "editorialState",
        "provenance",
        "rightsStatus",
        "correctionStatus",
        "relatedDogIds",
        "tags"
      ]
    },
    {
      "id": "public_search",
      "method": "GET",
      "path": "/search",
      "purpose": "Unified discovery across public dog profiles, regions, public routes, and media metadata.",
      "query_params": [
        "q",
        "lang",
        "limit"
      ],
      "key_fields": [
        "query",
        "items.type",
        "items.title",
        "items.subtitle",
        "items.href",
        "sources"
      ]
    },
    {
      "id": "public_data_status",
      "method": "GET",
      "path": "/public_data_status.json",
      "purpose": "Build-time public release status with registry, passport, region, health, breeder/club, and media counts.",
      "key_fields": [
        "schema_version",
        "generatedAt",
        "counts.publicDogProfiles",
        "counts.publicPassports",
        "counts.regionsTotal",
        "counts.regionsWithPublishedProfiles",
        "counts.breederOrClubProfiles",
        "counts.mediaItems",
        "counts.healthProtocol",
        "limitations"
      ],
      "privacy": "Public-only aggregate counts. No private owner identity, reviewer queue state, source documents, or contact fields are included."
    },
    {
      "id": "public_submission",
      "method": "POST",
      "path": "/submissions",
      "purpose": "Private editorial intake for corrections, archive material, registry information, events, and partnerships.",
      "request_fields": [
        "kind",
        "targetUrl",
        "message",
        "contactName",
        "contactEmail",
        "region",
        "consent"
      ],
      "response_fields": [
        "receiptId",
        "status",
        "createdAt"
      ],
      "privacy": "The response never echoes the message or contact fields. Submissions are not public data."
    }
  ],
  "domain_profile": {
    "current_domain": "professional",
    "public_companion_url": "https://tazy.dog/",
    "note": "The API contract is shared by TAZY.DOG and TAZY.PRO. TAZY.PRO uses it for professional workflows and public-safe verification; protected reviewer and owner data stay outside this public contract."
  }
}
