Expand description
§Open Payments Types
This module contains all the type definitions for the Open Payments specifications. These types represent the data structures used in API requests and responses, as well as the core concepts of the Open Payments ecosystem.
§Core Types
§Authentication & Authorization
GrantRequest
/GrantResponse
- GNAP request and responseAccessToken
/AccessTokenRequest
- Access token managementAccessItem
- Defines what resources a token can accessContinueRequest
/ContinueResponse
- Grant continuation flow
§Resources
WalletAddress
- Wallet address informationIncomingPayment
- Incoming payment detailsOutgoingPayment
- Outgoing payment detailsQuote
- Payment quote details
§Common Types
Amount
- Amounts of a specific currency and scaleReceiver
- Receiver of a payment e.g. incoming paymentWalletAddressUri
- Wallet address descriptorInterval
- ISO 8601 defined interval
§Example Usage
use open_payments::types::{
Amount, GrantRequest, AccessTokenRequest, AccessItem, QuoteAction,
CreateIncomingPaymentRequest, WalletAddress, IncomingPaymentAction
};
// Create a grant request for incoming payment
let grant_request = GrantRequest {
access_token: AccessTokenRequest {
access: vec![AccessItem::IncomingPayment {
actions: vec![IncomingPaymentAction::Create, IncomingPaymentAction::Read],
identifier: None,
}],
},
client: "https://rafiki.money/alice".to_string(),
interact: None,
};
// Create an incoming payment request
let payment_request = CreateIncomingPaymentRequest {
wallet_address: "https://rafiki.money/alice".to_string(),
incoming_amount: Some(Amount {
value: "1000".to_string(),
asset_code: "EUR".to_string(),
asset_scale: 2,
}),
expires_at: Some(chrono::Utc::now() + chrono::Duration::hours(1)),
metadata: None,
};
§Module Structure
auth
- Authentication and authorization typescommon
- Common types used across Open Paymentsresource
- Resource-specific types (payments, quotes, etc.)wallet_address
- Wallet address and JWK types
Re-exports§
pub use auth::AccessItem;
pub use auth::AccessToken;
pub use auth::AccessTokenRequest;
pub use auth::AccessTokenResponse;
pub use auth::Continue;
pub use auth::ContinueRequest;
pub use auth::ContinueResponse;
pub use auth::GrantRequest;
pub use auth::GrantResponse;
pub use auth::IncomingPaymentAction;
pub use auth::InteractRequest;
pub use auth::InteractResponse;
pub use auth::LimitsOutgoing;
pub use auth::OutgoingPaymentAction;
pub use auth::QuoteAction;
pub use resource::CreateIncomingPaymentRequest;
pub use resource::CreateIncomingPaymentRequest as IncomingPaymentRequest;
pub use resource::CreateOutgoingPaymentRequest;
pub use resource::CreateOutgoingPaymentRequest as OutgoingPaymentRequest;
pub use resource::CreateQuoteRequest;
pub use resource::CreateQuoteRequest as QuoteRequest;
pub use resource::IncomingPayment;
pub use resource::IncomingPaymentWithMethods;
pub use resource::ListIncomingPaymentsResponse;
pub use resource::ListOutgoingPaymentsResponse;
pub use resource::OutgoingPayment;
pub use resource::PageInfo;
pub use resource::PaginatedResponse;
pub use resource::PaymentMethod;
pub use resource::PaymentMethodType;
pub use resource::PublicIncomingPayment;
pub use resource::Quote;
pub use wallet_address::JsonWebKey;
pub use wallet_address::JsonWebKeySet;
pub use wallet_address::JwkAlgorithm;
pub use wallet_address::JwkCurve;
pub use wallet_address::JwkKeyType;
pub use wallet_address::JwkUse;
pub use wallet_address::WalletAddress;
pub use common::*;