Skip to main content

common

Type Aliases

AuthorizeResult

AuthorizeResult<MiddlewareResponse> = AuthorizeResultV1<MiddlewareResponse> | AuthorizeResultV2<MiddlewareResponse>
Defined in: packages/middleware/src/common.ts:500

Type Parameters

MiddlewareResponse
MiddlewareResponse

AuthorizeResultMPP

AuthorizeResultMPP<MiddlewareResponse> = { receipt: mppReceipt; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:634

Type Parameters

MiddlewareResponse
MiddlewareResponse

AuthorizeResultV1

AuthorizeResultV1<MiddlewareResponse> = { response: x402VerifyResponseV1; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:484

Type Parameters

MiddlewareResponse
MiddlewareResponse

AuthorizeResultV2

AuthorizeResultV2<MiddlewareResponse> = { response: x402VerifyResponse; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:492

Type Parameters

MiddlewareResponse
MiddlewareResponse

CaptureResult

CaptureResult<MiddlewareResponse> = CaptureResultV1<MiddlewareResponse> | CaptureResultV2<MiddlewareResponse>
Defined in: packages/middleware/src/common.ts:480

Type Parameters

MiddlewareResponse
MiddlewareResponse

CaptureResultMPP

CaptureResultMPP<MiddlewareResponse> = { receipt: mppReceipt; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:626

Type Parameters

MiddlewareResponse
MiddlewareResponse

CaptureResultV1

CaptureResultV1<MiddlewareResponse> = { response: x402SettleResponseV1; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:464

Type Parameters

MiddlewareResponse
MiddlewareResponse

CaptureResultV2

CaptureResultV2<MiddlewareResponse> = { response: x402SettleResponse; success: true; } | { errorMessage?: string; errorResponse: MiddlewareResponse; success: false; }
Defined in: packages/middleware/src/common.ts:472

Type Parameters

MiddlewareResponse
MiddlewareResponse

CapturesAt

CapturesAt = "request" | "response"
Defined in: packages/middleware/src/common.ts:519 When the body callback should drive capture. "request" — one-phase: body calls capture() immediately and the payment clears before the resource is produced. "response" — two-phase: body calls authorize() now and defers capture to a later phase (the OpenAPI gateway captures at /response once the final amount is known). The middleware resolves this per-request via resolveCapturesAt from the matched handler’s authorize capability and the rule’s hasAuthorize flag, so the body callback never has to inspect the context shape to decide which path to take.

CommonMiddlewareArgs

CommonMiddlewareArgs = object
Defined in: packages/middleware/src/common.ts:271 Common configuration arguments shared by all middleware implementations. Supports two mutually exclusive modes: in-process handlers or remote facilitator.

Properties

accepts?
optional accepts: (RelaxedRequirements | RelaxedRequirements[])[]
Defined in: packages/middleware/src/common.ts:282 Payment requirements for the remote facilitator path.
cacheConfig?
optional cacheConfig: AgedLRUCacheOpts & object
Defined in: packages/middleware/src/common.ts:284 Cache configuration for remote facilitator responses.
Type declaration
disable?
optional disable: boolean
facilitatorURL?
optional facilitatorURL: string
Defined in: packages/middleware/src/common.ts:280 URL of a remote facilitator service (backward compat).
mppMethodHandlers?
optional mppMethodHandlers: MPPMethodHandler[]
Defined in: packages/middleware/src/common.ts:275 MPP method handlers for in-process settlement.
pricing?
optional pricing: ResourcePricing[]
Defined in: packages/middleware/src/common.ts:277 Protocol-agnostic pricing for in-process handlers.
supportedVersions?
optional supportedVersions: SupportedVersionsConfig
Defined in: packages/middleware/src/common.ts:287 Which x402 protocol versions to support.
x402Handlers?
optional x402Handlers: FacilitatorHandler[]
Defined in: packages/middleware/src/common.ts:273 x402 handlers for in-process settlement.

CreateRemoteX402HandlersArgs

CreateRemoteX402HandlersArgs = object
Defined in: packages/middleware/src/common.ts:392

Properties

accepts
accepts: (RelaxedRequirements | RelaxedRequirements[])[]
Defined in: packages/middleware/src/common.ts:394
cacheConfig?
optional cacheConfig: AgedLRUCacheOpts & object
Defined in: packages/middleware/src/common.ts:395
Type declaration
disable?
optional disable: boolean
facilitatorURL
facilitatorURL: string
Defined in: packages/middleware/src/common.ts:393

HandleMiddlewareRequestArgs

HandleMiddlewareRequestArgs<MiddlewareResponse> = object
Defined in: packages/middleware/src/common.ts:674 Arguments for the core middleware request handler. Framework-specific middleware implementations adapt their request/response objects to this interface.

Type Parameters

MiddlewareResponse
MiddlewareResponse = unknown

Properties

body()
body: (context) => Promise<MiddlewareResponse | undefined>
Defined in: packages/middleware/src/common.ts:694 Handler function called when a valid payment is received.
Parameters
context
MiddlewareBodyContext<MiddlewareResponse>
Returns
Promise<MiddlewareResponse | undefined>
getBody()?
optional getBody: () => Promise<ArrayBuffer | null>
Defined in: packages/middleware/src/common.ts:702 Optional accessor for the request body (for RFC 9530 digest).
Returns
Promise<ArrayBuffer | null>
getHeader()
getHeader: (key) => string | undefined
Defined in: packages/middleware/src/common.ts:686 Function to retrieve a request header value.
Parameters
key
string
Returns
string | undefined
hasAuthorize?
optional hasAuthorize: boolean
Defined in: packages/middleware/src/common.ts:710 Whether the matched pricing rule has an explicit authorize expression (i.e. is two-phase). Drives the per-handler capturesAt decision resolved before each body invocation. Defaults to false; non-OpenAPI callers that have no rule shape leave this unset and the middleware treats every request as one-phase.
mppMethodHandlers?
optional mppMethodHandlers: MPPMethodHandler[]
Defined in: packages/middleware/src/common.ts:678 MPP method handlers for in-process settlement.
policy?
optional policy: PaymentPolicy
Defined in: packages/middleware/src/common.ts:717 Per-operation payment policy. Restricts which schemes / methods are advertised in the 402 challenge, rejects payments for disallowed schemes, and threads pin overrides into the capturesAt resolution per matched handler.
pricing
pricing: ResourcePricing[]
Defined in: packages/middleware/src/common.ts:680 Protocol-agnostic pricing entries for the current request.
resource
resource: string
Defined in: packages/middleware/src/common.ts:682 The resource URL being accessed.
resourceInfo?
optional resourceInfo: x402ResourceInfo
Defined in: packages/middleware/src/common.ts:700 Optional pre-built resource info for the 402 response.
sendJSONResponse()
sendJSONResponse: (status, body?, headers?) => MiddlewareResponse
Defined in: packages/middleware/src/common.ts:688 Function to send a JSON response with optional headers.
Parameters
status
PossibleStatusCodes
body?
PossibleJSONResponse
headers?
Record<string, string>
Returns
MiddlewareResponse
setResponseHeader()?
optional setResponseHeader: (key, value) => void
Defined in: packages/middleware/src/common.ts:698 Optional function to set a response header.
Parameters
key
string
value
string
Returns
void
supportedVersions
supportedVersions: Required<SupportedVersionsConfig>
Defined in: packages/middleware/src/common.ts:684 Resolved supported versions configuration.
x402Handlers?
optional x402Handlers: FacilitatorHandler[]
Defined in: packages/middleware/src/common.ts:676 x402 handlers for in-process settlement.

MiddlewareBodyContext

MiddlewareBodyContext<MiddlewareResponse> = MiddlewareBodyContextV1<MiddlewareResponse> | MiddlewareBodyContextV2<MiddlewareResponse> | MiddlewareBodyContextMPP<MiddlewareResponse>
Defined in: packages/middleware/src/common.ts:664 Context provided to the middleware body handler. Use protocolVersion to discriminate between v1, v2, and mpp request types.

Type Parameters

MiddlewareResponse
MiddlewareResponse

MiddlewareBodyContextMPP

MiddlewareBodyContextMPP<MiddlewareResponse> = object
Defined in: packages/middleware/src/common.ts:650 Context provided to the middleware body handler for MPP protocol requests. authorize is optional because not every MPP method handler implements handleVerify. When capturesAt === "response" the middleware guarantees authorize is defined (the resolver only picks "response" when at least one matching handler can verify).

Type Parameters

MiddlewareResponse
MiddlewareResponse

Properties

authorize()?
optional authorize: () => Promise<AuthorizeResultMPP<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:655
Returns
Promise<AuthorizeResultMPP<MiddlewareResponse>>
capture()
capture: () => Promise<CaptureResultMPP<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:654
Returns
Promise<CaptureResultMPP<MiddlewareResponse>>
capturesAt
capturesAt: CapturesAt
Defined in: packages/middleware/src/common.ts:652
credential
credential: mppCredential
Defined in: packages/middleware/src/common.ts:653
protocolVersion
protocolVersion: "mpp"
Defined in: packages/middleware/src/common.ts:651

MiddlewareBodyContextV1

MiddlewareBodyContextV1<MiddlewareResponse> = object
Defined in: packages/middleware/src/common.ts:602 Context provided to the middleware body handler for v1 protocol requests. Contains payment information and the industry-standard authorize / capture operations. Under the hood these dispatch to the matched x402 facilitator handler’s handleVerify / handleSettle.

Type Parameters

MiddlewareResponse
MiddlewareResponse

Properties

authorize()
authorize: () => Promise<AuthorizeResultV1<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:608
Returns
Promise<AuthorizeResultV1<MiddlewareResponse>>
capture()
capture: () => Promise<CaptureResultV1<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:607
Returns
Promise<CaptureResultV1<MiddlewareResponse>>
capturesAt
capturesAt: CapturesAt
Defined in: packages/middleware/src/common.ts:604
paymentPayload
paymentPayload: x402PaymentPayloadV1
Defined in: packages/middleware/src/common.ts:606
paymentRequirements
paymentRequirements: x402PaymentRequirementsV1
Defined in: packages/middleware/src/common.ts:605
protocolVersion
protocolVersion: 1
Defined in: packages/middleware/src/common.ts:603

MiddlewareBodyContextV2

MiddlewareBodyContextV2<MiddlewareResponse> = object
Defined in: packages/middleware/src/common.ts:617 Context provided to the middleware body handler for v2 protocol requests. Contains payment information and the industry-standard authorize / capture operations. Under the hood these dispatch to the matched x402 facilitator handler’s handleVerify / handleSettle.

Type Parameters

MiddlewareResponse
MiddlewareResponse

Properties

authorize()
authorize: () => Promise<AuthorizeResultV2<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:623
Returns
Promise<AuthorizeResultV2<MiddlewareResponse>>
capture()
capture: () => Promise<CaptureResultV2<MiddlewareResponse>>
Defined in: packages/middleware/src/common.ts:622
Returns
Promise<CaptureResultV2<MiddlewareResponse>>
capturesAt
capturesAt: CapturesAt
Defined in: packages/middleware/src/common.ts:619
paymentPayload
paymentPayload: x402PaymentPayload
Defined in: packages/middleware/src/common.ts:621
paymentRequirements
paymentRequirements: x402PaymentRequirements
Defined in: packages/middleware/src/common.ts:620
protocolVersion
protocolVersion: 2
Defined in: packages/middleware/src/common.ts:618

PaymentPolicy

PaymentPolicy = object
Defined in: packages/middleware/src/common.ts:545 Per-operation payment policy. Restricts which protocol schemes / methods are accepted for a given route and optionally pins specific ones to one-phase or two-phase capture regardless of the handler’s declared capability. Keys in allow and pin are of the form "<protocol>:<id>":
  • "x402:exact", "x402:permit2" — x402 schemes
  • "mpp:solana" — MPP methods
The protocol prefix is case-sensitive and uses the lowercase wire form ("mpp:", not "MPP:"), matching how schemes and methods are identified on the protocol surface itself. allow: undefined permits every registered scheme and method. allow: [] denies all of them (the deny-all sentinel). pin["x402:exact"].capturesAt: "request" forces one-phase capture for that scheme regardless of whether the handler supports handleVerify and regardless of whether the rule has authorize. A pin to "response" against a handler that cannot authorize is a configuration error caught at construction.

Properties

allow?
optional allow: string[]
Defined in: packages/middleware/src/common.ts:546
pin?
optional pin: Record<string, { capturesAt?: CapturesAt; }>
Defined in: packages/middleware/src/common.ts:547

RelaxedRequirements

RelaxedRequirements = Partial<x402PaymentRequirementsV1>
Defined in: packages/middleware/src/common.ts:171

RelaxedRequirementsV2

RelaxedRequirementsV2 = Partial<x402PaymentRequirements>
Defined in: packages/middleware/src/common.ts:172

ResolvedConfig

ResolvedConfig = object
Defined in: packages/middleware/src/common.ts:423

Properties

handlers
handlers: FacilitatorHandler[]
Defined in: packages/middleware/src/common.ts:424
mppHandlers
mppHandlers: MPPMethodHandler[]
Defined in: packages/middleware/src/common.ts:426
pricing
pricing: ResourcePricing[]
Defined in: packages/middleware/src/common.ts:425
resourceInfo?
optional resourceInfo: x402ResourceInfo
Defined in: packages/middleware/src/common.ts:427

SupportedVersionsConfig

SupportedVersionsConfig = object
Defined in: packages/middleware/src/common.ts:238 Configuration for which x402 protocol versions the middleware supports. At least one version must be enabled.

Properties

x402v1?
optional x402v1: boolean
Defined in: packages/middleware/src/common.ts:240 Support x402 v1 protocol (JSON body responses, X-PAYMENT header). Default: true
x402v2?
optional x402v2: boolean
Defined in: packages/middleware/src/common.ts:242 Support x402 v2 protocol (PAYMENT-REQUIRED header, PAYMENT-SIGNATURE header). Default: false

Functions

acceptsToPricing()

acceptsToPricing(accepts): ResourcePricing[]
Defined in: packages/middleware/src/common.ts:377

Parameters

accepts
Partial<{ asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; }>[]

Returns

ResourcePricing[]

createRemoteX402Handlers()

createRemoteX402Handlers(args): FacilitatorHandler[]
Defined in: packages/middleware/src/common.ts:409 Creates x402 facilitator handlers backed by a remote HTTP facilitator. This is the composable equivalent of the facilitatorURL + accepts shorthand on CommonMiddlewareArgs. Use it when you need to combine a remote x402 facilitator with in-process MPP handlers in the same middleware.

Parameters

args
CreateRemoteX402HandlersArgs

Returns

FacilitatorHandler[] An array of FacilitatorHandler suitable for createMiddleware({ x402Handlers: ... }).

deriveCapabilities()

deriveCapabilities(accepts): HandlerCapabilities
Defined in: packages/middleware/src/common.ts:328 Derives HandlerCapabilities from relaxed v1 requirements. Used by framework adapters to construct capabilities for the HTTP wrapper from the legacy accepts configuration.

Parameters

accepts
Partial<{ asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; }>[]

Returns

HandlerCapabilities

deriveResourceInfo()

deriveResourceInfo(accepts, resourceURL): object
Defined in: packages/middleware/src/common.ts:364 Extracts resource info from v1 accepts entries. Used by framework adapters to build the resource info for the 402 response.

Parameters

accepts
Partial<{ asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; }>[]
resourceURL
string

Returns

object
description?
optional description: string
mimeType?
optional mimeType: string
url
url: string

deriveSchemes()

deriveSchemes(accepts): string[]
Defined in: packages/middleware/src/common.ts:352 Derives the distinct set of x402 schemes from relaxed v1 requirements. Sibling of deriveCapabilities; kept separate because schemes are x402-specific and live on the handler rather than on HandlerCapabilities.

Parameters

accepts
Partial<{ asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; }>[]

Returns

string[]

findMatchingPaymentRequirements()

findMatchingPaymentRequirements(accepts, payload): undefined | { asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; }
Defined in: packages/middleware/src/common.ts:150 Finds the payment requirement that matches the client’s v1 payment payload.

Parameters

accepts
object[] Array of accepted payment requirements from the facilitator
payload
The client’s payment payload
asset?
string
network
string
payload
object
scheme
string
x402Version
number

Returns

undefined | { asset: string; description: string; extra?: object; maxAmountRequired: string; maxTimeoutSeconds: number; mimeType?: string; network: string; outputSchema?: object; payTo: string; resource: string; scheme: string; } The matching requirement, or undefined if no match found

findMatchingPaymentRequirementsV2()

findMatchingPaymentRequirementsV2(accepts, payload): undefined | { amount: string; asset: string; extra?: object; maxTimeoutSeconds: number; network: string; payTo: string; scheme: string; }
Defined in: packages/middleware/src/common.ts:164 Finds the payment requirement that matches the client’s v2 payment payload.

Parameters

accepts
object[] Array of accepted payment requirements from the facilitator
payload
The client’s v2 payment payload
accepted
{ amount: string; asset: string; extra?: object; maxTimeoutSeconds: number; network: string; payTo: string; scheme: string; }
accepted.amount
string
accepted.asset
string
accepted.extra?
object
accepted.maxTimeoutSeconds
number
accepted.network
string
accepted.payTo
string
accepted.scheme
string
extensions?
object
payload
object
resource?
{ description?: string; mimeType?: string; url: string; }
resource.description?
string
resource.mimeType?
string
resource.url
string
x402Version
2

Returns

undefined | { amount: string; asset: string; extra?: object; maxTimeoutSeconds: number; network: string; payTo: string; scheme: string; } The matching requirement, or undefined if no match found

handleMiddlewareRequest()

handleMiddlewareRequest<MiddlewareResponse>(args): Promise<undefined | MiddlewareResponse>
Defined in: packages/middleware/src/common.ts:771 Core middleware request handler that processes x402 and MPP payment flows. Delegates to protocol-specific glue layers for challenge generation, settlement, and verification. The middleware formats HTTP responses but never constructs protocol types directly.

Type Parameters

MiddlewareResponse
MiddlewareResponse

Parameters

args
HandleMiddlewareRequestArgs<MiddlewareResponse>

Returns

Promise<undefined | MiddlewareResponse>

relaxedRequirementsToV2()

relaxedRequirementsToV2(req): Partial
Defined in: packages/middleware/src/common.ts:178 Converts v1 relaxed requirements to v2 format, preserving all fields including extra.

Parameters

req
Partial

Returns

Partial

resolveCapturesAt()

resolveCapturesAt(canAuthorize, hasAuthorize, pin?): CapturesAt
Defined in: packages/middleware/src/common.ts:753 Resolves whether the body callback should capture at /request (one-phase) or defer to /response (two-phase). canAuthorize is “any handler that actually accepts THIS scheme / method declares verification”. For x402 the candidate set is narrowHandlers(handlers, requirements) further filtered by h.schemes?.includes(requirements.scheme) — the scheme filter is load-bearing because narrowHandlers only checks network and asset, so without it a multi-scheme handler set with one verify- capable handler would leak canAuthorize = true to schemes served only by settle-only handlers. For MPP the candidate set is the handlers filtered by exact method match. The middleware computes the predicate per request before invoking body, so the body callback only has to read context.capturesAt. pin is the operator-supplied override from PaymentPolicy.pin keyed by <protocol>:<scheme-or-method>. A pin to "response" against a handler that cannot authorize is rejected at construction by validateOperationPolicies in middleware-openapi. If one somehow reaches this resolver at runtime (e.g. a programmatic spec that bypasses validation) the body’s authorize() call will throw “no handler accepted the verification”, which propagates up as a 500 — loud failure rather than a silent demotion to one-phase.

Parameters

canAuthorize
boolean
hasAuthorize
boolean
pin?
CapturesAt

Returns

CapturesAt

resolveConfig()

resolveConfig(args): ResolvedConfig
Defined in: packages/middleware/src/common.ts:435 Resolves CommonMiddlewareArgs into the handlers + pricing tuple that handleMiddlewareRequest needs. For the facilitatorURL path, creates an HTTP handler wrapper and converts accepts to pricing.

Parameters

args
CommonMiddlewareArgs

Returns

ResolvedConfig

resolveSupportedVersions()

resolveSupportedVersions(config?): Required<SupportedVersionsConfig>
Defined in: packages/middleware/src/common.ts:250 Resolve and validate supported versions config. Returns resolved config with defaults applied. Throws if configuration is invalid.

Parameters

config?
SupportedVersionsConfig

Returns

Required<SupportedVersionsConfig>

validateMiddlewareArgs()

validateMiddlewareArgs(args): void
Defined in: packages/middleware/src/common.ts:293 Validates that CommonMiddlewareArgs has exactly one configuration mode.

Parameters

args
CommonMiddlewareArgs

Returns

void