Operator route guide
Quote workflow APIs return label-specific evidence.
Each route has a distinct responsibility and returns safe setup guidance when vendor messaging credentials or consented recipient details are not configured.
Route contract
| Route | Method | Purpose | Expected setup boundary |
|---|---|---|---|
/api/inquiries | GET, POST | Capture service family, dimensions, material, finish, budget band, locality and consented phone number. | Returns SETUP_REQUIRED when verified messaging configuration is absent. |
/api/whatsapp/vendor-notification | POST | Notify a verified vendor only after WhatsApp credentials and consented recipient details are configured. | Returns SETUP_REQUIRED when verified messaging configuration is absent. |
/api/vendor/quotation | POST | Collect estimated range, lead time, material assumptions and follow-up notes from the workshop. | Returns SETUP_REQUIRED when verified messaging configuration is absent. |
/api/customer/quote-delivery | POST | Send a quote summary only when the buyer has consented and the delivery channel is configured. | Returns SETUP_REQUIRED when verified messaging configuration is absent. |
/api/follow-up/status | POST | Track new, routed, quoted, waiting for buyer, revised and closed states for sales handoff. | Returns SETUP_REQUIRED when verified messaging configuration is absent. |
/api/health | GET | Runtime health and configuration summary. | Never sends messages. |
Machine-readable contract
{
"visualTerritory": "Workshop Atelier Ledger",
"territoriesCompared": [
"Temple Joinery Atelier",
"Workshop Atelier Ledger"
],
"chosenReason": "The final direction combines tactile craft imagery with a quote workflow, avoiding generic centered hero layouts and rounded SaaS card grids.",
"designTokens": {
"rosewood": "#4a2317",
"turmeric": "#d69a2d",
"indigo": "#203b73",
"patina": "#4e7a55",
"lacquer": "#a63a2b",
"ivory": "#f7f1e6"
},
"routeContract": [
"/api/inquiries",
"/api/whatsapp/vendor-notification",
"/api/vendor/quotation",
"/api/customer/quote-delivery",
"/api/follow-up/status",
"/api/health"
]
}