MAGTOPIA Agent OpenAPI

Quick start · Playbook · Raw JSON

{
  "openapi": "3.1.0",
  "info": {
    "title": "MAGTOPIA(麦托邦)Agent API",
    "version": "1.0.0",
    "description": "Private multi-city construction API for municipal Agents building living magic cities."
  },
  "servers": [
    {
      "url": "https://magtopia.city/api/v1"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "code",
          "message",
          "retryable"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          },
          "details": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "Endpoint": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "kind",
              "id"
            ],
            "properties": {
              "kind": {
                "const": "building"
              },
              "id": {
                "type": "string"
              },
              "entrance": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "kind",
              "id"
            ],
            "properties": {
              "kind": {
                "const": "cell"
              },
              "id": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "kind",
              "id"
            ],
            "properties": {
              "kind": {
                "const": "node"
              },
              "id": {
                "type": "string"
              }
            }
          }
        ]
      },
      "BuildingDesignConstructionRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expected_city_version",
          "design_id",
          "design_revision",
          "design_hash"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "district_id": {
            "type": "string",
            "description": "Named development district this building contributes to"
          },
          "design_id": {
            "type": "string"
          },
          "design_revision": {
            "type": "integer",
            "minimum": 1
          },
          "design_hash": {
            "type": "string",
            "description": "Exact hash returned when the design revision was confirmed"
          },
          "actor_note": {
            "type": "string",
            "description": "Optional factual construction reason. Site, footprint, entrance, program, asset, functional area, and exact cost are derived by the server from the confirmed BuildingDesign."
          }
        }
      },
      "GatewayUpgradeRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expected_city_version"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "actor_note": {
            "type": "string",
            "description": "Optional factual reason for upgrading the fixed railway gateway."
          }
        }
      },
      "Site": {
        "type": "object",
        "required": [
          "anchor_cell_id",
          "footprint",
          "entrance"
        ],
        "properties": {
          "anchor_cell_id": {
            "type": "string",
            "description": "anchor_cell_id returned by POST /site-searches"
          },
          "footprint": {
            "enum": [
              "1x1",
              "1x2",
              "1x3",
              "2x1",
              "2x2",
              "2x3",
              "3x1",
              "3x2",
              "3x3"
            ]
          },
          "entrance": {
            "enum": [
              "north",
              "east",
              "south",
              "west"
            ]
          }
        }
      },
      "BuildingIntent": {
        "type": "object",
        "description": "Semantic and visual building brief. Choose purpose first, then composition/frontage/access/style/prominence. magic_level controls visual intensity only; use the sibling gameplay_profile to author wizard capacity, Arcane Energy production, and magical exposure. The x-agent-catalog below explains how each option changes the generated architecture; use it as the design vocabulary rather than guessing from enum names.",
        "required": [
          "name",
          "purpose"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable building name."
          },
          "purpose": {
            "type": "string",
            "minLength": 1,
            "description": "What the building is for. Free text is also used to infer public program families such as residential, library, academy, greenhouse, workshop, civic, or generic_public."
          },
          "description": {
            "type": "string",
            "description": "Optional concrete architectural or functional brief. Prefer observable requirements over generic adjectives."
          },
          "sign_text": {
            "type": "string",
            "description": "Optional semantic sign wording. Decorative sign geometry is controlled separately through decorations."
          },
          "composition": {
            "enum": [
              "street",
              "court",
              "hall",
              "tower",
              "yard"
            ],
            "description": "Overall spatial organization. court/hall/tower/yard automatically favor urban_massing; street is the normal compact street-building composition."
          },
          "frontage": {
            "enum": [
              "residential",
              "display",
              "workshop",
              "institutional",
              "large_bay"
            ],
            "description": "Street-facing functional character. This changes ground-floor program, glazing/opening ratio, entrance treatment, and generation-mode recommendations."
          },
          "access": {
            "enum": [
              "private",
              "public",
              "service",
              "ceremonial"
            ],
            "description": "How the primary entrance should read. Public and ceremonial access strengthen entrance emphasis and can make an urban-massing building count as public architecture."
          },
          "style": {
            "enum": [
              "victorian_domestic",
              "victorian_gothic",
              "civic_classical",
              "industrial_iron",
              "alchemical_glass"
            ],
            "description": "Architectural language. For public buildings this changes massing, roof families, facade rhythm, and constrained materials, not only color."
          },
          "prominence": {
            "enum": [
              "ordinary",
              "important",
              "landmark"
            ],
            "description": "Urban hierarchy. Higher prominence increases default scale and height; landmark always favors urban_massing."
          },
          "magic_level": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Continuous magical intensity. Higher values increase generated variation/detail and night-light contribution; keep ordinary background fabric restrained and reserve high values for intentional magical emphasis."
          },
          "district_style": {
            "type": "string",
            "description": "Optional district-level style cue to preserve. For housing, use this with district_context so nearby buildings share a family."
          },
          "variation_intent": {
            "type": "string",
            "description": "Optional high-level structural variation cue such as narrow_corner_house, stepped_frontage, hip_roof, or corner. Use one or two cues to vary a house without destroying district coherence."
          }
        },
        "x-agent-catalog": {
          "version": "1.0",
          "decisionOrder": [
            "purpose",
            "composition",
            "frontage",
            "access",
            "style",
            "prominence",
            "magic_level",
            "district_style",
            "variation_intent"
          ],
          "generationModeRules": {
            "floor_stack": "Recommended for a 1x1 ordinary street building such as a house, shop, or small workshop.",
            "urban_massing": "Recommended for multi-cell sites, institutional frontage, landmarks, and court/hall/tower/yard compositions.",
            "auto": "Prefer auto unless the Agent has a specific reason to force a mode. Multi-cell footprint, institutional frontage, landmark prominence, or court/hall/tower/yard composition selects urban_massing."
          },
          "composition": {
            "street": {
              "meaning": "Compact building organized primarily around the street frontage.",
              "bestFor": [
                "residential",
                "shop",
                "small_workshop",
                "mixed_use"
              ],
              "effects": [
                "Normally compatible with floor_stack on 1x1 sites.",
                "Uses a street-oriented roof unless another cue overrides it."
              ]
            },
            "court": {
              "meaning": "Multiple masses or wings organized around an internal court.",
              "bestFor": [
                "academy",
                "inn",
                "archive",
                "institutional_compound"
              ],
              "effects": [
                "Selects urban_massing in auto mode.",
                "Useful when the interior open space is part of the identity."
              ]
            },
            "hall": {
              "meaning": "A dominant broad public or productive hall.",
              "bestFor": [
                "civic_hall",
                "market",
                "library_reading_hall",
                "workshop"
              ],
              "effects": [
                "Selects urban_massing in auto mode.",
                "In street adaptation it favors a cross-gable roof; in massing it favors hall-like presets/components."
              ]
            },
            "tower": {
              "meaning": "Vertical silhouette organized around a tower or crown.",
              "bestFor": [
                "landmark",
                "academy_tower",
                "clocktower",
                "magical_observatory"
              ],
              "effects": [
                "Selects urban_massing in auto mode.",
                "Encourages a strong crown/spire and taller silhouette."
              ]
            },
            "yard": {
              "meaning": "Building masses arranged with a working or communal open yard.",
              "bestFor": [
                "workshop",
                "industrial",
                "service_compound",
                "greenhouse_complex"
              ],
              "effects": [
                "Selects urban_massing in auto mode.",
                "Best when an external work/open area is intentional rather than leftover space."
              ]
            }
          },
          "frontage": {
            "residential": {
              "meaning": "Domestic street face with moderate openings and private-scale rhythm.",
              "groundProgram": "home",
              "approximateGroundWindowRatio": 0.38,
              "bestFor": [
                "house",
                "residential_mixed_use"
              ],
              "effects": [
                "Ordinary/default frontage.",
                "Residential guidance asks the Agent to preserve district grammar and vary only one or two structural cues."
              ]
            },
            "display": {
              "meaning": "Retail/display frontage with large ground-floor glazing.",
              "groundProgram": "shop",
              "approximateGroundWindowRatio": 0.86,
              "bestFor": [
                "shop",
                "cafe",
                "potion_store",
                "wand_shop"
              ],
              "effects": [
                "Second floor may receive a selective balcony.",
                "A custom semantic_grid_sign is recommended before construction."
              ]
            },
            "workshop": {
              "meaning": "Craft or production frontage with visibly productive openings.",
              "groundProgram": "workshop",
              "approximateGroundWindowRatio": 0.58,
              "bestFor": [
                "artisan_workshop",
                "small_factory",
                "repair_shop"
              ],
              "effects": [
                "Upper floors default toward storage rather than home in floor_stack."
              ]
            },
            "institutional": {
              "meaning": "Formal public/institutional frontage with controlled large openings and clear entrance hierarchy.",
              "groundProgram": "home in floor_stack adapter; public program is expressed primarily through urban_massing",
              "approximateGroundWindowRatio": 0.5,
              "bestFor": [
                "library",
                "academy",
                "civic",
                "museum"
              ],
              "effects": [
                "Selects urban_massing in auto mode.",
                "Defaults style to civic_classical when style is omitted."
              ]
            },
            "large_bay": {
              "meaning": "Wide-span productive frontage for large doors/windows or loading-like openings.",
              "groundProgram": "workshop",
              "approximateGroundWindowRatio": 0.7,
              "bestFor": [
                "industrial_hall",
                "large_workshop",
                "depot"
              ],
              "effects": [
                "Favors a cross-gable roof in street adaptation.",
                "Upper floors default toward storage in floor_stack."
              ]
            }
          },
          "access": {
            "private": {
              "meaning": "Resident/staff-oriented entrance with restrained emphasis.",
              "effects": [
                "Urban-massing entrance emphasis may be reduced.",
                "Street adaptation can keep a less exposed corner-facade treatment unless variation_intent requests a corner condition."
              ]
            },
            "public": {
              "meaning": "Clearly readable everyday public entrance.",
              "effects": [
                "Strengthens entrance emphasis.",
                "Can classify a non-residential urban-massing design for public architecture review."
              ]
            },
            "service": {
              "meaning": "Operational/service access rather than ceremonial frontage.",
              "effects": [
                "Use for workshops, yards, and back-of-house functions when the entrance should read utilitarian."
              ]
            },
            "ceremonial": {
              "meaning": "Formal civic or landmark arrival.",
              "effects": [
                "Strengthens entrance emphasis.",
                "Can classify a non-residential urban-massing design for public architecture review."
              ]
            }
          },
          "style": {
            "victorian_domestic": {
              "meaning": "Dense London domestic fabric: narrow plots, brick, varied gables/mansards and chimney rhythm.",
              "bestFor": [
                "housing",
                "shops",
                "background_street_fabric"
              ],
              "effects": [
                "Street palette maps to london_brick.",
                "Public massing uses narrow-unit/stepped domestic grammar rather than a simple recolor."
              ]
            },
            "victorian_gothic": {
              "meaning": "Vertical Gothic Victorian language with narrow tall openings, pointed details, steep roofs, buttress/spire cues.",
              "bestFor": [
                "academy",
                "library",
                "occult_shop",
                "important_residence"
              ],
              "effects": [
                "Street palette maps to violet_alchemist.",
                "Public massing uses gothic facade/roof grammar."
              ]
            },
            "civic_classical": {
              "meaning": "Formal civic language with broad symmetry, stone hierarchy, colonnade/pediment and restrained dome/crown accents.",
              "bestFor": [
                "civic",
                "library",
                "museum",
                "institution"
              ],
              "effects": [
                "Default for institutional frontage or landmark when style is omitted.",
                "Public buildings use full civic massing grammar."
              ]
            },
            "industrial_iron": {
              "meaning": "Victorian industrial language with dark brick/iron, asymmetry, sawtooth or utilitarian roofs, large windows, canopies and chimney stacks.",
              "bestFor": [
                "factory",
                "workshop",
                "depot",
                "infrastructure"
              ],
              "effects": [
                "Street ridge position shifts off-center.",
                "Public massing uses industrial form/material grammar."
              ]
            },
            "alchemical_glass": {
              "meaning": "Magical research/greenhouse language using patinated metal, teal glass, glass halls, arched greenhouse roofs and distillation-tower cues.",
              "bestFor": [
                "greenhouse",
                "alchemical_lab",
                "research_building"
              ],
              "effects": [
                "Framed masses prefer tealGlass panels.",
                "Public massing uses glass-and-patina architectural grammar."
              ]
            }
          },
          "prominence": {
            "ordinary": {
              "meaning": "Background fabric; should not compete with anchors.",
              "defaultSiteCells": [
                2,
                2
              ],
              "floorStackDefaultFloors": 2,
              "effects": [
                "Smallest default urban hierarchy."
              ]
            },
            "important": {
              "meaning": "Block/district anchor that deserves extra height or presence without becoming a city landmark.",
              "defaultSiteCells": [
                3,
                2
              ],
              "floorStackDefaultFloors": 3,
              "effects": [
                "Floor-stack upper levels can receive a small setback.",
                "Non-residential urban_massing is reviewed as public architecture when applicable."
              ]
            },
            "landmark": {
              "meaning": "City/district landmark with a deliberately dominant silhouette.",
              "defaultSiteCells": [
                5,
                3
              ],
              "floorStackDefaultFloors": 4,
              "effects": [
                "Always selects urban_massing in auto mode.",
                "Defaults style to civic_classical when style is omitted."
              ]
            }
          },
          "magicLevel": {
            "range": [
              0,
              1
            ],
            "bands": [
              {
                "range": [
                  0,
                  0.3
                ],
                "meaning": "restrained/background magical character"
              },
              {
                "range": [
                  0.3,
                  0.7
                ],
                "meaning": "normal MAGTOPIA magical London character"
              },
              {
                "range": [
                  0.7,
                  1
                ],
                "meaning": "strong magical emphasis; use intentionally for special buildings"
              }
            ],
            "effects": {
              "nightLighting": "default = magic_level * 0.18",
              "floorStackVariation": "default = clamp(0.48 + magic_level * 0.35, 0, 1)",
              "floorStackDetailDensity": "default = clamp(0.70 + magic_level * 0.25, 0, 1)",
              "urbanMassingDetailDensity": "solid masses default = clamp(0.72 + magic_level * 0.25, 0, 1)"
            }
          },
          "districtStyle": {
            "meaning": "Named/shared district architecture cue. Preserve it across nearby housing instead of making every house globally unique."
          },
          "variationIntent": {
            "meaning": "One or two high-level structural changes relative to the district family.",
            "examples": [
              "narrow_corner_house",
              "stepped_frontage",
              "hip_roof",
              "corner"
            ],
            "effects": [
              "Words containing hip or corner favor a hip roof in floor_stack.",
              "corner also requests a more explicit corner-facade condition."
            ]
          },
          "publicBuildingReview": "For public urban_massing, inspect actualArchitecture and architectureReview after generation. Correct one or two components with update_mass; regenerate_from_intent when the overall scheme is wrong.",
          "residentialGuidance": "For residential floor_stack, read nearby buildings and district purpose, pass district_context, preserve two or three shared cues, and vary one or two structural cues."
        }
      },
      "BuildingGameplayProfile": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "purpose",
          "magic_ratio"
        ],
        "description": "Authoritative gameplay semantics applied to every system-derived floor of this confirmed design. The server owns floor count and functional area. magic_ratio is the wizard-world share, not visual magic strength: residential creates wizard housing capacity; commercial/production/greenhouse can produce Arcane Energy and add concealment pressure.",
        "properties": {
          "purpose": {
            "enum": [
              "residential",
              "commercial",
              "public_service",
              "production",
              "greenhouse"
            ]
          },
          "magic_ratio": {
            "type": "number",
            "enum": [
              0,
              0.25,
              0.5,
              0.75,
              1
            ],
            "description": "Use 0 for entirely Muggle-facing space and a positive discrete value for magical use. A wizard residence needs residential plus magic_ratio > 0."
          }
        },
        "examples": [
          {
            "purpose": "residential",
            "magic_ratio": 0.5
          },
          {
            "purpose": "greenhouse",
            "magic_ratio": 1
          }
        ]
      },
      "Decoration": {
        "type": "object",
        "required": [
          "id",
          "type",
          "anchor"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "hanging_sign",
              "semantic_grid_sign",
              "facade_lamp",
              "magic_lamp",
              "roof_finial"
            ]
          },
          "anchor": {
            "type": "string",
            "description": "Use an anchor pattern returned in availableOperations"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "BuildingDesignCreateRequest": {
        "type": "object",
        "required": [
          "generation_mode",
          "site",
          "intent"
        ],
        "properties": {
          "generation_mode": {
            "enum": [
              "auto",
              "floor_stack",
              "urban_massing"
            ],
            "description": "Prefer auto. See BuildingIntent.x-agent-catalog.generationModeRules for the exact recommendation rules."
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "intent": {
            "$ref": "#/components/schemas/BuildingIntent"
          },
          "gameplay_profile": {
            "$ref": "#/components/schemas/BuildingGameplayProfile"
          },
          "requirements": {
            "type": "object",
            "properties": {
              "preferred_floors": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8,
                "description": "Optional initial floor count for floor_stack; defaults are derived from prominence."
              },
              "variant_id": {
                "type": "string",
                "description": "Optional public-building variant from the generated catalog returned by the design response."
              }
            }
          },
          "district_context": {
            "type": "object",
            "description": "Optional district context used to keep residential buildings coherent while varying one or two structural cues",
            "additionalProperties": true,
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "purpose": {
                "type": "string"
              },
              "style": {
                "type": "string"
              },
              "district_style": {
                "type": "string"
              },
              "character": {
                "type": "string"
              },
              "preserve": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "vary": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "change": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "existing_features": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "notes": {
                "type": "string"
              }
            }
          },
          "decorations": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Decoration"
                }
              }
            }
          },
          "locks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BuildingDesignRevisionRequest": {
        "type": "object",
        "required": [
          "expected_revision",
          "operations"
        ],
        "properties": {
          "expected_revision": {
            "type": "integer",
            "minimum": 1
          },
          "operations": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "required": [
                "op"
              ],
              "properties": {
                "op": {
                  "enum": [
                    "set_intent",
                    "regenerate_from_intent",
                    "set_roof",
                    "set_material",
                    "add_decoration",
                    "update_decoration",
                    "remove_decoration",
                    "add_floor",
                    "set_floor_program",
                    "add_mass",
                    "update_mass",
                    "remove_mass"
                  ]
                },
                "decoration": {
                  "$ref": "#/components/schemas/Decoration"
                }
              },
              "additionalProperties": true
            }
          }
        }
      },
      "BuildingDesignConfirmRequest": {
        "type": "object",
        "required": [
          "expected_revision"
        ],
        "properties": {
          "expected_revision": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "BuildingDesignUpgradeRequest": {
        "type": "object",
        "description": "Accepted inputs for creating an editable upgrade design from a built voxel design. The design id and actor are server-owned and always assigned by the runtime; clients only provide the upgrade goal.",
        "properties": {
          "goal": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "enum": [
                  "add_floor",
                  "add_floors"
                ],
                "description": "add_floor is the canonical operation; add_floors is accepted as an alias."
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "default": 1,
                "description": "Number of storeys to add to the existing building."
              }
            }
          }
        }
      },
      "DistrictCreateRequest": {
        "type": "object",
        "required": [
          "expected_city_version",
          "name",
          "purpose",
          "bounds"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "purpose": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "actor_note": {
            "type": "string"
          },
          "bounds": {
            "description": "Spatial work package. The response contains a soft 24–48-cell scale reference and derived block observations; unusual or larger shapes remain legal.",
            "type": "object",
            "required": [
              "minColumn",
              "minRow",
              "maxColumn",
              "maxRow"
            ],
            "properties": {
              "minColumn": {
                "type": "integer"
              },
              "minRow": {
                "type": "integer"
              },
              "maxColumn": {
                "type": "integer"
              },
              "maxRow": {
                "type": "integer"
              }
            }
          }
        }
      },
      "DistrictCancelRequest": {
        "type": "object",
        "required": [
          "expected_city_version"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "reason": {
            "type": "string",
            "maxLength": 160,
            "description": "Why this planning context is being released; existing roads and buildings are preserved."
          },
          "actor_note": {
            "type": "string",
            "maxLength": 160
          }
        }
      },
      "SiteSearchRequest": {
        "type": "object",
        "required": [
          "footprint"
        ],
        "properties": {
          "footprint": {
            "enum": [
              "1x1",
              "1x2",
              "1x3",
              "2x1",
              "2x2",
              "2x3",
              "3x1",
              "3x2",
              "3x3"
            ]
          },
          "district_id": {
            "type": "string",
            "description": "Use the persisted spatial layout and advisory observations of this named development district"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "ConnectionRequest": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "from": {
            "$ref": "#/components/schemas/Endpoint"
          },
          "to": {
            "$ref": "#/components/schemas/Endpoint"
          },
          "mode": {
            "const": "road"
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "StrategyIncident": {
        "type": "object",
        "required": [
          "id",
          "building_id",
          "type",
          "attribute",
          "dc",
          "severity",
          "summary",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "building_id": {
            "type": "string"
          },
          "building_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "enum": [
              "investigation",
              "suppression",
              "cover_up"
            ]
          },
          "attribute": {
            "enum": [
              "investigation",
              "suppression",
              "coverUp"
            ]
          },
          "dc": {
            "type": "integer",
            "enum": [
              10,
              14,
              18
            ]
          },
          "difficulty_tier": {
            "enum": [
              "normal",
              "hard",
              "severe"
            ]
          },
          "severity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "exposure_at_creation": {
            "type": "number"
          },
          "historical_risk_at_creation": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
          },
          "historical_risk": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
          },
          "source_risk": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "summary": {
            "type": "string"
          },
          "status": {
            "enum": [
              "open",
              "assigned",
              "resolved",
              "failed",
              "escalated"
            ]
          },
          "created_at_turn": {
            "type": "integer"
          }
        }
      },
      "CardDefinition": {
        "type": "object",
        "required": [
          "card_id",
          "type",
          "title",
          "description",
          "decision_mode",
          "duration",
          "choice_kind",
          "family",
          "unique",
          "free_placement",
          "placement_required",
          "choice_required",
          "recommended_action",
          "available_decision_modes",
          "effect_summary",
          "skip_consequence"
        ],
        "properties": {
          "card_id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "special_structure",
              "resource",
              "personnel",
              "policy",
              "building",
              "people"
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "decision_mode": {
            "enum": [
              "immediate",
              "player_place",
              "delegate_to_agent"
            ],
            "description": "player_place and delegate_to_agent are two resolution choices of the same special structure card, never two separate cards."
          },
          "choice_kind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "family": {
            "type": [
              "string",
              "null"
            ]
          },
          "unique": {
            "type": "boolean"
          },
          "free_placement": {
            "type": "boolean",
            "description": "System-owned entitlement; special structures are free to place."
          },
          "placement_required": {
            "type": "boolean"
          },
          "choice_required": {
            "const": true,
            "description": "The player must make this choice; the Agent never chooses a card."
          },
          "recommended_action": {
            "type": "string"
          },
          "available_decision_modes": {
            "type": "array",
            "items": {
              "enum": [
                "immediate",
                "player_place",
                "delegate_to_agent"
              ]
            }
          },
          "effect_summary": {
            "type": "string",
            "description": "Compact server-owned consequences so the choice is understandable without reading another catalog."
          },
          "effect_preview": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Authoritative current-state projection of an immediate effect. Check projected_grant before choosing a capacity-limited population card."
          },
          "skip_consequence": {
            "type": "string"
          },
          "duration": {
            "oneOf": [
              {
                "type": "string",
                "const": "instant"
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string"
                  },
                  "turns": {
                    "type": "integer"
                  }
                }
              }
            ]
          },
          "structure": {
            "type": "object",
            "nullable": true,
            "description": "System-owned placement spec for special structure cards."
          },
          "effect": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "CardOffer": {
        "type": "object",
        "required": [
          "offer_id",
          "turn",
          "choice_kind",
          "eligibility_audit",
          "cards"
        ],
        "properties": {
          "offer_id": {
            "type": "string"
          },
          "turn": {
            "type": "integer"
          },
          "choice_kind": {
            "enum": [
              "ordinary",
              "special"
            ]
          },
          "eligibility_audit": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "cards": {
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/CardDefinition"
            }
          }
        }
      },
      "CardChoice": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "offer_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "pending",
              "selected",
              "skipped",
              "resolved",
              "not_applicable"
            ],
            "description": "not_applicable is authoritative for the turn-0 bootstrap no-card state."
          },
          "choice_kind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "selected_card_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "decision_mode": {
            "type": [
              "string",
              "null"
            ]
          },
          "choice_resolved_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "card_effects": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "CardSelectRequest": {
        "type": "object",
        "required": [
          "expected_city_version",
          "offer_id",
          "selected_card_id"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "offer_id": {
            "type": "string",
            "description": "offer_id returned by GET /cards/current"
          },
          "selected_card_id": {
            "type": "string",
            "description": "one of the offered card ids; the player may select exactly one card per turn"
          },
          "decision_mode": {
            "enum": [
              "player_place",
              "delegate_to_agent"
            ],
            "description": "required for special structure cards; must never carry effect values or balance parameters"
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "CardSelectResponse": {
        "type": "object",
        "required": [
          "command_id",
          "status",
          "city_version_before",
          "city_version_after",
          "turn",
          "selected_card_id"
        ],
        "properties": {
          "command_id": {
            "type": "string"
          },
          "status": {
            "const": "selected"
          },
          "city_version_before": {
            "type": "integer"
          },
          "city_version_after": {
            "type": "integer"
          },
          "turn": {
            "type": "integer"
          },
          "selected_card_id": {
            "type": "string"
          },
          "card_effects": {
            "type": "object",
            "additionalProperties": true
          },
          "choice": {
            "$ref": "#/components/schemas/CardChoice"
          }
        }
      },
      "CardPlaceRequest": {
        "type": "object",
        "required": [
          "expected_city_version",
          "card_id"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "card_id": {
            "type": "string",
            "description": "the selected special structure card with a pending placement"
          },
          "placement_id": {
            "type": "string",
            "description": "stable placement id from the strategy context. Required when the city holds several pending delegated placements so an older mandate is never shadowed."
          },
          "lot_id": {
            "type": "string",
            "description": "legal lot id for the structure footprint; validated through the authoritative cell system"
          },
          "footprint": {
            "type": "string",
            "description": "defaults to the system-owned structure footprint"
          },
          "entrance": {
            "enum": [
              "north",
              "east",
              "south",
              "west"
            ],
            "description": "defaults to south"
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "CardPlaceResponse": {
        "type": "object",
        "required": [
          "command_id",
          "status",
          "city_version_before",
          "city_version_after",
          "turn",
          "building_id"
        ],
        "properties": {
          "command_id": {
            "type": "string"
          },
          "status": {
            "const": "placed"
          },
          "city_version_before": {
            "type": "integer"
          },
          "city_version_after": {
            "type": "integer"
          },
          "turn": {
            "type": "integer"
          },
          "building_id": {
            "type": "string"
          },
          "placement": {
            "type": "object",
            "additionalProperties": true
          },
          "choice": {
            "$ref": "#/components/schemas/CardChoice"
          }
        }
      },
      "CardCancelRequest": {
        "type": "object",
        "required": [
          "expected_city_version",
          "placement_id"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "placement_id": {
            "type": "string"
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "ActivePolicy": {
        "type": "object",
        "required": [
          "policy_id",
          "source_card_id",
          "duration_type",
          "duration_turns",
          "remaining_turns"
        ],
        "properties": {
          "policy_id": {
            "type": "string"
          },
          "source_card_id": {
            "type": "string"
          },
          "started_at_turn": {
            "type": "integer"
          },
          "duration_type": {
            "enum": [
              "instant",
              "turns",
              "until_replaced"
            ]
          },
          "duration_turns": {
            "type": "integer"
          },
          "remaining_turns": {
            "type": "integer"
          },
          "effects": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        }
      },
      "PendingPlacement": {
        "type": "object",
        "required": [
          "placement_id",
          "card_id",
          "mode",
          "status"
        ],
        "properties": {
          "placement_id": {
            "type": "string"
          },
          "card_id": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "player_place",
              "delegate_to_agent"
            ]
          },
          "status": {
            "enum": [
              "pending",
              "deferred",
              "completed",
              "cancelled"
            ]
          },
          "delegated_at_turn": {
            "type": "integer"
          },
          "card": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "StrategyCards": {
        "type": "object",
        "required": [
          "offer",
          "choice",
          "active_policies",
          "pending_placements"
        ],
        "properties": {
          "offer": {
            "$ref": "#/components/schemas/CardOffer"
          },
          "choice": {
            "$ref": "#/components/schemas/CardChoice"
          },
          "active_policies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivePolicy"
            }
          },
          "pending_placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PendingPlacement"
            }
          }
        }
      },
      "ArcaneOfficer": {
        "type": "object",
        "required": [
          "id",
          "name",
          "archetype",
          "appearance_seed",
          "visual_ref",
          "investigation",
          "suppression",
          "cover_up",
          "specialty",
          "specialties",
          "status",
          "hired_at_turn",
          "history"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "appearance_seed": {
            "type": [
              "string",
              "null"
            ]
          },
          "visual_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "archetype": {
            "type": "string"
          },
          "investigation": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "suppression": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "cover_up": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "specialty": {
            "enum": [
              "residential",
              "commercial",
              "public_service",
              "production",
              "greenhouse",
              null
            ]
          },
          "specialties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "enum": [
              "available",
              "assigned",
              "unavailable"
            ]
          },
          "hired_at_turn": {
            "type": "integer"
          },
          "history": {
            "type": "array",
            "maxItems": 50,
            "items": {
              "$ref": "#/components/schemas/ArcaneOfficerHistoryEntry"
            }
          }
        }
      },
      "ArcaneOfficerHistoryEntry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "turn",
          "incident_id",
          "building_id",
          "source_purpose",
          "attribute",
          "outcome",
          "growth_roll",
          "growth_chance",
          "before",
          "after",
          "gained"
        ],
        "properties": {
          "turn": {
            "type": "integer"
          },
          "incident_id": {
            "type": "string"
          },
          "building_id": {
            "type": "string"
          },
          "source_purpose": {
            "type": [
              "string",
              "null"
            ]
          },
          "attribute": {
            "type": "string"
          },
          "outcome": {
            "type": "string"
          },
          "growth_roll": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "growth_chance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "before": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "after": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "gained": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          }
        }
      },
      "ArcaneOfficerCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "candidate_id",
          "identity",
          "cost_coins",
          "window"
        ],
        "properties": {
          "candidate_id": {
            "type": "string"
          },
          "identity": {
            "$ref": "#/components/schemas/ArcaneOfficer"
          },
          "cost_coins": {
            "type": "integer",
            "minimum": 120,
            "maximum": 180
          },
          "window": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "ArcaneOfficerRecruitment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unlocked",
          "status",
          "capacity",
          "roster_size",
          "config",
          "pool_window",
          "candidates"
        ],
        "properties": {
          "unlocked": {
            "type": "boolean"
          },
          "status": {
            "enum": [
              "available",
              "locked",
              "capacity_reached",
              "insufficient_coins"
            ]
          },
          "capacity": {
            "type": "integer",
            "minimum": 0,
            "description": "A governance facility supplies the first slot; each capacity_divisor wizard residents add one more."
          },
          "roster_size": {
            "type": "integer",
            "minimum": 0
          },
          "next_capacity_at_wizards": {
            "type": "integer",
            "minimum": 0
          },
          "config": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "refresh_interval_turns",
              "candidate_count",
              "hire_cost_coins",
              "maintenance_coins_per_turn",
              "capacity_divisor",
              "growth_chance",
              "critical_growth_chance",
              "attribute_cap"
            ],
            "properties": {
              "refresh_interval_turns": {
                "type": "integer"
              },
              "candidate_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 3
              },
              "hire_cost_coins": {
                "type": "integer",
                "minimum": 120,
                "maximum": 180
              },
              "maintenance_coins_per_turn": {
                "type": "integer",
                "minimum": 8,
                "maximum": 12
              },
              "capacity_divisor": {
                "type": "integer"
              },
              "growth_chance": {
                "type": "number"
              },
              "critical_growth_chance": {
                "type": "number"
              },
              "attribute_cap": {
                "type": "integer",
                "maximum": 5
              }
            }
          },
          "pool_window": {
            "type": [
              "integer",
              "null"
            ]
          },
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArcaneOfficerCandidate"
            }
          }
        }
      },
      "OfficerRecruitmentRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "candidate_id",
          "expected_city_version"
        ],
        "properties": {
          "candidate_id": {
            "type": "string",
            "minLength": 1
          },
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "OfficerRecruitmentResponse": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "command_id",
          "status",
          "city_version_before",
          "city_version_after",
          "officer",
          "cost_coins",
          "strategy"
        ],
        "properties": {
          "command_id": {
            "type": "string"
          },
          "status": {
            "const": "accepted"
          },
          "city_version_before": {
            "type": "integer"
          },
          "city_version_after": {
            "type": "integer"
          },
          "officer": {
            "$ref": "#/components/schemas/ArcaneOfficer"
          },
          "cost_coins": {
            "type": "integer"
          },
          "strategy": {
            "$ref": "#/components/schemas/StrategyPayload"
          },
          "idempotent_replay": {
            "type": "boolean"
          }
        }
      },
      "StrategyAssignment": {
        "type": "object",
        "description": "A dispatch instruction. Only these fields are accepted; the system owns every numeric balance parameter.",
        "required": [
          "incident_id",
          "arcane_officer_id"
        ],
        "properties": {
          "incident_id": {
            "type": "string"
          },
          "arcane_officer_id": {
            "type": "string"
          },
          "rationale": {
            "type": "string",
            "description": "Optional advisory dispatch reason. Never affects the roll, outcome, or balance."
          }
        }
      },
      "StrategyAssignmentsRequest": {
        "type": "object",
        "required": [
          "expected_city_version",
          "assignments"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "assignments": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/StrategyAssignment"
            }
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "StrategyResolveRequest": {
        "type": "object",
        "required": [
          "expected_city_version"
        ],
        "properties": {
          "expected_city_version": {
            "type": "integer",
            "minimum": 0
          },
          "actor_note": {
            "type": "string"
          }
        }
      },
      "TurnFacts": {
        "type": "object",
        "description": "Immutable system-generated settlement record. Agents read rolls, outcomes, and state changes here; they never author them.",
        "required": [
          "turn",
          "turnKind",
          "bootstrapProgress",
          "resourceDelta",
          "netResourceDelta",
          "resourceBefore",
          "resourceAfter",
          "officerMaintenance",
          "populationDelta",
          "populationBefore",
          "populationAfter",
          "publicService",
          "buildingsStarted",
          "buildingsCompleted",
          "buildingFactRefs",
          "constructionRefs",
          "exposureChanges",
          "incidents",
          "incidentRolls",
          "unaddressedIncidents",
          "historicalRiskChanges",
          "assignments",
          "rolls",
          "outcomes",
          "sealedBuildings",
          "nextRisks",
          "choiceKind",
          "offerChoiceKind",
          "specialCadence",
          "eligibilityAudit"
        ],
        "properties": {
          "turn": {
            "type": "integer"
          },
          "turnKind": {
            "enum": [
              "bootstrap",
              "normal"
            ]
          },
          "choiceKind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "offerChoiceKind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "specialCadence": {
            "type": "boolean"
          },
          "eligibilityAudit": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "bootstrapProgress": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BootstrapProgress"
              },
              {
                "type": "null"
              }
            ]
          },
          "wallClock": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "resourceDelta": {
            "type": "object",
            "properties": {
              "coins": {
                "type": "integer",
                "minimum": 0
              },
              "arcaneEnergy": {
                "type": "number",
                "minimum": 0
              }
            },
            "required": [
              "coins",
              "arcaneEnergy"
            ],
            "additionalProperties": false
          },
          "netResourceDelta": {
            "type": "object",
            "properties": {
              "coins": {
                "type": "integer"
              },
              "arcaneEnergy": {
                "type": "number"
              }
            },
            "required": [
              "coins",
              "arcaneEnergy"
            ],
            "additionalProperties": false
          },
          "resourceBefore": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "resourceAfter": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "officerMaintenance": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "count",
              "rate",
              "total",
              "charged",
              "unpaid"
            ],
            "properties": {
              "count": {
                "type": "integer"
              },
              "rate": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              },
              "charged": {
                "type": "integer"
              },
              "unpaid": {
                "type": "integer"
              }
            }
          },
          "populationDelta": {
            "type": "object",
            "additionalProperties": true
          },
          "populationBefore": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "populationAfter": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "publicService": {
            "type": "object",
            "description": "System-derived spatial public-service coverage and supported population target for this settlement.",
            "properties": {
              "radius": {
                "type": "number",
                "minimum": 0
              },
              "residentialFunctionalArea": {
                "type": "number",
                "minimum": 0
              },
              "residentialCapacity": {
                "type": "number",
                "minimum": 0
              },
              "serviceCapacity": {
                "type": "number",
                "minimum": 0
              },
              "serviceCoverage": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "supportedOccupancy": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "supportedTarget": {
                "type": "object",
                "additionalProperties": true
              },
              "migrationRate": {
                "type": "object",
                "additionalProperties": true
              },
              "outboundMigrationRate": {
                "type": "object",
                "properties": {
                  "muggles": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "wizards": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  }
                },
                "required": [
                  "muggles",
                  "wizards"
                ],
                "additionalProperties": false
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": [
              "radius",
              "serviceCoverage",
              "supportedTarget",
              "migrationRate",
              "outboundMigrationRate"
            ]
          },
          "exposureChanges": {
            "type": "object",
            "additionalProperties": true
          },
          "incidents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StrategyIncident"
            }
          },
          "incidentRolls": {
            "type": "array",
            "description": "System-owned independent threshold roll for every eligible canonical MagicLoad building.",
            "items": {
              "type": "object",
              "required": [
                "buildingId",
                "finalIncidentChance",
                "thresholdRoll",
                "hit",
                "sourcePurpose",
                "purposeWeights"
              ],
              "properties": {
                "buildingId": {
                  "type": "string"
                },
                "finalIncidentChance": {
                  "type": "number"
                },
                "thresholdRoll": {
                  "type": "number"
                },
                "hit": {
                  "type": "boolean"
                },
                "magicLoad": {
                  "type": "number"
                },
                "baseRisk": {
                  "type": "number"
                },
                "spatialModifier": {
                  "type": "number"
                },
                "historicalRisk": {
                  "type": "integer"
                },
                "sourcePurpose": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "purposeWeights": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "historicalRiskChanges": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "buildingId": {
                  "type": "string"
                },
                "before": {
                  "type": "integer"
                },
                "after": {
                  "type": "integer"
                },
                "delta": {
                  "type": "integer"
                },
                "incidentIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "sealed": {
                  "type": "boolean"
                }
              }
            }
          },
          "unaddressedIncidents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "incidentId": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "severity": {
                  "type": "number"
                },
                "status": {
                  "const": "failed"
                },
                "outcome": {
                  "const": "failure"
                },
                "resolution": {
                  "const": "unaddressed"
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                },
                "createdAtTurn": {
                  "type": "number"
                }
              }
            },
            "description": "Incidents left unassigned are settled once through the conservative failure path and recorded as failed."
          },
          "assignments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "incidentId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                }
              }
            }
          },
          "rolls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "incidentId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                },
                "attribute": {
                  "type": "string"
                },
                "rawRoll": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 20
                },
                "attributeValue": {
                  "type": "integer"
                },
                "specialtyBonus": {
                  "type": "integer"
                },
                "otherModifiers": {
                  "type": "integer"
                },
                "total": {
                  "type": "integer"
                },
                "dc": {
                  "type": "integer",
                  "enum": [
                    10,
                    14,
                    18
                  ]
                },
                "margin": {
                  "type": "integer"
                },
                "outcome": {
                  "enum": [
                    "critical_success",
                    "success",
                    "failure",
                    "critical_failure"
                  ]
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                }
              }
            }
          },
          "outcomes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "incidentId": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                },
                "outcome": {
                  "enum": [
                    "critical_success",
                    "success",
                    "failure",
                    "critical_failure"
                  ]
                },
                "exposureDelta": {
                  "type": "number"
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                },
                "resolution": {
                  "enum": [
                    "assigned",
                    "unaddressed"
                  ]
                },
                "incidentStatus": {
                  "type": "string"
                },
                "arcaneOfficerStatus": {
                  "type": "string"
                },
                "growth": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "attribute",
                    "roll",
                    "chance",
                    "before",
                    "after",
                    "gained"
                  ],
                  "properties": {
                    "attribute": {
                      "type": "string"
                    },
                    "roll": {
                      "type": "number"
                    },
                    "chance": {
                      "type": "number"
                    },
                    "before": {
                      "type": "integer"
                    },
                    "after": {
                      "type": "integer"
                    },
                    "gained": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "sealedBuildings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "buildingsStarted": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "System-derived ids of authoritative buildings first represented by accepted construction events in this turn."
          },
          "buildingsCompleted": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "System-derived ids of authoritative buildings completed by accepted construction events in this turn."
          },
          "buildingFactRefs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "constructionRefs": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "factRef",
                "kind",
                "reservationId",
                "proposalId",
                "buildingId",
                "eventType"
              ],
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "reservation",
                    "completion"
                  ]
                },
                "reservationId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "proposalId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "buildingId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "eventType": {
                  "type": "string"
                }
              }
            }
          },
          "nextRisks": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        }
      },
      "BootstrapProgress": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "gatewayConnected",
          "gatewayNodeId",
          "gatewayCellId",
          "gatewayLocation",
          "roadsConnected",
          "roadsConnectedCount",
          "buildingsStarted",
          "buildingsCompleted",
          "residentialBuildings",
          "commercialBuildings",
          "publicServiceBuildings",
          "totalBuildings",
          "milestones",
          "recommendedBeforeResolve",
          "missingRecommendedMilestones",
          "readyForMeaningfulFirstResolve"
        ],
        "properties": {
          "gatewayConnected": {
            "type": "boolean"
          },
          "gatewayNodeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "gatewayCellId": {
            "type": [
              "string",
              "null"
            ]
          },
          "gatewayLocation": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "cell_id",
                  "column",
                  "row"
                ],
                "properties": {
                  "cell_id": {
                    "type": "string"
                  },
                  "column": {
                    "type": "integer"
                  },
                  "row": {
                    "type": "integer"
                  },
                  "center": {
                    "type": "object",
                    "additionalProperties": true
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "roadsConnected": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "roadsConnectedCount": {
            "type": "integer",
            "minimum": 0
          },
          "buildingsStarted": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "buildingsCompleted": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "residentialBuildings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "commercialBuildings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "publicServiceBuildings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalBuildings": {
            "type": "integer",
            "minimum": 0
          },
          "milestones": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "gateway",
              "road",
              "housing",
              "income",
              "publicService"
            ],
            "properties": {
              "gateway": {
                "type": "boolean"
              },
              "road": {
                "type": "boolean"
              },
              "housing": {
                "type": "boolean"
              },
              "income": {
                "type": "boolean"
              },
              "publicService": {
                "type": "boolean"
              }
            }
          },
          "recommendedBeforeResolve": {
            "type": "array",
            "items": {
              "enum": [
                "gateway",
                "housing",
                "income"
              ]
            }
          },
          "missingRecommendedMilestones": {
            "type": "array",
            "items": {
              "enum": [
                "gateway",
                "housing",
                "income"
              ]
            }
          },
          "readyForMeaningfulFirstResolve": {
            "type": "boolean"
          }
        }
      },
      "BootstrapState": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "progress",
          "guidance"
        ],
        "properties": {
          "progress": {
            "$ref": "#/components/schemas/BootstrapProgress"
          },
          "guidance": {
            "type": "string"
          }
        }
      },
      "StrategyPayload": {
        "type": "object",
        "required": [
          "turn_kind",
          "bootstrap",
          "incidents",
          "arcane_officers",
          "arcane_officer_recruitment",
          "pending_assignments",
          "cards"
        ],
        "properties": {
          "turn_kind": {
            "enum": [
              "bootstrap",
              "normal"
            ]
          },
          "bootstrap": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BootstrapState"
              },
              {
                "type": "null"
              }
            ]
          },
          "incidents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StrategyIncident"
            }
          },
          "arcane_officers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArcaneOfficer"
            }
          },
          "arcane_officer_recruitment": {
            "$ref": "#/components/schemas/ArcaneOfficerRecruitment"
          },
          "pending_assignments": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "cards": {
            "$ref": "#/components/schemas/StrategyCards"
          }
        }
      },
      "StrategyContext": {
        "type": "object",
        "required": [
          "city_id",
          "city_version",
          "turn",
          "turn_kind",
          "turn_status",
          "bootstrap",
          "strategy"
        ],
        "properties": {
          "city_id": {
            "type": "string"
          },
          "city_version": {
            "type": "integer"
          },
          "turn": {
            "type": "integer"
          },
          "turn_kind": {
            "enum": [
              "bootstrap",
              "normal"
            ]
          },
          "turn_status": {
            "type": "string"
          },
          "bootstrap": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BootstrapState"
              },
              {
                "type": "null"
              }
            ]
          },
          "turn_opened_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "turn_deadline_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Deprecated legacy field, always null. Turns no longer have a deadline that auto-settles; it is kept only for API compatibility and never drives settlement."
          },
          "next_turn_unlock_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Server-owned cooldown gate. While the current turn is active it is the earliest wall-clock time the Agent may resolve the turn (POST /strategy/resolve is rejected with TURN_NOT_UNLOCKED before it); once the turn is settled it is the earliest time the next turn may open. Agents cannot change it."
          },
          "settled_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "Which authority settled the last turn: agent, or deadline (historical only; deadline settlement no longer exists)."
          },
          "gameplay_guidance": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Short progressive-disclosure hints (1-3) for the current context, derived from card/placement/incident/turn-lock state. Advisory only; the authoritative contract is the playbook."
          },
          "playbook_url": {
            "type": "string",
            "description": "Stable URL of the authoritative MAGTOPIA Agent Playbook."
          },
          "agent_turn_plan": {
            "type": "object",
            "additionalProperties": true,
            "description": "A compact current-version next action intended to minimize exploratory calls and stale retries."
          },
          "strategy": {
            "$ref": "#/components/schemas/StrategyPayload",
            "properties": {
              "incidents": {
                "type": "array"
              },
              "arcane_officers": {
                "type": "array"
              },
              "arcane_officer_recruitment": {
                "$ref": "#/components/schemas/ArcaneOfficerRecruitment"
              },
              "pending_assignments": {
                "type": "array"
              },
              "cards": {
                "$ref": "#/components/schemas/StrategyCards"
              }
            }
          },
          "last_turn_facts": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TurnFacts"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "StrategyResolveResponse": {
        "type": "object",
        "required": [
          "command_id",
          "status",
          "city_version_before",
          "city_version_after",
          "turn",
          "facts",
          "strategy"
        ],
        "properties": {
          "command_id": {
            "type": "string"
          },
          "status": {
            "const": "resolved"
          },
          "city_version_before": {
            "type": "integer"
          },
          "city_version_after": {
            "type": "integer"
          },
          "turn": {
            "type": "integer"
          },
          "facts": {
            "$ref": "#/components/schemas/TurnFacts"
          },
          "strategy": {
            "$ref": "#/components/schemas/StrategyPayload",
            "properties": {
              "cards": {
                "$ref": "#/components/schemas/StrategyCards"
              }
            }
          }
        }
      },
      "ReportContext": {
        "type": "object",
        "description": "SYSTEM-owned immutable newspaper source for one resolved turn. A deterministic projection of the frozen TurnFacts plus read-only city metadata. Never contains prose and never recomputes gameplay. The Agent edits an OwlReport from it and references facts through factRefs.",
        "required": [
          "schemaVersion",
          "cityId",
          "turn",
          "turnKind",
          "choiceKind",
          "offerChoiceKind",
          "specialCadence",
          "eligibilityAudit",
          "bootstrapProgress",
          "worldDay",
          "factsDigest",
          "settlement",
          "resourceDelta",
          "resources",
          "populationDelta",
          "population",
          "publicService",
          "buildingsStarted",
          "buildingsCompleted",
          "buildingFactRefs",
          "constructionRefs",
          "incidents",
          "incidentRolls",
          "historicalRiskChanges",
          "factRefs"
        ],
        "properties": {
          "schemaVersion": {
            "type": "integer"
          },
          "cityId": {
            "type": "string"
          },
          "turn": {
            "type": "integer"
          },
          "turnKind": {
            "enum": [
              "bootstrap",
              "normal"
            ]
          },
          "choiceKind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "offerChoiceKind": {
            "enum": [
              "ordinary",
              "special",
              null
            ]
          },
          "specialCadence": {
            "type": "boolean"
          },
          "eligibilityAudit": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "bootstrapProgress": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BootstrapProgress"
              },
              {
                "type": "null"
              }
            ]
          },
          "worldDay": {
            "type": "integer",
            "description": "One resolved turn is one city day; worldDay equals turn."
          },
          "factsDigest": {
            "type": "string",
            "description": "Stable digest of the frozen TurnFacts; an OwlReport must bind to it."
          },
          "settlement": {
            "type": "object",
            "properties": {
              "settledBy": {
                "enum": [
                  "agent",
                  "deadline",
                  null
                ]
              },
              "openedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "resolvedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "turnDeadlineAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "nextTurnUnlockAt": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "resourceDelta": {
            "type": "object",
            "properties": {
              "factRef": {
                "type": "string"
              },
              "coins": {
                "type": "integer",
                "minimum": 0
              },
              "arcaneEnergy": {
                "type": "number",
                "minimum": 0
              }
            },
            "required": [
              "coins",
              "arcaneEnergy"
            ]
          },
          "resources": {
            "type": "object",
            "properties": {
              "factRef": {
                "type": "string"
              },
              "before": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              },
              "after": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              }
            },
            "required": [
              "factRef",
              "before",
              "after"
            ]
          },
          "populationDelta": {
            "type": "object",
            "additionalProperties": true
          },
          "population": {
            "type": "object",
            "properties": {
              "factRef": {
                "type": "string"
              },
              "before": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              },
              "after": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              }
            },
            "required": [
              "factRef",
              "before",
              "after"
            ]
          },
          "publicService": {
            "type": "object",
            "additionalProperties": true
          },
          "buildingsStarted": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "archetype": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "purpose": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "buildingsCompleted": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "archetype": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "purpose": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "buildingFactRefs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "constructionRefs": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "factRef",
                "kind",
                "reservationId",
                "proposalId",
                "buildingId",
                "eventType"
              ],
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "reservation",
                    "completion"
                  ]
                },
                "reservationId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "proposalId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "buildingId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "eventType": {
                  "type": "string"
                }
              }
            }
          },
          "exposureChanges": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "from": {
                  "type": "number"
                },
                "to": {
                  "type": "number"
                },
                "delta": {
                  "type": "number"
                },
                "pressure": {
                  "type": "number"
                },
                "concealment": {
                  "type": "number"
                },
                "sealed": {
                  "type": "boolean"
                }
              }
            }
          },
          "incidents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "buildingName": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "dc": {
                  "type": "number",
                  "enum": [
                    10,
                    14,
                    18
                  ]
                },
                "severity": {
                  "type": "number"
                },
                "summary": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "createdAtTurn": {
                  "type": "number"
                }
              }
            }
          },
          "incidentRolls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "buildingId": {
                  "type": "string"
                },
                "finalIncidentChance": {
                  "type": "number"
                },
                "thresholdRoll": {
                  "type": "number"
                },
                "hit": {
                  "type": "boolean"
                },
                "sourcePurpose": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "purposeWeights": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "historicalRiskChanges": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "buildingId": {
                  "type": "string"
                },
                "before": {
                  "type": "integer"
                },
                "after": {
                  "type": "integer"
                },
                "delta": {
                  "type": "integer"
                },
                "incidentIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "sealed": {
                  "type": "boolean"
                }
              }
            }
          },
          "unresolvedIncidents": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "unaddressedIncidents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "incidentId": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "buildingName": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "severity": {
                  "type": "number"
                },
                "status": {
                  "const": "failed"
                },
                "outcome": {
                  "const": "failure"
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                },
                "createdAtTurn": {
                  "type": "number"
                }
              }
            }
          },
          "assignments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "incidentId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                },
                "arcaneOfficerName": {
                  "type": "string"
                },
                "rationale": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "rolls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "incidentId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                },
                "arcaneOfficerName": {
                  "type": "string"
                },
                "attribute": {
                  "type": "string"
                },
                "rawRoll": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 20
                },
                "attributeValue": {
                  "type": "integer"
                },
                "specialtyBonus": {
                  "type": "integer"
                },
                "otherModifiers": {
                  "type": "integer"
                },
                "total": {
                  "type": "integer"
                },
                "dc": {
                  "type": "integer",
                  "enum": [
                    10,
                    14,
                    18
                  ]
                },
                "margin": {
                  "type": "integer"
                },
                "outcome": {
                  "type": "string"
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                }
              }
            }
          },
          "outcomes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "incidentId": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "arcaneOfficerId": {
                  "type": "string"
                },
                "arcaneOfficerName": {
                  "type": "string"
                },
                "outcome": {
                  "type": "string"
                },
                "exposureDelta": {
                  "type": "number"
                },
                "historicalRiskBefore": {
                  "type": "integer"
                },
                "historicalRiskAfter": {
                  "type": "integer"
                },
                "historicalRiskDelta": {
                  "type": "integer"
                },
                "sealed": {
                  "type": "boolean"
                },
                "resolution": {
                  "enum": [
                    "assigned",
                    "unaddressed"
                  ]
                },
                "incidentStatus": {
                  "type": "string"
                },
                "arcaneOfficerStatus": {
                  "type": "string"
                }
              }
            }
          },
          "sealedBuildings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              }
            }
          },
          "nextRisks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "factRef": {
                  "type": "string"
                },
                "buildingId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "exposure": {
                  "type": "number"
                },
                "pressure": {
                  "type": "number"
                },
                "concealment": {
                  "type": "number"
                }
              }
            }
          },
          "card": {
            "type": "object",
            "description": "Card and policy facts projected strictly from the frozen TurnFacts of this turn.",
            "required": [
              "offerId",
              "turn",
              "choiceKind",
              "offerChoiceKind",
              "specialCadence",
              "eligibilityAudit",
              "offeredCards",
              "choice",
              "policy",
              "placement"
            ],
            "properties": {
              "factRef": {
                "type": "string"
              },
              "offerId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "turn": {
                "type": "integer"
              },
              "choiceKind": {
                "enum": [
                  "ordinary",
                  "special",
                  null
                ]
              },
              "offerChoiceKind": {
                "enum": [
                  "ordinary",
                  "special",
                  null
                ]
              },
              "specialCadence": {
                "type": "boolean"
              },
              "eligibilityAudit": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              "offeredCards": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "cardId": {
                      "type": "string"
                    },
                    "type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "decisionMode": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "choice": {
                "type": "object",
                "properties": {
                  "factRef": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "selectedCardId": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "selectedCardTitle": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "choiceResolvedAt": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "cardEffects": {
                    "type": "object"
                  }
                }
              },
              "policy": {
                "type": "object",
                "properties": {
                  "factRef": {
                    "type": "string"
                  },
                  "started": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "refreshed": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "expired": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "active": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "factRef": {
                          "type": "string"
                        },
                        "policyId": {
                          "type": "string"
                        },
                        "event": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "placement": {
                "type": "object",
                "properties": {
                  "factRef": {
                    "type": "string"
                  },
                  "mandate": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "properties": {
                      "cardId": {
                        "type": "string"
                      },
                      "mode": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "placementId": {
                        "type": "string"
                      }
                    }
                  },
                  "completed": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "placementId": {
                          "type": "string"
                        },
                        "cardId": {
                          "type": "string"
                        },
                        "buildingId": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string"
                        },
                        "cardTitle": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    },
                    "description": "Attributed completions: each entry ties a completed mandate to its placement, card, and building so the Owl Daily never misattributes an older delegated completion to the current selection."
                  }
                }
              }
            }
          },
          "factRefs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Every stable fact ref valid for this turn's ReportContext."
          }
        }
      },
      "OwlReportMasthead": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "subtitle": {
            "type": "string",
            "maxLength": 200
          }
        }
      },
      "OwlReportArticle": {
        "type": "object",
        "required": [
          "id",
          "headline",
          "body"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Stable author-chosen id, unique within the edition."
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "dek": {
            "type": "string",
            "maxLength": 400
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "maxLength": 12000
          },
          "category": {
            "type": "string",
            "maxLength": 60,
            "description": "Suggested: development, exposure, arcane_officer, population, economy, community, other. Any short label is accepted."
          },
          "importance": {
            "enum": [
              "front_page",
              "secondary",
              "brief"
            ]
          },
          "relatedFactRefs": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "type": "string"
            },
            "description": "Stable fact refs from this turn's ReportContext that this article is based on. Unknown refs are rejected."
          }
        }
      },
      "OwlReportBrief": {
        "type": "object",
        "required": [
          "id",
          "text"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "category": {
            "type": "string",
            "maxLength": 60
          },
          "relatedFactRefs": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "OwlReportActionBoxEntry": {
        "type": "object",
        "description": "A featured Arcane Officer action. The Agent selects which incident to highlight and writes the reason; roll/outcome/consequence are rendered from the referenced system fact refs, never authored.",
        "required": [
          "id",
          "incidentRef"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "incidentRef": {
            "type": "string",
            "description": "A fact-incident-* ref from this turn's ReportContext."
          },
          "factRefs": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "type": "string"
            },
            "description": "System facts surfaced by the box, for example fact-roll-* and fact-outcome-* refs."
          },
          "reason": {
            "type": "string",
            "maxLength": 2000,
            "description": "Authored dispatch explanation. The frozen assignment rationale stays authoritative in the ReportContext."
          }
        }
      },
      "OwlReportTomorrowWatchEntry": {
        "type": "object",
        "required": [
          "id",
          "text"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "factRefs": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "type": "string"
            },
            "description": "Unresolved or risky facts this plan responds to, e.g. fact-unaddressed-* or fact-risk-* refs."
          }
        }
      },
      "OwlReport": {
        "type": "object",
        "description": "AGENT-owned newspaper composition edited from a ReportContext. The Agent owns news value and narration; every gameplay value it mentions must be referenced through a fact ref rather than re-authored.",
        "required": [
          "masthead",
          "edition",
          "headline",
          "lead",
          "articles",
          "briefs"
        ],
        "properties": {
          "schemaVersion": {
            "type": "integer"
          },
          "masthead": {
            "$ref": "#/components/schemas/OwlReportMasthead"
          },
          "edition": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "subheadline": {
            "type": "string",
            "maxLength": 320
          },
          "lead": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "articles": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/OwlReportArticle"
            }
          },
          "briefs": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "$ref": "#/components/schemas/OwlReportBrief"
            }
          },
          "actionBox": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/OwlReportActionBoxEntry"
            }
          },
          "tomorrowWatch": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/OwlReportTomorrowWatchEntry"
            }
          }
        }
      },
      "OwlReportSubmitRequest": {
        "type": "object",
        "required": [
          "turn",
          "facts_digest",
          "report"
        ],
        "properties": {
          "turn": {
            "type": "integer",
            "minimum": 1,
            "description": "The resolved turn this edition reports on."
          },
          "facts_digest": {
            "type": "string",
            "description": "factsDigest returned by GET /report-context for this turn. A stale digest is rejected."
          },
          "report": {
            "$ref": "#/components/schemas/OwlReport"
          }
        }
      },
      "OwlReportResponse": {
        "type": "object",
        "required": [
          "report_id",
          "city_id",
          "turn",
          "facts_digest",
          "status",
          "edition",
          "report"
        ],
        "properties": {
          "report_id": {
            "type": "string"
          },
          "city_id": {
            "type": "string"
          },
          "turn": {
            "type": "integer"
          },
          "facts_digest": {
            "type": "string"
          },
          "status": {
            "const": "published"
          },
          "edition": {
            "type": "string"
          },
          "report": {
            "$ref": "#/components/schemas/OwlReport"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "idempotent_replay": {
            "type": "boolean",
            "description": "true when an identical Idempotency-Key submission replays the original published report."
          }
        }
      },
      "OwlReportSummary": {
        "type": "object",
        "required": [
          "report_id",
          "city_id",
          "turn",
          "facts_digest",
          "status",
          "edition",
          "headline"
        ],
        "properties": {
          "report_id": {
            "type": "string"
          },
          "city_id": {
            "type": "string"
          },
          "turn": {
            "type": "integer"
          },
          "facts_digest": {
            "type": "string"
          },
          "status": {
            "const": "published"
          },
          "edition": {
            "type": "string"
          },
          "masthead_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "headline": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        }
      },
      "CityDayPresentation": {
        "type": "object",
        "description": "Pure presentation projection of the authoritative turn/workflow state. Visual time-of-day is an output of workflow, never a second simulation clock or realtime economy.",
        "required": [
          "city_id",
          "city_version",
          "phase",
          "turn",
          "turnKind",
          "turnStatus",
          "settled",
          "bootstrap",
          "report",
          "card",
          "agent",
          "incident"
        ],
        "properties": {
          "city_id": {
            "type": "string"
          },
          "city_version": {
            "type": "integer"
          },
          "phase": {
            "enum": [
              "dawn",
              "early_morning",
              "morning",
              "day",
              "night"
            ]
          },
          "turn": {
            "type": "integer"
          },
          "turnKind": {
            "enum": [
              "bootstrap",
              "normal"
            ]
          },
          "turnStatus": {
            "type": "string"
          },
          "settled": {
            "type": "boolean"
          },
          "bootstrap": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "progress"
                ],
                "properties": {
                  "progress": {
                    "$ref": "#/components/schemas/BootstrapProgress"
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "report": {
            "type": "object",
            "properties": {
              "turn": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ready": {
                "type": "boolean"
              },
              "dismissed": {
                "type": "boolean"
              },
              "report_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "edition": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "masthead_title": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "headline": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "card": {
            "type": "object",
            "properties": {
              "choiceStatus": {
                "type": "string"
              },
              "choicePending": {
                "type": "boolean"
              },
              "choiceKind": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "offerChoiceKind": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "specialCadence": {
                "type": "boolean"
              },
              "eligibilityAudit": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              "selectedCardId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "decisionMode": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "playerPlacementPending": {
                "type": "boolean"
              },
              "pendingPlacements": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PendingPlacement"
                }
              }
            }
          },
          "agent": {
            "type": "object",
            "properties": {
              "workStarted": {
                "type": "boolean"
              }
            }
          },
          "incident": {
            "type": "object",
            "properties": {
              "phaseActive": {
                "type": "boolean"
              }
            }
          },
          "nextTurnUnlockAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "turnDeadlineAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Deprecated legacy field, always null. Never drives settlement."
          }
        }
      },
      "ReportDismissRequest": {
        "type": "object",
        "required": [
          "report_turn"
        ],
        "properties": {
          "report_turn": {
            "type": "integer",
            "minimum": 1,
            "description": "The completed day's report turn, matching the latest city-day presentation report.turn."
          }
        }
      },
      "ReportDismissResponse": {
        "type": "object",
        "required": [
          "city_id",
          "city_version",
          "report_turn",
          "dismissed"
        ],
        "properties": {
          "city_id": {
            "type": "string"
          },
          "city_version": {
            "type": "integer"
          },
          "report_turn": {
            "type": "integer"
          },
          "dismissed": {
            "const": true
          }
        }
      }
    }
  },
  "paths": {
    "/players": {
      "post": {
        "summary": "Create a development player account",
        "tags": [
          "public"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "security": [],
        "parameters": []
      }
    },
    "/cities": {
      "get": {
        "summary": "List the authenticated player's cities",
        "tags": [
          "cities"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": []
      },
      "post": {
        "summary": "Create a private city",
        "tags": [
          "cities"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "parameters": []
      }
    },
    "/cities/{city_id}": {
      "get": {
        "summary": "Read a city summary",
        "tags": [
          "cities"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/snapshot": {
      "get": {
        "summary": "Read the Agent decision snapshot",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/render-state": {
      "get": {
        "summary": "Read the authenticated city state for the visual viewer",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/render-artifacts/manifest": {
      "get": {
        "summary": "Read optional versioned baked voxel building artifact metadata",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/render-artifacts/pack": {
      "get": {
        "summary": "Read one immutable Brotli-compressed city building artifact pack",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Binary MTBA artifact",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "version",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Expected city version for the immutable pack."
          },
          {
            "in": "query",
            "name": "manifest",
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{64}$"
            },
            "description": "Expected artifact manifest digest for the immutable pack."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/render-artifacts/{building_id}": {
      "get": {
        "summary": "Read one immutable baked voxel building mesh artifact",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Binary MTBA artifact",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "revision",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Required design revision; the server rejects stale artifact requests."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "building_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/events": {
      "get": {
        "summary": "Read incremental city events",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "after_version",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Read events after this city version. Use the last seen city_version to incrementally sync what happened."
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Maximum number of events to return (runtime clamps to 200)."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/spatial": {
      "get": {
        "summary": "Query cells and occupants in a bounded grid rectangle",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "min_col",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Inclusive left/start column. Bounds are inclusive; reversed bounds are invalid; the maximum requested area is 400 logical cells; omitting all bounds returns the default 10×10 window. Example: ?min_col=20&min_row=10&max_col=29&max_row=19."
          },
          {
            "in": "query",
            "name": "min_row",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Inclusive start row. Bounds are inclusive; reversed bounds are invalid; the maximum requested area is 400 logical cells."
          },
          {
            "in": "query",
            "name": "max_col",
            "schema": {
              "type": "integer"
            },
            "description": "Inclusive right/end column; defaults to min_col + 9. Changing these four values is how an Agent inspects another area of the city."
          },
          {
            "in": "query",
            "name": "max_row",
            "schema": {
              "type": "integer"
            },
            "description": "Inclusive end row; defaults to min_row + 9. Changing these four values is how an Agent inspects another area of the city."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/cells/{cell_id}": {
      "get": {
        "summary": "Read one expanded logical cell after it was discovered through /spatial or another response",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cell_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/buildings": {
      "get": {
        "summary": "Find buildings by name, archetype, purpose, or bounding box",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "schema": {
              "type": "string"
            },
            "description": "Free-text search over building name, archetype, purpose, and description."
          },
          {
            "in": "query",
            "name": "archetype",
            "schema": {
              "type": "string"
            },
            "description": "Exact archetype filter."
          },
          {
            "in": "query",
            "name": "purpose",
            "schema": {
              "type": "string"
            },
            "description": "Exact purpose filter."
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100
            },
            "description": "Maximum number of buildings to return."
          },
          {
            "in": "query",
            "name": "min_col",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Inclusive left/start column. Bounds are inclusive; reversed bounds are invalid; the maximum requested area is 400 logical cells; omitting all bounds returns the default 10×10 window. Example: ?min_col=20&min_row=10&max_col=29&max_row=19. The bounding-box filter matches buildings with at least one footprint cell inside the requested rectangle."
          },
          {
            "in": "query",
            "name": "min_row",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Inclusive start row. Bounds are inclusive; reversed bounds are invalid; the maximum requested area is 400 logical cells."
          },
          {
            "in": "query",
            "name": "max_col",
            "schema": {
              "type": "integer"
            },
            "description": "Inclusive right/end column; defaults to min_col + 9. Changing these four values is how an Agent inspects another area of the city."
          },
          {
            "in": "query",
            "name": "max_row",
            "schema": {
              "type": "integer"
            },
            "description": "Inclusive end row; defaults to min_row + 9. Changing these four values is how an Agent inspects another area of the city."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/buildings/{building_id}": {
      "get": {
        "summary": "Read one full building after it was discovered through /buildings, /spatial, district data, events, or strategy/report facts",
        "tags": [
          "queries"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "building_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/districts": {
      "get": {
        "summary": "List named development districts with block, road, and spatially computed building progress",
        "tags": [
          "districts"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Name and designate a spatial development district with advisory block guidance",
        "tags": [
          "districts"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DistrictCreateRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/districts/{district_id}/cancel": {
      "post": {
        "summary": "Release a district's planning context while preserving existing roads and buildings",
        "tags": [
          "districts"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DistrictCancelRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "district_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/building-designs": {
      "get": {
        "summary": "List versioned building designs",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Create a recommended editable design using floor-stack or urban-massing generation",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignCreateRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/building-designs/{design_id}": {
      "get": {
        "summary": "Read the current building design revision",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "design_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/building-designs/{design_id}/revisions": {
      "post": {
        "summary": "Apply structured operations and create an immutable design revision",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignRevisionRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "design_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/building-designs/{design_id}/confirm": {
      "post": {
        "summary": "Lock the current design revision for construction",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignConfirmRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "design_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/buildings/{building_id}/upgrade-designs": {
      "post": {
        "summary": "Create an editable upgrade design from a built voxel design",
        "tags": [
          "building-designs"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignUpgradeRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "building_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/site-searches": {
      "get": {
        "summary": "List legal construction sites with query parameters (low-friction read fallback; POST remains canonical for structured bounds)",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "district_id",
            "schema": {
              "type": "string"
            },
            "description": "Optional named district id."
          },
          {
            "in": "query",
            "name": "footprint",
            "schema": {
              "enum": [
                "1x1",
                "1x2",
                "1x3",
                "2x1",
                "2x2",
                "2x3",
                "3x1",
                "3x2",
                "3x3"
              ],
              "default": "1x1"
            },
            "description": "Requested logical footprint."
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 12
            },
            "description": "Maximum candidate count."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "List legal construction sites and objective road-frontage facts inside a named district",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteSearchRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/construction-previews": {
      "post": {
        "summary": "Preview one confirmed BuildingDesign",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignConstructionRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/construction-orders": {
      "get": {
        "summary": "List construction orders",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Submit one idempotent confirmed-BuildingDesign construction order",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingDesignConstructionRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/construction-orders/{order_id}": {
      "get": {
        "summary": "Read a construction order",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "order_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/connection-previews": {
      "post": {
        "summary": "Preview a building/cell/node road connection",
        "tags": [
          "roads"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/connections": {
      "post": {
        "summary": "Submit an idempotent road connection",
        "tags": [
          "roads"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/gateways/{node_id}/upgrade": {
      "post": {
        "summary": "Upgrade the fixed railway station gateway without changing its footprint; levels are capped at three",
        "tags": [
          "construction"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GatewayUpgradeRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/time-advances": {
      "post": {
        "summary": "Manual time advance is disabled: income and turn progression flow through the cooldown-gated strategy resolve instead",
        "tags": [
          "simulation"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/strategy": {
      "get": {
        "summary": "Read the strategy context: open incidents, Arcane Officers, player card state, and the last frozen settlement facts",
        "tags": [
          "strategy"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StrategyContext"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/strategy/assignments": {
      "post": {
        "summary": "Submit the Arcane Officer dispatch plan for the strategy phase",
        "tags": [
          "strategy"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StrategyAssignmentsRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/strategy/resolve": {
      "post": {
        "summary": "Request the single authoritative system settlement of the strategy phase",
        "tags": [
          "strategy"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StrategyResolveRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/strategy/recruit-officer": {
      "post": {
        "summary": "Recruit one current system-generated Arcane Officer candidate",
        "tags": [
          "strategy"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfficerRecruitmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OfficerRecruitmentRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cards": {
      "get": {
        "summary": "Read the system-owned daily card catalog",
        "tags": [
          "cards"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CardDefinition"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": []
      }
    },
    "/cities/{city_id}/cards/current": {
      "get": {
        "summary": "Read the canonical three-card offer and all pending placement mandates for the current turn",
        "tags": [
          "cards"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "city_id": {
                      "type": "string"
                    },
                    "city_version": {
                      "type": "integer"
                    },
                    "turn": {
                      "type": "integer"
                    },
                    "turn_status": {
                      "type": "string"
                    },
                    "offer": {
                      "$ref": "#/components/schemas/CardOffer"
                    },
                    "choice": {
                      "$ref": "#/components/schemas/CardChoice"
                    },
                    "pending_placements": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PendingPlacement"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/cards/select": {
      "post": {
        "summary": "The player selects exactly one offered card for this turn",
        "tags": [
          "cards"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardSelectResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardSelectRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/cards/place": {
      "post": {
        "summary": "Place a pending special structure at a legal location (player placement or delegated Agent placement)",
        "tags": [
          "cards"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardPlaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardPlaceRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/cards/cancel": {
      "post": {
        "summary": "Cancel an unplaced special structure entitlement; cancelled unique cards may reappear on a later Special Choice",
        "tags": [
          "cards"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardCancelRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/report-context": {
      "get": {
        "summary": "Read the immutable SYSTEM newspaper source facts for a resolved turn",
        "tags": [
          "reports"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportContext"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "turn",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "description": "The resolved turn to read. Omit to select the latest resolved turn that has frozen facts."
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/reports": {
      "get": {
        "summary": "Read the Owl Daily report history for this city",
        "tags": [
          "reports"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OwlReportSummary"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Publish the canonical Owl Daily newspaper for a resolved turn",
        "tags": [
          "reports"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OwlReportSubmitRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/reports/{report_id}": {
      "get": {
        "summary": "Read one published Owl Daily report",
        "tags": [
          "reports"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwlReportResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "report_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/city-day": {
      "get": {
        "summary": "Read the player-facing city-day presentation projection for the current turn",
        "tags": [
          "city-day"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CityDayPresentation"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/city-day/report-dismissed": {
      "post": {
        "summary": "Record that the player dismissed the completed day's Owl Daily so it is never replayed",
        "tags": [
          "city-day"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportDismissResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportDismissRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/agent-links": {
      "post": {
        "summary": "Create a one-time Agent connection link",
        "tags": [
          "credentials"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/agent-credentials": {
      "get": {
        "summary": "List Agent credentials",
        "tags": [
          "credentials"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/cities/{city_id}/agent-credentials/{credential_id}": {
      "delete": {
        "summary": "Revoke an Agent credential",
        "tags": [
          "credentials"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Version or idempotency conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Request is valid but incompatible with city or asset state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "428": {
            "description": "City version precondition is required",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "message",
                    "retryable"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "retryable": {
                      "type": "boolean"
                    },
                    "details": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "city_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "credential_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    }
  }
}