Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions docs/specification/cart-rest.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ Businesses advertise REST transport availability through their UCP profile at
"ucp": {
"version": "2026-01-15",
"services": {
"dev.ucp.shopping": {
"version": "2026-01-15",
"spec": "https://ucp.dev/specification/overview",
"rest": {
"schema": "https://ucp.dev/services/shopping/openapi.json",
"endpoint": "https://business.example.com/ucp/v1"
"dev.ucp.shopping": [
{
"version": "2026-01-15",
"spec": "https://ucp.dev/specification/overview",
"transport": "rest",
"endpoint": "https://business.example.com/ucp/v1",
"schema": "https://ucp.dev/services/shopping/openapi.json"
}
}
]
},
"capabilities": [
{
Expand All @@ -61,7 +62,8 @@ Businesses advertise REST transport availability through their UCP profile at

All UCP REST endpoints are relative to the business's base URL, which is
discovered through the UCP profile at `/.well-known/ucp`. The endpoint for the
cart capability is defined in the `rest.endpoint` field of the business profile.
cart capability is taken from the service binding whose `transport` is `rest`
in the business profile.

### Content Types

Expand Down
4 changes: 2 additions & 2 deletions docs/specification/checkout-rest.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ This document specifies the REST binding for the

All UCP REST endpoints are relative to the business's base URL, which is
discovered through the UCP profile at `/.well-known/ucp`. The endpoint for the
checkout capability is defined in the `rest.endpoint` field of the
business profile.
checkout capability is taken from the service binding whose `transport` is
`rest` in the business profile.

### Content Types

Expand Down
21 changes: 7 additions & 14 deletions docs/specification/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,20 +105,13 @@ standard formats:

#### Service Definition

| Field | Type | Required | Description |
| ----------------- | ------ | -------- | ----------------------------------- |
| `version` | string | Yes | Service version (YYYY-MM-DD format) |
| `spec` | string | Yes | URL to service documentation |
| `rest` | object | No | REST transport binding |
| `rest.schema` | string | Yes | URL to OpenAPI spec (JSON) |
| `rest.endpoint` | string | Yes | Business's REST endpoint |
| `mcp` | object | No | MCP transport binding |
| `mcp.schema` | string | Yes | URL to OpenRPC spec (JSON) |
| `mcp.endpoint` | string | Yes | Business's MCP endpoint |
| `a2a` | object | No | A2A transport binding |
| `a2a.endpoint` | string | Yes | Business's A2A Agent Card URL |
| `embedded` | string | No | Embedded transport binding |
| `embedded.schema` | string | Yes | URL to OpenRPC spec (JSON) |
Each service binding in the `services` registry describes a single transport for
that service. Multiple transports for the same service are represented as
separate entries in the `services[{service_name}]` array.

Service bindings follow the `service.json#/$defs/platform_schema` schema:

{{ extension_schema_fields('service.json#/$defs/platform_schema', 'overview') }}

Transport definitions **MUST** be thin: they declare method names and reference
base schemas only. See [Requirements](#requirements) for details.
Expand Down