182 lines
4.2 KiB
Python
182 lines
4.2 KiB
Python
from datetime import datetime
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
# API Response Schemas (matching TCGPlayer API structure)
|
|
class TCGPlayerAPIOrderProduct(BaseModel):
|
|
name: str
|
|
unitPrice: float
|
|
extendedPrice: float
|
|
quantity: int
|
|
url: str
|
|
productId: str
|
|
skuId: str
|
|
|
|
class TCGPlayerAPIOrderTax(BaseModel):
|
|
code: str
|
|
amount: float
|
|
|
|
class TCGPlayerAPIOrderTransaction(BaseModel):
|
|
productAmount: float
|
|
shippingAmount: float
|
|
grossAmount: float
|
|
feeAmount: float
|
|
netAmount: float
|
|
directFeeAmount: float
|
|
taxes: List[TCGPlayerAPIOrderTax]
|
|
|
|
class TCGPlayerAPIOrderRefund(BaseModel):
|
|
createdAt: datetime
|
|
type: str
|
|
amount: float
|
|
description: Optional[str] = None
|
|
origin: str
|
|
shippingAmount: float
|
|
products: List[dict]
|
|
|
|
class TCGPlayerAPIOrderShippingAddress(BaseModel):
|
|
recipientName: str
|
|
addressOne: str
|
|
addressTwo: Optional[str] = None
|
|
city: str
|
|
territory: str
|
|
country: str
|
|
postalCode: str
|
|
|
|
class TCGPlayerAPIOrderTrackingNumber(BaseModel):
|
|
createdAt: str
|
|
carrier: str
|
|
trackingNumber: str
|
|
status: str
|
|
|
|
class TCGPlayerAPIOrder(BaseModel):
|
|
createdAt: str
|
|
status: str
|
|
orderChannel: str
|
|
orderFulfillment: str
|
|
orderNumber: str
|
|
sellerName: str
|
|
buyerName: str
|
|
paymentType: str
|
|
pickupStatus: str
|
|
shippingType: str
|
|
estimatedDeliveryDate: datetime
|
|
transaction: TCGPlayerAPIOrderTransaction
|
|
shippingAddress: TCGPlayerAPIOrderShippingAddress
|
|
products: List[TCGPlayerAPIOrderProduct]
|
|
refunds: Optional[List[TCGPlayerAPIOrderRefund]]
|
|
refundStatus: str
|
|
trackingNumbers: List[TCGPlayerAPIOrderTrackingNumber]
|
|
allowedActions: List[str]
|
|
|
|
class TCGPlayerAPIOrderSummary(BaseModel):
|
|
orderNumber: str
|
|
orderDate: datetime
|
|
orderChannel: str
|
|
orderStatus: str
|
|
buyerName: str
|
|
shippingType: str
|
|
productAmount: float
|
|
shippingAmount: float
|
|
totalAmount: float
|
|
buyerPaid: bool
|
|
orderFulfillment: str
|
|
|
|
class TCGPlayerAPIOrderSearchResponse(BaseModel):
|
|
totalOrders: int
|
|
orders: List[TCGPlayerAPIOrderSummary]
|
|
# Database Schemas (matching your internal structure)
|
|
class TCGPlayerOrderBase(BaseModel):
|
|
order_number: str
|
|
order_created_at: datetime
|
|
status: str
|
|
channel: str
|
|
fulfillment: str
|
|
seller_name: str
|
|
buyer_name: str
|
|
payment_type: str
|
|
pickup_status: str
|
|
shipping_type: str
|
|
estimated_delivery_date: Optional[datetime]
|
|
recipient_name: str
|
|
address_line_1: str
|
|
address_line_2: Optional[str]
|
|
city: str
|
|
state: str
|
|
zip_code: str
|
|
country: str
|
|
tracking_numbers: List[str]
|
|
|
|
class TCGPlayerOrderCreate(TCGPlayerOrderBase):
|
|
pass
|
|
|
|
class TCGPlayerOrder(TCGPlayerOrderBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TCGPlayerOrderTransactionBase(BaseModel):
|
|
order_number: str
|
|
product_amount: float
|
|
shipping_amount: float
|
|
gross_amount: float
|
|
fee_amount: float
|
|
net_amount: float
|
|
direct_fee_amount: float
|
|
taxes: List[dict]
|
|
|
|
class TCGPlayerOrderTransactionCreate(TCGPlayerOrderTransactionBase):
|
|
pass
|
|
|
|
class TCGPlayerOrderTransaction(TCGPlayerOrderTransactionBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TCGPlayerOrderProductBase(BaseModel):
|
|
order_number: str
|
|
product_name: str
|
|
unit_price: float
|
|
extended_price: float
|
|
quantity: int
|
|
url: str
|
|
product_id: str
|
|
sku_id: str
|
|
|
|
class TCGPlayerOrderProductCreate(TCGPlayerOrderProductBase):
|
|
pass
|
|
|
|
class TCGPlayerOrderProduct(TCGPlayerOrderProductBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TCGPlayerOrderRefundBase(BaseModel):
|
|
order_number: str
|
|
refund_created_at: datetime
|
|
type: str
|
|
amount: float
|
|
description: Optional[str] = None
|
|
origin: str
|
|
shipping_amount: float
|
|
products: List[dict]
|
|
|
|
class TCGPlayerOrderRefundCreate(TCGPlayerOrderRefundBase):
|
|
pass
|
|
|
|
class TCGPlayerOrderRefund(TCGPlayerOrderRefundBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True |