# schemas/life-course-family.v1.schema.json

Browser-rendered handoff of repository-authored JSON. Source identity: `schemas/life-course-family.v1.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/life-course-family.v1.schema.json",
      "title": "A Life in the UK life-course family dossier",
      "type": "object",
      "required": [
        "schema", "id", "title", "aliases", "description", "status",
        "assertion_status", "life_course_domain", "enclosing_processes",
        "situations", "user_needs", "interaction_boundary", "applicability",
        "actors", "journeys", "dependencies", "sources", "limitations",
        "review", "narrative"
      ],
      "properties": {
        "schema": {"const": "life-course-family.v1"},
        "id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
        "title": {"type": "string", "minLength": 1},
        "aliases": {"type": "array", "items": {"type": "string", "minLength": 1}},
        "description": {"type": "string", "minLength": 1},
        "status": {"enum": ["draft", "population_complete", "release_grade"]},
        "assertion_status": {"enum": ["official", "normalized", "inferred", "editorial-example"]},
        "life_course_domain": {"type": "string", "minLength": 1},
        "enclosing_processes": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/identifierReference"}},
        "situations": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
        "user_needs": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
        "interaction_boundary": {"type": "string", "minLength": 1},
        "applicability": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/applicability"}},
        "actors": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/actor"}},
        "journeys": {
          "type": "object",
          "required": ["ordinary", "exceptions"],
          "properties": {
            "ordinary": {"$ref": "#/$defs/journey"},
            "exceptions": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/journey"}}
          },
          "additionalProperties": false
        },
        "dependencies": {"type": "array", "items": {"type": "object"}},
        "sources": {"type": "array", "minItems": 1, "items": {"oneOf": [{"$ref": "#/$defs/source"}, {"$ref": "#/$defs/sourceReference"}]}},
        "limitations": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
        "review": {
          "type": "object",
          "required": ["population_gate", "specialist_review"],
          "properties": {
            "population_gate": {"enum": ["incomplete", "complete"]},
            "specialist_review": {"enum": ["not_required", "required", "accepted"]}
          }
        },
        "narrative": {
          "type": "object",
          "required": ["markdown", "process_context"],
          "properties": {
            "markdown": {"type": "string", "pattern": "^services/.+\\.md$"},
            "process_context": {"type": "string", "minLength": 1}
          }
        }
      },
      "$defs": {
        "identifierReference": {
          "type": "object",
          "required": ["id", "assertion_status", "sources"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "assertion_status": {"enum": ["official", "normalized", "inferred", "editorial-example"]},
            "sources": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}}
          }
        },
        "applicability": {
          "type": "object",
          "required": ["jurisdiction", "state", "route_variants", "sources"],
          "properties": {
            "jurisdiction": {"type": "string", "minLength": 1},
            "state": {"enum": ["supported", "not_applicable", "not_published_by_source"]},
            "route_variants": {"type": "array"},
            "sources": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}}
          }
        },
        "actor": {
          "type": "object",
          "required": ["id", "role", "authority_status", "sources"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "role": {"type": "string", "minLength": 1},
            "authority_status": {"enum": ["official", "normalized", "inferred", "editorial-example"]},
            "sources": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}}
          }
        },
        "journey": {
          "type": "object",
          "required": ["id", "entry_state", "outcome", "steps"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "entry_state": {"type": "string", "minLength": 1},
            "outcome": {"type": "string", "minLength": 1},
            "steps": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/step"}}
          }
        },
        "step": {
          "type": "object",
          "required": ["id", "interaction", "provider", "requirements", "evidence", "rule", "channel", "cost", "time", "output", "outcome", "redress", "assertion_status", "sources"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "interaction": {"type": "string", "minLength": 1},
            "provider": {"type": "string", "minLength": 1},
            "requirements": {}, "evidence": {}, "rule": {}, "channel": {}, "cost": {}, "time": {}, "output": {}, "outcome": {}, "redress": {},
            "assertion_status": {"enum": ["official", "normalized", "inferred", "editorial-example"]},
            "sources": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}}
          }
        },
        "source": {
          "type": "object",
          "required": ["id", "title", "owner", "authority_role", "resource", "jurisdiction", "observed_at", "freshness", "rights_decision", "summary", "limitations"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "title": {"type": "string", "minLength": 1},
            "owner": {"type": "string", "minLength": 1},
            "authority_role": {"type": "string", "minLength": 1},
            "resource": {"type": "string", "pattern": "^https://"},
            "jurisdiction": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
            "observed_at": {"type": "string", "format": "date"},
            "freshness": {"type": "string", "minLength": 1},
            "rights_decision": {"type": "string", "minLength": 1},
            "summary": {"type": "string", "minLength": 1},
            "limitations": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
            "snapshot": {"const": false}
          }
        },
        "sourceReference": {
          "type": "object",
          "required": ["id", "register"],
          "properties": {
            "id": {"type": "string", "minLength": 1},
            "register": {"type": "string", "pattern": "^source/.+\\.ya?ml$"}
          },
          "additionalProperties": false
        }
      }
    }