{
"openapi": "3.1.0",
"info": {
"title": "dev.uqp.quoting reference REST service",
"version": "2026-11-05",
"description": "Reference definitions, not production endpoints. Stage 1 estimates before Stage 2 requests to 1\u20132 shortlisted providers. UCP 2026-08-25 is primary; draft quote and ACP mappings are subject to change. No conformance claim."
},
"servers": [
{
"url": "https://api.studio.example"
}
],
"paths": {
"/estimate": {
"post": {
"operationId": "estimate",
"summary": "Stage 1: stateless estimate, target <200ms, $0 human effort",
"parameters": [
{
"name": "UCP-Agent",
"in": "header",
"required": false,
"description": "Optional UCP agent profile identity. RFC 9421 HTTP Message Signatures and Signature-Agent / Web Bot Auth may authenticate the agent separately.",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/request"
}
}
}
},
"responses": {
"200": {
"description": "Non-binding estimate; all money is integer minor units.",
"content": {
"application/json": {
"schema": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/response"
}
}
}
}
}
}
},
"/quote-requests": {
"post": {
"operationId": "request_quote",
"summary": "Stage 2: request human-reviewed quotes from 1\u20132 shortlisted providers",
"description": "Uses the native UQP intake. Returns pending review; obtain the reviewed quote through GET /quotes/{id}. No acceptance by silence.",
"parameters": [
{
"name": "UCP-Agent",
"in": "header",
"required": false,
"description": "Optional UCP agent profile identity. RFC 9421 HTTP Message Signatures and Signature-Agent / Web Bot Auth may authenticate the agent separately.",
"schema": {
"type": "string"
}
},
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/quoteRequest"
}
}
}
},
"responses": {
"202": {
"description": "Intake accepted for provider review.",
"content": {
"application/json": {
"schema": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/quoteResult"
}
}
}
}
}
}
},
"/quotes/{id}": {
"get": {
"operationId": "get_quote",
"summary": "Poll the existing UQP quote lifecycle",
"parameters": [
{
"name": "UCP-Agent",
"in": "header",
"required": false,
"description": "Optional UCP agent profile identity. RFC 9421 HTTP Message Signatures and Signature-Agent / Web Bot Auth may authenticate the agent separately.",
"schema": {
"type": "string"
}
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Pending review or reviewed binding quote.",
"content": {
"application/json": {
"schema": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/quoteResult"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"EstimateRequest": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/request"
},
"EstimateResponse": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/response"
},
"QuoteRequest": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/quoteRequest"
},
"QuoteResult": {
"$ref": "https://uqp.dev/spec/ucp/2026-11-05/estimate.json#/$defs/quoteResult"
},
"MinorUnits": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}
}