{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rusholdlogistic.ru/ai/schema.json",
  "title": "Rusholding Logistics AI data feed schema",
  "description": "Schema for public AI/GEO JSON feeds published by rusholdlogistic.ru.",
  "type": "object",
  "oneOf": [
    { "$ref": "#/$defs/siteSummary" },
    { "$ref": "#/$defs/serviceCatalog" },
    { "$ref": "#/$defs/faqFeed" }
  ],
  "$defs": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "text": {
      "type": "string",
      "minLength": 1
    },
    "versionedFeed": {
      "type": "object",
      "required": ["version", "updated"],
      "properties": {
        "$schema": { "$ref": "#/$defs/url" },
        "version": { "$ref": "#/$defs/text" },
        "updated": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "license": { "$ref": "#/$defs/text" }
      },
      "additionalProperties": true
    },
    "siteSummary": {
      "allOf": [
        { "$ref": "#/$defs/versionedFeed" },
        {
          "type": "object",
          "required": ["site", "summary", "facts", "services", "priority_routes"],
          "properties": {
            "site": {
              "type": "object",
              "required": ["name", "url", "domain", "language", "country", "phone", "email"],
              "properties": {
                "name": { "$ref": "#/$defs/text" },
                "legal_name": { "$ref": "#/$defs/text" },
                "url": { "$ref": "#/$defs/url" },
                "domain": { "const": "rusholdlogistic.ru" },
                "language": { "$ref": "#/$defs/text" },
                "country": { "$ref": "#/$defs/text" },
                "city": { "$ref": "#/$defs/text" },
                "address": { "$ref": "#/$defs/text" },
                "phone": { "$ref": "#/$defs/text" },
                "email": { "$ref": "#/$defs/text" },
                "same_as": {
                  "type": "array",
                  "items": { "$ref": "#/$defs/url" }
                }
              },
              "additionalProperties": true
            },
            "summary": { "$ref": "#/$defs/text" },
            "stats": {
              "type": "object",
              "additionalProperties": {
                "type": ["string", "number", "integer", "boolean"]
              }
            },
            "facts": {
              "type": "array",
              "items": { "$ref": "#/$defs/fact" }
            },
            "home_faq": {
              "type": "array",
              "items": { "$ref": "#/$defs/qa" }
            },
            "services": {
              "type": "array",
              "items": { "$ref": "#/$defs/namedUrl" }
            },
            "geography": {
              "type": "array",
              "items": { "type": "object", "additionalProperties": true }
            },
            "priority_routes": {
              "type": "array",
              "items": { "$ref": "#/$defs/priorityRoute" }
            },
            "certifications": {
              "type": "array",
              "items": { "$ref": "#/$defs/text" }
            },
            "data_sources": {
              "type": "object",
              "additionalProperties": { "$ref": "#/$defs/url" }
            },
            "citation": { "$ref": "#/$defs/text" }
          },
          "additionalProperties": true
        }
      ]
    },
    "serviceCatalog": {
      "allOf": [
        { "$ref": "#/$defs/versionedFeed" },
        {
          "type": "object",
          "required": ["provider", "site", "capabilities", "contact", "service_area"],
          "properties": {
            "provider": { "$ref": "#/$defs/text" },
            "site": { "const": "rusholdlogistic.ru" },
            "capabilities": {
              "type": "array",
              "items": { "$ref": "#/$defs/capability" }
            },
            "contact": {
              "type": "object",
              "required": ["phone", "email", "form"],
              "properties": {
                "phone": { "$ref": "#/$defs/text" },
                "email": { "$ref": "#/$defs/text" },
                "form": { "$ref": "#/$defs/url" },
                "calculator": { "$ref": "#/$defs/url" },
                "hours": { "$ref": "#/$defs/text" }
              },
              "additionalProperties": true
            },
            "service_area": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "additionalProperties": true
        }
      ]
    },
    "faqFeed": {
      "allOf": [
        { "$ref": "#/$defs/versionedFeed" },
        {
          "type": "object",
          "required": ["site", "questions"],
          "properties": {
            "site": { "const": "rusholdlogistic.ru" },
            "questions": {
              "type": "array",
              "items": { "$ref": "#/$defs/qaWithUrl" }
            }
          },
          "additionalProperties": true
        }
      ]
    },
    "fact": {
      "type": "object",
      "required": ["value", "label", "text"],
      "properties": {
        "value": { "$ref": "#/$defs/text" },
        "label": { "$ref": "#/$defs/text" },
        "text": { "$ref": "#/$defs/text" }
      },
      "additionalProperties": true
    },
    "qa": {
      "type": "object",
      "required": ["q", "a"],
      "properties": {
        "q": { "$ref": "#/$defs/text" },
        "a": { "$ref": "#/$defs/text" }
      },
      "additionalProperties": true
    },
    "qaWithUrl": {
      "allOf": [
        { "$ref": "#/$defs/qa" },
        {
          "type": "object",
          "required": ["url"],
          "properties": {
            "url": { "$ref": "#/$defs/url" }
          },
          "additionalProperties": true
        }
      ]
    },
    "namedUrl": {
      "type": "object",
      "required": ["name", "url"],
      "properties": {
        "slug": { "$ref": "#/$defs/text" },
        "name": { "$ref": "#/$defs/text" },
        "url": { "$ref": "#/$defs/url" }
      },
      "additionalProperties": true
    },
    "priorityRoute": {
      "type": "object",
      "required": ["slug", "url", "answer"],
      "properties": {
        "slug": { "$ref": "#/$defs/text" },
        "url": { "$ref": "#/$defs/url" },
        "query_cluster": {
          "type": "array",
          "items": { "$ref": "#/$defs/text" }
        },
        "answer": { "$ref": "#/$defs/text" }
      },
      "additionalProperties": true
    },
    "capability": {
      "type": "object",
      "required": ["id", "name", "url"],
      "properties": {
        "id": { "$ref": "#/$defs/text" },
        "name": { "$ref": "#/$defs/text" },
        "description": { "$ref": "#/$defs/text" },
        "url": { "$ref": "#/$defs/url" },
        "modes": {
          "type": "array",
          "items": { "$ref": "#/$defs/text" }
        },
        "lines": {
          "type": "array",
          "items": { "$ref": "#/$defs/text" }
        },
        "main_routes": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "scope": {
          "type": "array",
          "items": { "$ref": "#/$defs/text" }
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}
