{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/admit-coach-com/json-schema/admit-coach-com-plan-state-schema.json",
  "title": "PlanState",
  "description": "Fields left out of an update stay unchanged, so a profile page can sync colleges without touching steps.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/admit-coach-com-openapi.json#/components/schemas/PlanState",
  "properties": {
    "stage": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "early",
            "junior",
            "senior",
            "supporter",
            "unknown"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Stage"
    },
    "done": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 8
        },
        {
          "type": "null"
        }
      ],
      "title": "Done"
    },
    "schools": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array",
          "maxItems": 20
        },
        {
          "type": "null"
        }
      ],
      "title": "Schools"
    },
    "email": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 254
        },
        {
          "type": "null"
        }
      ],
      "title": "Email"
    },
    "digest_opt_in": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Digest Opt In"
    }
  },
  "additionalProperties": false,
  "type": "object"
}