{"openapi":"3.1.1","info":{"title":"DoneSpan capability API","version":"1.0.0","description":"Prerelease customer/delegated capabilities. New jobs are demo-only. Provider/operator, webhooks and customer-only approval, feedback and service-plan endpoints are outside this contract. Independent external-client AT18 acceptance is pending. Money is integer USD cents; timestamps are UTC. Business validation can reject otherwise schema-valid intake."},"servers":[{"url":"https://donespan.com/api/v1"}],"externalDocs":{"description":"Client setup and acceptance status","url":"https://donespan.com/agents"},"components":{"securitySchemes":{"delegated":{"type":"oauth2","description":"Public client registration at /oauth/register; authorization code with S256 PKCE. Use the exact resource from /.well-known/oauth-protected-resource at authorization and token exchange. Expiry, revocation, current membership and command scope are checked on every call.","flows":{"authorizationCode":{"authorizationUrl":"https://donespan.com/authorize","tokenUrl":"https://donespan.com/oauth/token","refreshUrl":"https://donespan.com/oauth/token","scopes":{"jobs:read":"Read owned requests, quotes and bookings","jobs:create":"Create request drafts","quotes:request":"Request quotes with outreach consent","booking:propose":"Prepare booking and change proposals","booking:approve":"Confirm bookings within the grant limit"}}}},"customerSession":{"type":"apiKey","in":"cookie","name":"donespan_session","description":"First-party customer session. Mutations require same-origin Origin and X-CSRF-Token matching the CSRF cookie. An Authorization header takes precedence and never falls back to cookies."}}},"paths":{"/service-definitions":{"get":{"operationId":"get_service_definitions","description":"Public rate-limited catalog, without household or full provider records.","security":[],"responses":{"200":{"description":"Approved definitions; prices require quotes","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"service_definitions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"version":{"type":"number","const":1},"name":{"type":"string"},"description":{"type":"string"},"checklist":{"type":"array","items":{"type":"string"}}},"required":["id","version","name","description","checklist"],"additionalProperties":false}},"pricing_mode":{"type":"string","const":"quote_required"}},"required":["service_definitions","pricing_mode"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/serviceability":{"get":{"operationId":"check_serviceability","description":"Coverage status only; no availability promise, provider count or estimated price.","security":[],"parameters":[{"name":"postal_code","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Current serviceability","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postal_code":{"type":"string","pattern":"^\\d{5}$"},"status":{"type":"string","enum":["active","not_active","unsupported_area"]},"pricing_mode":{"type":"string","const":"quote_required"}},"required":["postal_code","status","pricing_mode"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/jobs":{"post":{"operationId":"create_job","description":"Save a draft. No provider outreach or booking. Follow missing_fields in the first-party website.","security":[{"delegated":["jobs:create"]},{"customerSession":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Stable per command, scoped to the exact grant. Same key and payload replay across REST/MCP; changed payload conflicts."},{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Required with first-party session mutations, together with a matching donespan_csrf cookie and same-origin Origin header. Not used with bearer tokens."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"service_definition_id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"service_definition_version":{"type":"number","const":1},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"timezone":{"type":"string","const":"America/Los_Angeles"},"budget_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"preferred_provider_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)$"},"home":{"type":"object","properties":{"home_type":{"type":"string","enum":["apartment","townhome","house"]},"sqft":{"type":"integer","minimum":1,"maximum":100000},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0.5,"maximum":100,"multipleOf":0.5},"last_cleaned":{"type":"string","minLength":1,"maxLength":500},"condition":{"type":"string","enum":["maintenance","buildup","hazardous","unknown"]},"occupied":{"type":"boolean"}},"additionalProperties":false},"constraints":{"type":"object","properties":{"pets":{"type":"string","minLength":1,"maxLength":500},"pets_secured":{"type":"boolean"},"heavy_pet_hair":{"type":"boolean"},"parking":{"type":"string","minLength":1,"maxLength":500},"stairs":{"type":"integer","minimum":0,"maximum":100},"supplies":{"type":"string","enum":["provider","customer"]},"adult_provides_access":{"type":"boolean"}},"additionalProperties":false},"add_ons":{"type":"object","properties":{"oven_interior":{"type":"integer","minimum":0,"maximum":100},"emptied_refrigerator_interior":{"type":"integer","minimum":0,"maximum":100},"bed_linen_change":{"type":"integer","minimum":0,"maximum":100}},"additionalProperties":false},"preferred_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"access_until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},"required":["start","end","access_until"],"additionalProperties":false}},"acquisition_source":{"description":"Defaults to external_agent for delegated calls and direct for browser sessions.","type":"string","pattern":"^[a-z0-9_-]{1,64}$"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Created or idempotently replayed","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"},"customer_id":{"type":"string","minLength":1},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["DRAFT","SOURCING","OFFERS_READY","NO_MATCH","BOOKING_PENDING","BOOKED","COMPLETION_REPORTED","CLOSED","CANCELLED"]},"intake":{"type":"object","properties":{"service_definition_id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"service_definition_version":{"type":"number","const":1},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"timezone":{"type":"string","const":"America/Los_Angeles"},"budget_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"preferred_provider_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)$"},"home":{"type":"object","properties":{"home_type":{"type":"string","enum":["apartment","townhome","house"]},"sqft":{"type":"integer","minimum":1,"maximum":100000},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0.5,"maximum":100,"multipleOf":0.5},"last_cleaned":{"type":"string","minLength":1,"maxLength":500},"condition":{"type":"string","enum":["maintenance","buildup","hazardous","unknown"]},"occupied":{"type":"boolean"}},"additionalProperties":false},"constraints":{"type":"object","properties":{"pets":{"type":"string","minLength":1,"maxLength":500},"pets_secured":{"type":"boolean"},"heavy_pet_hair":{"type":"boolean"},"parking":{"type":"string","minLength":1,"maxLength":500},"stairs":{"type":"integer","minimum":0,"maximum":100},"supplies":{"type":"string","enum":["provider","customer"]},"adult_provides_access":{"type":"boolean"}},"additionalProperties":false},"add_ons":{"type":"object","properties":{"oven_interior":{"type":"integer","minimum":0,"maximum":100},"emptied_refrigerator_interior":{"type":"integer","minimum":0,"maximum":100},"bed_linen_change":{"type":"integer","minimum":0,"maximum":100}},"additionalProperties":false},"preferred_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"access_until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},"required":["start","end","access_until"],"additionalProperties":false}}},"additionalProperties":false},"missing_fields":{"type":"array","items":{"type":"string"}},"acquisition_source":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$"},"execution_channel":{"type":"string","enum":["web","external_mcp","operator_assisted"]},"is_demo":{"type":"boolean"},"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{3}(?:Z))$"}},"required":["id","customer_id","version","status","intake","missing_fields","acquisition_source","execution_channel","is_demo","created_at"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/jobs/{id}":{"get":{"operationId":"get_job","description":"Read an owned request. A saved request is not a confirmed booking.","security":[{"delegated":["jobs:read"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"}}],"responses":{"200":{"description":"Persisted result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"},"customer_id":{"type":"string","minLength":1},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["DRAFT","SOURCING","OFFERS_READY","NO_MATCH","BOOKING_PENDING","BOOKED","COMPLETION_REPORTED","CLOSED","CANCELLED"]},"intake":{"type":"object","properties":{"service_definition_id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"service_definition_version":{"type":"number","const":1},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"timezone":{"type":"string","const":"America/Los_Angeles"},"budget_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"preferred_provider_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)$"},"home":{"type":"object","properties":{"home_type":{"type":"string","enum":["apartment","townhome","house"]},"sqft":{"type":"integer","minimum":1,"maximum":100000},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0.5,"maximum":100,"multipleOf":0.5},"last_cleaned":{"type":"string","minLength":1,"maxLength":500},"condition":{"type":"string","enum":["maintenance","buildup","hazardous","unknown"]},"occupied":{"type":"boolean"}},"additionalProperties":false},"constraints":{"type":"object","properties":{"pets":{"type":"string","minLength":1,"maxLength":500},"pets_secured":{"type":"boolean"},"heavy_pet_hair":{"type":"boolean"},"parking":{"type":"string","minLength":1,"maxLength":500},"stairs":{"type":"integer","minimum":0,"maximum":100},"supplies":{"type":"string","enum":["provider","customer"]},"adult_provides_access":{"type":"boolean"}},"additionalProperties":false},"add_ons":{"type":"object","properties":{"oven_interior":{"type":"integer","minimum":0,"maximum":100},"emptied_refrigerator_interior":{"type":"integer","minimum":0,"maximum":100},"bed_linen_change":{"type":"integer","minimum":0,"maximum":100}},"additionalProperties":false},"preferred_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"access_until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},"required":["start","end","access_until"],"additionalProperties":false}}},"additionalProperties":false},"missing_fields":{"type":"array","items":{"type":"string"}},"acquisition_source":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$"},"execution_channel":{"type":"string","enum":["web","external_mcp","operator_assisted"]},"is_demo":{"type":"boolean"},"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{3}(?:Z))$"}},"required":["id","customer_id","version","status","intake","missing_fields","acquisition_source","execution_channel","is_demo","created_at"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/jobs/{id}/quote-requests":{"post":{"operationId":"request_quotes","description":"Requires complete eligible intake, explicit outreach consent and quota. Returns immediately; use status_url and next_poll_after_seconds.","security":[{"delegated":["quotes:request"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Stable per command, scoped to the exact grant. Same key and payload replay across REST/MCP; changed payload conflicts."},{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Required with first-party session mutations, together with a matching donespan_csrf cookie and same-origin Origin header. Not used with bearer tokens."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expected_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"outreach_consent":{"type":"boolean","const":true},"consent_version":{"type":"string","const":"quote_outreach.v1"}},"required":["expected_version","outreach_consent","consent_version"],"additionalProperties":false}}}},"responses":{"202":{"description":"Accepted; poll persisted state","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"resource_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},"sourcing_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":["SOURCING","NO_MATCH"]},"next_action":{"type":"string","enum":["await_provider_quotes","operator_review_no_supply"]},"next_poll_after_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status_url":{"type":"string"},"deadline_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{3}(?:Z))$"}},"required":["resource_id","version","sourcing_id","status","next_action","next_poll_after_seconds","status_url","deadline_at"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/jobs/{id}/offers":{"get":{"operationId":"get_offers","description":"Usable confirmed quotes only; excludes draft/withdrawn offers and private evidence.","security":[{"delegated":["jobs:read"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"}}],"responses":{"200":{"description":"Persisted result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"resource_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},"offers":{"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)$"},"provider_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)$"},"provider_name":{"type":"string"},"job_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"confirmation_source":{"type":"string","enum":["operator_assisted","provider_form","unknown"]},"terms":{"type":"object","properties":{"included_tasks":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"excluded_tasks":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"add_on_inclusions":{"type":"object","properties":{"oven_interior":{"type":"boolean"},"emptied_refrigerator_interior":{"type":"boolean"},"bed_linen_change":{"type":"boolean"}},"required":["oven_interior","emptied_refrigerator_interior","bed_linen_change"],"additionalProperties":false},"heavy_pet_hair_included":{"type":"boolean"},"price_items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":500},"amount_cents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["description","amount_cents"],"additionalProperties":false}},"total_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","const":"USD"},"tax_treatment":{"type":"string","minLength":1,"maxLength":5000},"arrival_start":{"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{3}(?:Z))$"},"arrival_end":{"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{3}(?:Z))$"},"duration_minutes":{"type":"integer","exclusiveMinimum":0,"maximum":480},"resource_id":{"type":"string","minLength":1,"maxLength":5000},"crew_label":{"type":"string","minLength":1,"maxLength":5000},"cancellation_terms":{"type":"string","minLength":1,"maxLength":5000},"reclean_terms":{"type":"string","minLength":1,"maxLength":5000},"scope":{"type":"object","properties":{"service_definition_id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"service_definition_version":{"type":"number","const":1},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"timezone":{"type":"string","const":"America/Los_Angeles"},"budget_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"preferred_provider_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)$"},"home":{"type":"object","properties":{"home_type":{"type":"string","enum":["apartment","townhome","house"]},"sqft":{"type":"integer","minimum":1,"maximum":100000},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0.5,"maximum":100,"multipleOf":0.5},"last_cleaned":{"type":"string","minLength":1,"maxLength":500},"condition":{"type":"string","enum":["maintenance","buildup","hazardous","unknown"]},"occupied":{"type":"boolean"}},"required":["home_type","sqft","bedrooms","bathrooms","last_cleaned","condition","occupied"],"additionalProperties":false},"constraints":{"type":"object","properties":{"pets":{"type":"string","minLength":1,"maxLength":500},"pets_secured":{"type":"boolean"},"heavy_pet_hair":{"type":"boolean"},"parking":{"type":"string","minLength":1,"maxLength":500},"stairs":{"type":"integer","minimum":0,"maximum":100},"supplies":{"type":"string","enum":["provider","customer"]},"adult_provides_access":{"type":"boolean"}},"required":["pets","pets_secured","heavy_pet_hair","parking","stairs","supplies","adult_provides_access"],"additionalProperties":false},"add_ons":{"type":"object","properties":{"oven_interior":{"type":"integer","minimum":0,"maximum":100},"emptied_refrigerator_interior":{"type":"integer","minimum":0,"maximum":100},"bed_linen_change":{"type":"integer","minimum":0,"maximum":100}},"required":["oven_interior","emptied_refrigerator_interior","bed_linen_change"],"additionalProperties":false},"preferred_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"access_until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},"required":["start","end","access_until"],"additionalProperties":false}}},"required":["service_definition_id","service_definition_version","postal_code","timezone","home","constraints","add_ons","preferred_windows"],"additionalProperties":false}},"required":["included_tasks","excluded_tasks","add_on_inclusions","heavy_pet_hair_included","price_items","total_cents","currency","tax_treatment","arrival_start","arrival_end","duration_minutes","resource_id","crew_label","cancellation_terms","reclean_terms","scope"],"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{3}(?:Z))$"},"confirmed_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{3}(?:Z))$"},"window_index":{"type":"integer","minimum":0,"maximum":2}},"required":["id","provider_id","provider_name","job_version","confirmation_source","terms","expires_at","confirmed_at","window_index"],"additionalProperties":false}},"next_poll_after_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"next_action":{"type":"string","enum":["review_quotes","no_usable_quotes"]},"booking_created":{"type":"boolean","const":false}},"required":["resource_id","version","offers","next_poll_after_seconds","next_action","booking_created"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/jobs/{id}/booking-proposals":{"post":{"operationId":"prepare_booking","description":"Return an approval link for the customer to review. No approval, booking commitment, address disclosure or payment occurs.","security":[{"delegated":["booking:propose"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Stable per command, scoped to the exact grant. Same key and payload replay across REST/MCP; changed payload conflicts."},{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Required with first-party session mutations, together with a matching donespan_csrf cookie and same-origin Origin header. Not used with bearer tokens."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expected_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offer_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":["expected_version","offer_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created or idempotently replayed","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approval_request_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)$"},"approval_url":{"type":"string"},"summary_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"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{3}(?:Z))$"},"booking_created":{"type":"boolean","const":false}},"required":["approval_request_id","approval_url","summary_hash","expires_at","booking_created"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/approval-requests/{id}/confirm":{"post":{"operationId":"approve_booking","description":"After the delegated client displays the exact quote and receives one explicit user confirmation, create a pending booking within the grant limit. The provider must still confirm; no payment occurs.","security":[{"delegated":["booking:approve"]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Stable per command, scoped to the exact grant. Same key and payload replay across REST/MCP; changed payload conflicts."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expected_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"summary_hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"confirm":{"type":"boolean","const":true},"disclose_address":{"type":"boolean","const":true},"user_confirmed":{"type":"boolean","const":true}},"required":["expected_version","summary_hash","confirm","disclose_address","user_confirmed"],"additionalProperties":false}}}},"responses":{"202":{"description":"Persisted pending booking","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"resource_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","const":"PENDING_PROVIDER"},"next_action":{"type":"string","const":"await_provider_confirmation"},"next_poll_after_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status_url":{"type":"string"}},"required":["resource_id","status","next_action","next_poll_after_seconds","status_url"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/bookings/{id}":{"get":{"operationId":"get_booking","description":"Persisted booking/change/case status. Only CONFIRMED means the provider has confirmed. Relative links resolve against this application origin.","security":[{"delegated":["jobs:read"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"}}],"responses":{"200":{"description":"Persisted result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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)$"},"job_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":["PENDING_PROVIDER","CONFIRMED","IN_PROGRESS","COMPLETION_REPORTED","DECLINED","EXPIRED","CANCELLED","NO_SHOW","CLOSED"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"terms":{"type":"object","properties":{"included_tasks":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"excluded_tasks":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"add_on_inclusions":{"type":"object","properties":{"oven_interior":{"type":"boolean"},"emptied_refrigerator_interior":{"type":"boolean"},"bed_linen_change":{"type":"boolean"}},"required":["oven_interior","emptied_refrigerator_interior","bed_linen_change"],"additionalProperties":false},"heavy_pet_hair_included":{"type":"boolean"},"price_items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":500},"amount_cents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["description","amount_cents"],"additionalProperties":false}},"total_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","const":"USD"},"tax_treatment":{"type":"string","minLength":1,"maxLength":5000},"arrival_start":{"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{3}(?:Z))$"},"arrival_end":{"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{3}(?:Z))$"},"duration_minutes":{"type":"integer","exclusiveMinimum":0,"maximum":480},"resource_id":{"type":"string","minLength":1,"maxLength":5000},"crew_label":{"type":"string","minLength":1,"maxLength":5000},"cancellation_terms":{"type":"string","minLength":1,"maxLength":5000},"reclean_terms":{"type":"string","minLength":1,"maxLength":5000},"scope":{"type":"object","properties":{"service_definition_id":{"type":"string","enum":["residential.clean.standard","residential.clean.initial"]},"service_definition_version":{"type":"number","const":1},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"timezone":{"type":"string","const":"America/Los_Angeles"},"budget_cents":{"type":"integer","minimum":0,"maximum":9007199254740991},"preferred_provider_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)$"},"home":{"type":"object","properties":{"home_type":{"type":"string","enum":["apartment","townhome","house"]},"sqft":{"type":"integer","minimum":1,"maximum":100000},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0.5,"maximum":100,"multipleOf":0.5},"last_cleaned":{"type":"string","minLength":1,"maxLength":500},"condition":{"type":"string","enum":["maintenance","buildup","hazardous","unknown"]},"occupied":{"type":"boolean"}},"required":["home_type","sqft","bedrooms","bathrooms","last_cleaned","condition","occupied"],"additionalProperties":false},"constraints":{"type":"object","properties":{"pets":{"type":"string","minLength":1,"maxLength":500},"pets_secured":{"type":"boolean"},"heavy_pet_hair":{"type":"boolean"},"parking":{"type":"string","minLength":1,"maxLength":500},"stairs":{"type":"integer","minimum":0,"maximum":100},"supplies":{"type":"string","enum":["provider","customer"]},"adult_provides_access":{"type":"boolean"}},"required":["pets","pets_secured","heavy_pet_hair","parking","stairs","supplies","adult_provides_access"],"additionalProperties":false},"add_ons":{"type":"object","properties":{"oven_interior":{"type":"integer","minimum":0,"maximum":100},"emptied_refrigerator_interior":{"type":"integer","minimum":0,"maximum":100},"bed_linen_change":{"type":"integer","minimum":0,"maximum":100}},"required":["oven_interior","emptied_refrigerator_interior","bed_linen_change"],"additionalProperties":false},"preferred_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"access_until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},"required":["start","end","access_until"],"additionalProperties":false}}},"required":["service_definition_id","service_definition_version","postal_code","timezone","home","constraints","add_ons","preferred_windows"],"additionalProperties":false}},"required":["included_tasks","excluded_tasks","add_on_inclusions","heavy_pet_hair_included","price_items","total_cents","currency","tax_treatment","arrival_start","arrival_end","duration_minutes","resource_id","crew_label","cancellation_terms","reclean_terms","scope"],"additionalProperties":false},"confirmation_deadline":{"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{3}(?:Z))$"},"confirmed_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{3}(?:Z))$"},{"type":"null"}]},"resource_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_url":{"type":"string"},"confirmation_overdue":{"type":"boolean"},"next_poll_after_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"next_action":{"type":"string","enum":["await_provider_confirmation","review_confirmed_booking","review_booking_status"]},"changes":{"maxItems":50,"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":["cancel","reschedule"]},"status":{"type":"string","enum":["REQUESTED","PROPOSED","AWAITING_PROVIDER","APPLIED","REJECTED","EXPIRED"]},"booking_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"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{3}(?:Z))$"},{"type":"null"}]}},"required":["id","type","status","booking_version","expires_at"],"additionalProperties":false}},"cases":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:-]{1,200}$"},"kind":{"type":"string"},"severity":{"type":"string","enum":["normal","urgent","safety"]},"status":{"type":"string","enum":["OPEN","RESOLVED"]}},"required":["id","kind","severity","status"],"additionalProperties":false}},"more_changes":{"type":"boolean"},"more_cases":{"type":"boolean"}},"required":["id","job_id","status","version","terms","confirmation_deadline","confirmed_at","resource_id","status_url","confirmation_overdue","next_poll_after_seconds","next_action","changes","cases","more_changes","more_cases"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/bookings/{id}/change-requests":{"post":{"operationId":"request_booking_change","description":"Request review only. The original booking remains unchanged; customer confirmation and provider/ops resolution are separate.","security":[{"delegated":["booking:propose"]},{"customerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","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":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[A-Za-z0-9._:-]{8,128}$"},"description":"Stable per command, scoped to the exact grant. Same key and payload replay across REST/MCP; changed payload conflicts."},{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Required with first-party session mutations, together with a matching donespan_csrf cookie and same-origin Origin header. Not used with bearer tokens."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"expected_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"type":{"type":"string","const":"cancel"},"reason":{"type":"string","minLength":3,"maxLength":2000}},"required":["expected_version","type","reason"],"additionalProperties":false},{"type":"object","properties":{"expected_version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"type":{"type":"string","const":"reschedule"},"reason":{"type":"string","minLength":3,"maxLength":2000},"desired_windows":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"start":{"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{3}(?:Z))$"},"end":{"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{3}(?:Z))$"},"access_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{3}(?:Z))$"}},"required":["start","end","access_until"],"additionalProperties":false}}},"required":["expected_version","type","reason","desired_windows"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"First-party session request accepted for review; same original booking preservation rules.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"resource_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)$"},"booking_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","const":"REQUESTED"},"status_url":{"type":"string"}},"required":["resource_id","booking_id","status","status_url"],"additionalProperties":false}}}},"202":{"description":"Accepted; poll persisted state","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"resource_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)$"},"booking_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","const":"REQUESTED"},"status_url":{"type":"string"},"next_action":{"type":"string","const":"await_review_then_customer_confirmation"},"next_poll_after_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"booking_changed":{"type":"boolean","const":false}},"required":["resource_id","booking_id","status","status_url","next_action","next_poll_after_seconds","booking_changed"],"additionalProperties":false}}}},"401":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Domain error. Retry mutations only after inspecting code, retryable and persisted state.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_TRANSITION","STALE_VERSION","IDEMPOTENCY_CONFLICT","RESOURCE_CONFLICT","OFFER_WITHDRAWN","APPROVAL_REQUIRED","BOOKING_LIMIT_EXCEEDED","OFFER_EXPIRED","APPROVAL_EXPIRED","INVALID_INPUT","MISSING_FIELDS","NEEDS_REVIEW","UNSUPPORTED_AREA","NO_SUPPLY","CHANNEL_UNAVAILABLE","QUOTA_EXCEEDED","TEMPORARILY_UNAVAILABLE","LIVE_OPERATIONS_DISABLED"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}