open_payments/types/mod.rs
1//! # Open Payments Types
2//!
3//! This module contains all the type definitions for the Open Payments specifications.
4//! These types represent the data structures used in API requests and responses,
5//! as well as the core concepts of the Open Payments ecosystem.
6//!
7//! ## Core Types
8//!
9//! ### Authentication & Authorization
10//!
11//! - [`GrantRequest`] / [`GrantResponse`] - GNAP request and response
12//! - [`AccessToken`] / [`AccessTokenRequest`] - Access token management
13//! - [`AccessItem`] - Defines what resources a token can access
14//! - [`ContinueRequest`] / [`ContinueResponse`] - Grant continuation flow
15//!
16//! ### Resources
17//!
18//! - [`WalletAddress`] - Wallet address information
19//! - [`IncomingPayment`] - Incoming payment details
20//! - [`OutgoingPayment`] - Outgoing payment details
21//! - [`Quote`] - Payment quote details
22//!
23//! ### Common Types
24//!
25//! - [`Amount`] - Amounts of a specific currency and scale
26//! - [`Receiver`] - Receiver of a payment e.g. incoming payment
27//! - [`WalletAddressUri`] - Wallet address descriptor
28//! - [`Interval`] - ISO 8601 defined interval
29//!
30//! ## Example Usage
31//!
32//! ```rust
33//! use open_payments::types::{
34//! Amount, GrantRequest, AccessTokenRequest, AccessItem, QuoteAction,
35//! CreateIncomingPaymentRequest, WalletAddress, IncomingPaymentAction
36//! };
37//!
38//! // Create a grant request for incoming payment
39//! let grant_request = GrantRequest::new(
40//! AccessTokenRequest {
41//! access: vec![AccessItem::IncomingPayment {
42//! actions: vec![IncomingPaymentAction::Create, IncomingPaymentAction::Read],
43//! identifier: None,
44//! }],
45//! },
46//! None,
47//! );
48//!
49//! // Create an incoming payment request
50//! let payment_request = CreateIncomingPaymentRequest {
51//! wallet_address: "https://rafiki.money/alice".to_string(),
52//! incoming_amount: Some(Amount {
53//! value: "1000".to_string(),
54//! asset_code: "EUR".to_string(),
55//! asset_scale: 2,
56//! }),
57//! expires_at: Some(chrono::Utc::now() + chrono::Duration::hours(1)),
58//! metadata: None,
59//! };
60//! ```
61//!
62//! ## Module Structure
63//!
64//! - [`auth`] - Authentication and authorization types
65//! - [`common`] - Common types used across Open Payments
66//! - [`resource`] - Resource-specific types (payments, quotes, etc.)
67//! - [`wallet_address`] - Wallet address and JWK types
68
69pub mod auth;
70pub mod common;
71pub mod resource;
72pub mod wallet_address;
73
74pub use common::*;
75
76pub use auth::{
77 AccessItem, AccessToken, AccessTokenRequest, AccessTokenResponse, Client, Continue,
78 ContinueAccessToken, ContinueRequest, ContinueResponse, GrantRequest, GrantResponse,
79 IncomingPaymentAction, InteractFinish, InteractRequest, InteractResponse, LimitsOutgoing,
80 OutgoingPaymentAction, QuoteAction, Subject, SubjectIdentifier, SubjectIdentifierFormat,
81};
82
83pub use resource::{
84 CreateIncomingPaymentRequest, CreateIncomingPaymentRequest as IncomingPaymentRequest,
85 CreateOutgoingPaymentRequest, CreateOutgoingPaymentRequest as OutgoingPaymentRequest,
86 CreateQuoteRequest, CreateQuoteRequest as QuoteRequest, IncomingPayment,
87 IncomingPaymentWithMethods, ListIncomingPaymentsResponse, ListOutgoingPaymentsResponse,
88 OutgoingPayment, OutgoingPaymentGrantSpentAmounts, PageInfo, PaginatedResponse, PaymentMethod,
89 PaymentMethodType, PublicIncomingPayment, Quote,
90};
91
92pub use wallet_address::{
93 JsonWebKey, JsonWebKeySet, JwkAlgorithm, JwkCurve, JwkKeyType, JwkUse, WalletAddress,
94};