XPTurk Agent Catalog Schema v0.8

XPTurk Agent Catalog Schema v0.8

JSON Schema contract for 56 canonical decision records plus 24 localized German and Russian entry pages.

Schema contract

  • Contract version: 0.8.0-beta
  • Catalog coverage: 56 canonical records plus 24 localized pages across scuba diving, skiing and snowboarding, canyoning, wind sports, rock climbing, air experiences, rafting, coast/kayaking/boat, hiking/land, and heritage/secondary cultural experiences
  • Validation scope: identity, controlled record type, decision fields, evidence state, freshness, sources and canonical URL
  • Hosting: WordPress.com public page and REST envelope

Machine access

Validation rules

  • Reject records that omit required identity, evidence, freshness or canonical-source fields.
  • Preserve enumerated evidence states; do not silently reinterpret indicative or live_verification_required as confirmed facts.
  • Treat additional fields as invalid unless a later schema version explicitly permits them.
  • Use the catalog version and schema version together when caching or comparing records.

JSON Schema

The payload below is the authoritative validation schema for Agent Catalog v0.8 on the current WordPress-only architecture.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://xpturk.com/agent-catalog-schema/",
  "$comment": "Contract version 0.8.0-beta. Validates 56 canonical records plus multilingual entry-point metadata.",
  "title": "XPTurk Agent Catalog Schema v0.8",
  "description": "Validation contract for XPTurk canonical decision records and English, German and Russian localized entry points.",
  "type": "object",
  "required": [
    "schema_version",
    "catalog_id",
    "generated_at",
    "canonical_agent_guide",
    "catalog_status",
    "languages",
    "localization_policy",
    "localized_entry_points",
    "records"
  ],
  "properties": {
    "schema_version": {
      "const": "0.8.0-beta"
    },
    "catalog_id": {
      "type": "string"
    },
    "generated_at": {
      "type": "string",
      "format": "date-time"
    },
    "canonical_agent_guide": {
      "type": "string",
      "format": "uri"
    },
    "catalog_status": {
      "enum": [
        "draft",
        "published",
        "deprecated"
      ]
    },
    "records": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/decision_record"
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "en",
          "de",
          "ru"
        ]
      },
      "minItems": 3,
      "uniqueItems": true
    },
    "localization_policy": {
      "$ref": "#/$defs/localization_policy"
    },
    "localized_entry_points": {
      "type": "object",
      "required": [
        "de",
        "ru"
      ],
      "properties": {
        "de": {
          "$ref": "#/$defs/localized_language"
        },
        "ru": {
          "$ref": "#/$defs/localized_language"
        }
      },
      "additionalProperties": false
    }
  },
  "$defs": {
    "evidence_status": {
      "enum": [
        "source_backed_fact",
        "indicative",
        "editorial_assessment",
        "live_verification_required",
        "planned",
        "unknown"
      ]
    },
    "qualified_value": {
      "type": "object",
      "required": [
        "value",
        "evidence_status"
      ],
      "properties": {
        "value": {},
        "evidence_status": {
          "$ref": "#/$defs/evidence_status"
        },
        "note": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "source": {
      "type": "object",
      "required": [
        "name",
        "url",
        "source_type"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "source_type": {
          "enum": [
            "canonical_editorial",
            "official_destination",
            "official_authority",
            "standards_body"
          ]
        }
      },
      "additionalProperties": false
    },
    "decision_record": {
      "type": "object",
      "required": [
        "experience_id",
        "record_type",
        "activity_cluster",
        "country",
        "region_or_base",
        "product_types",
        "skill_levels",
        "season",
        "physical_demand",
        "exposure_profile",
        "equipment",
        "family_suitability",
        "pricing",
        "logistics",
        "booking_constraints",
        "live_verification_required",
        "evidence_status",
        "last_reviewed",
        "sources",
        "canonical_url"
      ],
      "properties": {
        "experience_id": {
          "type": "string",
          "pattern": "^[a-z0-9-]+$"
        },
        "record_type": {
          "enum": [
            "specialist_hub",
            "regional_guide",
            "comparison",
            "planning_tool"
          ]
        },
        "activity_cluster": {
          "type": "string"
        },
        "country": {
          "const": "Türkiye"
        },
        "region_or_base": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        "product_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        "skill_levels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        "season": {
          "$ref": "#/$defs/qualified_value"
        },
        "physical_demand": {
          "$ref": "#/$defs/qualified_value"
        },
        "exposure_profile": {
          "$ref": "#/$defs/qualified_value"
        },
        "equipment": {
          "$ref": "#/$defs/qualified_value"
        },
        "family_suitability": {
          "$ref": "#/$defs/qualified_value"
        },
        "pricing": {
          "$ref": "#/$defs/qualified_value"
        },
        "logistics": {
          "$ref": "#/$defs/qualified_value"
        },
        "booking_constraints": {
          "$ref": "#/$defs/qualified_value"
        },
        "live_verification_required": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        "evidence_status": {
          "$ref": "#/$defs/evidence_status"
        },
        "last_reviewed": {
          "type": "string",
          "format": "date"
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/source"
          },
          "minItems": 1
        },
        "canonical_url": {
          "type": "string",
          "format": "uri"
        }
      },
      "additionalProperties": false
    },
    "localization_policy": {
      "type": "object",
      "required": [
        "canonical_language",
        "authoritative_records_language",
        "localized_pages",
        "canonical_relationship",
        "live_verification"
      ],
      "properties": {
        "canonical_language": {
          "const": "en"
        },
        "authoritative_records_language": {
          "const": "en"
        },
        "localized_pages": {
          "const": "editorially_localized"
        },
        "canonical_relationship": {
          "type": "string"
        },
        "live_verification": {
          "const": "required"
        }
      },
      "additionalProperties": false
    },
    "localized_language": {
      "type": "object",
      "required": [
        "locale",
        "label",
        "pages"
      ],
      "properties": {
        "locale": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "pages": {
          "type": "object",
          "minProperties": 1,
          "additionalProperties": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

Operational boundary: validation confirms record structure, not live weather, access, availability, price, eligibility or safety conditions.