Coverage for polar/transaction/schemas.py: 100%
16 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
1from pydantic import UUID4
3from polar.enums import SubscriptionRecurringInterval
4from polar.kit.schemas import IDSchema, Schema, TimestampedSchema
5from polar.models.pledge import PledgeState
6from polar.models.transaction import PlatformFeeType, Processor, TransactionType
9class TransactionUser(IDSchema, Schema):
10 public_name: str
11 avatar_url: str
14class TransactionPledge(IDSchema, TimestampedSchema):
15 state: PledgeState
16 issue_reference: str
19class TransactionOrganization(IDSchema, TimestampedSchema):
20 name: str
21 slug: str
22 avatar_url: str | None
25class TransactionIssueReward(IDSchema, TimestampedSchema):
26 issue_reference: str
27 share_thousands: int
30class TransactionProduct(IDSchema, TimestampedSchema):
31 name: str
32 recurring_interval: SubscriptionRecurringInterval | None
33 organization_id: UUID4 | None
34 organization: TransactionOrganization | None
37class TransactionOrder(IDSchema, TimestampedSchema):
38 product: TransactionProduct | None
39 subscription_id: UUID4 | None
42class TransactionEmbedded(IDSchema, TimestampedSchema):
43 type: TransactionType
44 processor: Processor | None
46 currency: str
47 amount: int
48 account_currency: str
49 account_amount: int
51 platform_fee_type: PlatformFeeType | None
53 pledge_id: UUID4 | None
54 issue_reward_id: UUID4 | None
55 order_id: UUID4 | None
57 payout_transaction_id: UUID4 | None
58 incurred_by_transaction_id: UUID4 | None
61class Transaction(TransactionEmbedded):
62 pledge: TransactionPledge | None
63 issue_reward: TransactionIssueReward | None
64 order: TransactionOrder | None
66 account_incurred_transactions: list[TransactionEmbedded]
68 incurred_amount: int
69 gross_amount: int
70 net_amount: int
73class TransactionDetails(Transaction):
74 paid_transactions: list[Transaction]
77class TransactionsBalance(Schema):
78 currency: str
79 amount: int
80 account_currency: str
81 account_amount: int
84class TransactionsSummary(Schema):
85 balance: TransactionsBalance
86 payout: TransactionsBalance