{"openapi":"3.1.0","info":{"title":"Moveroo public quote API","version":"2026-06-30","description":"Official host-aware public API for customer-authorised household removals and vehicle transport quote submissions."},"servers":[{"url":"https:\/\/mymovehub.backloadingremovals.com.au"}],"externalDocs":{"description":"Official public agent quote API guide","url":"https:\/\/mymovehub.backloadingremovals.com.au\/agents"},"paths":{"\/api\/v1\/household-quotes\/assistant\/submit":{"post":{"summary":"Submit a household removals quote request","description":"Creates a host-aware household quote entry for staff review. Requires customer consent fields and does not require a customer login.","operationId":"submitHouseholdQuote","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HouseholdQuoteSubmission"}}}},"responses":{"200":{"description":"Duplicate or idempotent submission accepted."},"201":{"description":"Quote submission accepted."},"422":{"description":"Validation failed. Check required fields, consent, conditional requirements, and any locality suggestions returned for ambiguous vehicle pickup or delivery locations."},"429":{"description":"Rate limited. Retry later with the same idempotency key where possible."}}}},"\/api\/v1\/vehicle-quotes\/assistant\/submit":{"post":{"summary":"Submit a vehicle transport quote request","description":"Creates a host-aware vehicle quote request using the current vehicle workflow. Requires customer consent fields and does not require a customer login.","operationId":"submitVehicleQuote","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/VehicleQuoteSubmission"}}}},"responses":{"200":{"description":"Duplicate or idempotent submission accepted."},"201":{"description":"Quote submission accepted."},"422":{"description":"Validation failed. Check required fields, consent, conditional requirements, and any locality suggestions returned for ambiguous vehicle pickup or delivery locations."},"429":{"description":"Rate limited. Retry later with the same idempotency key where possible."}}}},"\/api\/v1\/vehicle-quotes\/assistant\/intake\/session":{"get":{"summary":"Discover the vehicle quote intake workflow for this host","description":"Returns host-aware vehicle quote workflow capabilities and endpoint paths. Use the intake workflow when a complete one-shot vehicle quote payload is not yet available.","operationId":"vehicleQuoteIntakeSession","responses":{"200":{"description":"Vehicle quote intake workflow is available for this host."},"404":{"description":"This host does not expose the public quote capability manifest."},"422":{"description":"This host could not be resolved to one active vehicle quote tenant."}}}},"\/api\/v1\/vehicle-quotes\/assistant\/intake\/{action}":{"post":{"summary":"Continue a vehicle quote intake workflow","description":"Server-held multi-step vehicle quote intake for public agents, chat, and voice adapters. Supported actions are message, contact, category, pickup, delivery, vehicle, vehicle-detail, drivable, dimension-check, confirm, summary, and submit. Customer consent is required only on submit.","operationId":"vehicleQuoteIntakeAction","parameters":[{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["message","contact","category","pickup","delivery","vehicle","vehicle-detail","drivable","dimension-check","confirm","summary","submit"]}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/VehicleQuoteIntakeAction"}}}},"responses":{"200":{"description":"Workflow state, next step, messages, and any suggestions or submission result."},"403":{"description":"Draft session token is missing or invalid."},"422":{"description":"Validation failed or a clarification is required."},"429":{"description":"Rate limited. Retry later with the same draft\/session details where possible."}}}},"\/api\/v1\/callbacks\/assistant\/request":{"post":{"summary":"Request a callback time","description":"Books a host-aware callback appointment using the same callback availability as the public contact page. Requires customer consent fields and does not require a customer login.","operationId":"requestCallbackTime","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CallbackRequest"}}}},"responses":{"200":{"description":"Duplicate or idempotent callback request accepted."},"201":{"description":"Callback appointment booked."},"404":{"description":"This host does not expose the public callback capability."},"422":{"description":"Validation failed. Check consent, customer details, origin domain, and whether the selected callback slot is still available."},"429":{"description":"Rate limited. Retry later with the same idempotency key where possible."}}}}},"components":{"schemas":{"CustomerConsent":{"type":"object","required":["confirmed","basis"],"properties":{"confirmed":{"type":"boolean","const":true,"description":"Must be true when the customer has asked the agent to request a quote."},"basis":{"type":"string","enum":["customer_requested_quote"]}}},"CallbackConsent":{"type":"object","required":["confirmed","basis"],"properties":{"confirmed":{"type":"boolean","const":true,"description":"Must be true when the customer has asked the agent to request a callback."},"basis":{"type":"string","enum":["customer_requested_callback"]}}},"Customer":{"type":"object","required":["name","email","phone"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"Location":{"type":"object","properties":{"city":{"type":"string"},"state":{"type":"string"},"postcode":{"type":"string"},"locality_id":{"type":"integer"}},"description":"Supply either city\/state\/postcode style fields or a known locality_id. Vehicle quote submissions can auto-confirm strong locality matches and may return suggestions when a pickup or delivery locality is ambiguous."},"HouseholdQuoteSubmission":{"type":"object","required":["origin_domain","customer","pickup","delivery","move_date","inventory","customer_consent"],"properties":{"origin_domain":{"type":"string","description":"The quote host where the customer journey originated."},"tenant":{"type":"string","description":"Optional. Omit tenant for public host-aware submissions unless Moveroo has supplied a tenant slug."},"idempotency_key":{"type":"string","description":"Optional stable key supplied by the agent. If omitted, Moveroo computes a quote-type-specific fingerprint."},"customer_consent":{"$ref":"#\/components\/schemas\/CustomerConsent"},"customer":{"$ref":"#\/components\/schemas\/Customer"},"pickup":{"$ref":"#\/components\/schemas\/Location"},"delivery":{"$ref":"#\/components\/schemas\/Location"},"move_date":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["exact","asap","unknown","vague"]},"date":{"type":"string","format":"date"}}},"inventory":{"type":"object","required":["method"],"properties":{"method":{"type":"string","enum":["m3","pasted_list","unknown"]},"cubic_meters":{"type":"number"},"text":{"type":"string"}}},"channel":{"type":"string"},"surface":{"type":"string"},"notes":{"type":"string"}}},"VehicleQuoteSubmission":{"type":"object","required":["origin_domain","customer","pickup","delivery","vehicle","customer_consent"],"properties":{"origin_domain":{"type":"string","description":"The quote host where the customer journey originated."},"tenant":{"type":"string","description":"Optional. Omit tenant for public host-aware submissions unless Moveroo has supplied a tenant slug."},"idempotency_key":{"type":"string","description":"Optional stable key supplied by the agent. If omitted, Moveroo computes a quote-type-specific fingerprint."},"customer_consent":{"$ref":"#\/components\/schemas\/CustomerConsent"},"customer":{"$ref":"#\/components\/schemas\/Customer"},"pickup":{"$ref":"#\/components\/schemas\/Location"},"delivery":{"$ref":"#\/components\/schemas\/Location"},"vehicle":{"type":"object","required":["make","model","year","is_drivable"],"properties":{"category":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":"integer"},"is_drivable":{"type":"boolean"},"condition":{"type":"string"},"has_working_brakes":{"type":"boolean"},"can_roll":{"type":"boolean"},"has_keys":{"type":"boolean"},"is_damaged":{"type":"boolean"},"damage_details":{"type":"string"}}},"timing":{"type":"object","properties":{"preferred_date":{"type":"string","format":"date"},"is_flexible":{"type":"boolean"}}},"channel":{"type":"string"},"surface":{"type":"string"},"notes":{"type":"string"}}},"VehicleQuoteIntakeAction":{"type":"object","properties":{"origin_domain":{"type":"string","description":"Optional for workflow actions. Defaults to the request host and must match when supplied."},"tenant":{"type":"string","description":"Optional. Omit tenant unless Moveroo has supplied a tenant slug."},"draft_id":{"type":"integer","description":"Required after a draft is created."},"session_token":{"type":"string","description":"Required after a draft is created."},"message":{"type":"string","description":"Natural-language message for the message, vehicle-detail, or dimension-check actions."},"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"query":{"type":"string","description":"Locality or vehicle search phrase."},"locality_id":{"type":"integer"},"category":{"type":"string"},"vehicle_category":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":"integer"},"reference_make_id":{"type":"integer"},"reference_model_id":{"type":"integer"},"is_drivable":{"type":"boolean"},"condition":{"type":"string"},"kind":{"type":"string","enum":["pickup","delivery","vehicle"]},"value_fingerprint":{"type":"string"},"confirmed":{"type":"boolean"},"confirmation_text":{"type":"string"},"customer_consent":{"$ref":"#\/components\/schemas\/CustomerConsent"},"idempotency_key":{"type":"string"},"channel":{"type":"string"},"surface":{"type":"string"}}},"CallbackRequest":{"type":"object","required":["origin_domain","customer","slot","customer_consent"],"properties":{"origin_domain":{"type":"string","description":"The quote\/contact host where the customer journey originated. Must match the request host."},"idempotency_key":{"type":"string","description":"Optional stable key supplied by the agent. If omitted, Moveroo computes a callback request fingerprint."},"customer_consent":{"$ref":"#\/components\/schemas\/CallbackConsent"},"customer":{"$ref":"#\/components\/schemas\/Customer"},"slot":{"type":"string","description":"ISO-8601 callback slot token from the public contact page availability list."},"channel":{"type":"string"},"surface":{"type":"string"},"agent":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string"}}},"notes":{"type":"string"}}}}}}