X402.Extensions.SIWX.Storage behaviour (X402 v0.3.3)

Copy Markdown View Source

Behaviour for storing SIWX access records.

Storage adapters persist wallet access grants keyed by {address, resource}.

Summary

Types

Stored access record for a wallet/resource pair.

Callbacks

Deletes an access record by wallet address and resource identifier.

Fetches an access record by wallet address and resource identifier.

Stores an access record for a wallet/resource pair with a TTL in milliseconds.

Functions

Validates that a value is a module implementing X402.Extensions.SIWX.Storage.

Types

access_record()

@type access_record() :: %{payment_proof: term(), expires_at_ms: non_neg_integer()}

Stored access record for a wallet/resource pair.

Callbacks

delete(address, resource)

@callback delete(address :: String.t(), resource :: String.t()) :: :ok

Deletes an access record by wallet address and resource identifier.

get(address, resource)

@callback get(address :: String.t(), resource :: String.t()) ::
  {:ok, access_record()} | {:error, :not_found}

Fetches an access record by wallet address and resource identifier.

put(address, resource, payment_proof, ttl_ms)

@callback put(
  address :: String.t(),
  resource :: String.t(),
  payment_proof :: term(),
  ttl_ms :: non_neg_integer()
) :: :ok | {:error, term()}

Stores an access record for a wallet/resource pair with a TTL in milliseconds.

Functions

validate_module(module)

(since 0.3.0)
@spec validate_module(term()) :: :ok | {:error, String.t()}

Validates that a value is a module implementing X402.Extensions.SIWX.Storage.

This function is intended for NimbleOptions custom validation.