{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://magician.network/schemas/beacon-1.schema.json",
  "title": "beacon/1",
  "description": "Per-capability reachability a circle publishes. STRUCTURAL VIEW ONLY: the parser (packages/core/src/federation.ts) is authoritative and additionally refuses any document carrying a person id anywhere in its bytes — a rule a schema cannot express. Schema-valid is necessary, never sufficient.",
  "type": "object",
  "additionalProperties": false,
  "required": ["format", "circle", "generated", "entries"],
  "properties": {
    "format": { "const": "beacon/1" },
    "circle": { "type": "string", "pattern": "^circle/.+$" },
    "generated": { "type": "string", "minLength": 1 },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["capability", "hops", "band", "register"],
        "properties": {
          "capability": { "type": "string", "pattern": "^cap/.+$" },
          "hops": { "type": "integer", "minimum": 0, "maximum": 3 },
          "band": { "enum": ["strong", "moderate", "weak"] },
          "register": { "enum": ["measured", "asserted", "estimated"] }
        }
      }
    }
  }
}
