Initial Python SDK release v1.0.0
This commit is contained in:
153
fetcherpay/types.py
Normal file
153
fetcherpay/types.py
Normal file
@@ -0,0 +1,153 @@
|
||||
"""
|
||||
FetcherPay SDK Types
|
||||
"""
|
||||
|
||||
from typing import Optional, Dict, Any, List
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class PaymentStatus(str, Enum):
|
||||
PENDING = 'pending'
|
||||
AUTHORIZED = 'authorized'
|
||||
PROCESSING = 'processing'
|
||||
SETTLED = 'settled'
|
||||
FAILED = 'failed'
|
||||
CANCELLED = 'cancelled'
|
||||
REFUNDED = 'refunded'
|
||||
PARTIALLY_REFUNDED = 'partially_refunded'
|
||||
|
||||
|
||||
class Rail(str, Enum):
|
||||
AUTO = 'auto'
|
||||
ACH = 'ach'
|
||||
RTP = 'rtp'
|
||||
CARD = 'card'
|
||||
CRYPTO = 'crypto'
|
||||
|
||||
|
||||
class AccountType(str, Enum):
|
||||
ASSET = 'asset'
|
||||
LIABILITY = 'liability'
|
||||
REVENUE = 'revenue'
|
||||
EXPENSE = 'expense'
|
||||
EQUITY = 'equity'
|
||||
|
||||
|
||||
@dataclass
|
||||
class Fee:
|
||||
amount: int
|
||||
rate: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class TimelineEvent:
|
||||
status: str
|
||||
timestamp: str
|
||||
detail: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class Refund:
|
||||
id: str
|
||||
payment_id: str
|
||||
amount: int
|
||||
reason: Optional[str]
|
||||
status: str
|
||||
created_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class Payment:
|
||||
id: str
|
||||
object: str
|
||||
status: PaymentStatus
|
||||
amount: int
|
||||
currency: str
|
||||
rail: str
|
||||
rail_selected: str
|
||||
description: Optional[str]
|
||||
source: Dict[str, Any]
|
||||
destination: Dict[str, Any]
|
||||
fee: Optional[Fee]
|
||||
timeline: List[TimelineEvent]
|
||||
ledger_entry_ids: List[str]
|
||||
refunds: List[Refund]
|
||||
idempotency_key: Optional[str]
|
||||
metadata: Dict[str, Any]
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class PaymentMethod:
|
||||
id: str
|
||||
object: str
|
||||
type: str
|
||||
status: str
|
||||
bank_account: Optional[Dict[str, Any]]
|
||||
card: Optional[Dict[str, Any]]
|
||||
usdc_wallet: Optional[Dict[str, Any]]
|
||||
metadata: Dict[str, Any]
|
||||
created_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class LedgerBalance:
|
||||
pending: int
|
||||
posted: int
|
||||
available: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class LedgerAccount:
|
||||
id: str
|
||||
object: str
|
||||
name: str
|
||||
type: AccountType
|
||||
currency: str
|
||||
balance: LedgerBalance
|
||||
metadata: Dict[str, Any]
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class LedgerEntry:
|
||||
id: str
|
||||
object: str
|
||||
journal_id: str
|
||||
account_id: str
|
||||
payment_id: Optional[str]
|
||||
entry_type: str
|
||||
amount: int
|
||||
currency: str
|
||||
status: str
|
||||
description: Optional[str]
|
||||
metadata: Dict[str, Any]
|
||||
created_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class WebhookEndpoint:
|
||||
id: str
|
||||
object: str
|
||||
url: str
|
||||
events: List[str]
|
||||
status: str
|
||||
secret: str
|
||||
metadata: Dict[str, Any]
|
||||
created_at: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class ListResponse:
|
||||
data: List[Any]
|
||||
has_more: bool
|
||||
next_cursor: Optional[str]
|
||||
|
||||
|
||||
# Request types
|
||||
CreatePaymentRequest = Dict[str, Any]
|
||||
CreatePaymentMethodRequest = Dict[str, Any]
|
||||
CreateWebhookRequest = Dict[str, Any]
|
||||
Reference in New Issue
Block a user