{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:orbiplex:schema:room-floor-policy:v1",
  "title": "Room Floor Policy v1",
  "type": "object",
  "additionalProperties": false,
  "x-dia-workflow": "project",
  "x-dia-status": "accepted",
  "x-dia-basis": ["doc/project/40-proposals/070-room-primitive.md"],
  "required": ["schema/v", "room/id", "policy/ref", "mode", "generation", "queue/max", "lease/ttl-seconds", "lease/renewal-max", "lease/outstanding-max", "authority/subject", "seq/no", "issued-at"],
  "properties": {
    "schema/v": { "const": 1 },
    "room/id": { "$ref": "room.v1.schema.json#/$defs/room_id" },
    "policy/ref": { "type": "string", "pattern": "^room-floor-policy:[^\\s]+$", "maxLength": 512 },
    "mode": { "enum": ["open", "moderated", "round-robin"] },
    "generation": { "type": "integer", "minimum": 1 },
    "queue/max": { "type": "integer", "minimum": 1, "maximum": 256 },
    "lease/ttl-seconds": { "type": "integer", "minimum": 1, "maximum": 300 },
    "lease/renewal-max": { "type": "integer", "minimum": 0, "maximum": 8 },
    "lease/outstanding-max": { "type": "integer", "minimum": 1, "maximum": 16 },
    "authority/subject": { "$ref": "room.v1.schema.json#/$defs/subject" },
    "seq/no": { "type": "integer", "minimum": 1 },
    "issued-at": { "type": "string", "format": "date-time" }
  }
}
