Authorization and deferred bindings
OAuth 2.0 is the intended authorization foundation for protected operations, but scopes, grant profiles, issuer discovery and token requirements are not defined. OAuth is not itself an identity protocol. Enforce business access and consent at the service boundary; schema validation is not authorization. Keep credentials and contact information out of answers. A2A is deferred; no UQP task mapping is defined. See checkout handoff for deposit approval and payment boundaries.Source
{
"openapi": "3.1.0",
"info": {
"title": "UQP reference bindings \u2014 not production",
"version": "0.1.0",
"description": "No UCP conformance claim. OAuth 2.0 bearer authorization is described only, not implemented by the local fixture."
},
"paths": {
"/manifest": {
"get": {
"operationId": "get_manifest",
"summary": "get manifest",
"parameters": [],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "../../schemas/quote-manifest.json"
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/quotes": {
"post": {
"operationId": "request_quote",
"summary": "request quote",
"parameters": [
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
}
},
"required": [
"id",
"state",
"estimate"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "../../schemas/quote-request.json"
}
}
}
}
}
},
"/quotes/{id}": {
"get": {
"operationId": "get_quote",
"summary": "get quote",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
}
},
"required": [
"id",
"state",
"estimate"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/quotes/{id}/accept": {
"post": {
"operationId": "accept_quote",
"summary": "accept quote",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
},
"checkout": {
"$ref": "../../schemas/common.json#/$defs/checkoutHandoff",
"type": "object",
"properties": {
"url": {
"type": "null"
}
}
}
},
"required": [
"id",
"state",
"estimate",
"quote",
"checkout"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "../../schemas/common.json#/$defs/clientApproval"
}
}
}
}
}
},
"/quotes/{id}/review": {
"post": {
"operationId": "review_quote",
"summary": "Trusted artist review issues binding Quote",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
}
},
"required": [
"id",
"state",
"estimate"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Trusted artist authorization required"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"valid_until": {
"type": "string",
"format": "date-time"
}
},
"required": [
"valid_until"
],
"additionalProperties": false
}
}
}
}
}
},
"/quotes/{id}/decline": {
"post": {
"operationId": "decline_quote",
"summary": "Decline Quote",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
}
},
"required": [
"id",
"state",
"estimate"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
},
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
}
}
},
"/quotes/{id}/resubmit": {
"post": {
"operationId": "resubmit_quote",
"summary": "Correct a mutation-required payload on the same ID",
"parameters": [
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"state": {
"$ref": "../../schemas/lifecycle.json"
},
"estimate": {
"$ref": "../../schemas/estimate.json"
},
"quote": {
"$ref": "../../schemas/quote.json"
}
},
"required": [
"id",
"state",
"estimate"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
},
"409": {
"description": "Conflict; current_state on lifecycle conflicts",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"current_state": {
"$ref": "../../schemas/lifecycle.json"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
}
},
"headers": {
"RateLimit-Policy": {
"description": "Optional per-business policy; no protocol-wide values.",
"schema": {
"type": "string"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "../../schemas/quote-request.json"
}
}
}
}
}
}
},
"components": {
"schemas": {
"QuoteManifest": {
"$ref": "../../schemas/quote-manifest.json"
},
"QuoteRequest": {
"$ref": "../../schemas/quote-request.json"
},
"Quote": {
"$ref": "../../schemas/quote.json"
},
"Deposit": {
"$ref": "../../schemas/common.json#/$defs/deposit"
},
"PriceRange": {
"$ref": "../../schemas/common.json#/$defs/priceRange"
},
"ClientApproval": {
"$ref": "../../schemas/common.json#/$defs/clientApproval"
},
"Attribution": {
"$ref": "../../schemas/common.json#/$defs/attribution"
},
"RoutingPolicy": {
"$ref": "../../schemas/common.json#/$defs/routingPolicy"
},
"Quantity": {
"$ref": "../../schemas/common.json#/$defs/quantity"
},
"QuantityUnit": {
"$ref": "../../schemas/common.json#/$defs/quantityUnit"
},
"CheckoutHandoff": {
"$ref": "../../schemas/common.json#/$defs/checkoutHandoff"
}
}
}
}