# schemas/relationship-route-locator-bucket.schema.json

Browser-rendered handoff of repository-authored JSON. Source identity: `schemas/relationship-route-locator-bucket.schema.json`. Links and original summaries are shown; external source content is not redistributed.

    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://chris-page-gov.github.io/okf-uk-living/schemas/relationship-route-locator-bucket.schema.json",
      "title": "A Life in the UK relationship route locator bucket",
      "type": "object",
      "required": ["schema", "generated_at", "hash_algorithm", "bucket", "routes", "counts"],
      "properties": {
        "schema": {"const": "okf-rich-relationship-route-locator-bucket.v1"},
        "generated_at": {"type": "string", "minLength": 1},
        "hash_algorithm": {"const": "sha256-utf8-first-byte-hex"},
        "bucket": {"$ref": "#/$defs/prefix"},
        "routes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["route", "chunks", "planes"],
            "properties": {
              "route": {"$ref": "#/$defs/route"},
              "chunks": {
                "type": "array", "minItems": 1, "uniqueItems": true,
                "items": {"$ref": "#/$defs/path"}
              },
              "planes": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "object",
                  "required": ["name", "chunks", "assertions", "assertion_ids_sha256"],
                  "properties": {
                    "name": {"type": "string", "minLength": 1},
                    "chunks": {
                      "type": "array", "minItems": 1, "uniqueItems": true,
                      "items": {"$ref": "#/$defs/path"}
                    },
                    "assertions": {"type": "integer", "minimum": 1},
                    "assertion_ids_sha256": {"$ref": "#/$defs/sha256"}
                  },
                  "additionalProperties": true
                }
              }
            },
            "additionalProperties": true
          }
        },
        "counts": {
          "type": "object",
          "required": ["routes", "chunk_references"],
          "properties": {
            "routes": {"type": "integer", "minimum": 1},
            "chunk_references": {"type": "integer", "minimum": 1}
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": true,
      "$defs": {
        "prefix": {"type": "string", "pattern": "^[0-9a-f]{2}$"},
        "route": {"type": "string", "minLength": 1, "pattern": "^[^\\s?#]+$"},
        "path": {"type": "string", "minLength": 1, "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[^\\s]+$"},
        "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
      }
    }