diff --git a/a2a/business_agent/src/business_agent/data/agent_card.json b/a2a/business_agent/src/business_agent/data/agent_card.json index 4732431..43bcf5f 100644 --- a/a2a/business_agent/src/business_agent/data/agent_card.json +++ b/a2a/business_agent/src/business_agent/data/agent_card.json @@ -10,20 +10,20 @@ { "name": "dev.ucp.shopping.checkout", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/checkout", + "spec": "https://ucp.dev/specification/checkout", "schema": "https://ucp.dev/schemas/shopping/checkout.json" }, { "name": "dev.ucp.shopping.fulfillment", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/fulfillment", + "spec": "https://ucp.dev/specification/fulfillment", "schema": "https://ucp.dev/schemas/shopping/fulfillment.json", "extends": "dev.ucp.shopping.checkout" }, { "name": "dev.ucp.shopping.discount", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/discount", + "spec": "https://ucp.dev/specification/discount", "schema": "https://ucp.dev/schemas/shopping/discount.json", "extends": "dev.ucp.shopping.checkout" } diff --git a/a2a/business_agent/src/business_agent/data/ucp.json b/a2a/business_agent/src/business_agent/data/ucp.json index 034ff6d..7306460 100644 --- a/a2a/business_agent/src/business_agent/data/ucp.json +++ b/a2a/business_agent/src/business_agent/data/ucp.json @@ -4,7 +4,7 @@ "services": { "dev.ucp.shopping": { "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping", + "spec": "https://ucp.dev/specification/reference", "a2a": { "endpoint": "http://localhost:10999/.well-known/agent-card.json" } @@ -14,13 +14,13 @@ { "name": "dev.ucp.shopping.checkout", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/checkout", + "spec": "https://ucp.dev/specification/checkout", "schema": "https://ucp.dev/schemas/shopping/checkout.json" }, { "name": "dev.ucp.shopping.fulfillment", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/fulfillment", + "spec": "https://ucp.dev/specification/fulfillment", "schema": "https://ucp.dev/schemas/shopping/fulfillment.json", "extends": "dev.ucp.shopping.checkout" } diff --git a/a2a/chat-client/profile/agent_profile.json b/a2a/chat-client/profile/agent_profile.json index afd81b6..21a3fb2 100644 --- a/a2a/chat-client/profile/agent_profile.json +++ b/a2a/chat-client/profile/agent_profile.json @@ -5,26 +5,28 @@ { "name": "dev.ucp.shopping.checkout", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/checkout", + "spec": "https://ucp.dev/specification/checkout", "schema": "https://ucp.dev/schemas/shopping/checkout.json" }, { "name": "dev.ucp.shopping.fulfillment", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/fulfillment", + "spec": "https://ucp.dev/specification/fulfillment", "schema": "https://ucp.dev/schemas/shopping/fulfillment.json", "extends": "dev.ucp.shopping.checkout" }, { "name": "dev.ucp.shopping.discount", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/discount", + "spec": "https://ucp.dev/specification/discount", "schema": "https://ucp.dev/schemas/shopping/discount.json", "extends": "dev.ucp.shopping.checkout" }, { "name": "dev.ucp.shopping.buyer_consent", "version": "2026-01-11", + "spec": "https://ucp.dev/specification/buyer_consent", + "schema": "https://ucp.dev/schemas/shopping/buyer_consent.json", "extends": "dev.ucp.shopping.checkout" } ] diff --git a/rest/nodejs/src/api/discovery.ts b/rest/nodejs/src/api/discovery.ts index 2f70284..2f8dec5 100644 --- a/rest/nodejs/src/api/discovery.ts +++ b/rest/nodejs/src/api/discovery.ts @@ -30,7 +30,7 @@ export class DiscoveryService { services: { 'dev.ucp.shopping': { version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping', + spec: 'https://ucp.dev/services/shopping/rest.openapi.json', rest: { schema: 'https://ucp.dev/services/shopping/openapi.json', endpoint: 'http://localhost:3000', @@ -41,54 +41,33 @@ export class DiscoveryService { { name: 'dev.ucp.shopping.checkout', version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/checkout', + spec: 'https://ucp.dev/specification/checkout', schema: 'https://ucp.dev/schemas/shopping/checkout.json', }, { name: 'dev.ucp.shopping.order', version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/order', + spec: 'https://ucp.dev/specification/order', schema: 'https://ucp.dev/schemas/shopping/order.json', }, - { - name: 'dev.ucp.shopping.refund', - version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/refund', - schema: 'https://ucp.dev/schemas/shopping/refund.json', - extends: 'dev.ucp.shopping.order', - }, - { - name: 'dev.ucp.shopping.return', - version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/return', - schema: 'https://ucp.dev/schemas/shopping/return.json', - extends: 'dev.ucp.shopping.order', - }, - { - name: 'dev.ucp.shopping.dispute', - version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/dispute', - schema: 'https://ucp.dev/schemas/shopping/dispute.json', - extends: 'dev.ucp.shopping.order', - }, { name: 'dev.ucp.shopping.discount', version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/discount', + spec: 'https://ucp.dev/specification/discount', schema: 'https://ucp.dev/schemas/shopping/discount.json', extends: 'dev.ucp.shopping.checkout', }, { name: 'dev.ucp.shopping.fulfillment', version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/fulfillment', + spec: 'https://ucp.dev/specification/fulfillment', schema: 'https://ucp.dev/schemas/shopping/fulfillment.json', extends: 'dev.ucp.shopping.checkout', }, { name: 'dev.ucp.shopping.buyer_consent', version: this.ucpVersion, - spec: 'https://ucp.dev/specs/shopping/buyer_consent', + spec: 'https://ucp.dev/specification/buyer_consent', schema: 'https://ucp.dev/schemas/shopping/buyer_consent.json', extends: 'dev.ucp.shopping.checkout', }, @@ -113,16 +92,47 @@ export class DiscoveryService { { id: 'google_pay', name: 'google.pay', - version: '1.0', - spec: 'https://example.com/spec', - config_schema: 'https://example.com/schema', - instrument_schemas: [], - config: {}, + version: '2026-01-11', + spec: 'https://developers.google.com/merchant/ucp/guides/gpay-payment-handler', + config_schema: + 'https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_config.json', + instrument_schemas: [ + 'https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_card_payment_instrument.json', + ], + config: { + api_version: 2, + api_version_minor: 0, + merchant_info: { + merchant_name: 'Flower Shop', + merchant_id: 'TEST', + merchant_origin: 'localhost', + }, + allowed_payment_methods: [ + { + type: 'CARD', + parameters: { + allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'], + allowedCardNetworks: ['VISA', 'MASTERCARD'], + }, + tokenization_specification: [ + { + type: 'PAYMENT_GATEWAY', + parameters: [ + { + gateway: 'example', + gatewayMerchantId: 'exampleGatewayMerchantId', + }, + ], + }, + ], + }, + ], + }, }, { id: 'mock_payment_handler', name: 'dev.ucp.mock_payment', - version: '1.0', + version: '2026-01-11', spec: 'https://ucp.dev/specs/mock', config_schema: 'https://ucp.dev/schemas/mock.json', instrument_schemas: [ diff --git a/rest/python/client/flower_shop/sample_output/happy_path_dialog.md b/rest/python/client/flower_shop/sample_output/happy_path_dialog.md index 675b634..c84a654 100644 --- a/rest/python/client/flower_shop/sample_output/happy_path_dialog.md +++ b/rest/python/client/flower_shop/sample_output/happy_path_dialog.md @@ -17,7 +17,6 @@ Note: This file is automatically generated by running simple_happy_path_client.py. Do not modify manually. --> - # UCP Happy Path Interaction Log ### Configuration @@ -46,7 +45,7 @@ export RESPONSE=$(curl -s -X GET $SERVER_URL/.well-known/ucp) "services": { "dev.ucp.shopping": { "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping", + "spec": "https://ucp.dev/specification/reference", "rest": { "schema": "https://ucp.dev/services/shopping/openapi.json", "endpoint": "http://localhost:8182/" @@ -57,54 +56,33 @@ export RESPONSE=$(curl -s -X GET $SERVER_URL/.well-known/ucp) { "name": "dev.ucp.shopping.checkout", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/checkout", + "spec": "https://ucp.dev/specification/checkout", "schema": "https://ucp.dev/schemas/shopping/checkout.json" }, { "name": "dev.ucp.shopping.order", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/order", + "spec": "https://ucp.dev/specification/order", "schema": "https://ucp.dev/schemas/shopping/order.json" }, - { - "name": "dev.ucp.shopping.refund", - "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/refund", - "schema": "https://ucp.dev/schemas/shopping/refund.json", - "extends": "dev.ucp.shopping.order" - }, - { - "name": "dev.ucp.shopping.return", - "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/return", - "schema": "https://ucp.dev/schemas/shopping/return.json", - "extends": "dev.ucp.shopping.order" - }, - { - "name": "dev.ucp.shopping.dispute", - "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/dispute", - "schema": "https://ucp.dev/schemas/shopping/dispute.json", - "extends": "dev.ucp.shopping.order" - }, { "name": "dev.ucp.shopping.discount", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/discount", + "spec": "https://ucp.dev/specification/discount", "schema": "https://ucp.dev/schemas/shopping/discount.json", "extends": "dev.ucp.shopping.checkout" }, { "name": "dev.ucp.shopping.fulfillment", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/fulfillment", + "spec": "https://ucp.dev/specification/fulfillment", "schema": "https://ucp.dev/schemas/shopping/fulfillment.json", "extends": "dev.ucp.shopping.checkout" }, { "name": "dev.ucp.shopping.buyer_consent", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/buyer_consent", + "spec": "https://ucp.dev/specification/buyer_consent", "schema": "https://ucp.dev/schemas/shopping/buyer_consent.json", "extends": "dev.ucp.shopping.checkout" } @@ -122,17 +100,17 @@ export RESPONSE=$(curl -s -X GET $SERVER_URL/.well-known/ucp) "https://shopify.dev/ucp/handlers/shop_pay/instrument.json" ], "config": { - "shop_id": "78a82232-0df7-4f23-b0b9-2a406fe64995" + "shop_id": "379b3f9d-0ec0-4293-a3c8-fb208d57b409" } }, { "id": "google_pay", "name": "google.pay", "version": "2026-01-11", - "spec": "https://example.com/spec", - "config_schema": "https://example.com/schema", + "spec": "https://developers.google.com/merchant/ucp/guides/gpay-payment-handler", + "config_schema": "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_config.json", "instrument_schemas": [ - "https://ucp.dev/schemas/shopping/types/gpay_card_payment_instrument.json" + "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_card_payment_instrument.json" ], "config": { "api_version": 2, @@ -199,8 +177,8 @@ export RESPONSE=$(curl -s -X GET $SERVER_URL/.well-known/ucp) export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: ec067209-bf9f-4110-b373-d0ad9667e124' \ - -H 'request-id: ffc51bf6-9228-4fe6-9ff7-d9912ac57621' \ + -H 'idempotency-key: 5016a7f8-2629-44e9-8f19-5ec2f922dd95' \ + -H 'request-id: 2fd57cd1-4679-434e-bb5e-ea8b48abbc4e' \ -H 'Content-Type: application/json' \ -d '{ "line_items": [ @@ -230,17 +208,17 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions \ "https://shopify.dev/ucp/handlers/shop_pay/instrument.json" ], "config": { - "shop_id": "78a82232-0df7-4f23-b0b9-2a406fe64995" + "shop_id": "379b3f9d-0ec0-4293-a3c8-fb208d57b409" } }, { "id": "google_pay", "name": "google.pay", "version": "2026-01-11", - "spec": "https://example.com/spec", - "config_schema": "https://example.com/schema", + "spec": "https://developers.google.com/merchant/ucp/guides/gpay-payment-handler", + "config_schema": "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_config.json", "instrument_schemas": [ - "https://ucp.dev/schemas/shopping/types/gpay_card_payment_instrument.json" + "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_card_payment_instrument.json" ], "config": { "api_version": 2, @@ -312,10 +290,10 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -374,8 +352,8 @@ export LINE_ITEM_1_ID=$(echo $RESPONSE | jq -r '.line_items[0].id') export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: b683162a-2210-4de0-b7a5-6c8d28ee1284' \ - -H 'request-id: 9abb5cb1-a60a-49bd-b698-79f6015f7440' \ + -H 'idempotency-key: 70d91834-1c02-4894-86b2-4ba4a33d2463' \ + -H 'request-id: 69983068-e6f2-463c-95e6-51e474c074b3' \ -H 'Content-Type: application/json' \ -d '{ "id": "$CHECKOUT_ID", @@ -417,10 +395,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -439,7 +417,7 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -497,8 +475,8 @@ export LINE_ITEM_2_ID=$(echo $RESPONSE | jq -r '.line_items[1].id') export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: 01cb5a08-345e-43a5-beb4-4ecf3e15ab65' \ - -H 'request-id: 7e1c26be-5cd3-4aa9-b225-ff89a2739da3' \ + -H 'idempotency-key: ea76d035-5d69-42a2-85b1-9881e501a0a3' \ + -H 'request-id: 27334aac-ae90-427f-9d91-832a69a36b1c' \ -H 'Content-Type: application/json' \ -d '{ "id": "$CHECKOUT_ID", @@ -546,10 +524,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -568,7 +546,7 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -642,8 +620,8 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: 5d724c91-9ce0-475b-a24e-caa5be1d8d3f' \ - -H 'request-id: ae001b34-6991-4d23-aa8b-e5c6d6b99985' \ + -H 'idempotency-key: 97f5d60a-b1d9-4f0c-925c-2aabc2309d88' \ + -H 'request-id: 0ed516b3-ac09-4ed8-bf47-fa62355e17fb' \ -H 'Content-Type: application/json' \ -d '{ "id": "$CHECKOUT_ID", @@ -693,10 +671,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -715,7 +693,7 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -793,11 +771,11 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ "fulfillment": { "methods": [ { - "id": "1ee966ec-0282-48a4-93c0-b1d19cb50e54", + "id": "00b9354d-1508-45cf-8934-2bdd7daaec05", "type": "shipping", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "destinations": [ { @@ -850,8 +828,8 @@ export DESTINATION_ID=$(echo $RESPONSE | jq -r '.fulfillment.methods[0].destinat export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: 08c14a83-1535-4130-a8ac-207b07d71f14' \ - -H 'request-id: 4c346a34-e2b6-47a9-908c-6eb476b96f18' \ + -H 'idempotency-key: 187b75b5-0c82-4cd8-b9c3-79254cc89771' \ + -H 'request-id: 2933674e-082f-492c-9cd0-b46faae6794a' \ -H 'Content-Type: application/json' \ -d '{ "id": "$CHECKOUT_ID", @@ -902,10 +880,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -924,7 +902,7 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -1014,11 +992,11 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ "fulfillment": { "methods": [ { - "id": "1ee966ec-0282-48a4-93c0-b1d19cb50e54", + "id": "00b9354d-1508-45cf-8934-2bdd7daaec05", "type": "shipping", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "destinations": [ { @@ -1053,10 +1031,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ "selected_destination_id": "addr_1", "groups": [ { - "id": "group_89b6364b-9c39-4065-98cc-1f23d6c09044", + "id": "group_5a1cd28c-0d0e-46d9-88a8-8840b36dd0d9", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "options": [ { @@ -1104,8 +1082,8 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: be043644-3d48-413f-af67-c03568f8c7e0' \ - -H 'request-id: e7b8001c-6148-4136-adce-cbce53d685fa' \ + -H 'idempotency-key: ce25cbf1-eb68-43ee-9615-97c0ddf106de' \ + -H 'request-id: c55bd610-20b0-444c-858c-e2a9fd49cad4' \ -H 'Content-Type: application/json' \ -d '{ "id": "$CHECKOUT_ID", @@ -1161,10 +1139,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -1183,7 +1161,7 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -1289,11 +1267,11 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ "fulfillment": { "methods": [ { - "id": "1ee966ec-0282-48a4-93c0-b1d19cb50e54", + "id": "00b9354d-1508-45cf-8934-2bdd7daaec05", "type": "shipping", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "destinations": [ { @@ -1328,10 +1306,10 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ "selected_destination_id": "addr_1", "groups": [ { - "id": "group_942778f1-b478-417b-8441-29c198174d29", + "id": "group_113a1801-bf75-4cc4-b6be-f67377b61dae", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "options": [ { @@ -1380,8 +1358,8 @@ export RESPONSE=$(curl -s -X PUT $SERVER_URL/checkout-sessions/$CHECKOUT_ID \ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/complete \ -H 'UCP-Agent: profile="https://agent.example/profile"' \ -H 'request-signature: test' \ - -H 'idempotency-key: a09b4245-c6bb-4add-ac99-fdb7411c696c' \ - -H 'request-id: f6478591-3679-4459-baa7-7ecddb6a5c95' \ + -H 'idempotency-key: 8c7142bd-7ebc-4e2a-9cd9-6fdc2f0dab19' \ + -H 'request-id: dc78aac0-b6bf-4df5-ac7d-a7da46a710cd' \ -H 'Content-Type: application/json' \ -d '{ "payment_data": { @@ -1423,10 +1401,10 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/com } ] }, - "id": "52bc8388-e948-4fb7-b0a8-2442f0376953", + "id": "cfea4fff-ea1a-4d2c-9dc4-0af18f6232ee", "line_items": [ { - "id": "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", + "id": "21c10c57-e423-4a67-8dec-5757c2c0b69a", "item": { "id": "bouquet_roses", "title": "Bouquet of Red Roses", @@ -1445,7 +1423,7 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/com ] }, { - "id": "7a08525c-96e7-41ea-bde1-c0256afd6b6d", + "id": "20ce6902-98e3-4d99-ac8e-f53952fbb2ce", "item": { "id": "pot_ceramic", "title": "Ceramic Pot", @@ -1494,8 +1472,8 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/com "instruments": [] }, "order": { - "id": "5068a920-cc47-4304-b698-727c3cff9289", - "permalink_url": "http://localhost:8182/orders/5068a920-cc47-4304-b698-727c3cff9289" + "id": "4c50e638-5c35-4857-8882-d30ea5eab8e4", + "permalink_url": "http://localhost:8182/orders/4c50e638-5c35-4857-8882-d30ea5eab8e4" }, "discounts": { "codes": [ @@ -1555,11 +1533,11 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/com "fulfillment": { "methods": [ { - "id": "1ee966ec-0282-48a4-93c0-b1d19cb50e54", + "id": "00b9354d-1508-45cf-8934-2bdd7daaec05", "type": "shipping", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "destinations": [ { @@ -1594,10 +1572,10 @@ export RESPONSE=$(curl -s -X POST $SERVER_URL/checkout-sessions/$CHECKOUT_ID/com "selected_destination_id": "addr_1", "groups": [ { - "id": "group_942778f1-b478-417b-8441-29c198174d29", + "id": "group_113a1801-bf75-4cc4-b6be-f67377b61dae", "line_item_ids": [ - "1ef0be0d-8d5b-4ae7-91dc-51b835ca7f99", - "7a08525c-96e7-41ea-bde1-c0256afd6b6d" + "21c10c57-e423-4a67-8dec-5757c2c0b69a", + "20ce6902-98e3-4d99-ac8e-f53952fbb2ce" ], "options": [ { diff --git a/rest/python/server/README.md b/rest/python/server/README.md index f6e7c73..7195946 100644 --- a/rest/python/server/README.md +++ b/rest/python/server/README.md @@ -131,7 +131,7 @@ Response: "services": { "dev.ucp.shopping": { "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping", + "spec": "https://ucp.dev/services/shopping/rest.openapi.json", "rest": { "schema": "https://ucp.dev/services/shopping/openapi.json", "endpoint": "http://localhost:8182/" @@ -145,15 +145,23 @@ Response: { "name": "dev.ucp.shopping.checkout", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/checkout", + "spec": "https://ucp.dev/specification/checkout", "schema": "https://ucp.dev/schemas/shopping/checkout.json", "extends": null, "config": null }, + { + "name": "dev.ucp.shopping.order", + "version": "2026-01-11", + "spec": "https://ucp.dev/specification/order", + "schema": "https://ucp.dev/schemas/shopping/order.json", + "extends": null, + "config": null + }, { "name": "dev.ucp.shopping.discount", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/discount", + "spec": "https://ucp.dev/specification/discount", "schema": "https://ucp.dev/schemas/shopping/discount.json", "extends": "dev.ucp.shopping.checkout", "config": null @@ -161,10 +169,18 @@ Response: { "name": "dev.ucp.shopping.fulfillment", "version": "2026-01-11", - "spec": "https://ucp.dev/specs/shopping/fulfillment", + "spec": "https://ucp.dev/specification/fulfillment", "schema": "https://ucp.dev/schemas/shopping/fulfillment.json", "extends": "dev.ucp.shopping.checkout", "config": null + }, + { + "name": "dev.ucp.shopping.buyer_consent", + "version": "2026-01-11", + "spec": "https://ucp.dev/specification/buyer_consent", + "schema": "https://ucp.dev/schemas/shopping/buyer_consent.json", + "extends": "dev.ucp.shopping.checkout", + "config": null } ] }, @@ -187,10 +203,10 @@ Response: "id": "google_pay", "name": "google.pay", "version": "2026-01-11", - "spec": "https://example.com/spec", - "config_schema": "https://example.com/schema", + "spec": "https://developers.google.com/merchant/ucp/guides/gpay-payment-handler", + "config_schema": "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_config.json", "instrument_schemas": [ - "https://ucp.dev/schemas/shopping/types/gpay_card_payment_instrument.json" + "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_card_payment_instrument.json" ], "config": { "api_version": 2, @@ -312,10 +328,10 @@ curl -X POST http://localhost:8182/checkout-sessions \ "id": "google_pay", "name": "google.pay", "version": "2026-01-11", - "spec": "https://example.com/spec", - "config_schema": "https://example.com/schema", + "spec": "https://developers.google.com/merchant/ucp/guides/gpay-payment-handler", + "config_schema": "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_config.json", "instrument_schemas": [ - "https://ucp.dev/schemas/shopping/types/gpay_card_payment_instrument.json" + "https://pay.google.com/gp/p/ucp/2026-01-11/schemas/gpay_card_payment_instrument.json" ], "config": { "api_version": 2,