Bazaar.Protocol (Bazaar v0.3.0)

Copy Markdown View Source

Protocol constants and status mappings for UCP and ACP protocols.

This module provides bidirectional status mapping between UCP (Universal Commerce Protocol) and ACP (Agentic Commerce Protocol) checkout statuses.

Status Mappings

UCP (Internal)ACP
incompletenot_ready_for_payment
requires_escalationauthentication_required
ready_for_completeready_for_payment
complete_in_progressin_progress
completedcompleted
canceledcanceled

Usage

# Check protocol validity
Bazaar.Protocol.valid?(:ucp)  # true
Bazaar.Protocol.valid?(:acp)  # true

# Convert status from UCP to ACP
Bazaar.Protocol.to_acp_status(:incomplete)  # :not_ready_for_payment

# Convert status from ACP to UCP
Bazaar.Protocol.to_ucp_status(:ready_for_payment)  # :ready_for_complete

Summary

Functions

Returns the list of ACP checkout statuses.

Converts a UCP status to its ACP equivalent.

Converts an ACP status to its UCP equivalent.

Returns the list of valid protocol types.

Returns the list of UCP checkout statuses.

Returns true if the given value is a valid protocol type.

Types

t()

@type t() :: :ucp | :acp

Functions

acp_statuses()

@spec acp_statuses() :: [atom()]

Returns the list of ACP checkout statuses.

to_acp_status(status)

@spec to_acp_status(atom() | String.t()) :: atom()

Converts a UCP status to its ACP equivalent.

Accepts both atom and string input.

Examples

iex> Bazaar.Protocol.to_acp_status(:incomplete)
:not_ready_for_payment

iex> Bazaar.Protocol.to_acp_status("ready_for_complete")
:ready_for_payment

to_ucp_status(status)

@spec to_ucp_status(atom() | String.t()) :: atom()

Converts an ACP status to its UCP equivalent.

Accepts both atom and string input.

Examples

iex> Bazaar.Protocol.to_ucp_status(:not_ready_for_payment)
:incomplete

iex> Bazaar.Protocol.to_ucp_status("ready_for_payment")
:ready_for_complete

types()

@spec types() :: [t()]

Returns the list of valid protocol types.

ucp_statuses()

@spec ucp_statuses() :: [atom()]

Returns the list of UCP checkout statuses.

valid?(arg1)

@spec valid?(term()) :: boolean()

Returns true if the given value is a valid protocol type.