{"openapi":"3.1.0","info":{"title":"Universal Bazantic API","description":"REST surface for the Bazantic platform. Owns all persisted webapp business models, starting with gateways.","version":"1.0.0"},"components":{"securitySchemes":{"BearerAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key to call authenticated endpoints. Required for all write operations. Read operations support anonymous calls."},"CollectionMachine":{"type":"apiKey","in":"header","name":"X-Bazantic-Collection-Machine","description":"Dedicated internal collection machine credential. Ordinary API and user tokens grant no service authority."},"UserToken":{"type":"apiKey","in":"header","name":"X-Bazantic-User-Token","description":"Supabase personal access token. Notification, announcement and app control routes require this credential and the API key."}},"schemas":{"Gateway":{"$id":"#/components/schemas/Gateway","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"handle":{"type":"string"},"handle_claimed":{"type":"boolean","description":"true when the vanity handle was explicitly claimed"},"sandbox":{"type":"boolean","description":"true when the gateway settles x402 on Base Sepolia only and moves no real funds"},"name":{"type":"string"},"type":{"type":"string","enum":["unified","dedicated"]},"status":{"type":"string","enum":["draft","active","paused","retired"]},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"access_mode":{"type":"string","enum":["public","owner"]},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"service_endpoint":{"type":"string"},"product_website":{"anyOf":[{"type":"string"},{"type":"null"}]},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"spec":{"anyOf":[{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["openapi","openrpc"]},{"type":"null"}]},"url":{"type":"string"}},"required":["type","url"],"additionalProperties":false},{"type":"null"}]},"service_protocol":{"type":"string","enum":["rest","named-jsonrpc","positioned-jsonrpc","mcp-streamable-http","mcp-http-sse"]},"domains":{"type":"array","items":{"type":"string"},"description":"hostnames in status active or degraded"},"extra_headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\t\\x20-\\x7E]*$"}},"required":["name","value"],"additionalProperties":false}},"auth":{"type":"object","properties":{"type":{"type":"string","enum":["api-key","jwt","x402-mpp","basic","none","oauth2"]},"delivery":{"type":"string","enum":["url","header","bearer","query"]},"param_name":{"type":"string"},"header_name":{"type":"string"},"extra_headers":{"deprecated":true,"description":"Deprecated — use the gateway-level `extra_headers`.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\t\\x20-\\x7E]*$"}},"required":["name","value"],"additionalProperties":false}},"grant":{"type":"string","enum":["client_credentials","authorization_code"]},"token_url":{"type":"string"},"client_id":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"token_access_encrypted":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type"],"additionalProperties":false},"deposit_addresses":{"type":"array","items":{"$ref":"#/components/schemas/DepositAddress"}},"methods":{"type":"array","items":{"$ref":"#/components/schemas/GatewayMethod"}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"_deprecated":{"type":"object","properties":{},"additionalProperties":{}}},"required":["id","slug","handle","handle_claimed","sandbox","name","type","category","tagline","description","tags","product_website","docs_url","spec","service_protocol","domains","created_at","updated_at","_deprecated"],"additionalProperties":false},"GatewayMethod":{"$id":"#/components/schemas/GatewayMethod","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"verb":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"resource":{"type":"string"},"price_millicents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","verb","resource","price_millicents","created_at"],"additionalProperties":false},"DepositAddress":{"$id":"#/components/schemas/DepositAddress","type":"object","properties":{"chain":{"type":"string"},"address":{"type":"string"}},"required":["chain","address"],"additionalProperties":false},"GatewayListResponse":{"$id":"#/components/schemas/GatewayListResponse","type":"object","properties":{"gateways":{"type":"array","items":{"$ref":"#/components/schemas/Gateway"}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["gateways","count"],"additionalProperties":false},"MethodListResponse":{"$id":"#/components/schemas/MethodListResponse","type":"object","properties":{"methods":{"type":"array","items":{"$ref":"#/components/schemas/GatewayMethod"}}},"required":["methods"],"additionalProperties":false},"MethodEnvelope":{"$id":"#/components/schemas/MethodEnvelope","type":"object","properties":{"method":{"$ref":"#/components/schemas/GatewayMethod"}},"required":["method"],"additionalProperties":false},"Recipe":{"$id":"#/components/schemas/Recipe","type":"object","properties":{"handle":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"input_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_example":{},"output_example":{},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["draft","published"]},"prompt_template":{"type":"string"},"model":{"type":"string","enum":["anthropic/claude-haiku-4.5","anthropic/claude-sonnet-4.6","anthropic/claude-opus-5","meta/llama-3.1-8b","deepseek/deepseek-v4-flash-0731","openai/gpt-5-nano"]},"tool_bindings":{"type":"array","items":{"$ref":"#/components/schemas/RecipeToolBinding"}},"block":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","minLength":1,"maxLength":200},"icon":{"type":"string","minLength":1,"maxLength":4},"service_role":{"type":"string","minLength":1,"maxLength":80},"fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"kind":{"type":"string","enum":["text","select","checkbox"]},"input_key":{"type":"string","minLength":1},"default":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"options":{"type":"array","items":{"type":"string"}},"input_values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_type":{"type":"string","enum":["number"]}},"required":["id","label","kind","input_key","default"],"additionalProperties":false}},"output_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"view":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"facts"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"facts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"pending":{"type":"object","properties":{"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["title"],"additionalProperties":false}},"required":["kind","title","facts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"reading"},"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"unit":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"qualifier":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"pending":{"type":"object","properties":{"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["label","value"],"additionalProperties":false}},"required":["kind","label","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"list"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"items":{"type":"string","pattern":"^\\/"},"primary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"secondary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["kind","title","items","primary"],"additionalProperties":false}]},"runs":{"type":"string","enum":["on page load","when applied"]}},"required":["name","description","icon","fields","output_schema","view","runs"],"additionalProperties":false},{"type":"null"}]},"block_service":{"type":"object","properties":{"name":{"type":"string"},"role":{"type":"string"}},"required":["name","role"],"additionalProperties":false},"mcp_app":{"anyOf":[{"type":"object","properties":{"view":{"type":"string","enum":["wallet-snapshot","defi-desk","nft-shelf","token-lens","wallet-compare","wallet-story","whale-board","data-visualizations"]}},"required":["view"],"additionalProperties":false},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"transferred_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"transferred_from_account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"author":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["personal","organization","platform"]}},"required":["name","kind"],"additionalProperties":false}},"required":["handle","name","description","input_schema","input_example","output_example"],"additionalProperties":false},"RecipeListResponse":{"$id":"#/components/schemas/RecipeListResponse","type":"array","items":{"$ref":"#/components/schemas/Recipe"}},"RecipeToolBinding":{"$id":"#/components/schemas/RecipeToolBinding","type":"object","properties":{"gateway_slug":{"type":"string","pattern":"^[a-z2-7]{26}$"},"tool_name":{"type":"string","minLength":1,"maxLength":128}},"required":["gateway_slug","tool_name"],"additionalProperties":false},"RecipeRunResponse":{"$id":"#/components/schemas/RecipeRunResponse","type":"object","properties":{"run_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recipe":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"type":"string","minLength":1},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","handle","version"],"additionalProperties":false},"dataset":{"type":"object","properties":{"schema_version":{"type":"string","minLength":1},"profile":{"type":"string","minLength":1},"recipe":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","version"],"additionalProperties":false},"run_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["complete","partial","empty"]},"records":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"array","items":{}}},"warnings":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1}},"provenance":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","minLength":1},"operation":{"type":"string","minLength":1},"observed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"retrieved_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"source_url":{"type":"string","format":"uri"}},"required":["provider","operation","retrieved_at"],"additionalProperties":false}}},"required":["schema_version","profile","recipe","run_id","status","records","warnings","provenance"],"additionalProperties":false},"receipt":{"type":"object","properties":{"reference":{"type":"string","minLength":1},"calls":{"type":"integer","minimum":0,"maximum":9007199254740991},"cost_status":{"type":"string","enum":["operator_absorbed","unknown"]},"total_cost":{"anyOf":[{"type":"string","pattern":"^-?[0-9]+$"},{"type":"null"}]}},"required":["reference","calls","cost_status","total_cost"],"additionalProperties":false}},"required":["run_id","recipe","dataset","receipt"],"additionalProperties":false},"RecipeTestRunCall":{"$id":"#/components/schemas/RecipeTestRunCall","type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gateway_slug":{"type":"string"},"tool_name":{"type":"string"},"arguments_redacted":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"result_preview":{"anyOf":[{},{"type":"null"}]},"duration_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["complete","failed"]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"result_capped":{"type":"boolean"}},"required":["sequence","gateway_slug","tool_name","arguments_redacted","result_preview","duration_ms","status","error_code","error_message","result_capped"],"additionalProperties":false},"RecipeTestRunResponse":{"$id":"#/components/schemas/RecipeTestRunResponse","type":"object","properties":{"test_run_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"type":"string"},"status":{"type":"string","enum":["complete","failed","cancelled","timeout"]},"definition_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"output":{},"output_kind":{"type":"string","enum":["json","text"]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},"calls":{"type":"array","items":{"$ref":"#/components/schemas/RecipeTestRunCall"}},"tools":{"type":"array","items":{"type":"object","properties":{"gateway_slug":{"type":"string"},"tool_name":{"type":"string"},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"excluded":{"type":"boolean"}},"required":["gateway_slug","tool_name","read_only","excluded"],"additionalProperties":false}},"usage":{"type":"object","properties":{"input_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"output_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"total_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["input_tokens","output_tokens","total_tokens"],"additionalProperties":false},"duration_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"model":{"type":"string","enum":["anthropic/claude-haiku-4.5","anthropic/claude-sonnet-4.6","anthropic/claude-opus-5","meta/llama-3.1-8b","deepseek/deepseek-v4-flash-0731","openai/gpt-5-nano"]},"cost":{"anyOf":[{"type":"string"},{"type":"null"}]},"cost_status":{"type":"string","enum":["operator_absorbed","unknown"]}},"required":["test_run_id","handle","status","definition_digest","calls","tools","usage","duration_ms","model","cost","cost_status"],"additionalProperties":false},"RecipeTestRunEvent":{"$id":"#/components/schemas/RecipeTestRunEvent","oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"accepted"},"test_run_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"type":"string"},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","test_run_id","handle","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"run_started"},"model":{"type":"string","enum":["anthropic/claude-haiku-4.5","anthropic/claude-sonnet-4.6","anthropic/claude-opus-5","meta/llama-3.1-8b","deepseek/deepseek-v4-flash-0731","openai/gpt-5-nano"]},"max_steps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeout_ms":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","model","max_steps","timeout_ms","trace_id","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"tools_loading"},"gateways":{"type":"array","items":{"type":"string"}},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","gateways","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"tools_loaded"},"tools":{"type":"array","items":{"type":"object","properties":{"gateway_slug":{"type":"string"},"tool_name":{"type":"string"},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"excluded":{"type":"boolean"}},"required":["gateway_slug","tool_name","read_only","excluded"],"additionalProperties":false}},"duration_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","tools","duration_ms","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"step_started"},"step":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","step","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"tool_call_started"},"call_id":{"type":"string"},"step":{"type":"integer","minimum":0,"maximum":9007199254740991},"gateway_slug":{"type":"string"},"tool_name":{"type":"string"},"arguments_redacted":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","call_id","step","gateway_slug","tool_name","arguments_redacted","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"tool_call_finished"},"call_id":{"type":"string"},"step":{"type":"integer","minimum":0,"maximum":9007199254740991},"gateway_slug":{"type":"string"},"tool_name":{"type":"string"},"status":{"type":"string","enum":["complete","failed"]},"duration_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"result_preview":{"anyOf":[{},{"type":"null"}]},"result_capped":{"type":"boolean"},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","call_id","step","gateway_slug","tool_name","status","duration_ms","error_code","error_message","result_preview","result_capped","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"step_finished"},"step":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"finish_reason":{"type":"string"},"tool_calls":{"type":"integer","minimum":0,"maximum":9007199254740991},"usage":{"type":"object","properties":{"input_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"output_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"total_tokens":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["input_tokens","output_tokens","total_tokens"],"additionalProperties":false},"duration_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","step","finish_reason","tool_calls","usage","duration_ms","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"result"},"result":{"$ref":"#/components/schemas/RecipeTestRunResponse"},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","result","at","elapsed_ms"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"error"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"elapsed_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","error","at","elapsed_ms"],"additionalProperties":false}]},"GatewaySpecDocument":{"$id":"#/components/schemas/GatewaySpecDocument","type":"object","properties":{},"additionalProperties":{}},"NotificationSummaryResponse":{"$id":"#/components/schemas/NotificationSummaryResponse","type":"object","properties":{"unread_count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["unread_count"],"additionalProperties":false},"NotificationListResponse":{"$id":"#/components/schemas/NotificationListResponse","type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"summary":{"type":"string"},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}]},"action_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"receipt":{"anyOf":[{"type":"object","properties":{"read_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"dismissed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["read_at","dismissed_at","version"],"additionalProperties":false},{"type":"null"}]}},"required":["id","title","summary","action_label","action_url","published_at","receipt"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"unread_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"selected_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["notifications","next_cursor","unread_count"],"additionalProperties":false},"InboxMessage":{"$id":"#/components/schemas/InboxMessage","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"summary":{"type":"string"},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}]},"action_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"receipt":{"anyOf":[{"type":"object","properties":{"read_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"dismissed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["read_at","dismissed_at","version"],"additionalProperties":false},{"type":"null"}]},"body":{"type":"string"}},"required":["id","title","summary","action_label","action_url","published_at","receipt","body"],"additionalProperties":false},"ReceiptMutationResponse":{"$id":"#/components/schemas/ReceiptMutationResponse","type":"object","properties":{"receipt":{"type":"object","properties":{"announcement_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"read_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"dismissed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["announcement_id","user_id","read_at","dismissed_at","version"],"additionalProperties":false},"unread_count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["receipt","unread_count"],"additionalProperties":false},"Announcement":{"$id":"#/components/schemas/Announcement","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"summary":{"type":"string"},"body":{"type":"string"},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}]},"action_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published","withdrawn"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"withdrawn_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_by_user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"updated_by_user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","title","summary","body","action_label","action_url","status","version","created_at","updated_at","published_at","withdrawn_at","created_by_user_id","updated_by_user_id"],"additionalProperties":false},"AdminAnnouncementListResponse":{"$id":"#/components/schemas/AdminAnnouncementListResponse","type":"object","properties":{"announcements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"summary":{"type":"string"},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}]},"action_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published","withdrawn"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"withdrawn_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_by_user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"updated_by_user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","title","summary","action_label","action_url","status","version","created_at","updated_at","published_at","withdrawn_at","created_by_user_id","updated_by_user_id"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["announcements","next_cursor"],"additionalProperties":false},"Account":{"$id":"#/components/schemas/Account","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["personal","organization"]},"plan":{"type":"string"},"limits":{"$ref":"#/components/schemas/AccountLimits"},"credits":{"type":"array","items":{"$ref":"#/components/schemas/CreditGrant"}}},"required":["id","type","plan","limits","credits"],"additionalProperties":false},"AccountEnvelope":{"$id":"#/components/schemas/AccountEnvelope","type":"object","properties":{"account":{"$ref":"#/components/schemas/Account"}},"required":["account"],"additionalProperties":false},"AccountListResponse":{"$id":"#/components/schemas/AccountListResponse","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["personal","organization"]},"updated_at":{"type":"string"}},"required":["id","type","updated_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["accounts","next_cursor"],"additionalProperties":false},"CreditGrant":{"$id":"#/components/schemas/CreditGrant","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["plan","purchase","promotion","adjustment"]},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","millicredits","source","expires_at"],"additionalProperties":false},"CreditGrantEnvelope":{"$id":"#/components/schemas/CreditGrantEnvelope","type":"object","properties":{"credit":{"$ref":"#/components/schemas/CreditGrant"}},"required":["credit"],"additionalProperties":false},"CreditHistoryEntry":{"$id":"#/components/schemas/CreditHistoryEntry","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["plan","purchase","promotion","adjustment"]},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"reference":{"anyOf":[{"type":"string"},{"type":"null"}]},"memo":{"anyOf":[{"type":"string"},{"type":"null"}]},"issued_at":{"type":"string"},"adjusts_grant_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","millicredits","source","expires_at","reference","memo","issued_at","adjusts_grant_id"],"additionalProperties":false},"CreditHistoryResponse":{"$id":"#/components/schemas/CreditHistoryResponse","type":"object","properties":{"credits":{"type":"array","items":{"$ref":"#/components/schemas/CreditHistoryEntry"}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["credits","next_cursor"],"additionalProperties":false},"CreditReceipt":{"$id":"#/components/schemas/CreditReceipt","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["plan","purchase","promotion","adjustment"]},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"reference":{"anyOf":[{"type":"string"},{"type":"null"}]},"memo":{"anyOf":[{"type":"string"},{"type":"null"}]},"issued_at":{"type":"string"},"adjusts_grant_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"idempotency_key":{"type":"string"},"adjustment_admission_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","millicredits","source","expires_at","reference","memo","issued_at","adjusts_grant_id","idempotency_key","adjustment_admission_id"],"additionalProperties":false},"CreditReceiptEnvelope":{"$id":"#/components/schemas/CreditReceiptEnvelope","type":"object","properties":{"credit":{"$ref":"#/components/schemas/CreditReceipt"}},"required":["credit"],"additionalProperties":false},"BillingCheckoutResponse":{"$id":"#/components/schemas/BillingCheckoutResponse","type":"object","properties":{"checkout":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false}},"required":["checkout"],"additionalProperties":false},"BillingPlansResponse":{"$id":"#/components/schemas/BillingPlansResponse","type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false}}},"required":["plans"],"additionalProperties":false},"BillingSubscriptionsResponse":{"$id":"#/components/schemas/BillingSubscriptionsResponse","type":"object","properties":{"subscriptions":{"type":"array","items":{"type":"object","properties":{"subscription_id":{"type":"string"},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string"},"terms":{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}]},"canceled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"pending_terms":{"anyOf":[{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false},{"type":"null"}]},"pending_effective_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["subscription_id","account_id","status","terms","current_period_end","canceled_at","pending_terms","pending_effective_at"],"additionalProperties":false}}},"required":["subscriptions"],"additionalProperties":false},"BillingSubscriptionEnvelope":{"$id":"#/components/schemas/BillingSubscriptionEnvelope","type":"object","properties":{"subscription":{"type":"object","properties":{"subscription_id":{"type":"string"},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string"},"terms":{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}]},"canceled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"pending_terms":{"anyOf":[{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false},{"type":"null"}]},"pending_effective_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["subscription_id","account_id","status","terms","current_period_end","canceled_at","pending_terms","pending_effective_at"],"additionalProperties":false}},"required":["subscription"],"additionalProperties":false},"BillingCheckoutStateEnvelope":{"$id":"#/components/schemas/BillingCheckoutStateEnvelope","type":"object","properties":{"checkout":{"type":"object","properties":{"id":{"type":"string"},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["subscription","topup"]},"completed":{"type":"boolean"},"terms":{"type":"object","properties":{"product_id":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string","enum":["subscription","topup"]},"price_minor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]},"allowance_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiry":{"type":"object","properties":{"policy":{"type":"string","enum":["period_end","days","never"]},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["policy"],"additionalProperties":false}},"required":["product_id","revision","kind","price_minor","currency","interval","allowance_millicredits","expiry"],"additionalProperties":false}},"required":["id","account_id","kind","completed","terms"],"additionalProperties":false}},"required":["checkout"],"additionalProperties":false},"CreditBalanceEnvelope":{"$id":"#/components/schemas/CreditBalanceEnvelope","type":"object","properties":{"balance":{"type":"object","properties":{"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"accounted_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reserved_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paused":{"type":"boolean"},"synced_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["account_id","accounted_millicredits","reserved_millicredits","available_millicredits","active_holds","paused","synced_at"],"additionalProperties":false}},"required":["balance"],"additionalProperties":false},"BillingWebhookResponse":{"$id":"#/components/schemas/BillingWebhookResponse","type":"object","properties":{"received":{"type":"boolean"}},"required":["received"],"additionalProperties":false},"AccountLimits":{"$id":"#/components/schemas/AccountLimits","type":"object","properties":{"plan":{"$ref":"#/components/schemas/UsageThresholds"},"discovery":{"$ref":"#/components/schemas/UsageThresholds"}},"required":["plan","discovery"],"additionalProperties":false},"UsageThresholds":{"$id":"#/components/schemas/UsageThresholds","type":"object","properties":{"rate":{"$ref":"#/components/schemas/UsageDimensions"},"daily":{"$ref":"#/components/schemas/UsageDimensions"}},"required":["rate","daily"],"additionalProperties":false},"UsageDimensions":{"$id":"#/components/schemas/UsageDimensions","type":"object","properties":{"requests":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"millicredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"request_bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"response_bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests","millicredits","request_bytes","response_bytes"],"additionalProperties":false},"AppAction":{"$id":"#/components/schemas/AppAction","type":"object","properties":{"callback_token":{"type":"string"},"id":{"type":"string"},"app_id":{"type":"string"},"action":{"type":"string"},"intent_key":{"type":"string"},"payload_digest":{"type":"string"},"state":{"type":"string","enum":["quoted","reserving","reserved","rejected","prepared","submitted","submission_unknown","succeeded","failed","never_submitted"]},"settlement":{"type":"string","enum":["none","pending","settled","refused"]},"payer":{"type":"object","properties":{"mode":{"type":"string","enum":["creator","user"]},"kind":{"type":"string","enum":["sponsor","personal","organization"]},"account_id":{"type":"string"}},"required":["mode","kind","account_id"],"additionalProperties":false},"tariff_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"user_price_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"charged_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"price_revision":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"policy_revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quote_expires_at":{"type":"string"},"reservation_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider_ref":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","app_id","action","intent_key","payload_digest","state","settlement","payer","tariff_millicredits","user_price_millicredits","charged_millicredits","price_revision","policy_revision","quote_expires_at","reservation_id","provider_ref","detail","created_at","updated_at"],"additionalProperties":false},"AppActionEnvelope":{"$id":"#/components/schemas/AppActionEnvelope","type":"object","properties":{"action":{"$ref":"#/components/schemas/AppAction"}},"required":["action"],"additionalProperties":false},"AppActionTransitionEnvelope":{"$id":"#/components/schemas/AppActionTransitionEnvelope","type":"object","properties":{"action":{"$ref":"#/components/schemas/AppAction"},"dispatch_granted":{"type":"boolean"}},"required":["action","dispatch_granted"],"additionalProperties":false},"CollectionInstanceResponse":{"$id":"#/components/schemas/CollectionInstanceResponse","type":"object","properties":{"app":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"type":"string","minLength":1,"maxLength":160},"name":{"type":"string","minLength":1,"maxLength":160}},"required":["id","handle","name"],"additionalProperties":false},"instance":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","app_id","created_at"],"additionalProperties":false}},"required":["app","instance"],"additionalProperties":false},"CollectionSponsorPolicyResponse":{"$id":"#/components/schemas/CollectionSponsorPolicyResponse","type":"object","properties":{"instance":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","app_id"],"additionalProperties":false},"policy":{"anyOf":[{"type":"object","properties":{"payer_mode":{"type":"string","const":"creator"},"audience":{"type":"string","enum":["anyone","invited"]},"sponsor_account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["payer_mode","audience","sponsor_account_id","revision"],"additionalProperties":false},{"type":"null"}]},"expected_revision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["instance","policy","expected_revision"],"additionalProperties":false},"CollectionTariffProvisionResponse":{"$id":"#/components/schemas/CollectionTariffProvisionResponse","type":"object","properties":{"tariffs":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}}},"required":["tariffs"],"additionalProperties":false},"CollectionApprovalResponse":{"$id":"#/components/schemas/CollectionApprovalResponse","type":"object","properties":{"approval":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["id","kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false}},"required":["id","app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","revoked_at","geography"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["id","kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false}},"required":["id","app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","revoked_at","query_scope"],"additionalProperties":false}]}},"required":["approval"],"additionalProperties":false},"CurrentCollectionApprovalResponse":{"$id":"#/components/schemas/CurrentCollectionApprovalResponse","type":"object","properties":{"approval":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["id","kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false}},"required":["id","app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","revoked_at","geography"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["id","kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false}},"required":["id","app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","revoked_at","query_scope"],"additionalProperties":false}]},"instance":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","app_id"],"additionalProperties":false},"policy":{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"payer_mode":{"type":"string","enum":["creator","user"]},"sponsor_account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sponsor_approved_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["app_id","payer_mode","sponsor_account_id","sponsor_approved_at","revision"],"additionalProperties":false}},"required":["approval","instance","policy"],"additionalProperties":false},"NotifyPreferences":{"$id":"#/components/schemas/NotifyPreferences","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"topic_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"channels":{"type":"object","properties":{"sms":{"type":"string","enum":["enabled","available","phone_unverified","service_unavailable","not_offered"]}},"required":["sms"],"additionalProperties":false},"phone":{"anyOf":[{"type":"object","properties":{"masked":{"type":"string","maxLength":24},"verified":{"type":"boolean"}},"required":["masked","verified"],"additionalProperties":false},{"type":"null"}]},"subscription":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"channels":{"maxItems":1,"type":"array","items":{"type":"string","enum":["sms"]}},"consent_version":{"type":"string","minLength":1,"maxLength":32},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","channels","consent_version","updated_at"],"additionalProperties":false},{"type":"null"}]}},"required":["app_key","topic_key","channels","phone","subscription"],"additionalProperties":false},"NotifyPhone":{"$id":"#/components/schemas/NotifyPhone","type":"object","properties":{"intent_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"phone":{"type":"object","properties":{"masked":{"type":"string","maxLength":24},"verified":{"type":"boolean"}},"required":["masked","verified"],"additionalProperties":false}},"required":["intent_id","phone"],"additionalProperties":false},"NotifyRevoked":{"$id":"#/components/schemas/NotifyRevoked","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cancelled_jobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","cancelled_jobs"],"additionalProperties":false},"NotifyEventAccepted":{"$id":"#/components/schemas/NotifyEventAccepted","type":"object","properties":{"operation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"outcome":{"type":"string","enum":["created","existing"]},"jobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["operation_id","outcome","jobs"],"additionalProperties":false},"NotifyOperation":{"$id":"#/components/schemas/NotifyOperation","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"action_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"event_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"opened_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"jobs":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","const":"sms"},"state":{"type":"string","enum":["queued","dispatching","accepted","retry_wait","unknown","failed","suppressed","expired","cancelled"]},"failure_code":{"anyOf":[{"type":"string","pattern":"^[a-z0-9_]{1,48}$"},{"type":"null"}]}},"required":["channel","state","failure_code"],"additionalProperties":false}}},"required":["id","app_key","action_key","event_key","created_at","expires_at","opened_at","jobs"],"additionalProperties":false},"NotifySavedAction":{"$id":"#/components/schemas/NotifySavedAction","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"enabled":{"type":"boolean"},"definition":{"type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"action_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"channels":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"string","enum":["sms"]}},"variables":{"maxItems":16,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"max_length":{"type":"integer","minimum":1,"maximum":200}},"required":["name","max_length"],"additionalProperties":false}},"templates":{"type":"object","properties":{"sms":{"type":"string","minLength":1,"maxLength":320}},"required":["sms"],"additionalProperties":false},"destination_kinds":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"}},"default_ttl_seconds":{"type":"integer","minimum":60,"maximum":604800}},"required":["app_key","action_key","version","channels","variables","templates","destination_kinds","default_ttl_seconds"],"additionalProperties":false}},"required":["id","version","enabled","definition"],"additionalProperties":false},"NotifyActionList":{"$id":"#/components/schemas/NotifyActionList","type":"object","properties":{"app":{"$ref":"#/components/schemas/NotifyApp"},"actions":{"type":"array","items":{"$ref":"#/components/schemas/NotifySavedAction"}}},"required":["app","actions"],"additionalProperties":false},"NotifyApp":{"$id":"#/components/schemas/NotifyApp","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"kind":{"type":"string","enum":["native","creator"]},"owner_account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"has_producer":{"type":"boolean"},"enabled":{"type":"boolean"},"destinations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["app_key","kind","owner_account_id","has_producer","enabled","destinations"],"additionalProperties":false},"NotifyLink":{"$id":"#/components/schemas/NotifyLink","type":"object","properties":{"path":{"type":"string","pattern":"^\\/(?![\\/\\\\])[^\\\\]*$"}},"required":["path"],"additionalProperties":false},"NotifyOpened":{"$id":"#/components/schemas/NotifyOpened","type":"object","properties":{"opened_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["opened_at"],"additionalProperties":false},"FlightWatch":{"$id":"#/components/schemas/FlightWatch","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"topic_key":{"type":"string"},"threshold_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"watch_from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"watch_until":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","topic_key","threshold_minutes","watch_from","watch_until"],"additionalProperties":false},"FlightWatchList":{"$id":"#/components/schemas/FlightWatchList","type":"object","properties":{"watches":{"type":"array","items":{"$ref":"#/components/schemas/FlightWatch"}}},"required":["watches"],"additionalProperties":false},"FlightClaimList":{"$id":"#/components/schemas/FlightClaimList","type":"object","properties":{"claims":{"type":"array","items":{"type":"object","properties":{"leg_key":{"type":"string","pattern":"^[0-9a-f]{32}$"},"leg_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,255}$"},"claim_token":{"type":"string","minLength":16,"maxLength":64}},"required":["leg_key","leg_id","claim_token"],"additionalProperties":false}}},"required":["claims"],"additionalProperties":false},"FlightReportResult":{"$id":"#/components/schemas/FlightReportResult","type":"object","properties":{"leg_key":{"type":"string","pattern":"^[0-9a-f]{32}$"},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"observation":{"anyOf":[{"type":"object","properties":{"observed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"scheduled_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"actual_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"status":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]}},"required":["observed_at","scheduled_arrival","estimated_arrival","actual_arrival","status"],"additionalProperties":false},{"type":"null"}]},"watches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"subscription_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"topic_key":{"type":"string"},"threshold_minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"flight_label":{"type":"string"},"baseline_estimate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"last_notified_estimate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"last_notified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"events_sent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","subscription_id","topic_key","threshold_minutes","flight_label","baseline_estimate","last_notified_estimate","last_notified_at","events_sent"],"additionalProperties":false}}},"required":["leg_key","revision","observation","watches"],"additionalProperties":false},"FlightCursorResult":{"$id":"#/components/schemas/FlightCursorResult","type":"object","properties":{"advanced":{"type":"boolean"}},"required":["advanced"],"additionalProperties":false},"RevokedGatewayKey":{"$id":"#/components/schemas/RevokedGatewayKey","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"The `jti` of the revoked JWT (the key row id)."},"expires_at":{"type":"string","description":"The `exp` of the JWT, as an ISO 8601 timestamp."}},"required":["id","expires_at"],"additionalProperties":false},"RevokedGatewayKeyListResponse":{"$id":"#/components/schemas/RevokedGatewayKeyListResponse","type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RevokedGatewayKey"}}},"required":["data"],"additionalProperties":false},"Error":{"$id":"#/components/schemas/Error","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","missing_credentials","invalid_credentials","insufficient_role","forbidden","not_found","slug_conflict","handle_conflict","recipe_conflict","announcement_conflict","version_conflict","closed","invalid_state","feature_unavailable","account_mismatch","no_payout_account","invalid_status","no_methods","spec_required","credential_required","already_retired","already_deleted","last_method_required","method_conflict","spec_exists","payload_too_large","validation_failed","credit_conflict","invalid_recipe","rate_limited","quote_stale","quote_expired","intent_conflict","payment_refused","terminal_conflict","invalid_event","invalid_action","unknown_variable","missing_variable","variable_too_long","message_too_long","sms_too_long","invalid_destination","event_conflict","app_forbidden","consent_required","channel_unavailable","insufficient_credits","credit_state_unknown","tariff_changed","phone_ineligible","verification_failed","payer_forbidden","internal_error"]},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},"slug":{"type":"string"},"status":{"type":"string","const":"draft"}},"required":["error"],"additionalProperties":false},"CreateGatewayRequest":{"$id":"#/components/schemas/CreateGatewayRequest","type":"object","properties":{"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"access_mode":{"type":"string","enum":["public","owner"]},"handle":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["unified","dedicated"]},"service_endpoint":{"type":"string","maxLength":2048,"format":"uri"},"auth":{"type":"object","properties":{"type":{"type":"string","enum":["api-key","jwt","x402-mpp","basic","none","oauth2"]},"delivery":{"type":"string","enum":["url","header","bearer","query"]},"param_name":{"type":"string","maxLength":128},"header_name":{"type":"string","maxLength":128},"token_access":{"type":"string","maxLength":8192},"grant":{"type":"string","enum":["client_credentials","authorization_code"]},"token_url":{"type":"string","maxLength":2048,"format":"uri"},"client_id":{"type":"string","minLength":1,"maxLength":8192},"scopes":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}}},"required":["type"],"additionalProperties":false},"extra_headers":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\t\\x20-\\x7E]*$"}},"required":["name","value"],"additionalProperties":false}},"tags":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","maxLength":64}},"category":{"type":"string","enum":["DATA","DEFI","INFRA","AI","ANALYTICS","MONITORING","PAYMENTS"]},"tagline":{"type":"string","maxLength":280},"description":{"type":"string","maxLength":4096},"product_website":{"type":"string","maxLength":2048,"format":"uri"},"docs_url":{"type":"string","maxLength":2048,"format":"uri"},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["openapi","openrpc"]},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["type","url"]},"service_protocol":{"type":"string","enum":["rest","named-jsonrpc","positioned-jsonrpc","mcp-streamable-http","mcp-http-sse"]},"status":{"type":"string","enum":["draft","active","paused","retired"]},"methods":{"default":[],"type":"array","items":{"$ref":"#/components/schemas/CreateMethodRequest"}},"sandbox":{"type":"boolean"}},"required":["account_id","handle","name","type","service_endpoint","auth"],"additionalProperties":false},"PatchGatewayRequest":{"$id":"#/components/schemas/PatchGatewayRequest","type":"object","properties":{"handle":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["unified","dedicated"]},"service_endpoint":{"type":"string","maxLength":2048,"format":"uri"},"auth":{"type":"object","properties":{"type":{"type":"string","enum":["api-key","jwt","x402-mpp","basic","none","oauth2"]},"delivery":{"type":"string","enum":["url","header","bearer","query"]},"param_name":{"type":"string","maxLength":128},"header_name":{"type":"string","maxLength":128},"token_access":{"type":"string","maxLength":8192},"grant":{"type":"string","enum":["client_credentials","authorization_code"]},"token_url":{"type":"string","maxLength":2048,"format":"uri"},"client_id":{"type":"string","minLength":1,"maxLength":8192},"scopes":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}}},"additionalProperties":false},"extra_headers":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\t\\x20-\\x7E]*$"}},"required":["name","value"],"additionalProperties":false}},"tags":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":64}},"category":{"type":"string","enum":["DATA","DEFI","INFRA","AI","ANALYTICS","MONITORING","PAYMENTS"]},"tagline":{"type":"string","maxLength":280},"description":{"type":"string","maxLength":4096},"product_website":{"type":"string","maxLength":2048,"format":"uri"},"docs_url":{"type":"string","maxLength":2048,"format":"uri"},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["openapi","openrpc"]},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["type","url"]},"service_protocol":{"type":"string","enum":["rest","named-jsonrpc","positioned-jsonrpc","mcp-streamable-http","mcp-http-sse"]},"status":{"type":"string","enum":["draft","active","paused","retired"]},"reason":{"type":"string","maxLength":1000},"sandbox":{"type":"boolean"},"access_mode":{"type":"string","enum":["public","owner"]}},"additionalProperties":false},"CreateMethodRequest":{"$id":"#/components/schemas/CreateMethodRequest","type":"object","properties":{"verb":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"resource":{"type":"string","minLength":1},"price_millicents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["verb","resource","price_millicents"],"additionalProperties":false},"CreateMethodsRequest":{"$id":"#/components/schemas/CreateMethodsRequest","type":"object","properties":{"methods":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/CreateMethodRequest"}}},"required":["methods"],"additionalProperties":false},"PatchMethodRequest":{"$id":"#/components/schemas/PatchMethodRequest","type":"object","properties":{"price_millicents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["price_millicents"],"additionalProperties":false},"CreateRecipeRequest":{"$id":"#/components/schemas/CreateRecipeRequest","type":"object","properties":{"handle":{"type":"string","pattern":"^(?!\\.{1,2}$)[A-Za-z0-9_.-]{1,128}$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":4096},"input_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_example":{},"output_example":{},"prompt_template":{"type":"string","minLength":1},"model":{"type":"string","enum":["anthropic/claude-haiku-4.5","anthropic/claude-sonnet-4.6","anthropic/claude-opus-5","meta/llama-3.1-8b","deepseek/deepseek-v4-flash-0731","openai/gpt-5-nano"]},"tool_bindings":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"gateway_slug":{"type":"string","pattern":"^[a-z2-7]{26}$"},"tool_name":{"type":"string","minLength":1,"maxLength":128}},"required":["gateway_slug","tool_name"],"additionalProperties":false}},"block":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","minLength":1,"maxLength":200},"icon":{"type":"string","minLength":1,"maxLength":4},"service_role":{"type":"string","minLength":1,"maxLength":80},"fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"kind":{"type":"string","enum":["text","select","checkbox"]},"input_key":{"type":"string","minLength":1},"default":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"options":{"type":"array","items":{"type":"string"}},"input_values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_type":{"type":"string","enum":["number"]}},"required":["id","label","kind","input_key","default"],"additionalProperties":false}},"output_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"view":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"facts"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"facts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"pending":{"type":"object","properties":{"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["title"],"additionalProperties":false}},"required":["kind","title","facts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"reading"},"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"unit":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"qualifier":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"pending":{"type":"object","properties":{"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["label","value"],"additionalProperties":false}},"required":["kind","label","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"list"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"items":{"type":"string","pattern":"^\\/"},"primary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"secondary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["kind","title","items","primary"],"additionalProperties":false}]},"runs":{"type":"string","enum":["on page load","when applied"]}},"required":["name","description","icon","fields","output_schema","view","runs"],"additionalProperties":false},{"type":"null"}]},"mcp_app":{"anyOf":[{"type":"object","properties":{"view":{"type":"string","enum":["wallet-snapshot","defi-desk","nft-shelf","token-lens","wallet-compare","wallet-story","whale-board","data-visualizations"]}},"required":["view"],"additionalProperties":false},{"type":"null"}]},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","minLength":1}},"required":["handle","name","description","input_schema","input_example","output_example","prompt_template","model","tool_bindings","account_id","created_by"],"additionalProperties":false},"PatchRecipeRequest":{"$id":"#/components/schemas/PatchRecipeRequest","type":"object","properties":{"handle":{"type":"string","pattern":"^(?!\\.{1,2}$)[A-Za-z0-9_.-]{1,128}$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":4096},"input_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_example":{},"output_example":{},"prompt_template":{"type":"string","minLength":1},"model":{"type":"string","enum":["anthropic/claude-haiku-4.5","anthropic/claude-sonnet-4.6","anthropic/claude-opus-5","meta/llama-3.1-8b","deepseek/deepseek-v4-flash-0731","openai/gpt-5-nano"]},"tool_bindings":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"gateway_slug":{"type":"string","pattern":"^[a-z2-7]{26}$"},"tool_name":{"type":"string","minLength":1,"maxLength":128}},"required":["gateway_slug","tool_name"],"additionalProperties":false}},"block":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","minLength":1,"maxLength":200},"icon":{"type":"string","minLength":1,"maxLength":4},"service_role":{"type":"string","minLength":1,"maxLength":80},"fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"kind":{"type":"string","enum":["text","select","checkbox"]},"input_key":{"type":"string","minLength":1},"default":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"options":{"type":"array","items":{"type":"string"}},"input_values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"input_type":{"type":"string","enum":["number"]}},"required":["id","label","kind","input_key","default"],"additionalProperties":false}},"output_schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"view":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"facts"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"facts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"pending":{"type":"object","properties":{"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"subtitle":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["title"],"additionalProperties":false}},"required":["kind","title","facts"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"reading"},"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"unit":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"qualifier":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"pending":{"type":"object","properties":{"label":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"value":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["label","value"],"additionalProperties":false}},"required":["kind","label","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"list"},"title":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"items":{"type":"string","pattern":"^\\/"},"primary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]},"secondary":{"anyOf":[{"type":"object","properties":{"pointer":{"type":"string","pattern":"^\\/"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["pointer"],"additionalProperties":false},{"type":"object","properties":{"field":{"type":"string","minLength":1},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["field"],"additionalProperties":false},{"type":"object","properties":{"literal":{"type":"string"},"transform":{"type":"string","enum":["number","titleStreet","titleCity","splitStreet","splitCity","aqiFromPm25","aqiCategory"]},"format":{"type":"string"}},"required":["literal"],"additionalProperties":false}]}},"required":["kind","title","items","primary"],"additionalProperties":false}]},"runs":{"type":"string","enum":["on page load","when applied"]}},"required":["name","description","icon","fields","output_schema","view","runs"],"additionalProperties":false},{"type":"null"}]},"mcp_app":{"anyOf":[{"type":"object","properties":{"view":{"type":"string","enum":["wallet-snapshot","defi-desk","nft-shelf","token-lens","wallet-compare","wallet-story","whale-board","data-visualizations"]}},"required":["view"],"additionalProperties":false},{"type":"null"}]},"expected_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"PublishRecipeRequest":{"$id":"#/components/schemas/PublishRecipeRequest","type":"object","properties":{"expected_updated_at":{"type":"string","minLength":1},"expected_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"TransferRecipeRequest":{"$id":"#/components/schemas/TransferRecipeRequest","type":"object","properties":{"to_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expected_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"actor_user_id":{"type":"string","minLength":1}},"required":["to_account_id","expected_account_id","actor_user_id"],"additionalProperties":false},"RecipeRunRequest":{"$id":"#/components/schemas/RecipeRunRequest","type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["version","input"],"additionalProperties":false},"RecipeTestRunRequest":{"$id":"#/components/schemas/RecipeTestRunRequest","type":"object","properties":{"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"exclude_tools":{"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":155}},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expected_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["input"],"additionalProperties":false},"AnnouncementDraftRequest":{"$id":"#/components/schemas/AnnouncementDraftRequest","type":"object","properties":{"title":{"type":"string","minLength":1},"summary":{"type":"string","minLength":1},"body":{"type":"string"},"action_label":{"default":null,"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"action_url":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","summary","body"],"additionalProperties":false},"PatchAnnouncementRequest":{"$id":"#/components/schemas/PatchAnnouncementRequest","type":"object","properties":{"title":{"type":"string","minLength":1},"summary":{"type":"string","minLength":1},"body":{"type":"string"},"action_label":{"default":null,"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"action_url":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["title","summary","body","version"],"additionalProperties":false},"VersionRequest":{"$id":"#/components/schemas/VersionRequest","type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["version"],"additionalProperties":false},"PutAccountEntitlementRequest":{"$id":"#/components/schemas/PutAccountEntitlementRequest","type":"object","properties":{"plan":{"type":"string","minLength":1},"limits":{"type":"object","properties":{"plan":{"type":"object","properties":{"rate":{"type":"object","properties":{"requests":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"millicredits":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"request_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"response_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests","millicredits","request_bytes","response_bytes"],"additionalProperties":false},"daily":{"type":"object","properties":{"requests":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"millicredits":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"request_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"response_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests","millicredits","request_bytes","response_bytes"],"additionalProperties":false}},"required":["rate","daily"],"additionalProperties":false},"discovery":{"type":"object","properties":{"rate":{"type":"object","properties":{"requests":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"millicredits":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"request_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"response_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests","millicredits","request_bytes","response_bytes"],"additionalProperties":false},"daily":{"type":"object","properties":{"requests":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"millicredits":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"request_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"response_bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests","millicredits","request_bytes","response_bytes"],"additionalProperties":false}},"required":["rate","daily"],"additionalProperties":false}},"required":["plan","discovery"],"additionalProperties":false}},"required":["plan","limits"],"additionalProperties":false},"CreateCreditGrantRequest":{"$id":"#/components/schemas/CreateCreditGrantRequest","type":"object","properties":{"millicredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["plan","purchase","promotion","adjustment"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"reference":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"memo":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"idempotency_key":{"type":"string","minLength":1},"adjustment":{"type":"object","properties":{"admission_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"target_grant_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["admission_id","target_grant_id"],"additionalProperties":false}},"required":["millicredits","source","idempotency_key"],"additionalProperties":false},"BillingCheckoutRequest":{"$id":"#/components/schemas/BillingCheckoutRequest","type":"object","properties":{"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["subscription","topup"]},"product_id":{"type":"string","minLength":1,"maxLength":64},"success_url":{"type":"string","format":"uri"},"cancel_url":{"type":"string","format":"uri"}},"required":["account_id","kind","product_id","success_url","cancel_url"],"additionalProperties":false},"BillingPlanChangeRequest":{"$id":"#/components/schemas/BillingPlanChangeRequest","type":"object","properties":{"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"product_id":{"type":"string","minLength":1,"maxLength":64}},"required":["account_id","product_id"],"additionalProperties":false},"QuoteAppActionRequest":{"$id":"#/components/schemas/QuoteAppActionRequest","type":"object","properties":{"app_id":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"action":{"type":"string","pattern":"^[a-z0-9][a-z0-9_.-]{0,62}$"},"intent_key":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9:_.\\-]+$"},"payload_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"payer_account_id":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}},"required":["app_id","action","intent_key","payload_digest"],"additionalProperties":false},"ReserveAppActionRequest":{"$id":"#/components/schemas/ReserveAppActionRequest","type":"object","properties":{"policy_revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"charged_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"payload_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["policy_revision","charged_millicredits","payload_digest"],"additionalProperties":false},"TransitionAppActionRequest":{"$id":"#/components/schemas/TransitionAppActionRequest","type":"object","properties":{"state":{"type":"string","enum":["prepared","submitted","submission_unknown","succeeded","failed","never_submitted"]},"provider_ref":{"type":"string","minLength":1,"maxLength":200},"detail":{"type":"string","minLength":1,"maxLength":200}},"required":["state"],"additionalProperties":false},"CollectionActionEnvelope":{"$id":"#/components/schemas/CollectionActionEnvelope","type":"object","properties":{"version":{"type":"string","const":"1"},"outcome":{"type":"string","enum":["quoted","reserved","pending","terminal"]},"existing":{"type":"boolean"},"fresh_dispatch":{"type":"boolean"},"action":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"actor_kind":{"type":"string","const":"service"},"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"intent_key":{"type":"string","minLength":1,"maxLength":160},"payload_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"state":{"type":"string","enum":["quoted","reserving","reserved","rejected","prepared","submitted","submission_unknown","succeeded","failed","never_submitted"]},"settlement":{"type":"string","enum":["none","pending","settled","refused"]},"payer":{"type":"object","properties":{"mode":{"type":"string","const":"creator"},"kind":{"type":"string","const":"sponsor"},"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["mode","kind","account_id"],"additionalProperties":false},"charged_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"policy_revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"approval_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"execution_ref":{"type":"object","properties":{"kind":{"type":"string","enum":["preview","release"]},"id":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","id"],"additionalProperties":false},"source_operation":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acquisition_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt_ordinal":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":3}]},"slot":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"bucket_start_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"bucket_end_ms":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","policy","bucket_start_ms","bucket_end_ms"],"additionalProperties":false},"quote_expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reservation_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"callback_token":{"anyOf":[{"type":"string","minLength":1,"maxLength":256},{"type":"null"}]}},"required":["id","app_id","actor_kind","action","intent_key","payload_digest","state","settlement","payer","charged_millicredits","policy_revision","approval_id","instance_id","execution_ref","source_operation","tariff_revision","acquisition_id","attempt_ordinal","slot","quote_expires_at","reservation_id","callback_token"],"additionalProperties":false}},"required":["version","outcome","existing","fresh_dispatch","action"],"additionalProperties":false},"CollectionInstanceRequest":{"$id":"#/components/schemas/CollectionInstanceRequest","anyOf":[{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"bootstrap_key":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,160}$"}},"required":["app_id"],"additionalProperties":false},{"type":"object","properties":{"account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":160},"bootstrap_key":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,160}$"}},"required":["account_id","name"],"additionalProperties":false}]},"CollectionSponsorPolicyRequest":{"$id":"#/components/schemas/CollectionSponsorPolicyRequest","type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"sponsor_account_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audience":{"type":"string","enum":["anyone","invited"]}},"required":["expected_revision","sponsor_account_id"],"additionalProperties":false},"CollectionTariffProvisionRequest":{"$id":"#/components/schemas/CollectionTariffProvisionRequest","type":"object","properties":{"actions":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"}}},"required":["actions"],"additionalProperties":false},"CollectionApprovalRequest":{"$id":"#/components/schemas/CollectionApprovalRequest","anyOf":[{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"requested_interval_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["id","version","adapter","kind","identity","arguments","recipe_revision","requested_interval_seconds"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":1,"maximum":1000000}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false}},"required":["app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","geography"],"additionalProperties":false},{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"requested_interval_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["id","version","adapter","kind","identity","arguments","recipe_revision","requested_interval_seconds"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["kinds"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":1,"maximum":1000000}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false}},"required":["app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","tariff_revision","limits","expires_at","query_scope"],"additionalProperties":false}]},"CollectionExecutionRequest":{"$id":"#/components/schemas/CollectionExecutionRequest","anyOf":[{"type":"object","properties":{"approval_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"execution_ref":{"type":"object","properties":{"kind":{"type":"string","enum":["preview","release"]},"id":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","id"],"additionalProperties":false},"operation":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"source_arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","adapter","kind","identity","source_arguments","recipe_revision"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acquisition_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt_ordinal":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":3}]},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false}},"required":["approval_id","instance_id","execution_ref","operation","tariff_revision","acquisition_id","attempt_ordinal","geography"],"additionalProperties":false},{"type":"object","properties":{"approval_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"execution_ref":{"type":"object","properties":{"kind":{"type":"string","enum":["preview","release"]},"id":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","id"],"additionalProperties":false},"operation":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"source_arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","adapter","kind","identity","source_arguments","recipe_revision"],"additionalProperties":false},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acquisition_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt_ordinal":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":3}]},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false}},"required":["approval_id","instance_id","execution_ref","operation","tariff_revision","acquisition_id","attempt_ordinal","query_scope"],"additionalProperties":false}]},"CollectionApprovalQuoteRequest":{"$id":"#/components/schemas/CollectionApprovalQuoteRequest","anyOf":[{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"requested_interval_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["id","version","adapter","kind","identity","arguments","recipe_revision","requested_interval_seconds"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["kinds"],"additionalProperties":false},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":1,"maximum":1000000}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"geography":{"type":"object","properties":{"incident_id":{"type":"string","minLength":1,"maxLength":160},"extent":{"type":"string","minLength":1,"maxLength":160},"county_evacuation_sources":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"caltrans_districts":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"nws_areas":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"purpleair_selection":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}}},"required":["incident_id","extent","county_evacuation_sources","caltrans_districts","nws_areas","purpleair_selection"],"additionalProperties":false}},"required":["app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","limits","expires_at","geography"],"additionalProperties":false},{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"instance_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sponsor_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"policy_revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"arguments":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"requested_interval_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["id","version","adapter","kind","identity","arguments","recipe_revision","requested_interval_seconds"],"additionalProperties":false}},"request_scope":{"type":"object","properties":{"kinds":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["preview","release"]}}},"required":["kinds"],"additionalProperties":false},"limits":{"type":"object","properties":{"slot_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"daily_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"lifetime_millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"run_count":{"type":"integer","minimum":1,"maximum":1000000}},"required":["slot_millicredits","daily_millicredits","lifetime_millicredits","run_count"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"query_scope":{"type":"object","properties":{"version":{"type":"string","const":"2"},"spatial":{"anyOf":[{"type":"object","properties":{"extent":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"required":["extent"],"additionalProperties":false},{"type":"null"}]}},"required":["version","spatial"],"additionalProperties":false}},"required":["app_id","instance_id","sponsor_account_id","policy_revision","source_operations","request_scope","limits","expires_at","query_scope"],"additionalProperties":false}]},"CollectionApprovalQuoteResponse":{"$id":"#/components/schemas/CollectionApprovalQuoteResponse","type":"object","properties":{"version":{"type":"string","const":"1"},"source_operations":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160},"adapter":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"version":{"type":"string","minLength":1,"maxLength":160}},"required":["id","version"],"additionalProperties":false},"kind":{"type":"string","enum":["capability","recipe"]},"identity":{"type":"string","minLength":1,"maxLength":160},"input_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recipe_revision":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":160},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","digest"],"additionalProperties":false},{"type":"null"}]},"slot_policy":{"type":"object","properties":{"version":{"type":"string","const":"utc-fixed-v1"},"duration_seconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["version","duration_seconds"],"additionalProperties":false},"tariff":{"type":"object","properties":{"action":{"type":"string","pattern":"^collect\\.[a-f0-9]{48}$"},"revision":{"type":"string","pattern":"^[1-9][0-9]*$"},"millicredits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","revision","millicredits"],"additionalProperties":false}},"required":["id","version","adapter","kind","identity","input_digest","recipe_revision","slot_policy","tariff"],"additionalProperties":false}},"tariff_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","source_operations","tariff_revision"],"additionalProperties":false},"NotifyPhoneStartRequest":{"$id":"#/components/schemas/NotifyPhoneStartRequest","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"topic_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"phone":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"}},"required":["app_key","topic_key","phone"],"additionalProperties":false},"NotifyPhoneConfirmRequest":{"$id":"#/components/schemas/NotifyPhoneConfirmRequest","type":"object","properties":{"intent_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string","pattern":"^\\d{4,10}$"}},"required":["intent_id","code"],"additionalProperties":false},"NotifySubscriptionRequest":{"$id":"#/components/schemas/NotifySubscriptionRequest","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"topic_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"channels":{"maxItems":1,"type":"array","items":{"type":"string","enum":["sms"]}},"consent_version":{"type":"string","minLength":1,"maxLength":32}},"required":["app_key","topic_key","channels","consent_version"],"additionalProperties":false},"NotifyEventRequest":{"$id":"#/components/schemas/NotifyEventRequest","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"action_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"topic_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"event_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"variables":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]}},"destination":{"type":"object","properties":{"kind":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"item_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$"}},"required":["kind","item_key"],"additionalProperties":false},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"audience_refs":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"supersede_unsent":{"type":"boolean"}},"required":["app_key","action_key","topic_key","event_key","variables","destination","expires_at"],"additionalProperties":false},"NotifyActionSaveRequest":{"$id":"#/components/schemas/NotifyActionSaveRequest","type":"object","properties":{"channels":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"string","enum":["sms"]}},"variables":{"maxItems":16,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"max_length":{"type":"integer","minimum":1,"maximum":200}},"required":["name","max_length"],"additionalProperties":false}},"templates":{"type":"object","properties":{"sms":{"type":"string","minLength":1,"maxLength":320}},"required":["sms"],"additionalProperties":false},"destination_kinds":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"}},"default_ttl_seconds":{"type":"integer","minimum":60,"maximum":604800},"enabled":{"default":true,"type":"boolean"}},"required":["channels","variables","templates","destination_kinds","default_ttl_seconds"],"additionalProperties":false},"NotifySelfTestRequest":{"$id":"#/components/schemas/NotifySelfTestRequest","type":"object","properties":{"app_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"action_key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"topic_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$"},"variables":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]}},"destination":{"type":"object","properties":{"kind":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"item_key":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$"}},"required":["kind","item_key"],"additionalProperties":false}},"required":["app_key","action_key","topic_key","variables","destination"],"additionalProperties":false},"NotifyAppPassRegistration":{"$id":"#/components/schemas/NotifyAppPassRegistration","type":"object","properties":{"destinations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"additionalProperties":{"type":"string","pattern":"^\\/(?!\\/)[A-Za-z0-9/_-]*(?:\\{item_key\\}[A-Za-z0-9/_-]*|\\?[A-Za-z0-9_-]+=\\{item_key\\})$"}}},"required":["destinations"],"additionalProperties":false},"NotifyTopicGrantRequest":{"$id":"#/components/schemas/NotifyTopicGrantRequest","type":"object","properties":{"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["expires_at"],"additionalProperties":false},"NotifyAppRegistrationRequest":{"$id":"#/components/schemas/NotifyAppRegistrationRequest","type":"object","properties":{"owner_account_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"producer_key_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"destinations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"additionalProperties":{"type":"string","pattern":"^\\/(?!\\/)[A-Za-z0-9/_-]*(?:\\{item_key\\}[A-Za-z0-9/_-]*|\\?[A-Za-z0-9_-]+=\\{item_key\\})$"}},"enabled":{"default":true,"type":"boolean"}},"required":["owner_account_id","producer_key_id","destinations"],"additionalProperties":false},"NotifyAppRegistrationBody":{"$id":"#/components/schemas/NotifyAppRegistrationBody","anyOf":[{"$ref":"#/components/schemas/NotifyAppPassRegistration"},{"$ref":"#/components/schemas/NotifyAppRegistrationRequest"}]},"FlightWatchEnrollRequest":{"$id":"#/components/schemas/FlightWatchEnrollRequest","type":"object","properties":{"leg_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,255}$"},"flight_label":{"type":"string","minLength":1,"maxLength":12},"threshold_minutes":{"anyOf":[{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":30},{"type":"number","const":60}]},"scheduled_departure":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"scheduled_arrival":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["leg_id","flight_label","threshold_minutes","scheduled_departure","scheduled_arrival"],"additionalProperties":false},"FlightObservationReportRequest":{"$id":"#/components/schemas/FlightObservationReportRequest","type":"object","properties":{"leg_key":{"type":"string","pattern":"^[0-9a-f]{32}$"},"claim_token":{"type":"string","minLength":16,"maxLength":64},"outcome":{"type":"string","enum":["observed","failed","skipped"]},"observation":{"anyOf":[{"type":"object","properties":{"observed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"scheduled_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"actual_arrival":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"status":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]}},"required":["observed_at","scheduled_arrival","estimated_arrival","actual_arrival","status"],"additionalProperties":false},{"type":"null"}]}},"required":["leg_key","claim_token","outcome","observation"],"additionalProperties":false},"FlightCursorRequest":{"$id":"#/components/schemas/FlightCursorRequest","type":"object","properties":{"kind":{"type":"string","enum":["baseline","event"]},"expected_estimate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"new_estimate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["kind","expected_estimate","new_estimate"],"additionalProperties":false}}},"paths":{"/v1/app-actions/collection/quote":{"post":{"operationId":"postV1AppActionsCollectionQuote","summary":"Quote a collection service attempt","tags":["App actions"],"security":[{"CollectionMachine":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionExecutionRequest"}}}},"responses":{"200":{"description":"Persisted collection action and admission outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"202":{"description":"The same action remains pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"400":{"description":"Invalid collection request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A verified collection machine is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The collection authority or action terms changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Collection spend is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-actions/collection/intent":{"get":{"operationId":"getV1AppActionsCollectionIntent","summary":"Read a persisted collection action by intent","tags":["App actions"],"security":[{"CollectionMachine":[]}],"parameters":[{"name":"app_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"approval_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"acquisition_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attempt_ordinal","in":"query","required":true,"schema":{"type":"integer","enum":[1,2,3]}}],"responses":{"200":{"description":"Persisted collection action and admission outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"202":{"description":"The persisted collection action remains pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"400":{"description":"Invalid collection intent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A verified collection machine is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching collection action exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Collection spend is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-actions/collection/{id}/reserve":{"post":{"operationId":"postV1AppActionsCollectionByIdReserve","summary":"Reserve and reauthorize a collection service attempt","tags":["App actions"],"security":[{"CollectionMachine":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionExecutionRequest"}}}},"responses":{"200":{"description":"Persisted collection action and admission outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"202":{"description":"The same action remains pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"400":{"description":"Invalid collection request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A verified collection machine is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The collection authority or action terms changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Collection spend is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/app-actions/collection/{id}":{"get":{"operationId":"getV1AppActionsCollectionById","summary":"Read a collection service action","tags":["App actions"],"security":[{"CollectionMachine":[]}],"responses":{"200":{"description":"Persisted collection action and admission outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"202":{"description":"The same action remains pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"400":{"description":"Invalid collection request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A verified collection machine is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The collection authority or action terms changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Collection spend is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/app-actions/collection/{id}/recover":{"post":{"operationId":"postV1AppActionsCollectionByIdRecover","summary":"Recover the original collection service action","tags":["App actions"],"security":[{"CollectionMachine":[]}],"responses":{"200":{"description":"Persisted collection action and admission outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"202":{"description":"The same action remains pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionEnvelope"}}}},"400":{"description":"Invalid collection request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A verified collection machine is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The collection authority or action terms changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Collection spend is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/billing/stripe/webhook":{"post":{"operationId":"postV1BillingStripeWebhook","summary":"Receive a Stripe event","description":"Verifies the Stripe-Signature over the raw body, then persists payment work. The account is resolved from a checkout this API created and its bound customer; event metadata never selects an account. Credits are issued once per business payment identity (invoice, payment, refund), not per event id.","tags":["Billing"],"security":[],"responses":{"200":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingWebhookResponse"}}}},"400":{"description":"Invalid signature or body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Processing failed; the provider redelivers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Billing is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateways":{"get":{"operationId":"getV1Gateways","summary":"List gateways","description":"Returns active gateways to anonymous callers. Authenticated callers with the `read` role can also filter by status and see all gateway statuses.","tags":["Gateways"],"security":[],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","paused","retired"]},"description":"Filter by status. Requires the read role."},{"name":"expanded","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include the methods array on each gateway."}],"responses":{"200":{"description":"List of gateways.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayListResponse"}}}},"304":{"description":"Not modified since If-Modified-Since."},"400":{"description":"Invalid status value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The status filter requires the read role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postV1Gateways","summary":"Create a gateway","description":"Creates a new gateway. An omitted status requests activation. Every active request first saves a draft, then runs readiness checks and returns its saved draft identity on conflict. The `slug` is derived server-side as the base32 encoding of the gateway id and returned in the response — it must not be sent in the body.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGatewayRequest"}}}},"responses":{"201":{"description":"Gateway created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"400":{"description":"Invalid request body (e.g. a `slug` was supplied).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The `handle` is taken, or activation fails with `no_methods`, `spec_required`, `credential_required`, or `no_payout_account`. A failed activation returns the saved draft slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateways/{slug}":{"patch":{"operationId":"patchV1GatewaysBySlug","summary":"Update a gateway","description":"Partially updates a gateway. Activation accepts only `status: active` and an optional `reason`; it can fail with `no_methods`, `spec_required`, `credential_required`, `no_payout_account`, or `invalid_status`.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchGatewayRequest"}}}},"responses":{"200":{"description":"Updated gateway.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Activation readiness failed: `no_methods`, `spec_required`, `credential_required`, `no_payout_account`, or `invalid_status`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteV1GatewaysBySlug","summary":"Delete a gateway","description":"Soft-deletes a gateway by setting its status to `retired`. Returns 409 if already retired.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"responses":{"200":{"description":"Retired gateway.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Gateway is already retired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"getV1GatewaysBySlug","summary":"Get a gateway","description":"Returns a single gateway. Anonymous callers get 404 for non-active gateways. Authenticated callers with the read role see any status.","tags":["Gateways"],"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."},{"name":"expanded","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include the methods array."}],"responses":{"200":{"description":"Gateway object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"304":{"description":"Not modified since If-Modified-Since."},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateways/{slug}/methods":{"get":{"operationId":"getV1GatewaysBySlugMethods","summary":"List gateway methods","description":"Returns non-deleted methods for an active gateway. Authenticated callers with the read role see all methods (including soft-deleted) for any gateway status.","tags":["Gateway Methods"],"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"responses":{"200":{"description":"List of methods.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodListResponse"}}}},"304":{"description":"Not modified since If-Modified-Since."},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postV1GatewaysBySlugMethods","summary":"Add methods to a gateway","description":"All-or-nothing batch insert. Returns 409 if any (verb, resource) pair already exists for this gateway.","tags":["Gateway Methods"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMethodsRequest"}}}},"responses":{"201":{"description":"Methods created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodListResponse"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"One or more (verb, resource) pairs already exist for this gateway.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateways/{slug}/methods/{id}":{"patch":{"operationId":"patchV1GatewaysBySlugMethodsById","summary":"Update a gateway method","description":"Updates `price_millicents` for a method. Returns 404 if the method is soft-deleted.","tags":["Gateway Methods"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Method ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchMethodRequest"}}}},"responses":{"200":{"description":"Updated method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodEnvelope"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway or method not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteV1GatewaysBySlugMethodsById","summary":"Delete a gateway method","description":"Soft-deletes a method. Returns 409 if already deleted or if it is the final active method on an active gateway.","tags":["Gateway Methods"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Method ID."}],"responses":{"200":{"description":"Deleted method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodEnvelope"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway or method not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Method is already deleted, or it is the final active method on an active gateway (`last_method_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateways/{slug}/spec":{"get":{"operationId":"getV1GatewaysBySlugSpec","summary":"Fetch a gateway's spec document","description":"Serves the pasted OpenAPI/OpenRPC document verbatim, or redirects to the provider-hosted spec URL. 404 when the gateway has no spec. Anonymous callers get 404 for non-active gateways.","tags":["Gateways"],"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"responses":{"200":{"description":"The spec document, served verbatim in its authored format.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewaySpecDocument"}},"application/yaml":{"schema":{"type":"string"}}}},"302":{"description":"Redirect to the provider-hosted spec URL."},"304":{"description":"Not modified since If-Modified-Since."},"404":{"description":"Gateway not found, or it has no spec.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postV1GatewaysBySlugSpec","summary":"Upload a spec document","description":"Stores a pasted spec document for a gateway that has no spec. `spec.url` then points at `GET /v1/gateways/{slug}/spec`, which serves the document unchanged. Returns 409 `spec_exists` when the gateway already has a hosted or pasted spec; use PATCH to replace it.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"requestBody":{"required":true,"description":"The raw OpenAPI or OpenRPC document, JSON or YAML, at most 4 MiB. The API detects `spec_type` from its top-level `openapi`, `swagger`, or `openrpc` key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewaySpecDocument"}},"application/yaml":{"schema":{"type":"string"}}}},"responses":{"201":{"description":"The gateway, with its new spec reference.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"400":{"description":"The body is empty, is not UTF-8, contains a NUL character, or has no top-level `openapi`, `swagger`, or `openrpc` key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The gateway already has a spec (`spec_exists`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"The document is larger than 4 MiB (`payload_too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patchV1GatewaysBySlugSpec","summary":"Replace a spec document","description":"Replaces the spec of a gateway with a pasted document, and sets `spec_type` from the new document. A hosted spec URL is removed. Returns 404 when the gateway has no spec; use POST to add one.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"requestBody":{"required":true,"description":"The raw OpenAPI or OpenRPC document, JSON or YAML, at most 4 MiB. The API detects `spec_type` from its top-level `openapi`, `swagger`, or `openrpc` key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewaySpecDocument"}},"application/yaml":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"The gateway, with its new spec reference.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"400":{"description":"The body is empty, is not UTF-8, contains a NUL character, or has no top-level `openapi`, `swagger`, or `openrpc` key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found, or it has no spec.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"The document is larger than 4 MiB (`payload_too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteV1GatewaysBySlugSpec","summary":"Remove a spec","description":"Removes the hosted spec URL or the pasted document of a gateway. This is the only way to remove a spec. Returns 409 `spec_required` for an active gateway, because activation requires a spec.","tags":["Gateways"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Gateway slug."}],"responses":{"200":{"description":"The gateway, with `spec: null`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gateway"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Gateway not found, or it has no spec.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The gateway is active (`spec_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gateway-keys/revoked":{"get":{"operationId":"getV1GatewayKeysRevoked","summary":"List revoked gateway keys","description":"Returns the id of each revoked gateway JWT that has not expired, or that expired less than five minutes ago. The grace covers the 60-second `exp` leeway of the gateway. The list is complete and has no paging. The id equals the `jti` claim of the JWT. The gateway refuses a JWT whose `jti` is in this list. A store error answers 500 and never an empty list.","tags":["Gateway keys"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"The revoked, unexpired key ids.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokedGatewayKeyListResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The read role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"The key store failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The key store is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts":{"get":{"operationId":"getV1Accounts","summary":"List accounts","description":"Ids and change times for the usage entitlement sweep. Ordered by id; page with `after`. `updated_at` is the same composed timestamp the single read serves as Last-Modified, so a sweep can skip an unchanged account without a second request.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"changed_since","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only accounts changed at or after this instant."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"description":"Page size, 1 to 1000. Defaults to 200."},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Keyset cursor: the last account id of the previous page."}],"responses":{"200":{"description":"A page of accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountListResponse"}}}},"400":{"description":"Invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The usage role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}":{"get":{"operationId":"getV1AccountsById","summary":"Get an account entitlement","description":"What an account is entitled to: both threshold sets and its unexpired credit grants. An account with no entitlement row is served the discovery tier in both slots with no grants — never a 404, which would let a reader fail open and uncap an unprovisioned account. Reports no consumption: only the usage Durable Object knows what is left.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."}],"responses":{"200":{"description":"The account entitlement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountEnvelope"}}}},"304":{"description":"Not modified since If-Modified-Since."},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The usage role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Account not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}/entitlement":{"put":{"operationId":"putV1AccountsByIdEntitlement","summary":"Set an account entitlement","description":"Replaces the account entitlement wholesale. A null threshold is counted and not enforced; zero is a real zero. Deleting the row is not offered — an account with no entitlement is on the discovery tier, which writing the discovery tier into both slots also expresses.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutAccountEntitlementRequest"}}}},"responses":{"200":{"description":"The account entitlement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountEnvelope"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Account not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}/credits":{"post":{"operationId":"postV1AccountsByIdCredits","summary":"Issue a credit grant","description":"Records one issuance of credits. A grant is never debited: consumption is counted per grant in the usage Durable Object and never written back here. Correcting a grant means issuing an 'adjustment', which is the one source that may carry a negative amount — that is what makes a refund or a partial claw-back representable. A negative adjustment names the Usage admission that holds the amount against the grant it corrects, and expires with that grant. Replaying an `idempotency_key` with the same terms returns the grant that already exists; different terms answer 409.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreditGrantRequest"}}}},"responses":{"200":{"description":"The grant this idempotency key already issued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditGrantEnvelope"}}}},"201":{"description":"The grant that was issued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditGrantEnvelope"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Account not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The key issued different terms, or the adjustment admission was refused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The usage credit authority is unavailable for a negative adjustment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}/credit-history":{"get":{"operationId":"getV1AccountsByIdCreditHistory","summary":"Read credit grant history","description":"Every grant of the account, expired included, newest first: amount, source, expiry, reference, memo and issuance date. Requires the admin key, or the app-control key with a user token whose user is a member of the account. Reports no balance: only the usage Durable Object knows what is left.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"description":"Page size, 1 to 200. Defaults to 50."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"The next_cursor of the previous page."}],"responses":{"200":{"description":"A page of grants.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditHistoryResponse"}}}},"400":{"description":"Invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account read permission is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Account not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}/credits/balance":{"get":{"operationId":"getV1AccountsByIdCreditsBalance","summary":"Read the spendable credit balance","description":"The account balance as the usage Durable Object reports it: accounted, reserved and available millicredits, the active hold count and whether a dispute pauses spending. Never a grant sum. Requires the admin key, or the app-control key with a user token whose user is a member of the account. Answers 503 when the usage authority cannot answer; a caller must not read that as zero.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."}],"responses":{"200":{"description":"The balance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditBalanceEnvelope"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account read permission is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The usage credit authority is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/accounts/{id}/credits/by-key":{"get":{"operationId":"getV1AccountsByIdCreditsByKey","summary":"Recover a grant by business key","description":"The immutable receipt a business idempotency key issued on this account, expired or not, so a fulfillment that lost its response can recover it. Bound to the account: a key issued on another account answers 404. Requires the admin key or verified account read permission.","tags":["Accounts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."},{"name":"key","in":"query","required":true,"schema":{"type":"string"},"description":"The idempotency key the grant was issued with."}],"responses":{"200":{"description":"The grant receipt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditReceiptEnvelope"}}}},"400":{"description":"Missing key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account read permission is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No grant has this key on this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/plans":{"get":{"operationId":"getV1BillingPlans","summary":"List the active billing products","description":"Every active subscription and top-up product at its latest revision, with the price, allowance, interval and expiry a checkout would record. Requires an admin or app-control key and a user token.","tags":["Billing"],"security":[{"BearerAuth":[],"UserToken":[]}],"responses":{"200":{"description":"The active products.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlansResponse"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/subscriptions":{"get":{"operationId":"getV1BillingSubscriptions","summary":"Read an account's subscriptions","description":"The subscriptions of an account the user is a member of: status, recorded terms, period end, cancellation and any plan change scheduled for the next period. Requires an admin or app-control key and a user token.","tags":["Billing"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"account_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"},"description":"Account id."}],"responses":{"200":{"description":"The subscriptions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscriptionsResponse"}}}},"400":{"description":"Missing account id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The user is not a member of this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Billing is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/subscriptions/{id}/plan-change":{"post":{"operationId":"postV1BillingSubscriptionsByIdPlanChange","summary":"Request a plan change","description":"Currently unavailable: provider-backed next-period scheduling is not configured. No provider or local plan terms are changed. Requires the 'billing:manage' capability on the subscription's account.","tags":["Billing"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlanChangeRequest"}}}},"responses":{"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The user may not manage billing for this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such subscription on this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Provider-backed plan scheduling is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/billing/checkouts/{id}":{"get":{"operationId":"getV1BillingCheckoutsById","summary":"Read whether a checkout completed","description":"The state of a checkout this account started, for a success page to poll. It issues nothing: credits appear in the history only after the provider confirms payment. Requires an admin or app-control key and a user token whose user is a member of the checkout account.","tags":["Billing"],"security":[{"BearerAuth":[],"UserToken":[]}],"responses":{"200":{"description":"The checkout state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutStateEnvelope"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No checkout the user may read has this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Billing is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/billing/checkout":{"post":{"operationId":"postV1BillingCheckout","summary":"Create a subscription or top-up checkout","description":"Creates a hosted checkout for an active catalog product on an account the user may manage (the 'billing:manage' capability). Requires an admin or app-control key and the user token. The plan revision and allowance terms are recorded with the checkout, so a later catalog edit cannot change what this payment issues.","tags":["Billing"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutRequest"}}}},"responses":{"201":{"description":"The checkout.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The user may not manage billing for this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No active product has this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Billing is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/collection-approvals/{id}":{"get":{"operationId":"getV1AppsCollectionApprovalsById","summary":"Read a current collection approval for a verified machine","tags":["Apps"],"responses":{"200":{"description":"Bounded current approval, instance and policy facts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentCollectionApprovalResponse"}}}},"403":{"description":"No verified machine identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Approval, matching instance or policy is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Stored approval data is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]},"delete":{"operationId":"deleteV1AppsCollectionApprovalsById","summary":"Revoke collection approval","tags":["Apps"],"responses":{"204":{"description":"Approval revoked."}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/apps/collection-instances":{"post":{"operationId":"postV1AppsCollectionInstances","summary":"Create a collection instance","tags":["Apps"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionInstanceRequest"}}}},"responses":{"201":{"description":"Unpublished app and instance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionInstanceResponse"}}}}}}},"/v1/apps/collection-instances/{id}/tariffs":{"post":{"operationId":"postV1AppsCollectionInstancesByIdTariffs","summary":"Initialize configured platform collection tariffs","tags":["Apps"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionTariffProvisionRequest"}}}},"responses":{"200":{"description":"Existing or initialized platform tariffs. No approval or spend authority is granted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionTariffProvisionResponse"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/apps/collection-instances/{id}/sponsor-policy":{"get":{"operationId":"getV1AppsCollectionInstancesByIdSponsorPolicy","summary":"Read collection sponsor policy","tags":["Apps"],"responses":{"200":{"description":"The current collection sponsor policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionSponsorPolicyResponse"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]},"put":{"operationId":"putV1AppsCollectionInstancesByIdSponsorPolicy","summary":"Set collection sponsor policy","tags":["Apps"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionSponsorPolicyRequest"}}}},"responses":{"200":{"description":"The updated collection sponsor policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionSponsorPolicyResponse"}}}},"409":{"description":"The policy revision is stale.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/v1/apps/collection-approvals":{"post":{"operationId":"postV1AppsCollectionApprovals","summary":"Approve collection spend","tags":["Apps"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionApprovalRequest"}}}},"responses":{"201":{"description":"Collection approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionApprovalResponse"}}}}}}},"/v1/apps/collection-approvals/quote":{"post":{"operationId":"postV1AppsCollectionApprovalsQuote","summary":"Review collection approval tariffs","tags":["Apps"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionApprovalQuoteRequest"}}}},"responses":{"200":{"description":"Trusted collection plan tariffs. No spend authority is granted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionApprovalQuoteResponse"}}}}}}},"/v1/app-actions/quote":{"post":{"operationId":"postV1AppActionsQuote","summary":"Quote an app action","description":"Resolves the actor, payer and platform tariff from server state. The payer is the personal account of the actor or an organization with approved spend authority. The body cannot name a price or user. A repeated intent refreshes an unreserved quote.","tags":["App actions"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteAppActionRequest"}}}},"responses":{"200":{"description":"The quote.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionEnvelope"}}}},"400":{"description":"Invalid body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Service or user authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The 'admin' or 'app-control' service role and payer spend authority are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such app or action, or the caller may not see it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"No platform tariff or personal account; or the intent key names another action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Credit spend is not configured in this environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-actions/{id}/reserve":{"post":{"operationId":"postV1AppActionsByIdReserve","summary":"Reserve a quoted app action","description":"Admits the exact quote the person confirmed: the body repeats its policy revision, charge and payload digest. The quote is revalidated against the current tariff and payer authority, then credits are held in the usage authority under the immutable intent. 202 means the usage answer was ambiguous; repeat the same call to recover the one hold.","tags":["App actions"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The server-created action id."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReserveAppActionRequest"}}}},"responses":{"200":{"description":"Reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionEnvelope"}}}},"202":{"description":"Reservation in progress; retry the same call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionEnvelope"}}}},"400":{"description":"Invalid body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Service or user authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The 'admin' or 'app-control' service role and payer spend authority are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such app or action, or the caller may not see it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Stale, expired or mismatched quote, or the payer cannot cover it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Credit spend is not configured in this environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-actions/{id}/transition":{"post":{"operationId":"postV1AppActionsByIdTransition","summary":"Record submission or terminal evidence","description":"Records an adapter state: prepared (before the provider call), submitted, submission_unknown, succeeded, failed (a definitive provider failure) or never_submitted (only before prepared). A terminal state is stored first, then committed or released once. A repeat of the same terminal state retries an owed settlement; a different terminal state answers 409. The charge cannot change. Send X-Bazantic-User-Token for the action's actor, or, for a provider callback with no person, X-Bazantic-Action-Token with the callback_token the reserve and read answers return. A service key alone cannot move an action.","tags":["App actions"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The server-created action id."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionAppActionRequest"}}}},"responses":{"200":{"description":"Recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionTransitionEnvelope"}}}},"202":{"description":"Recorded; settlement owed. Repeat the same call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionTransitionEnvelope"}}}},"400":{"description":"Invalid body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Service or user authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The 'admin' or 'app-control' service role and payer spend authority are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such app or action, or the caller may not see it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Transition not allowed from the current state, or a different terminal state is recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Credit spend is not configured in this environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-actions/{id}":{"get":{"operationId":"getV1AppActionsById","summary":"Read an app action","description":"The action's quote, payer and state. Only its actor may read it.","tags":["App actions"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The server-created action id."}],"responses":{"200":{"description":"The action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppActionEnvelope"}}}},"401":{"description":"Service or user authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The 'admin' or 'app-control' service role and payer spend authority are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such app or action, or the caller may not see it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Credit spend is not configured in this environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/summary":{"get":{"operationId":"getV1NotificationsSummary","summary":"Get notification summary","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"responses":{"200":{"description":"Unread message count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSummaryResponse"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The read role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications":{"get":{"operationId":"getV1Notifications","summary":"List notifications","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Notification page without message bodies.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"400":{"description":"Invalid page cursor or limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The read role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/{id}":{"get":{"operationId":"getV1NotificationsById","summary":"Get notification detail","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Eligible message detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxMessage"}}}},"400":{"description":"Invalid message id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The read role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Message is not eligible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/{id}/read":{"post":{"operationId":"postV1NotificationsByIdRead","summary":"Read notification","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Receipt and global unread count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptMutationResponse"}}}},"400":{"description":"Invalid message id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Message is not eligible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Receipt changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/{id}/dismiss":{"post":{"operationId":"postV1NotificationsByIdDismiss","summary":"Dismiss notification","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Receipt and global unread count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptMutationResponse"}}}},"400":{"description":"Invalid message id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Message is not eligible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Receipt changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/{id}/restore":{"post":{"operationId":"postV1NotificationsByIdRestore","summary":"Restore notification","tags":["Notifications"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionRequest"}}}},"responses":{"200":{"description":"Receipt and global unread count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptMutationResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The write role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Message is not eligible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Receipt changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/announcements":{"get":{"operationId":"getV1Announcements","summary":"List announcements","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Admin announcement page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAnnouncementListResponse"}}}},"400":{"description":"Invalid page request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and read role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postV1Announcements","summary":"Create announcement draft","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementDraftRequest"}}}},"responses":{"200":{"description":"Updated announcement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"201":{"description":"Draft announcement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and write role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Announcement changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/announcements/{id}":{"get":{"operationId":"getV1AnnouncementsById","summary":"Get announcement detail","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Announcement detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"400":{"description":"Invalid announcement id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and read role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Announcement not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patchV1AnnouncementsById","summary":"Patch announcement draft","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAnnouncementRequest"}}}},"responses":{"200":{"description":"Updated announcement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and write role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Announcement changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/announcements/{id}/publish":{"post":{"operationId":"postV1AnnouncementsByIdPublish","summary":"Publish announcement","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionRequest"}}}},"responses":{"200":{"description":"Updated announcement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and write role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Announcement changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/announcements/{id}/withdraw":{"post":{"operationId":"postV1AnnouncementsByIdWithdraw","summary":"Withdraw announcement","tags":["Announcements"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionRequest"}}}},"responses":{"200":{"description":"Updated announcement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcement"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Platform administrator and write role required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Announcement changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication or storage is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/preferences":{"get":{"operationId":"getV1NotifyPreferences","summary":"Get Notify preferences for one topic","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"app_key","in":"query","required":true,"schema":{"type":"string"}},{"name":"topic_key","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Channel states, masked phone and subscription.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPreferences"}}}},"400":{"description":"Invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The role or the topic is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, storage or the channel is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/phone/start":{"post":{"operationId":"postV1NotifyPhoneStart","summary":"Send a verification code to a United States phone","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPhoneStartRequest"}}}},"responses":{"200":{"description":"The enrollment intent and the masked phone.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPhone"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The role or the topic is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The number is not eligible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests, or a daily text message cap is spent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, storage or the channel is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/phone/confirm":{"post":{"operationId":"postV1NotifyPhoneConfirm","summary":"Confirm the verification code of the current user","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPhoneConfirmRequest"}}}},"responses":{"200":{"description":"The verified, masked phone.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPhone"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The role or the topic is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such verification for the user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The code is not correct.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many attempts, or a daily cap is spent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, storage or the channel is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/subscriptions":{"put":{"operationId":"putV1NotifySubscriptions","summary":"Set consent and channels for one topic","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifySubscriptionRequest"}}}},"responses":{"200":{"description":"The confirmed preferences.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPreferences"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The role or the topic is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The consent text changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A channel is not available, or the phone is not verified.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, storage or the channel is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/subscriptions/{id}":{"delete":{"operationId":"deleteV1NotifySubscriptionsById","summary":"Revoke a subscription of the current user","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Revoked. Unsent jobs of the subscription are cancelled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyRevoked"}}}},"400":{"description":"Invalid id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Both credentials are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The role or the topic is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Subscription not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, storage or the channel is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/apps/{appKey}":{"put":{"operationId":"putV1NotifyAppsByAppKey","summary":"Register an app for Notify","description":"An app pass for the app registers it with its destination paths. BUA reads the owner from the app row, and a repeat with the same body changes nothing. A platform operator can also bind the owner account, the producer API key and the destinations.","tags":["Notify"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"appKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyAppRegistrationBody"}}}},"responses":{"200":{"description":"The registered app.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyApp"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The app has no identity row.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A destination is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/apps/{appKey}/actions":{"get":{"operationId":"getV1NotifyAppsByAppKeyActions","summary":"List the saved actions of an owned app","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"appKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The app and the current version of each action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyActionList"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/apps/{appKey}/actions/{actionKey}":{"put":{"operationId":"putV1NotifyAppsByAppKeyActionsByActionKey","summary":"Save the next version of an owned action","description":"An edit affects new events only. enabled: false cancels the unsent jobs of the action. An app pass for the app saves its own actions with no user token, and a body equal to the current version writes nothing.","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"appKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"actionKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyActionSaveRequest"}}}},"responses":{"200":{"description":"The saved version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifySavedAction"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid template or destination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/events":{"post":{"operationId":"postV1NotifyEvents","summary":"Send an event to the subscribers of a topic","description":"Only the producer key of the app, or an app pass for the app, can send. A duplicate event key answers the stored operation.","tags":["Notify"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyEventRequest"}}}},"responses":{"200":{"description":"The operation and its channel jobs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyEventAccepted"}}}},"400":{"description":"Invalid event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Action not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The event key holds other content.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A variable, the destination, the expiry or the text length is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/apps/{appKey}/topics/{topicKey}/grants/{userId}":{"put":{"operationId":"putV1NotifyAppsByAppKeyTopicsByTopicKeyGrantsByUserId","summary":"Let a user subscribe to a topic of the app","description":"An app pass for the app only. Creates the grant or extends its expiry, at most 400 days ahead. The grant lets the user subscribe and gives no consent. The topic key travels URL-encoded.","tags":["Notify"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"appKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"topicKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyTopicGrantRequest"}}}},"responses":{"204":{"description":"The grant exists."},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The expiry is not in the next 400 days.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteV1NotifyAppsByAppKeyTopicsByTopicKeyGrantsByUserId","summary":"Remove the grant of a user and the subscription to the topic","description":"An app pass for the app only. Revokes the grant, the active subscription of the user for the topic and its unsent jobs. A repeat answers 204.","tags":["Notify"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"appKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"topicKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"The grant and the subscription are gone."},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"App not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/operations/{id}":{"get":{"operationId":"getV1NotifyOperationsById","summary":"Get the masked state of an operation","description":"The producer key or an app pass for the app sees every channel job. A recipient, with the user token, sees their own jobs.","tags":["Notify"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Channel states and the open evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyOperation"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/test":{"post":{"operationId":"postV1NotifyTest","summary":"Send a saved action to your own subscription","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifySelfTestRequest"}}}},"responses":{"200":{"description":"The test operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyEventAccepted"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"You have no subscription to the topic.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid variables or destination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/links/{token}":{"get":{"operationId":"getV1NotifyLinksByToken","summary":"Resolve a notification link","description":"Answers the same-origin destination path. Records no open.","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The destination path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyLink"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Link not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/open/{token}":{"post":{"operationId":"postV1NotifyOpenByToken","summary":"Record the explicit open of a notification","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The open time.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyOpened"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key, the role or the account is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Link not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Notify is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/flights/watches":{"put":{"operationId":"putV1NotifyFlightsWatches","summary":"Watch a flight leg for arrival delays","description":"The flights producer key or a flights app pass. Creates or renews the watch of the user for the leg and threshold.","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightWatchEnrollRequest"}}}},"responses":{"200":{"description":"The watch. Subscribe to its topic to receive alerts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightWatch"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The flight times cannot be watched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"getV1NotifyFlightsWatches","summary":"List your watches of a flight leg","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"leg_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The active watches of the user for the leg.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightWatchList"}}}},"400":{"description":"Invalid leg.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/flights/watches/{id}":{"delete":{"operationId":"deleteV1NotifyFlightsWatchesById","summary":"Stop watching a flight leg","description":"Revokes the watch and the subscription to its topic.","tags":["Notify"],"security":[{"BearerAuth":[],"UserToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The revoked watch.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightWatch"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Watch not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/flights/claims":{"post":{"operationId":"postV1NotifyFlightsClaims","summary":"Claim the flight legs that are due for an observation","description":"The flights producer key or a flights app pass. Each claimed leg took the daily observation caps. Make the gateway call only for a claimed leg, then report it.","tags":["Notify"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"The claimed legs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightClaimList"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/flights/observations":{"post":{"operationId":"postV1NotifyFlightsObservations","summary":"Report the observation of a claimed leg","description":"Records the observation and releases the claim. Answers the cursors of the watches that can alert.","tags":["Notify"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightObservationReportRequest"}}}},"responses":{"200":{"description":"The stored observation and the watch cursors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightReportResult"}}}},"400":{"description":"Invalid report.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The leg claim expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notify/flights/watches/{id}/cursor":{"post":{"operationId":"postV1NotifyFlightsWatchesByIdCursor","summary":"Move the cursor of a watch","description":"Compare and set. advanced is false when another pass moved the cursor first, or at the event cap.","tags":["Notify"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightCursorRequest"}}}},"responses":{"200":{"description":"Whether the cursor moved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightCursorResult"}}}},"400":{"description":"Invalid cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The credential is not the flights producer key or a flights app pass.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Flight alerts are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes":{"get":{"operationId":"getV1Recipes","summary":"List Recipes","description":"Returns published Recipes with public fields and their author. Admin callers receive all Recipes and authoring fields, and may filter with account_id or scope=all.","tags":["Recipes"],"security":[],"parameters":[{"name":"account_id","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Admin only. Lists the Recipes of one account. Ignored for a non-admin caller."},{"name":"scope","in":"query","required":false,"schema":{"type":"string","enum":["all"]},"description":"Admin only. scope=all lists every Recipe. Ignored for a non-admin caller."}],"responses":{"200":{"description":"Recipe list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeListResponse"}}}},"400":{"description":"account_id is not a valid UUID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"postV1Recipes","summary":"Create a Recipe","description":"Creates one mutable draft Recipe.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecipeRequest"}}}},"responses":{"201":{"description":"Recipe created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"400":{"description":"Invalid Recipe definition.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Recipe handle already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}/publish":{"post":{"operationId":"postV1RecipesByHandlePublish","summary":"Publish a Recipe","description":"Publishes one draft Recipe after an optional exact updated_at precondition and live gateway MCP tool validation.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRecipeRequest"}}}},"responses":{"200":{"description":"Recipe published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"400":{"description":"Invalid Recipe publish request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Recipe is not a draft, the publish precondition mismatched, Recipe changed during validation, or the owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Live gateway MCP tool validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}/unpublish":{"post":{"operationId":"postV1RecipesByHandleUnpublish","summary":"Unpublish a Recipe","description":"Returns one published Recipe to draft state.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"responses":{"200":{"description":"Recipe unpublished.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Recipe is not published, or the owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}":{"patch":{"operationId":"patchV1RecipesByHandle","summary":"Update a Recipe","description":"Updates one draft Recipe. Unpublish a published Recipe before definition changes.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRecipeRequest"}}}},"responses":{"200":{"description":"Recipe updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"400":{"description":"Invalid Recipe patch.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Recipe is published, the handle already exists, or the owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteV1RecipesByHandle","summary":"Delete a Recipe","description":"Deletes one never-published draft Recipe. Unpublishing retains published revision history and does not enable deletion.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"responses":{"200":{"description":"Recipe deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Recipe is published, has immutable revision history, or the owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"getV1RecipesByHandle","summary":"Get a Recipe","description":"Returns a published Recipe with public fields and its author. Admin callers can read drafts and authoring fields.","tags":["Recipes"],"security":[],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"responses":{"200":{"description":"Recipe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"404":{"description":"Recipe not found or not publicly available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}/transfer":{"post":{"operationId":"postV1RecipesByHandleTransfer","summary":"Transfer a Recipe","description":"Moves a Recipe to another account. A draft or a published Recipe transfers; the tool name does not change.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRecipeRequest"}}}},"responses":{"200":{"description":"Recipe transferred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"400":{"description":"Invalid transfer request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}/runs":{"post":{"operationId":"postV1RecipesByHandleRuns","summary":"Run a pinned deterministic Recipe revision","description":"Executes one operator-authorized immutable deterministic Recipe revision. Public execution is disabled.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Stable Recipe handle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeRunRequest"}}}},"responses":{"200":{"description":"Canonical deterministic Recipe result and receipt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeRunResponse"}}}},"400":{"description":"Invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Published deterministic revision not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Input, plan, or adapter contract validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The gateway operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Deterministic execution is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"The deterministic run timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/recipes/{handle}/test-runs":{"post":{"operationId":"postV1RecipesByHandleTestRuns","summary":"Run a Recipe definition as a test","description":"Runs a draft or published LLM-POC Recipe definition with a bounded step count and timeout. The run is stored in billing.recipe_test_runs and kept indefinitely.","tags":["Recipes"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"},"description":"Recipe handle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeTestRunRequest"}}}},"responses":{"200":{"description":"Test run result — a failed tool call or model error is reported here, not as an HTTP error. With `Accept: application/x-ndjson` the answer is a stream of `RecipeTestRunEvent` lines: `accepted` first, then each phase of the run as it happens, then `result` (the same body as the JSON answer) or `error`. Request errors answer as JSON with their status before any stream starts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeTestRunResponse"}},"application/x-ndjson":{"schema":{"$ref":"#/components/schemas/RecipeTestRunEvent"}}}},"400":{"description":"Invalid body, or an exclude_tools entry naming a tool this Recipe does not bind.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The admin role is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recipe not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The owner changed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The Recipe input schema does not compile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many test runs for this key. Retry after the window given in Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The Recipe test runner is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}