diff --git a/docs/specification/cart-rest.md b/docs/specification/cart-rest.md index 47b1123c..85b63b8b 100644 --- a/docs/specification/cart-rest.md +++ b/docs/specification/cart-rest.md @@ -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": [ { @@ -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 diff --git a/docs/specification/checkout-rest.md b/docs/specification/checkout-rest.md index 6524f0f5..fd747bc3 100644 --- a/docs/specification/checkout-rest.md +++ b/docs/specification/checkout-rest.md @@ -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 diff --git a/docs/specification/overview.md b/docs/specification/overview.md index 08cebef9..2d23538f 100644 --- a/docs/specification/overview.md +++ b/docs/specification/overview.md @@ -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.