{"ok":true,"value":{"_capabilities":["billing","enforcement","lots","members","passes","read","units","update"],"_role_capabilities":{"su":["billing","enforcement","lots","members","passes","read","units","update"],"admin":["billing","enforcement","lots","members","passes/configure","passes/manage","read","units","update"],"manager":["passes/manage","read"],"patrol":["enforcement/read","enforcement/scan","enforcement/violation","read"],"resident":["passes/claim","read"]},"_auth":{"how":"An API token (pa_...) in ANY of these. Mint one with `pa tokens create`.","curl":"curl -u you@example.com:pa_YOURTOKEN -H \"content-type: application/json\" -d '{}' https://a.parkagent.com/passes/list","forms":["Authorization: Basic base64(<anything>:pa_TOKEN)   — curl -u you:pa_TOKEN","Authorization: Basic base64(pa_TOKEN:)             — curl -u pa_TOKEN:","Authorization: Bearer pa_TOKEN","?token=pa_TOKEN                                     — for a link"],"note":"The other half of Basic is a label, not a username — it is never checked. There are no passwords for humans (DEC-288)."},"leads/submit":{"doc":"Submit the marketing-site demo-request / contact-us form: creates a Bigin Contact with the ParkAgent tags, deduped by email, and logs a minimal submission record. Public; Turnstile captcha + email required; rate-limited per IP.","schema_in":{"type":"object","properties":{"form_type":{"type":"string","enum":["demo","contact"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"company":{"type":"string"},"message":{"type":"string"},"captcha_token":{"type":"string"},"honeypot":{"type":"string"}},"required":["form_type","last_name","email","captcha_token"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"errors":["captcha_failed","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","rate_limited","reference_invalid","required","response_shape","submit_failed","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"properties/list":{"doc":"List properties. Superadmin sees all; admin sees own customer.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"money_unlocked":{"type":"boolean"},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number","nullable":true},"peak_season_start_day":{"type":"number","nullable":true},"peak_season_end_month":{"type":"number","nullable":true},"peak_season_end_day":{"type":"number","nullable":true},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","slug","timezone","branding_config","address","contact","brand_assets","hero_image_url","money_unlocked","peak_season_enabled","peak_season_start_month","peak_season_start_day","peak_season_end_month","peak_season_end_day","legal_entity_name","tax_id_ein","billing_address_line1","billing_city","billing_state","billing_postal_code","billing_country","billing_contact_email","deleted_at","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"properties/get":{"doc":"Get a property by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"money_unlocked":{"type":"boolean"},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number","nullable":true},"peak_season_start_day":{"type":"number","nullable":true},"peak_season_end_month":{"type":"number","nullable":true},"peak_season_end_day":{"type":"number","nullable":true},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","slug","timezone","branding_config","address","contact","brand_assets","hero_image_url","money_unlocked","peak_season_enabled","peak_season_start_month","peak_season_start_day","peak_season_end_month","peak_season_end_day","legal_entity_name","tax_id_ein","billing_address_line1","billing_city","billing_state","billing_postal_code","billing_country","billing_contact_email","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"properties/create":{"doc":"Create a property. Superadmin or admin for own customer.","schema_in":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string"},"contact":{"type":"object","additionalProperties":{}},"brand_assets":{"type":"object","additionalProperties":{}},"hero_image_url":{"type":"string","nullable":true}},"required":["name"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"money_unlocked":{"type":"boolean"},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number","nullable":true},"peak_season_start_day":{"type":"number","nullable":true},"peak_season_end_month":{"type":"number","nullable":true},"peak_season_end_day":{"type":"number","nullable":true},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","slug","timezone","branding_config","address","contact","brand_assets","hero_image_url","money_unlocked","peak_season_enabled","peak_season_start_month","peak_season_start_day","peak_season_end_month","peak_season_end_day","legal_entity_name","tax_id_ein","billing_address_line1","billing_city","billing_state","billing_postal_code","billing_country","billing_contact_email","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","slug_underivable","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"properties/update":{"doc":"Update a property.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number"},"peak_season_start_day":{"type":"number"},"peak_season_end_month":{"type":"number"},"peak_season_end_day":{"type":"number"},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","format":"email","nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"money_unlocked":{"type":"boolean"},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number","nullable":true},"peak_season_start_day":{"type":"number","nullable":true},"peak_season_end_month":{"type":"number","nullable":true},"peak_season_end_day":{"type":"number","nullable":true},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","slug","timezone","branding_config","address","contact","brand_assets","hero_image_url","money_unlocked","peak_season_enabled","peak_season_start_month","peak_season_start_day","peak_season_end_month","peak_season_end_day","legal_entity_name","tax_id_ein","billing_address_line1","billing_city","billing_state","billing_postal_code","billing_country","billing_contact_email","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","peak_season_window_incomplete","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"properties/money_lock/set":{"doc":"Set the per-property customer-editable money flag (api#576). VRPS staff only; default is locked (white-glove). Audited.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"unlocked":{"type":"boolean"}},"required":["property_id","unlocked"]},"schema_out":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"money_unlocked":{"type":"boolean"}},"required":["property_id","money_unlocked"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"properties/delete":{"doc":"Soft-delete a property.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"},"branding_config":{"type":"object","additionalProperties":{}},"address":{"type":"string","nullable":true},"contact":{"type":"object","additionalProperties":{},"nullable":true},"brand_assets":{"type":"object","additionalProperties":{},"nullable":true},"hero_image_url":{"type":"string","nullable":true},"money_unlocked":{"type":"boolean"},"peak_season_enabled":{"type":"boolean"},"peak_season_start_month":{"type":"number","nullable":true},"peak_season_start_day":{"type":"number","nullable":true},"peak_season_end_month":{"type":"number","nullable":true},"peak_season_end_day":{"type":"number","nullable":true},"legal_entity_name":{"type":"string","nullable":true},"tax_id_ein":{"type":"string","nullable":true},"billing_address_line1":{"type":"string","nullable":true},"billing_city":{"type":"string","nullable":true},"billing_state":{"type":"string","nullable":true},"billing_postal_code":{"type":"string","nullable":true},"billing_country":{"type":"string","nullable":true},"billing_contact_email":{"type":"string","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","slug","timezone","branding_config","address","contact","brand_assets","hero_image_url","money_unlocked","peak_season_enabled","peak_season_start_month","peak_season_start_day","peak_season_end_month","peak_season_end_day","legal_entity_name","tax_id_ein","billing_address_line1","billing_city","billing_state","billing_postal_code","billing_country","billing_contact_email","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"properties/fees/set":{"doc":"Set (upsert) a Property fee type's config (G-13: Handling / Early-bird / Convenience only).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"fee_type":{"type":"string","enum":["handling","early_bird","convenience"]},"enabled":{"type":"boolean"},"amount_type":{"type":"string","enum":["flat","percent"]},"amount_value":{"type":"number"},"early_bird_days":{"type":"number","nullable":true},"recipient":{"type":"string","enum":["vrps","property"]},"refundable":{"type":"boolean"},"waivable":{"type":"boolean"},"taxable":{"type":"boolean"},"included_in_commission":{"type":"boolean"}},"required":["property_id","fee_type"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"fee_type":{"type":"string","enum":["handling","early_bird","convenience"]},"enabled":{"type":"boolean"},"amount_type":{"type":"string","enum":["flat","percent"]},"amount_value":{"type":"number"},"early_bird_days":{"type":"number","nullable":true},"recipient":{"type":"string","enum":["vrps","property"]},"refundable":{"type":"boolean"},"waivable":{"type":"boolean"},"taxable":{"type":"boolean"},"included_in_commission":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","fee_type","enabled","amount_type","amount_value","early_bird_days","recipient","refundable","waivable","taxable","included_in_commission","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","early_bird_days_invalid","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"properties/fees/list":{"doc":"List a Property's fee configs (G-13).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}},"required":["property_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"fee_type":{"type":"string","enum":["handling","early_bird","convenience"]},"enabled":{"type":"boolean"},"amount_type":{"type":"string","enum":["flat","percent"]},"amount_value":{"type":"number"},"early_bird_days":{"type":"number","nullable":true},"recipient":{"type":"string","enum":["vrps","property"]},"refundable":{"type":"boolean"},"waivable":{"type":"boolean"},"taxable":{"type":"boolean"},"included_in_commission":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","fee_type","enabled","amount_type","amount_value","early_bird_days","recipient","refundable","waivable","taxable","included_in_commission","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"dashboard/get":{"doc":"Return all dashboard data for a property in one round-trip. Recent activity covers pass_issued, offer_accepted, and pass_revoked only — plate swaps, bulk issues, and share-link events require a property_events log (future work).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}},"required":["property_id"]},"schema_out":{"type":"object","properties":{"property":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"unit_count":{"type":"number"}},"required":["id","name","unit_count"]},"summary":{"type":"object","properties":{"active_passes":{"type":"object","properties":{"total":{"type":"number"},"sparkline":{"type":"array","items":{"type":"number"}}},"required":["total","sparkline"]},"today":{"type":"object","properties":{"issued":{"type":"number"},"revoked":{"type":"number"},"sparkline":{"type":"array","items":{"type":"number"}}},"required":["issued","revoked","sparkline"]},"pending_offers":{"type":"object","properties":{"count":{"type":"number"},"sparkline":{"type":"array","items":{"type":"number"}}},"required":["count","sparkline"]},"expiring_this_week":{"type":"number"}},"required":["active_passes","today","pending_offers","expiring_this_week"]},"alert":{"type":"object","properties":{"unredeemed_direct_offers":{"type":"number"},"oldest_days":{"type":"number"}},"required":["unredeemed_direct_offers","oldest_days"],"nullable":true},"units":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","enum":["healthy","near_cap","pending"]},"threshold_used":{"type":"number"},"threshold_max":{"type":"number","nullable":true},"pending_count":{"type":"number"},"expiring_count":{"type":"number"},"last_activity_at":{"type":"string","nullable":true}},"required":["id","name","status","threshold_used","threshold_max","pending_count","expiring_count","last_activity_at"]}},"needs_attention":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["unredeemed_offers","passes_expiring","share_link_unclaimed"]},"count":{"type":"number"},"units":{"type":"array","items":{"type":"string"}},"detail":{"type":"string"}},"required":["type","count","units","detail"]}},"recent_activity":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["pass_issued","offer_accepted","pass_revoked"]},"occurred_at":{"type":"string"},"unit_name":{"type":"string","nullable":true},"actor_name":{"type":"string","nullable":true},"subject_name":{"type":"string","nullable":true},"amount_cents":{"type":"number","nullable":true},"detail":{"type":"string","nullable":true}},"required":["type","occurred_at","unit_name","actor_name","subject_name","amount_cents","detail"]}}},"required":["property","summary","alert","units","needs_attention","recent_activity"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"lots/list":{"doc":"List lots for a property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"hero_image_url":{"type":"string","nullable":true},"address_line1":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"postal_code":{"type":"string","nullable":true},"country":{"type":"string"},"tax_rate":{"type":"number"},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","slug","total_capacity","soft_capacity","grace_period_minutes","hero_image_url","address_line1","city","state","latitude","longitude","postal_code","country","tax_rate","deleted_at","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/get":{"doc":"Get a lot by id or slug.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"}}},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"hero_image_url":{"type":"string","nullable":true},"address_line1":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"postal_code":{"type":"string","nullable":true},"country":{"type":"string"},"tax_rate":{"type":"number"},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","slug","total_capacity","soft_capacity","grace_period_minutes","hero_image_url","address_line1","city","state","latitude","longitude","postal_code","country","tax_rate","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","missing_identifier","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/create":{"doc":"Create a lot.","schema_in":{"type":"object","properties":{"address_line1":{"type":"string"},"city":{"type":"string"},"state":{},"postal_code":{"type":"string"},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"country":{},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number"},"soft_capacity":{"type":"number"},"grace_period_minutes":{"type":"number"},"tax_rate":{"type":"number"},"hero_image_url":{"type":"string","nullable":true}},"required":["address_line1","city","state","postal_code","property_id","name"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"hero_image_url":{"type":"string","nullable":true},"address_line1":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"postal_code":{"type":"string","nullable":true},"country":{"type":"string"},"tax_rate":{"type":"number"},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","slug","total_capacity","soft_capacity","grace_period_minutes","hero_image_url","address_line1","city","state","latitude","longitude","postal_code","country","tax_rate","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/update":{"doc":"Update a lot.","schema_in":{"type":"object","properties":{"address_line1":{"type":"string"},"city":{"type":"string"},"state":{},"postal_code":{"type":"string"},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"country":{},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"tax_rate":{"type":"number"},"hero_image_url":{"type":"string","nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"hero_image_url":{"type":"string","nullable":true},"address_line1":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"postal_code":{"type":"string","nullable":true},"country":{"type":"string"},"tax_rate":{"type":"number"},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","slug","total_capacity","soft_capacity","grace_period_minutes","hero_image_url","address_line1","city","state","latitude","longitude","postal_code","country","tax_rate","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/delete":{"doc":"Soft-delete a lot.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"grace_period_minutes":{"type":"number"},"hero_image_url":{"type":"string","nullable":true},"address_line1":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"postal_code":{"type":"string","nullable":true},"country":{"type":"string"},"tax_rate":{"type":"number"},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","slug","total_capacity","soft_capacity","grace_period_minutes","hero_image_url","address_line1","city","state","latitude","longitude","postal_code","country","tax_rate","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/access/grant":{"doc":"Grant a property access to a lot (peer lot sharing).","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"}},"required":["lot_id","property_id"]},"schema_out":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"created_at":{"type":"string"}},"required":["lot_id","property_id","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/access/revoke":{"doc":"Revoke a property's access to a lot.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"}},"required":["lot_id","property_id"]},"schema_out":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"}},"required":["lot_id","property_id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/access/list":{"doc":"List properties with access to a lot.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"}},"required":["lot_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"created_at":{"type":"string"}},"required":["lot_id","property_id","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/occupancy":{"doc":"Get active pass count vs capacity for each lot in a property. occupancy_pct is null when total_capacity is null (unlimited).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}},"required":["property_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"lot_name":{"type":"string"},"total_capacity":{"type":"number","nullable":true},"soft_capacity":{"type":"number","nullable":true},"active_passes":{"type":"number"},"occupancy_pct":{"type":"number","nullable":true},"state":{"type":"string","enum":["unlimited","available","almost_full","full"]}},"required":["lot_id","lot_name","total_capacity","soft_capacity","active_passes","occupancy_pct","state"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"lots/landing_config/get":{"doc":"Get the landing page config for a lot.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"}},"required":["lot_id"]},"schema_out":{"type":"object","additionalProperties":{}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/landing_config/set":{"doc":"Replace the landing page config for a lot.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"config":{"type":"object","additionalProperties":{}}},"required":["lot_id","config"]},"schema_out":{"type":"object","additionalProperties":{}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"marketing.configure"},"lots/caps/set":{"doc":"Set a per-Template-per-Lot threshold cap for unit-less passes (G-04).","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"}},"required":["lot_id","family_id","max_concurrent_passes"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","lot_id","family_id","max_concurrent_passes","created_at","updated_at"]},"errors":["cap_exceeds_lot_total","conflict_retry","constraint_violation","duplicate","family_not_in_property","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/caps/remove":{"doc":"Remove a per-Template-per-Lot threshold cap for unit-less passes (G-04).","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"}},"required":["lot_id","family_id"]},"schema_out":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"removed":{"type":"boolean"}},"required":["lot_id","family_id","removed"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"lots/caps/list":{"doc":"List per-Template-per-Lot threshold caps for unit-less passes (G-04).","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"}},"required":["lot_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","lot_id","family_id","max_concurrent_passes","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/list":{"doc":"List units for a property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","max_concurrent_passes","deleted_at","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/get":{"doc":"Get a unit by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","max_concurrent_passes","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/create":{"doc":"Create a unit in a property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number"}},"required":["property_id","name"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","max_concurrent_passes","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/update":{"doc":"Update a unit.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","max_concurrent_passes","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/delete":{"doc":"Soft-delete a unit.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"max_concurrent_passes":{"type":"number","nullable":true},"deleted_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","name","max_concurrent_passes","deleted_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/assign_resident":{"doc":"Assign resident role to a user for a unit (INV-014, INV-020).","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"phone":{},"phone_is_mobile":{"type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["unit_id","email"]},"schema_out":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"role_id":{"type":"string","format":"uuid"},"sms_queued":{"type":"boolean"}},"required":["unit_id","user_id","role_id","sms_queued"]},"errors":["conflict_retry","constraint_violation","duplicate","duplicate_role","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"unit.configure-templates"},"units/pass_counts":{"doc":"Get pass counts and limits for a unit. Accessible by resident.","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"start_at":{"type":"string"},"end_at":{"type":"string"}},"required":["unit_id"]},"schema_out":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"active_count":{"type":"number"},"hard_limit":{"type":"number","nullable":true},"soft_limit":{"type":"number","nullable":true}},"required":["unit_id","active_count","hard_limit","soft_limit"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"units/caps/set":{"doc":"Set a per-Template-per-Unit threshold cap (DEC-176).","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"}},"required":["unit_id","family_id","max_concurrent_passes"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","unit_id","family_id","max_concurrent_passes","created_at","updated_at"]},"errors":["cap_exceeds_unit_total","conflict_retry","constraint_violation","duplicate","family_not_in_property","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"unit.configure-templates"},"units/caps/remove":{"doc":"Remove a per-Template-per-Unit threshold cap (DEC-176).","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"}},"required":["unit_id","family_id"]},"schema_out":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"removed":{"type":"boolean"}},"required":["unit_id","family_id","removed"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"unit.configure-templates"},"units/caps/list":{"doc":"List per-Template-per-Unit threshold caps for a unit (DEC-176).","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"}},"required":["unit_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"max_concurrent_passes":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","unit_id","family_id","max_concurrent_passes","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/lots/add":{"doc":"Grant a unit access to a lot.","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"}},"required":["unit_id","lot_id"]},"schema_out":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"created_at":{"type":"string"}},"required":["unit_id","lot_id","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/lots/remove":{"doc":"Revoke a unit's access to a lot.","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"}},"required":["unit_id","lot_id"]},"schema_out":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"}},"required":["unit_id","lot_id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"units/lots/list":{"doc":"List lots accessible by a unit.","schema_in":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"}},"required":["unit_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"unit_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"created_at":{"type":"string"}},"required":["unit_id","lot_id","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"property.configure"},"passes/list":{"doc":"List passes with filters.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"phone":{"type":"string"},"status":{},"created_after":{"type":"string"},"created_before":{"type":"string"},"limit":{"type":"number"}},"required":["status"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","missing_identifier","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"passes/get":{"doc":"Get a pass by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"passes/receipt":{"doc":"The 'View receipt' data for a pass: line items + the card actually charged (G-36).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"},"source":{"type":"string","enum":["purchase","legacy"]},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"card_brand":{"type":"string","nullable":true},"card_last4":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"statement_descriptor":{"type":"string","nullable":true},"payment_reference":{"type":"string","nullable":true},"refunds":{"type":"array","items":{"type":"object","properties":{"refunded_at":{"type":"string"},"amount_cents":{"type":"number"}},"required":["refunded_at","amount_cents"]}},"total_after_refund_cents":{"type":"number"},"lot_address":{"type":"string","nullable":true},"support_email":{"type":"string"},"support_phone":{"type":"string"}},"required":["pass_id","source","base_price_cents","fee_cents","tax_cents","total_amount_cents","card_brand","card_last4","paid_at","statement_descriptor","payment_reference","refunds","total_after_refund_cents","lot_address","support_email","support_phone"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"passes/contact":{"doc":"The 'Contact Property' data for a pass: the owning Property's phone, if on file (G-37).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"contact_phone":{"type":"string","nullable":true}},"required":["contact_phone"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"passes/lot_link":{"doc":"The 'Rebook?' nudge's destination: this pass's own Lot's slug (G-83).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"lot_slug":{"type":"string"}},"required":["lot_slug"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"passes/create":{"doc":"Issue a pass.","schema_in":{"type":"object","properties":{"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{},"offer_id":{"type":"string","format":"uuid"},"offer_code":{"type":"string"},"unit_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid"},"start_at":{"type":"string"},"end_at":{"type":"string"},"fee_cents":{"type":"number"},"handling_cents":{"type":"number"},"convenience_cents":{"type":"number"},"early_bird_cents":{"type":"number"},"acknowledge_soft_limit":{"type":"boolean"}},"required":["template_id","lot_id","user_id","plate"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["card_declined","conflict_retry","constraint_violation","duplicate","exceeds_max_duration","fee_parts_mismatch","fee_parts_required","forbidden","internal_error","invalid_input","invalid_params","invalid_rate_config","invalid_window","lot_at_capacity","lot_deleted","lot_template_limit","not_found","offer_code_invalid","offer_code_required","offer_exhausted","offer_expired","offer_not_found","offer_not_yet_valid","offer_unavailable","payment_method_unusable","reference_invalid","required","response_shape","sub_minimum_charge","unauthenticated","unit_hard_limit","unit_periodic_limit","unit_required","unit_soft_limit","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout","window_required"],"gate":"pass.issue-direct"},"passes/quote":{"doc":"Price preview for a template over a window (DEC-278): the same base + fee + tax math Passes.create runs, with no side effects.","schema_in":{"type":"object","properties":{"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"start_at":{"type":"string"},"end_at":{"type":"string"}},"required":["template_id","lot_id"]},"schema_out":{"type":"object","properties":{"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"}},"required":["base_price_cents","fee_cents","tax_cents","total_amount_cents"]},"errors":["conflict_retry","constraint_violation","duplicate","exceeds_max_duration","forbidden","internal_error","invalid_input","invalid_params","invalid_rate_config","invalid_window","lot_deleted","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout","window_required"],"gate":"pass.purchase-own"},"passes/import":{"doc":"Import a legacy pass, created-and-paid at $0, source legacy (G-42).","schema_in":{"type":"object","properties":{"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{},"start_at":{"type":"string"},"end_at":{"type":"string"},"unit_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid"},"legacy_price_cents":{"type":"number"}},"required":["template_id","lot_id","user_id","plate","start_at"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","invalid_window","lot_deleted","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"legacy.import"},"passes/activate":{"doc":"Activate a created pass (Stripe webhook or $0 path).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","pass_already_paid","pass_terminal","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.issue-direct"},"passes/revoke":{"doc":"Revoke a pass.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"revoke_reason":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.revoke"},"passes/swap_plate":{"doc":"Swap the authorized plate on a live pass. Self-service or Manager/Admin.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"new_plate":{}},"required":["id","new_plate"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_change","not_found","pass_not_swappable","plate_already_active_at_lot","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.plate-swap-own"},"passes/lookup_plate":{"doc":"Look up active/recent passes for a plate in a lot. Used by enforcement.","schema_in":{"type":"object","properties":{"plate":{"type":"string"},"lot_id":{"type":"string","format":"uuid"}},"required":["plate","lot_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"passes/plate_history":{"doc":"Plate-swap timeline for a pass, reverse-chron (api#368). Same visibility as passes/get.","schema_in":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"}},"required":["pass_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"plate":{"type":"string"},"prior_plate":{"type":"string"},"changed_by":{"type":"string","format":"uuid"},"changed_at":{"type":"string"}},"required":["plate","prior_plate","changed_by","changed_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"pass_events/list":{"doc":"Recent pass activity feed for a lot/property (api#359): created/claimed/paid/revoked/expired/plate_swapped, reverse-chron projection over stored facts.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"since":{"type":"string"},"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["pass.created","pass.claimed","pass.paid","pass.revoked","pass.refunded","pass.expired","pass.plate_swapped"]},"pass_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"prior_plate":{"type":"string","nullable":true},"occurred_at":{"type":"string"}},"required":["type","pass_id","lot_id","unit_id","plate","prior_plate","occurred_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","lot_not_in_property","missing_identifier","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"pass_types/families/list":{"doc":"List pass type families for a lot.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"auth_methods":{"type":"array","items":{"type":"string"},"nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","lot_id","name","description","category","auth_methods","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/families/get":{"doc":"Get a pass type family by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"auth_methods":{"type":"array","items":{"type":"string"},"nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","lot_id","name","description","category","auth_methods","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/families/create":{"doc":"Create a pass type family for a lot.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"auth_methods":{"type":"array","items":{"type":"string"}}},"required":["name"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"auth_methods":{"type":"array","items":{"type":"string"},"nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","lot_id","name","description","category","auth_methods","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","lot_not_in_property","missing_identifier","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/families/update":{"doc":"Update a pass type family.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"auth_methods":{"type":"array","items":{"type":"string"},"nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"auth_methods":{"type":"array","items":{"type":"string"},"nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","property_id","lot_id","name","description","category","auth_methods","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/families/delete":{"doc":"Delete a pass type family (and all its blueprints).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"errors":["blueprint_in_use","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/blueprints/list":{"doc":"List pass blueprints for a family.","schema_in":{"type":"object","properties":{"family_id":{"type":"string","format":"uuid"},"family_ids":{"type":"array","items":{"type":"string","format":"uuid"}}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/blueprints/get":{"doc":"Get a pass blueprint by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/blueprints/create":{"doc":"Create a pass blueprint in a family. Creates inactive; use activate to enable. Priced creates require the property money-unlock (or VRPS staff) — api#576.","schema_in":{"type":"object","properties":{"family_id":{"type":"string","format":"uuid"},"rate_structure":{},"rate_amount":{},"duration_rules":{"type":"object","additionalProperties":{}},"threshold_concurrent":{"type":"number"},"threshold_periodic":{"type":"number"},"threshold_period":{"type":"string","enum":["day","week","month"]}},"required":["family_id","rate_structure","rate_amount"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","rates_locked","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/blueprints/update":{"doc":"Update a blueprint. Duration rules frozen once first_used_at is set (INV-035). Rate/duration edits require the property money-unlock (or VRPS staff) — api#576.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string","enum":["complimentary","flat","tiered"]},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]},"errors":["blueprint_frozen","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","rates_locked","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.set-rates"},"pass_types/blueprints/activate":{"doc":"Activate a blueprint. Deactivates any currently-active blueprint in the same family.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_types/blueprints/deactivate":{"doc":"Deactivate a blueprint without promoting another.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"rate_structure":{"type":"string"},"rate_amount":{"type":"number"},"duration_rules":{"type":"object","additionalProperties":{}},"is_active":{"type":"boolean"},"first_used_at":{"type":"string","nullable":true},"threshold_concurrent":{"type":"number","nullable":true},"threshold_periodic":{"type":"number","nullable":true},"threshold_period":{"type":"string","enum":["day","week","month"],"nullable":true},"created_at":{"type":"string"}},"required":["id","family_id","rate_structure","rate_amount","duration_rules","is_active","first_used_at","threshold_concurrent","threshold_periodic","threshold_period","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"template.author"},"pass_offers/list":{"doc":"List pass offers.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"offers.view"},"pass_offers/get":{"doc":"Get a pass offer by id or code.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"}}},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","missing_identifier","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"offers.view"},"pass_offers/create":{"doc":"Create a pass offer.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid"},"offer_type":{"type":"string","enum":["open","claim_code","direct"]},"code":{"type":"string"},"capacity":{"type":"number"},"valid_from":{"type":"string"},"valid_until":{"type":"string"},"default_plate":{},"payment_method_id":{"type":"string","format":"uuid"},"recipient_phone":{}},"required":["lot_id","family_id","offer_type"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","lot_deleted","reference_invalid","required","response_shape","sender_not_opted_in","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout","would_exceed_capacity"],"gate":"pass.issue-direct"},"pass_offers/update":{"doc":"Update a pass offer capacity/dates/default_plate.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"capacity":{"type":"number","nullable":true},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.issue-direct"},"pass_offers/deactivate":{"doc":"Deactivate a pass offer (Active → Inactive). Manager action.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","pass_offer_not_active","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.issue-direct"},"pass_offers/resend":{"doc":"Resend an outstanding offer's claim SMS to its ORIGINAL recipient (api#743). The recipient is not a parameter.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","never_sent","not_a_claim_code","not_found","offer_unavailable","rate_limited","reference_invalid","required","response_shape","sender_not_opted_in","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.issue-direct"},"pass_offers/rotate_code":{"doc":"Rotate (regenerate) a claim code. Manual only — no auto-rotation (#169 D3b).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"family_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"offer_type":{"type":"string","enum":["open","claim_code","group","direct"]},"code":{"type":"string","nullable":true},"capacity":{"type":"number","nullable":true},"claimed_count":{"type":"number"},"status":{"type":"string","enum":["active","exhausted","expired","inactive"]},"valid_from":{"type":"string","nullable":true},"valid_until":{"type":"string","nullable":true},"default_plate":{"type":"string","nullable":true},"payment_method_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","lot_id","family_id","unit_id","offer_type","code","capacity","claimed_count","status","valid_from","valid_until","default_plate","payment_method_id","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_a_claim_code","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.issue-direct"},"enforcement/scans/evaluate":{"doc":"Scan result screen: fuzzy plate match × pass status/grace → authorized|grace|unauthorized.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"}},"required":["lot_id","plate"]},"schema_out":{"type":"object","properties":{"result":{"type":"string","enum":["authorized","grace","unauthorized"]},"scanned":{"type":"string"},"match":{"type":"object","properties":{"plate":{"type":"string"},"score":{"type":"number"},"exact":{"type":"boolean"}},"required":["plate","score","exact"],"nullable":true},"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"pass_type":{"type":"string"},"end_at":{"type":"string","nullable":true},"holder":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true}},"required":["id","name"]},"lot_id":{"type":"string","format":"uuid"},"lot_name":{"type":"string"},"wrong_lot":{"type":"boolean"}},"required":["id","status","pass_type","end_at","holder","lot_id","lot_name","wrong_lot"],"nullable":true},"candidates":{"type":"array","items":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"score":{"type":"number"},"exact":{"type":"boolean"},"status":{"type":"string"},"pass_type":{"type":"string"},"end_at":{"type":"string","nullable":true},"holder":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true}},"required":["id","name"]},"lot_id":{"type":"string","format":"uuid"},"lot_name":{"type":"string"},"wrong_lot":{"type":"boolean"}},"required":["pass_id","plate","score","exact","status","pass_type","end_at","holder","lot_id","lot_name","wrong_lot"]}},"violations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"score":{"type":"number"},"exact":{"type":"boolean"},"status":{"type":"string"},"reason":{"type":"string","nullable":true},"created_at":{"type":"string"},"lot_id":{"type":"string","format":"uuid"}},"required":["id","plate","score","exact","status","reason","created_at","lot_id"]}},"scans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"result":{"type":"string","nullable":true},"lot_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","plate","result","lot_id","created_at"]}},"reasons":{"type":"array","items":{"type":"string"}}},"required":["result","scanned","match","pass","candidates","violations","scans","reasons"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_active_shift","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.scan"},"enforcement/scans/create":{"doc":"Log a plate scan event (authorized flag computed from active passes + grace period).","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"recognized_plate":{"type":"string"},"photo_blob_id":{"type":"string","format":"uuid"},"recognition_id":{"type":"string","format":"uuid"}},"required":["lot_id","plate"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"recognized_plate":{"type":"string","nullable":true},"authorized":{"type":"boolean"},"result":{"type":"string","enum":["authorized","grace","unauthorized"]},"matched_pass_id":{"type":"string","format":"uuid","nullable":true},"photo_url":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","lot_id","officer_user_id","plate","recognized_plate","authorized","result","matched_pass_id","photo_url","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_active_shift","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.scan"},"enforcement/scans/get":{"doc":"Get a scan by id (api#862 — the /patrol/scans/<id> page).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"recognized_plate":{"type":"string","nullable":true},"authorized":{"type":"boolean"},"result":{"type":"string","enum":["authorized","grace","unauthorized"]},"matched_pass_id":{"type":"string","format":"uuid","nullable":true},"photo_url":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","lot_id","officer_user_id","plate","recognized_plate","authorized","result","matched_pass_id","photo_url","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/scans/list":{"doc":"List scan events.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"recognized_plate":{"type":"string","nullable":true},"authorized":{"type":"boolean"},"result":{"type":"string","enum":["authorized","grace","unauthorized"]},"matched_pass_id":{"type":"string","format":"uuid","nullable":true},"photo_url":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","lot_id","officer_user_id","plate","recognized_plate","authorized","result","matched_pass_id","photo_url","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/violations/create":{"doc":"Issue a violation.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"reason":{"type":"string","enum":["no_permit","fire_lane","blocking","expired","other"]},"scan_event_id":{"type":"string","format":"uuid"},"notes":{"type":"string"},"photo_blob_id":{"type":"string","format":"uuid"}},"required":["lot_id","plate","reason"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"scan_event_id":{"type":"string","format":"uuid","nullable":true},"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"reason":{"type":"string","enum":["no_permit","fire_lane","blocking","expired","other"],"nullable":true},"disputed_by":{"type":"string","format":"uuid","nullable":true},"disputed_at":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"officer_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","scan_event_id","lot_id","plate","status","notes","reason","disputed_by","disputed_at","photo_url","officer_user_id","officer_name","created_at","updated_at"]},"errors":["authorized_scan","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_active_shift","not_found","plate_in_grace_period","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.log-violation"},"enforcement/violations/list":{"doc":"List violations.","schema_in":{"type":"object","properties":{"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"status":{"type":"string","enum":["issued","contested","resolved","dismissed"]},"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"scan_event_id":{"type":"string","format":"uuid","nullable":true},"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"reason":{"type":"string","enum":["no_permit","fire_lane","blocking","expired","other"],"nullable":true},"disputed_by":{"type":"string","format":"uuid","nullable":true},"disputed_at":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"officer_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","scan_event_id","lot_id","plate","status","notes","reason","disputed_by","disputed_at","photo_url","officer_user_id","officer_name","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/violations/get":{"doc":"Get a violation by id (DEC-317 — the su /violations/<id> detail page).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"scan_event_id":{"type":"string","format":"uuid","nullable":true},"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"reason":{"type":"string","enum":["no_permit","fire_lane","blocking","expired","other"],"nullable":true},"disputed_by":{"type":"string","format":"uuid","nullable":true},"disputed_at":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"officer_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","scan_event_id","lot_id","plate","status","notes","reason","disputed_by","disputed_at","photo_url","officer_user_id","officer_name","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/violations/update":{"doc":"Update a violation status/notes (manager).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["issued","resolved","dismissed"]},"notes":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"scan_event_id":{"type":"string","format":"uuid","nullable":true},"lot_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"reason":{"type":"string","enum":["no_permit","fire_lane","blocking","expired","other"],"nullable":true},"disputed_by":{"type":"string","format":"uuid","nullable":true},"disputed_at":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true},"officer_user_id":{"type":"string","format":"uuid","nullable":true},"officer_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","scan_event_id","lot_id","plate","status","notes","reason","disputed_by","disputed_at","photo_url","officer_user_id","officer_name","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","terminal_status","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.log-violation"},"enforcement/sessions/start":{"doc":"Start a patrol session at selected Lots of a Properties.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["property_id","lot_ids"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_lots","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.scan"},"enforcement/sessions/current":{"doc":"The current open patrol session for the officer, or null.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids"],"nullable":true},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.scan"},"enforcement/sessions/get":{"doc":"Get a patrol session by id (api#862 — the /patrol/sessions/<id> page).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/sessions/list":{"doc":"Patrol sessions: your own shifts, or a Property you hold enforcement/read on.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"enforcement/sessions/end":{"doc":"End a patrol session; returns the shift summary.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"duration_seconds":{"type":"number"},"scans":{"type":"object","properties":{"total":{"type":"number"},"authorized":{"type":"number"},"grace":{"type":"number"},"unauthorized":{"type":"number"}},"required":["total","authorized","grace","unauthorized"]},"violations":{"type":"number"}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids","duration_seconds","scans","violations"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","session_closed","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.scan"},"enforcement/sessions/summary":{"doc":"Patrol session summary (scans by result, violations, duration).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"officer_user_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"started_at":{"type":"string"},"ended_at":{"type":"string","nullable":true},"flagged":{"type":"boolean"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"duration_seconds":{"type":"number"},"scans":{"type":"object","properties":{"total":{"type":"number"},"authorized":{"type":"number"},"grace":{"type":"number"},"unauthorized":{"type":"number"}},"required":["total","authorized","grace","unauthorized"]},"violations":{"type":"number"}},"required":["id","officer_user_id","property_id","started_at","ended_at","flagged","lot_ids","duration_seconds","scans","violations"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"enforcement.view-activity"},"terms/accept":{"doc":"Record the signed-in user's acceptance of a policy version (append-only).","schema_in":{"type":"object","properties":{"policy":{"type":"string"},"policy_version":{"type":"string"},"context":{"type":"object","additionalProperties":{}}},"required":["policy","policy_version"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"policy":{"type":"string"},"policy_version":{"type":"string"},"context":{"nullable":true},"accepted_at":{"type":"string"},"created_at":{"type":"string"}},"required":["id","user_id","policy","policy_version","context","accepted_at","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"terms/status":{"doc":"Per-policy acceptance status for a user: latest accepted version vs the registry's current, with a needs_acceptance flag (self; su may query anyone). Drives the re-accept modal.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"policy":{"type":"string"},"current_version":{"type":"string","nullable":true},"accepted_version":{"type":"string","nullable":true},"accepted_at":{"type":"string","nullable":true},"needs_acceptance":{"type":"boolean"}},"required":["policy","current_version","accepted_version","accepted_at","needs_acceptance"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"policies/publish":{"doc":"Publish a policy version (verbatim body; sha256 computed), making it current. su only; a (policy, version) pair is immutable.","schema_in":{"type":"object","properties":{"policy":{"type":"string"},"version":{"type":"string"},"body":{"type":"string"}},"required":["policy","version","body"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"policy":{"type":"string"},"version":{"type":"string"},"sha256":{"type":"string"},"body":{"type":"string"},"created_at":{"type":"string"}},"required":["id","policy","version","sha256","body","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"policies/current":{"doc":"Current version (and verbatim text) per policy — latest published row each. Public: policy text is public by nature and the UI needs it pre-session.","schema_in":{"type":"object","properties":{"policy":{"type":"string"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"policy":{"type":"string"},"version":{"type":"string"},"sha256":{"type":"string"},"body":{"type":"string"},"created_at":{"type":"string"}},"required":["id","policy","version","sha256","body","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"consumers/get":{"doc":"Get a parker (user) by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","phone","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/update":{"doc":"Update a parker profile (first/last name). Self or su only.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","phone","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_fields","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/find_by_phone":{"doc":"Find a parker by primary phone number.","schema_in":{"type":"object","properties":{"phone":{}},"required":["phone"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","phone","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/find_or_create":{"doc":"Find or create a parker by phone. Creates user + primary phone record.","schema_in":{"type":"object","properties":{"phone":{}},"required":["phone"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","phone","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/list":{"doc":"List parkers. Admin/su only.","schema_in":{"type":"object","properties":{"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","phone","first_name","last_name","su","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"reports.view-property"},"consumers/phones/list":{"doc":"List phone numbers for a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"is_mobile":{"type":"boolean"},"is_primary":{"type":"boolean"},"verified":{"type":"boolean"},"opted_in":{"type":"boolean"},"opted_out":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","phone","is_mobile","is_primary","verified","opted_in","opted_out","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/phones/verify":{"doc":"Mark a phone as verified.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"is_mobile":{"type":"boolean"},"is_primary":{"type":"boolean"},"verified":{"type":"boolean"},"opted_in":{"type":"boolean"},"opted_out":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","phone","is_mobile","is_primary","verified","opted_in","opted_out","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"consumers/vehicles/list":{"doc":"List vehicles for a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"label":{"type":"string","nullable":true},"is_default":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","plate","label","is_default","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.plate-swap-own"},"consumers/vehicles/add":{"doc":"Add a vehicle for a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"plate":{},"label":{"nullable":true},"is_default":{"type":"boolean"}},"required":["user_id","plate"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"label":{"type":"string","nullable":true},"is_default":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","plate","label","is_default","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.plate-swap-own"},"consumers/vehicles/update":{"doc":"Rename a saved vehicle (DEC-280 label). Label only — the plate is identity.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"nullable":true}},"required":["id","label"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"label":{"type":"string","nullable":true},"is_default":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","plate","label","is_default","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.plate-swap-own"},"consumers/vehicles/set_default":{"doc":"Set a vehicle as the default for its user.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"plate":{"type":"string"},"label":{"type":"string","nullable":true},"is_default":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","plate","label","is_default","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.plate-swap-own"},"consumers/vehicles/remove":{"doc":"Remove a vehicle.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout","vehicle_has_active_passes"],"gate":"pass.plate-swap-own"},"users/get":{"doc":"Get a user by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/list":{"doc":"List users. su sees all; manager sees own property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","missing_identifier","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/find_or_create":{"doc":"Find or create a user by email.","schema_in":{"type":"object","properties":{"email":{"type":"string","format":"email"},"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["email"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/update":{"doc":"Update a user profile (name, email). Self or su only.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/edit_phone":{"doc":"Edit a user's phone (uniqueness-checked, audit-logged). su only, no self-service (G-53).","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"phone":{},"phone_confirmation":{"type":"string"},"note":{"type":"string"}},"required":["user_id","phone","phone_confirmation"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"is_mobile":{"type":"boolean"},"opted_in":{"type":"boolean"},"opted_out":{"type":"boolean"},"is_primary":{"type":"boolean"},"verified":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","user_id","phone","is_mobile","opted_in","opted_out","is_primary","verified","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","duplicate_phone","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"users/set_su":{"doc":"Set su flag on a user. su only.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"su":{"type":"boolean"}},"required":["user_id","su"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"users/invite":{"doc":"Invite a user, grant role, optionally send SMS. Resolves the invitee by phone first (INV-IDENTITY-1), then email; a supplied phone becomes the sign-in credential only on an account this creates — phone_bound reports whether it did.","schema_in":{"type":"object","properties":{"email":{"type":"string","format":"email"},"scope_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"phone":{},"phone_confirmation":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["email","scope_id","role"]},"schema_out":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"role":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"scope_path":{"type":"string"},"scope_kind":{"type":"string"},"role":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"}},"required":["id","user_id","scope_path","scope_kind","role","meta","created_at"]},"sms_queued":{"type":"boolean"},"phone_bound":{"type":"boolean"}},"required":["user","role","sms_queued","phone_bound"]},"errors":["conflict_retry","constraint_violation","duplicate","duplicate_role","forbidden","identity_conflict","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/invite_su":{"doc":"Grant su access (su only). Same phone-first invitee resolution as /users/invite.","schema_in":{"type":"object","properties":{"email":{"type":"string","format":"email"},"phone":{},"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["email"]},"schema_out":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"vrps_staff":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"scope_path":{"type":"string"}},"required":["role","scope_path"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","first_name","last_name","su","created_at","updated_at"]},"sms_queued":{"type":"boolean"},"phone_bound":{"type":"boolean"}},"required":["user","sms_queued","phone_bound"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","identity_conflict","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"users/roles/grant":{"doc":"Grant a scoped role to a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"scope_id":{"type":"string","format":"uuid"},"scope_table":{"type":"string"},"role":{"type":"string","enum":["admin","manager","patrol","resident"]},"meta":{"type":"object","additionalProperties":{}}},"required":["user_id","scope_id","role"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"scope_path":{"type":"string"},"scope_kind":{"type":"string"},"role":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"}},"required":["id","user_id","scope_path","scope_kind","role","meta","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/roles/revoke":{"doc":"Revoke a scoped role from a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"scope_id":{"type":"string","format":"uuid"},"scope_table":{"type":"string"},"role":{"type":"string","enum":["admin","manager","patrol","resident","member","su"]}},"required":["user_id","scope_id","role"]},"schema_out":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/roles/list":{"doc":"List all roles for a user.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"scope_path":{"type":"string"},"scope_kind":{"type":"string"},"role":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"}},"required":["id","user_id","scope_path","scope_kind","role","meta","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"users/notification_prefs/get":{"doc":"Get notification preferences for a user. Self or su only.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"schema_out":{"type":"object","additionalProperties":{}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"users/notification_prefs/set":{"doc":"Set notification preferences for a user. Self or su only.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"prefs":{"type":"object","additionalProperties":{}}},"required":["user_id","prefs"]},"schema_out":{"type":"object","additionalProperties":{}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"users/search":{"doc":"The su 'find anyone' search: phone, name, Property, or plate (G-85).","schema_in":{"type":"object","properties":{"query":{"type":"string"}},"required":["query"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"su":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"property_name":{"type":"string","nullable":true}},"required":["role","property_name"]}}},"required":["id","name","phone","su","roles"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/create":{"doc":"Create a pending invitation (Phase 1); re-invites the same phone/property/role in place while still pending (G-39; the in-place re-send counts toward the #524 cap).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"phone":{},"phone_confirmation":{"type":"string"},"email":{"type":"string","format":"email"},"expires_in_hours":{"type":"number"},"first_name":{"type":"string"},"last_name":{"type":"string"},"lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["property_id","role","phone","phone_confirmation"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"inviter_user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"token":{"type":"string"},"accepted_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"expires_at":{"type":"string"},"created_at":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"scope_lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"scope_unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","property_id","role","inviter_user_id","phone","email","accepted_at","revoked_at","expires_at","created_at","first_name","last_name","scope_lot_ids","scope_unit_ids","status"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","resend_limit","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/accept":{"doc":"Accept an invitation by token (Phase 2).","schema_in":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"schema_out":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"role":{"type":"string"}},"required":["user_id","role"]},"errors":["already_accepted","conflict_retry","constraint_violation","duplicate","expired","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","revoked","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"invitations/cancel":{"doc":"Revoke a pending invitation (marks revoked_at; G-39).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]},"errors":["already_accepted","already_revoked","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/resend":{"doc":"Refresh token and re-send SMS for a pending invitation. Capped at 3 re-sends (#524).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"expires_in_hours":{"type":"number"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"inviter_user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"token":{"type":"string"},"accepted_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"expires_at":{"type":"string"},"created_at":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"scope_lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"scope_unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","property_id","role","inviter_user_id","phone","email","accepted_at","revoked_at","expires_at","created_at","first_name","last_name","scope_lot_ids","scope_unit_ids","status"]},"errors":["already_accepted","already_revoked","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","resend_limit","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/list":{"doc":"List invitations for a property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}},"required":["property_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"inviter_user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"token":{"type":"string"},"accepted_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"expires_at":{"type":"string"},"created_at":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"scope_lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"scope_unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","property_id","role","inviter_user_id","phone","email","accepted_at","revoked_at","expires_at","created_at","first_name","last_name","scope_lot_ids","scope_unit_ids","status"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/get":{"doc":"Get an invitation by id (api#862 — the /invitations/<id> page). The dao had this all along; it had no route.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"inviter_user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"token":{"type":"string"},"accepted_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"expires_at":{"type":"string"},"created_at":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"scope_lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"scope_unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true}},"required":["id","property_id","role","inviter_user_id","phone","email","accepted_at","revoked_at","expires_at","created_at","first_name","last_name","scope_lot_ids","scope_unit_ids","status"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"people.invite-admin"},"invitations/received":{"doc":"List invitations received by the caller — sent to their own phone (product#347).","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","manager","patrol"]},"inviter_user_id":{"type":"string","format":"uuid"},"phone":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"token":{"type":"string"},"accepted_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"expires_at":{"type":"string"},"created_at":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"scope_lot_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"scope_unit_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"delivery_status":{"type":"string","enum":["failed","blocked","suppressed"],"nullable":true},"property_name":{"type":"string","nullable":true}},"required":["id","property_id","role","inviter_user_id","phone","email","accepted_at","revoked_at","expires_at","created_at","first_name","last_name","scope_lot_ids","scope_unit_ids","status","property_name"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"transactions/create":{"doc":"Record a payment transaction for a pass (INV-017).","schema_in":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["charge","refund","comp","adjustment"]},"total_amount_cents":{"type":"number"},"stripe_charge_id":{"type":"string"},"processor_ok":{"type":"boolean"},"processor_error":{"type":"string"}},"required":["pass_id","type","processor_ok"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"status":{"type":"string"},"type":{"type":"string","enum":["charge","refund","comp","adjustment"]},"escrow_status":{"type":"string","enum":["held","released"]},"stripe_charge_id":{"type":"string","nullable":true},"card_brand":{"type":"string","nullable":true},"card_last4":{"type":"string","nullable":true},"stripe_fee_cents":{"type":"number","nullable":true},"error":{"type":"string","nullable":true},"payout_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","pass_id","property_id","lot_id","base_price_cents","fee_cents","tax_cents","total_amount_cents","status","type","escrow_status","stripe_charge_id","card_brand","card_last4","stripe_fee_cents","error","payout_id","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","pass_frozen","payment_failed","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"transactions/list":{"doc":"List transactions by property or pass.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"status":{"type":"string"},"type":{"type":"string","enum":["charge","refund","comp","adjustment"]},"escrow_status":{"type":"string","enum":["held","released"]},"stripe_charge_id":{"type":"string","nullable":true},"card_brand":{"type":"string","nullable":true},"card_last4":{"type":"string","nullable":true},"stripe_fee_cents":{"type":"number","nullable":true},"error":{"type":"string","nullable":true},"payout_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","pass_id","property_id","lot_id","base_price_cents","fee_cents","tax_cents","total_amount_cents","status","type","escrow_status","stripe_charge_id","card_brand","card_last4","stripe_fee_cents","error","payout_id","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"payouts/compute":{"doc":"Preview a month-end payout for a property/period -- read-only, no writes (G-51).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"period":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"}},"required":["property_id"]},"schema_out":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"period_start":{"type":"string"},"period_end":{"type":"string"},"gross_cents":{"type":"number"},"commission_cents":{"type":"number"},"stripe_fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"amount_cents":{"type":"number"},"transaction_count":{"type":"number"}},"required":["property_id","period_start","period_end","gross_cents","commission_cents","stripe_fee_cents","tax_cents","amount_cents","transaction_count"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","period_required","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"payouts/create":{"doc":"Retired (product#486). Released by charge date and dropped future months. Close via /ops/hoa/months.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"period":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"},"stripe_payout_id":{"type":"string"},"processor_ok":{"type":"boolean"},"processor_error":{"type":"string"}},"required":["property_id","processor_ok"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"amount_cents":{"type":"number"},"gross_cents":{"type":"number","nullable":true},"commission_cents":{"type":"number","nullable":true},"stripe_fee_cents":{"type":"number","nullable":true},"tax_cents":{"type":"number","nullable":true},"status":{"type":"string"},"stripe_payout_id":{"type":"string","nullable":true},"period_start":{"type":"string","nullable":true},"period_end":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","amount_cents","gross_cents","commission_cents","stripe_fee_cents","tax_cents","status","stripe_payout_id","period_start","period_end","error","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","retired","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"payouts/list":{"doc":"List payouts by property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"amount_cents":{"type":"number"},"gross_cents":{"type":"number","nullable":true},"commission_cents":{"type":"number","nullable":true},"stripe_fee_cents":{"type":"number","nullable":true},"tax_cents":{"type":"number","nullable":true},"status":{"type":"string"},"stripe_payout_id":{"type":"string","nullable":true},"period_start":{"type":"string","nullable":true},"period_end":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","amount_cents","gross_cents","commission_cents","stripe_fee_cents","tax_cents","status","stripe_payout_id","period_start","period_end","error","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"payouts/transactions/list":{"doc":"List all transactions included in a specific payout (manifest).","schema_in":{"type":"object","properties":{"payout_id":{"type":"string","format":"uuid"}},"required":["payout_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"status":{"type":"string"},"type":{"type":"string","enum":["charge","refund","comp","adjustment"]},"escrow_status":{"type":"string","enum":["held","released"]},"stripe_charge_id":{"type":"string","nullable":true},"card_brand":{"type":"string","nullable":true},"card_last4":{"type":"string","nullable":true},"stripe_fee_cents":{"type":"number","nullable":true},"error":{"type":"string","nullable":true},"payout_id":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","pass_id","property_id","lot_id","base_price_cents","fee_cents","tax_cents","total_amount_cents","status","type","escrow_status","stripe_charge_id","card_brand","card_last4","stripe_fee_cents","error","payout_id","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"billing/commission_rates/get":{"doc":"Get the effective commission rate for a property on a given date.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"as_of_date":{"type":"string"}},"required":["property_id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"rate_pct":{"type":"string"},"effective_from":{"type":"string"},"created_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","rate_pct","effective_from","created_by","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"billing/commission_rates/set":{"doc":"Set a new commission rate for a property (su only).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"rate_pct":{"type":"number"},"effective_from":{"type":"string"}},"required":["property_id","rate_pct","effective_from"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"rate_pct":{"type":"string"},"effective_from":{"type":"string"},"created_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","rate_pct","effective_from","created_by","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"billing/commission_rates/list":{"doc":"List all commission rates for a property.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}},"required":["property_id"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"rate_pct":{"type":"string"},"effective_from":{"type":"string"},"created_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","rate_pct","effective_from","created_by","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.configure"},"payment_methods/setup":{"doc":"Create a Stripe SetupIntent so the UI can collect card details without charging. Returns client_secret for use with Stripe.js confirmCardSetup().","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"client_secret":{"type":"string"}},"required":["client_secret"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","stripe_error","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"payment_methods/list":{"doc":"List saved payment methods for the authenticated user (or any user for su).","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"stripe_payment_method_id":{"type":"string"},"type":{"type":"string"},"card_brand":{"type":"string","nullable":true},"card_last4":{"type":"string","nullable":true},"card_exp_month":{"type":"number","nullable":true},"card_exp_year":{"type":"number","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","user_id","stripe_payment_method_id","type","card_brand","card_last4","card_exp_month","card_exp_year","created_at","updated_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"payment_methods/delete":{"doc":"Delete a saved payment method. Users may only delete their own.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"pass.purchase-own"},"payment_alerts/list":{"doc":"List double-charge alerts needing a manual Stripe refund. su only (G-45).","schema_in":{"type":"object","properties":{"resolved":{"type":"boolean"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["double_charge"]},"stripe_payment_intent_id":{"type":"string","nullable":true},"amount_cents":{"type":"number"},"resolved_at":{"type":"string","nullable":true},"resolved_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","pass_id","kind","stripe_payment_intent_id","amount_cents","resolved_at","resolved_by","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"payment_alerts/resolve":{"doc":"Mark a double-charge alert resolved after issuing the manual Stripe refund (G-45).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"resolved":{"type":"boolean"}},"required":["resolved"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"pass_disputes/list":{"doc":"List Stripe chargeback disputes, optionally by pass. su only (G-49).","schema_in":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pass_id":{"type":"string","format":"uuid"},"stripe_dispute_id":{"type":"string"},"stripe_charge_id":{"type":"string","nullable":true},"amount_cents":{"type":"number"},"status":{"type":"string"},"created_at":{"type":"string"},"resolved_at":{"type":"string","nullable":true}},"required":["id","pass_id","stripe_dispute_id","stripe_charge_id","amount_cents","status","created_at","resolved_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"tax_remittances/record":{"doc":"Record a manual tax remittance (amount/date/note) after paying the tax authority outside ParkAgent. su only (G-52).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"period":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"},"amount_cents":{"type":"number"},"remitted_on":{"type":"string"},"note":{"type":"string"}},"required":["property_id","amount_cents","remitted_on"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"period_start":{"type":"string"},"period_end":{"type":"string"},"amount_cents":{"type":"number"},"remitted_on":{"type":"string"},"note":{"type":"string","nullable":true},"created_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","period_start","period_end","amount_cents","remitted_on","note","created_by","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","period_required","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"tax_remittances/list":{"doc":"List recorded tax remittances, optionally by property. su only (G-52).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"period_start":{"type":"string"},"period_end":{"type":"string"},"amount_cents":{"type":"number"},"remitted_on":{"type":"string"},"note":{"type":"string","nullable":true},"created_by":{"type":"string","format":"uuid","nullable":true},"created_at":{"type":"string"}},"required":["id","property_id","period_start","period_end","amount_cents","remitted_on","note","created_by","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"tax/report":{"doc":"Per-Property tax collected vs. remitted vs. outstanding for a period. su only (G-52).","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"period":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"},"property_name":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"},"collected_cents":{"type":"number"},"remitted_cents":{"type":"number"},"outstanding_cents":{"type":"number"}},"required":["property_id","property_name","period_start","period_end","collected_cents","remitted_cents","outstanding_cents"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","period_required","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/stripe/payouts/list":{"doc":"Paid Stripe payouts ops has not exported yet, oldest first.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"payouts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"amount_cents":{"type":"number"},"arrival_date":{"type":"string"},"status":{"type":"string"}},"required":["id","amount_cents","arrival_date","status"]}}},"required":["payouts"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/stripe/payouts/export":{"doc":"One payout as the reconciliation CSV: a row per balance transaction. Also written to storage.","schema_in":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"url":{"type":"string"},"csv":{"type":"string"},"line_count":{"type":"number"},"stored":{"type":"boolean"},"store_error":{"type":"string","nullable":true}},"required":["url","csv","line_count","stored","store_error"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/stripe/payouts/mark":{"doc":"Record that ops took this batch, so list stops offering it. Idempotent.","schema_in":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"payout_id":{"type":"string"},"exported_at":{"type":"string"},"line_count":{"type":"number","nullable":true}},"required":["payout_id","exported_at","line_count"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/stripe/payouts/unmark":{"doc":"Undo a mark. The payout is work again. Idempotent.","schema_in":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"payout_id":{"type":"string"},"unmarked":{"type":"boolean"}},"required":["payout_id","unmarked"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/hoa/months/list":{"doc":"HOA months with held, settled rows ops has not exported yet, oldest first.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"months":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string"},"row_count":{"type":"number"},"total_cents":{"type":"number"}},"required":["month","row_count","total_cents"]}}},"required":["months"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/hoa/months/export":{"doc":"One America/Chicago month as the escrow CSV: a row per held, settled transaction whose service date falls in it. Also written to storage.","schema_in":{"type":"object","properties":{"month":{"type":"string"}},"required":["month"]},"schema_out":{"type":"object","properties":{"url":{"type":"string"},"csv":{"type":"string"},"line_count":{"type":"number"},"stored":{"type":"boolean"},"store_error":{"type":"string","nullable":true}},"required":["url","csv","line_count","stored","store_error"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/hoa/months/mark":{"doc":"Record that ops sent this month, so list stops offering it. Idempotent.","schema_in":{"type":"object","properties":{"month":{"type":"string"}},"required":["month"]},"schema_out":{"type":"object","properties":{"month":{"type":"string"},"exported_at":{"type":"string"},"line_count":{"type":"number","nullable":true}},"required":["month","exported_at","line_count"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"ops/hoa/months/unmark":{"doc":"Undo a mark. The month is work again. Idempotent.","schema_in":{"type":"object","properties":{"month":{"type":"string"}},"required":["month"]},"schema_out":{"type":"object","properties":{"month":{"type":"string"},"unmarked":{"type":"boolean"}},"required":["month","unmarked"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.revenue-tax"},"messaging/queue":{"doc":"Queue an outbound message to one or more participants.","schema_in":{"type":"object","properties":{"participant_ids":{"type":"array","items":{"type":"string"}},"user_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"body":{"type":"string"},"send_at":{"type":"string"},"channel":{"type":"string"},"from_address":{"type":"string"},"content_kind":{}},"required":["participant_ids","body","content_kind"]},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"body":{"type":"string"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"user_id":{"type":"string","format":"uuid","nullable":true},"direction":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"send_at":{"type":"string"},"queued_at":{"type":"string"},"submitted_at":{"type":"string","nullable":true},"delivered_at":{"type":"string","nullable":true},"failed_at":{"type":"string","nullable":true},"provider_sid":{"type":"string","nullable":true},"failure_reason":{"type":"string","nullable":true}},"required":["id","body","participant_id","from_address","user_id","direction","status","channel","send_at","queued_at","submitted_at","delivered_at","failed_at","provider_sid","failure_reason"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/list":{"doc":"List messages with filters.","schema_in":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"participant_id":{"type":"string"},"channel":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"body":{"type":"string"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"user_id":{"type":"string","format":"uuid","nullable":true},"direction":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"send_at":{"type":"string"},"queued_at":{"type":"string"},"submitted_at":{"type":"string","nullable":true},"delivered_at":{"type":"string","nullable":true},"failed_at":{"type":"string","nullable":true},"provider_sid":{"type":"string","nullable":true},"failure_reason":{"type":"string","nullable":true}},"required":["id","body","participant_id","from_address","user_id","direction","status","channel","send_at","queued_at","submitted_at","delivered_at","failed_at","provider_sid","failure_reason"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/get":{"doc":"Get a message by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"body":{"type":"string"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"user_id":{"type":"string","format":"uuid","nullable":true},"direction":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"send_at":{"type":"string"},"queued_at":{"type":"string"},"submitted_at":{"type":"string","nullable":true},"delivered_at":{"type":"string","nullable":true},"failed_at":{"type":"string","nullable":true},"provider_sid":{"type":"string","nullable":true},"failure_reason":{"type":"string","nullable":true}},"required":["id","body","participant_id","from_address","user_id","direction","status","channel","send_at","queued_at","submitted_at","delivered_at","failed_at","provider_sid","failure_reason"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/unblock":{"doc":"Unblock a participant from receiving messages.","schema_in":{"type":"object","properties":{"participant_id":{"type":"string"},"reason":{"type":"string"},"channel":{"type":"string"}},"required":["participant_id","reason"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"participant_id":{"type":"string"},"channel":{"type":"string"},"reason":{"type":"string"},"blocked_at":{"type":"string"},"unblocked_at":{"type":"string","nullable":true},"unblocked_by":{"type":"string","format":"uuid","nullable":true},"unblocked_reason":{"type":"string","nullable":true}},"required":["id","participant_id","channel","reason","blocked_at","unblocked_at","unblocked_by","unblocked_reason"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/conversations/open":{"doc":"Open a new conversation in a registered flow.","schema_in":{"type":"object","properties":{"participant_id":{"type":"string"},"flow_key":{"type":"string"},"user_id":{"type":"string","format":"uuid"},"from_address":{"type":"string"},"channel":{"type":"string"}},"required":["participant_id","flow_key"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"channel":{"type":"string"},"flow_key":{"type":"string"},"state_key":{"type":"string"},"user_id":{"type":"string","format":"uuid","nullable":true},"context":{"type":"object","additionalProperties":{}},"status":{"type":"string"},"opened_at":{"type":"string"},"state_entered_at":{"type":"string"},"last_inbound_at":{"type":"string","nullable":true},"closed_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","participant_id","from_address","channel","flow_key","state_key","user_id","context","status","opened_at","state_entered_at","last_inbound_at","closed_at","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/conversations/list":{"doc":"List conversations; filterable by participant_id and status.","schema_in":{"type":"object","properties":{"participant_id":{"type":"string"},"status":{"type":"string","enum":["open","closed"]},"limit":{"type":"number"},"offset":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"channel":{"type":"string"},"flow_key":{"type":"string"},"state_key":{"type":"string"},"user_id":{"type":"string","format":"uuid","nullable":true},"context":{"type":"object","additionalProperties":{}},"status":{"type":"string"},"opened_at":{"type":"string"},"state_entered_at":{"type":"string"},"last_inbound_at":{"type":"string","nullable":true},"closed_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","participant_id","from_address","channel","flow_key","state_key","user_id","context","status","opened_at","state_entered_at","last_inbound_at","closed_at","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/conversations/get":{"doc":"Get a conversation by id.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"participant_id":{"type":"string"},"from_address":{"type":"string","nullable":true},"channel":{"type":"string"},"flow_key":{"type":"string"},"state_key":{"type":"string"},"user_id":{"type":"string","format":"uuid","nullable":true},"context":{"type":"object","additionalProperties":{}},"status":{"type":"string"},"opened_at":{"type":"string"},"state_entered_at":{"type":"string"},"last_inbound_at":{"type":"string","nullable":true},"closed_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","participant_id","from_address","channel","flow_key","state_key","user_id","context","status","opened_at","state_entered_at","last_inbound_at","closed_at","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"messaging/chat":{"doc":"Simulate one inbound turn and return bot replies. Su only.","schema_in":{"type":"object","properties":{"participant_id":{"type":"string"},"message":{"type":"string"},"reset":{"type":"boolean"},"channel":{"type":"string"}},"required":["participant_id","message"]},"schema_out":{"type":"object","properties":{"replies":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"message_card":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"media":{},"actions":{"type":"array","items":{}},"orientation":{"type":"string","enum":["horizontal","vertical"]},"alignment":{"type":"string","enum":["left","center"]},"text_fallback":{"type":"string"}},"required":["title","text_fallback"],"nullable":true}},"required":["body","message_card"]}},"conversation":{"type":"object","properties":{"state_key":{"type":"string"}},"required":["state_key"],"nullable":true}},"required":["replies","conversation"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"sessions/portals":{"doc":"Portal dispatch (DEC-162/163/164): reachable portals, landing default, picker counting, property-switcher seed.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"portals":{"type":"array","items":{"type":"string","enum":["operator","parker","enforcement","su"]}},"default":{"type":"string","enum":["operator","parker","enforcement","su"],"nullable":true},"counts_toward_picker":{"type":"array","items":{"type":"string","enum":["operator","parker","enforcement","su"]}},"operator_properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"all_properties":{"type":"boolean"}},"required":["portals","default","counts_toward_picker","operator_properties","all_properties"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"sessions/current":{"doc":"Get current user and roles.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"su":{"type":"boolean"},"anonymous":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"string","format":"uuid"},"scope_path":{"type":"string"},"scope_kind":{"type":"string"},"role":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"}},"required":["id","user_id","scope_path","scope_kind","role","meta","created_at"]}}},"required":["id","email","phone","first_name","last_name","su","roles"],"nullable":true},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"string","format":"uuid"},"scope_path":{"type":"string"},"scope_kind":{"type":"string"},"role":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"}},"required":["id","user_id","scope_path","scope_kind","role","meta","created_at"]}}},"required":["user","roles"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"sessions/impersonate/start":{"doc":"Start impersonating a user. su only.","schema_in":{"type":"object","properties":{"target_user_id":{"type":"string","format":"uuid"}},"required":["target_user_id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"su_user_id":{"type":"string","format":"uuid"},"impersonating_user_id":{"type":"string","format":"uuid"},"ended_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","su_user_id","impersonating_user_id","ended_at","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout","user_not_found"],"gate":"platform.god-mode"},"sessions/impersonate/end":{"doc":"End active impersonation.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"ended":{"type":"boolean"}},"required":["ended"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.god-mode"},"sessions/impersonate/status":{"doc":"Get current impersonation status.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"impersonating":{"type":"boolean"},"session":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"su_user_id":{"type":"string","format":"uuid"},"impersonating_user_id":{"type":"string","format":"uuid"},"ended_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","su_user_id","impersonating_user_id","ended_at","created_at"],"nullable":true}},"required":["impersonating","session"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.god-mode"},"audit_log/list":{"doc":"List god-mode audit log entries. su only.","schema_in":{"type":"object","properties":{"actor_user_id":{"type":"string","format":"uuid"},"acted_as_user_id":{"type":"string","format":"uuid"},"action":{"type":"string"},"action_prefix":{"type":"string"},"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"actor_user_id":{"type":"string","format":"uuid"},"acted_as_user_id":{"type":"string","format":"uuid","nullable":true},"action":{"type":"string"},"context":{"nullable":true},"before":{"nullable":true},"after":{"nullable":true},"created_at":{"type":"string"}},"required":["id","actor_user_id","acted_as_user_id","action","context","before","after","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"auth/login/password":{"doc":"Login with email + password. Returns a long-lived session cookie.","schema_in":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}},"required":["email","password"]},"schema_out":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_credentials","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"tokens/create":{"doc":"Mint a new API token. Returns raw token once — store it securely.","schema_in":{"type":"object","properties":{"name":{"type":"string"},"expires_at":{"type":"string"}},"required":["name"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"token":{"type":"string"},"name":{"type":"string"},"expires_at":{"type":"string","nullable":true}},"required":["id","token","name","expires_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"tokens/list":{"doc":"List API tokens for the current user.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"tokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"expires_at":{"type":"string","nullable":true},"last_used_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"created_at":{"type":"string"}},"required":["id","name","scopes","expires_at","last_used_at","revoked_at","created_at"]}}},"required":["tokens"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"tokens/revoke":{"doc":"Revoke an API token by id.","schema_in":{"type":"object","properties":{"token_id":{"type":"string","format":"uuid"}},"required":["token_id"]},"schema_out":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"auth/otp/request":{"doc":"Request a sign-in one-time code by SMS. Anonymous sessions carry through so the phone attaches to them.","schema_in":{"type":"object","properties":{"phone":{}},"required":["phone"]},"schema_out":{"type":"object","properties":{"sent":{"type":"boolean"},"expires_in_minutes":{"type":"number"}},"required":["sent","expires_in_minutes"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","opted_out","rate_limited","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"auth/otp/verify":{"doc":"Exchange phone + code for a session cookie.","schema_in":{"type":"object","properties":{"phone":{},"code":{"type":"string"}},"required":["phone","code"]},"schema_out":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"}},"required":["user_id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_otp","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"auth/magic/request":{"doc":"Request a sign-in magic link by email.","schema_in":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"schema_out":{"type":"object","properties":{"sent":{"type":"boolean"}},"required":["sent"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","rate_limited","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"auth/magic/verify":{"doc":"Exchange a magic-link token for a session cookie. Reusable until expiry; each use is recorded (api#769).","schema_in":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"schema_out":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"redirect_path":{"type":"string","nullable":true}},"required":["user_id","redirect_path"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_link","invalid_params","link_exhausted","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"auth/magic/peek":{"doc":"Resolve who a sign-in link belongs to WITHOUT any side effect (no use recorded, no session). Lets the UI skip the switch-accounts prompt for a same-account link and name both accounts otherwise (product#407).","schema_in":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"schema_out":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid","nullable":true},"display":{"type":"string","nullable":true}},"required":["user_id","display"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_link","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"auth/logout":{"doc":"Clear the session cookie.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"logged_out":{"type":"boolean"}},"required":["logged_out"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"ping":{"doc":"Health check — returns pong.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"pong":{"type":"boolean"},"at":{"type":"string"}},"required":["pong","at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"permissions":{"doc":"Return the full permission matrix — all roles, scopes, and actions. Su only.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"array","items":{}}}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"background_jobs/enqueue":{"doc":"Enqueue a background job by type. Su only.","schema_in":{"type":"object","properties":{"type":{"type":"string"},"payload":{},"run_at":{"type":"string"},"max_attempts":{"type":"number"}},"required":["type"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"background_jobs/list":{"doc":"List recent background jobs. Su only.","schema_in":{"type":"object","properties":{"status":{"type":"string","enum":["pending","running","success","failure"]},"limit":{"type":"number"},"type":{"type":"string"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"payload":{},"status":{"type":"string","enum":["pending","running","success","failure"]},"attempts":{"type":"number"},"max_attempts":{"type":"number"},"run_at":{"type":"string"},"started_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"errors":{"type":"array","items":{}},"created_at":{"type":"string"}},"required":["id","type","payload","status","attempts","max_attempts","run_at","started_at","finished_at","errors","created_at"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"background_jobs/get":{"doc":"Get a background job by id. Su only.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"payload":{},"status":{"type":"string","enum":["pending","running","success","failure"]},"attempts":{"type":"number"},"max_attempts":{"type":"number"},"run_at":{"type":"string"},"started_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"errors":{"type":"array","items":{}},"created_at":{"type":"string"}},"required":["id","type","payload","status","attempts","max_attempts","run_at","started_at","finished_at","errors","created_at"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"pages/parker/dashboard":{"doc":"Parker dashboard page data + actions.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"object","properties":{"data":{},"etag":{"type":"string"},"actions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"endpoint":{"type":"string"},"params":{"type":"array","items":{"type":"string"}},"available":{"type":"boolean"},"reason":{"type":"string"}},"required":["id","endpoint","params","available"]}}},"required":["data","etag","actions"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"pages/admin/dashboard":{"doc":"Admin dashboard page data + actions.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"object","properties":{"data":{},"etag":{"type":"string"},"actions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"endpoint":{"type":"string"},"params":{"type":"array","items":{"type":"string"}},"available":{"type":"boolean"},"reason":{"type":"string"}},"required":["id","endpoint","params","available"]}}},"required":["data","etag","actions"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_property","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"pages/patrol/dashboard":{"doc":"Patrol dashboard page data + actions.","schema_in":{"type":"object","properties":{"property_id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"object","properties":{"data":{},"etag":{"type":"string"},"actions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"endpoint":{"type":"string"},"params":{"type":"array","items":{"type":"string"}},"available":{"type":"boolean"},"reason":{"type":"string"}},"required":["id","endpoint","params","available"]}}},"required":["data","etag","actions"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_property","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"pages/su/dashboard":{"doc":"su dashboard page data + actions.","schema_in":{"type":"object","properties":{}},"schema_out":{"type":"object","properties":{"data":{},"etag":{"type":"string"},"actions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"endpoint":{"type":"string"},"params":{"type":"array","items":{"type":"string"}},"available":{"type":"boolean"},"reason":{"type":"string"}},"required":["id","endpoint","params","available"]}}},"required":["data","etag","actions"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"search":{"doc":"Unified search across properties, lots, units, users, passes, vehicles, offers, templates, invitations, violations. GET (linkable) or POST. Grammar: bare/quoted words (fulltext), $TOKEN (exact keyword: plate/slug/phone/code), key=value (facet filter). fuzzy:true marks trigram-fallback results. Results are href-navigable; visibility is property-scoped (su sees all).","schema_in":{"type":"object","properties":{"q":{"type":"string"},"limit":{"type":"number"}},"required":["q"]},"schema_out":{"type":"object","properties":{"fuzzy":{"type":"boolean"},"results":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":"string"},"href":{"type":"string"},"score":{"type":"number"}},"required":["type","id","title","subtitle","href","score"]}}},"required":["fuzzy","results"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"get":true,"gate":"authenticated"},"resolve":{"doc":"Resolve a typed entity ref (ref=<type>/<id>, or type= & id=) to its object. Backs search-result deep-links and the /r/<type>/<id> redirector. Resolvable: property, lot, unit, user, pass, offer, template. Delegates to each domain get op (same auth); fails closed.","schema_in":{"type":"object","properties":{"ref":{"type":"string"},"type":{"type":"string"},"id":{"type":"string","format":"uuid"}}},"schema_out":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"value":{}},"required":["type","id","value"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","invalid_ref","not_found","reference_invalid","required","response_shape","unauthenticated","unresolvable_type","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"get":true,"gate":"public"},"checkout/session/create":{"doc":"Create a Stripe Checkout session for a paid pass. Returns a redirect URL to send the parker to.","schema_in":{"type":"object","properties":{"pass_id":{"type":"string","format":"uuid"},"success_url":{"type":"string"},"cancel_url":{"type":"string"}},"required":["pass_id","success_url","cancel_url"]},"schema_out":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"passes/refund":{"doc":"Refund a paid pass in full via Stripe and record it in-platform (PA-308). su only (D23/DEC-287).","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid","nullable":true},"template_id":{"type":"string","format":"uuid"},"lot_id":{"type":"string","format":"uuid"},"unit_id":{"type":"string","format":"uuid","nullable":true},"user_id":{"type":"string","format":"uuid"},"vehicle_id":{"type":"string","format":"uuid","nullable":true},"plate":{"type":"string"},"status":{"type":"string","enum":["pending","abandoned","scheduled","active","expired","suspended","revoked","refunded"]},"expiring_soon":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string","nullable":true},"base_price_cents":{"type":"number"},"fee_cents":{"type":"number"},"tax_cents":{"type":"number"},"total_amount_cents":{"type":"number"},"source":{"type":"string","enum":["purchase","legacy"]},"legacy_price_cents":{"type":"number","nullable":true},"paid_at":{"type":"string","nullable":true},"revoke_reason":{"type":"string","nullable":true},"revoked_by":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"suspended_at":{"type":"string","nullable":true},"reinstated_at":{"type":"string","nullable":true},"refunded_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"holder_name":{"type":"string","nullable":true},"holder_phone":{"type":"string","nullable":true},"lot_name":{"type":"string","nullable":true},"lot_code":{"type":"string","nullable":true},"property_name":{"type":"string","nullable":true},"property_timezone":{"type":"string","nullable":true},"pass_type_name":{"type":"string","nullable":true},"lot_address":{"type":"string","nullable":true},"paid_out":{"type":"boolean"}},"required":["id","offer_id","template_id","lot_id","unit_id","user_id","vehicle_id","plate","status","expiring_soon","start_at","end_at","base_price_cents","fee_cents","tax_cents","total_amount_cents","source","legacy_price_cents","paid_at","revoke_reason","revoked_by","revoked_at","suspended_at","reinstated_at","refunded_at","created_at","updated_at"]},"errors":["already_refunded","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","no_charge","not_found","pass_frozen","pass_not_paid","reference_invalid","required","response_shape","stripe_error","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"payments.refund"},"support/submit":{"doc":"Submit the support form: creates a Zoho Desk ticket in the surface's department and logs a minimal submission record. Public; email required (plus phone + Turnstile captcha on the marketing-site surface); rate-limited per IP.","schema_in":{"type":"object","properties":{"source_surface":{"type":"string","enum":["parker","operator","patrol","lot-landing","receipt","marketing-site"]},"subject":{"type":"string"},"description":{"type":"string"},"contact":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}},"required":["last_name","email"]},"pass_id":{"type":"string","format":"uuid"},"property_id":{"type":"string","format":"uuid"},"lot_slug":{"type":"string"},"plate":{"type":"string"},"captcha_token":{"type":"string"}},"required":["source_surface","subject","description","contact"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ticket_number":{"type":"string"}},"required":["id","ticket_number"]},"errors":["captcha_failed","conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","rate_limited","reference_invalid","required","response_shape","submit_failed","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"public"},"support/submissions/list":{"doc":"List recorded support submissions, newest first, with the submitting user when one was attached. Read-only view over the platform log — never a read of Zoho (DEC-301). Su only.","schema_in":{"type":"object","properties":{"limit":{"type":"number"}}},"schema_out":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string"},"source_surface":{"type":"string"},"subject":{"type":"string"},"email":{"type":"string"},"status":{"type":"string","enum":["sent","failed"]},"zoho_ticket_number":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true}},"required":["id","first_name","last_name"],"nullable":true}},"required":["id","created_at","source_surface","subject","email","status","zoho_ticket_number","user"]}},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"support/submissions/get":{"doc":"Get one recorded support submission: the message body as sent, the contact, the submitting user, and the Zoho trace (or the recorded error). Su only.","schema_in":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"schema_out":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"created_at":{"type":"string"},"source_surface":{"type":"string"},"subject":{"type":"string"},"email":{"type":"string"},"status":{"type":"string","enum":["sent","failed"]},"zoho_ticket_number":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true}},"required":["id","first_name","last_name"],"nullable":true},"description":{"type":"string","nullable":true},"zoho_ticket_id":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["id","created_at","source_surface","subject","email","status","zoho_ticket_number","user","description","zoho_ticket_id","error"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"su"},"qa/fixtures":{"doc":"The seeded QA fixture ids, read back — one record id per route parameter. Reads only; `pa qa:data` is what creates them.","schema_in":{"type":"object","properties":{"code":{"type":"string"}}},"schema_out":{"type":"object","properties":{"lot":{"type":"string"},"property":{"type":"string","format":"uuid"},"fixtures":{"type":"object","additionalProperties":{"type":"string"}},"missing":{"type":"array","items":{"type":"string"}}},"required":["lot","property","fixtures","missing"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","lot_not_found","reference_invalid","required","response_shape","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"platform.god-mode"},"qa/traces/record":{"doc":"File one ui request trace. Kept 7 days by bucket lifecycle.","schema_in":{"type":"object","properties":{"id":{"type":"string"},"trace":{"type":"object","additionalProperties":{}},"user":{"type":"string"}},"required":["id","trace"]},"schema_out":{"type":"object","properties":{"key":{"type":"string"}},"required":["key"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","trace_write_failed","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"},"qa/traces/read":{"doc":"Read one ui request trace back. Your own, unless you are su.","schema_in":{"type":"object","properties":{"id":{"type":"string"},"user":{"type":"string"}},"required":["id"]},"schema_out":{"type":"object","properties":{"trace":{"type":"object","additionalProperties":{},"nullable":true}},"required":["trace"]},"errors":["conflict_retry","constraint_violation","duplicate","forbidden","internal_error","invalid_input","invalid_params","reference_invalid","required","response_shape","trace_unreadable","unauthenticated","upstream_connection_closed","upstream_connection_refused","upstream_connection_reset","upstream_dns_failure","upstream_timeout"],"gate":"authenticated"}}}