Module: Portage::Ucp::Capabilities
- Defined in:
- lib/portage/ucp/capabilities/cart.rb,
lib/portage/ucp/capabilities/order.rb,
lib/portage/ucp/capabilities/catalog.rb,
lib/portage/ucp/capabilities/reorder.rb,
lib/portage/ucp/capabilities/checkout.rb,
lib/portage/ucp/capabilities/discount.rb,
lib/portage/ucp/capabilities/fulfillment.rb,
lib/portage/ucp/capabilities/shopper_data.rb,
lib/portage/ucp/capabilities/payment_method.rb,
lib/portage/ucp/capabilities/identity_linking.rb,
lib/portage/ucp/capabilities/payment_enrollment.rb
Constant Summary collapse
- CART =
Portage::Ucp::Capability.new( name: "dev.ucp.shopping.cart", version: "1", actions: { "create_cart" => :create_cart, "get_cart" => :get_cart, "update_cart" => :update_cart, "cancel_cart" => :cancel_cart } )
- ORDER =
Portage::Ucp::Capability.new( name: "dev.ucp.shopping.order", version: "1", actions: { "get_order" => :get_order, "cancel_order" => :cancel_order, "request_return" => :request_return, "refund_order" => :refund_order } )
- CATALOG =
Portage::Ucp::Capability.new( name: "dev.ucp.shopping.catalog", version: "1", actions: { "search_catalog" => :search_catalog, "get_product" => :get_product, "lookup_catalog" => :lookup_catalog } )
- REORDER =
Portage-only extension, not part of the UCP spec (no ucp.dev reverse-domain meaning to borrow), so this is namespaced under the gem's own name instead of "dev.ucp.*". Advertised only if the adapter overrides Adapter#reorder, same as every other capability (Capability#advertised_for?) — an adapter that hasn't implemented it simply never shows it in the manifest.
Portage::Ucp::Capability.new( name: "app.portage-ucp.reorder", version: "1", actions: { "reorder" => :reorder } )
- CHECKOUT =
Portage::Ucp::Capability.new( name: "dev.ucp.shopping.checkout", version: "1", actions: { "create_checkout" => :create_checkout, "get_checkout" => :get_checkout, "update_checkout" => :update_checkout, "complete_checkout" => :complete_checkout, "cancel_checkout" => :cancel_checkout } )
- DISCOUNT =
schemas/shopping/discount.json — extends Cart/Checkout with a
discountsfield rather than adding actions of its own, soactionsis empty and advertisement runs off Adapter#discount_codes_supported? instead (see Capability#advertised_for?). Portage::Ucp::Capability.new( name: "dev.ucp.shopping.discount", version: "1", actions: {}, predicate: :discount_codes_supported? )
- FULFILLMENT =
schemas/shopping/fulfillment.json — extends Checkout with a
fulfillmentfield (shipping/pickup methods, groups, destinations) rather than adding actions of its own, same predicate-based advertisement as DISCOUNT above. Portage::Ucp::Capability.new( name: "dev.ucp.shopping.fulfillment", version: "1", actions: {}, predicate: :fulfillment_supported? )
- SHOPPER_DATA =
Portage-only extension, not part of the UCP spec. Kept separate from PAYMENT_METHOD/SAVED_ADDRESS: this is the erasure duty over both of those plus the linked identity, not a peer capability alongside them (design-log §22 item 7).
Portage::Ucp::Capability.new( name: "app.portage-ucp.shopper_data", version: "1", actions: { "delete_shopper_data" => :delete_shopper_data } )
- PAYMENT_METHOD =
Portage-only extensions, not part of the UCP spec (no ucp.dev reverse-domain meaning to borrow), same posture as Capabilities::PAYMENT_ENROLLMENT/REORDER. Advertised only if the adapter overrides at least one of its own action methods. Kept as two capabilities (payment methods vs. addresses) rather than one, per design-log §16/§22 item 7's "ship together, but they're separate concerns" — a consumer can still gate them independently.
Portage::Ucp::Capability.new( name: "app.portage-ucp.payment_method", version: "1", actions: { "save_payment_method" => :save_payment_method, "list_payment_methods" => :list_payment_methods, "delete_payment_method" => :delete_payment_method } )
- SAVED_ADDRESS =
Portage::Ucp::Capability.new( name: "app.portage-ucp.saved_address", version: "1", actions: { "save_address" => :save_address, "list_addresses" => :list_addresses, "delete_address" => :delete_address } )
- IDENTITY_LINKING =
Portage::Ucp::Capability.new( name: "dev.ucp.shopping.identity", version: "1", actions: { "link_identity" => :link_identity } )
- ALL =
[CATALOG, CART, CHECKOUT, ORDER, IDENTITY_LINKING, DISCOUNT, FULFILLMENT, REORDER, PAYMENT_ENROLLMENT, PAYMENT_METHOD, SAVED_ADDRESS, SHOPPER_DATA].freeze
- PAYMENT_ENROLLMENT =
Portage-only extension, not part of the UCP spec (no ucp.dev reverse-domain meaning to borrow), same posture as Capabilities::REORDER. Advertised only if the adapter overrides Adapter#create_payment_enrollment — an adapter with no real gateway support for it simply never shows it in the manifest (see docs/plans/agentic-payments.md Phase 1).
Portage::Ucp::Capability.new( name: "app.portage-ucp.payment_enrollment", version: "1", actions: { "create_payment_enrollment" => :create_payment_enrollment, "get_payment_enrollment" => :get_payment_enrollment } )