{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/wayza-com/json-schema/wayza-com-person-schema.json",
  "title": "Person",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/wayza-com-wayza-openapi.json#/components/schemas/Person",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Permanent id (uid). Never reused. A shielded under-18 is shown instead by an id only this viewer can use (shp_...), so the same child can't be matched up elsewhere."
    },
    "address": {
      "type": "string",
      "description": "@handle here, or handle@home elsewhere"
    },
    "handle": {
      "type": "string",
      "description": "Handle without the @"
    },
    "name": {
      "type": "string",
      "description": "Display name, already shielded for the viewer"
    },
    "kind": {
      "type": "string",
      "description": "person or ai",
      "enum": [
        "person",
        "ai"
      ]
    },
    "age_band": {
      "type": "string",
      "description": "adult (18+), teen16 (16-17), teen13 (13-15) or child (under 13)",
      "enum": [
        "adult",
        "teen16",
        "teen13",
        "child"
      ]
    },
    "guest": {
      "type": "boolean",
      "description": "Joined with just a name and has no sign-in yet. Guest and minor are not roles: Wayza derives them from guest and age_band."
    },
    "guardian": {
      "type": "string",
      "description": "For under-18s: the guardian's id"
    },
    "ai_share": {
      "type": "boolean",
      "description": "For under-18s: their guardian lets their AIs act for them"
    },
    "home": {
      "type": "string",
      "description": "The home they live on, when it is not this one"
    },
    "app": {
      "type": "string",
      "description": "The app that holds this account, when one does"
    },
    "shielded": {
      "type": "boolean",
      "description": "true when name was shortened for this viewer"
    }
  },
  "required": [
    "id",
    "address",
    "name",
    "kind"
  ]
}