Module: Portage::Ucp::WireEnvelope

Defined in:
lib/portage/ucp/wire_envelope.rb

Overview

Adds the "ucp" response envelope UCP requires on Cart/Checkout/Order payloads (schemas/ucp.json's response_cart_schema/response_checkout_schema/ response_order_schema) — centralized here so the version string and each capability's minimum envelope shape live in one place, not duplicated across value objects.

Constant Summary collapse

SPEC_VERSION =
"2026-04-08".freeze
ENVELOPES =
{
  "dev.ucp.shopping.cart" => -> { { "version" => SPEC_VERSION } },
  "dev.ucp.shopping.checkout" => -> { { "version" => SPEC_VERSION, "payment_handlers" => {} } },
  "dev.ucp.shopping.order" => -> { { "version" => SPEC_VERSION } }
}.freeze

Class Method Summary collapse

Class Method Details

.wrap(capability_name, payload_hash) ⇒ Object



17
18
19
20
21
22
# File 'lib/portage/ucp/wire_envelope.rb', line 17

def self.wrap(capability_name, payload_hash)
  envelope = ENVELOPES[capability_name]
  return payload_hash unless envelope

  payload_hash.merge("ucp" => envelope.call)
end