# generated by fastapi-codegen:
# filename: openapi.yaml
# timestamp: 2025-06-29T08:11:47+00:00
from __future__ import annotations
from enum import Enum
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, EmailStr, Field
class Country(Enum):
AC = 'AC'
AD = 'AD'
AE = 'AE'
AF = 'AF'
AG = 'AG'
AI = 'AI'
AL = 'AL'
AM = 'AM'
AO = 'AO'
AQ = 'AQ'
AR = 'AR'
AS = 'AS'
AT = 'AT'
AU = 'AU'
AW = 'AW'
AX = 'AX'
AZ = 'AZ'
BA = 'BA'
BB = 'BB'
BD = 'BD'
BE = 'BE'
BF = 'BF'
BG = 'BG'
BH = 'BH'
BI = 'BI'
BJ = 'BJ'
BM = 'BM'
BN = 'BN'
BO = 'BO'
BQ = 'BQ'
BR = 'BR'
BS = 'BS'
BT = 'BT'
BV = 'BV'
BW = 'BW'
BY = 'BY'
BZ = 'BZ'
CA = 'CA'
CC = 'CC'
CD = 'CD'
CF = 'CF'
CG = 'CG'
CH = 'CH'
CI = 'CI'
CK = 'CK'
CL = 'CL'
CM = 'CM'
CN = 'CN'
CO = 'CO'
CR = 'CR'
CV = 'CV'
CW = 'CW'
CX = 'CX'
CY = 'CY'
CZ = 'CZ'
DE = 'DE'
DJ = 'DJ'
DK = 'DK'
DM = 'DM'
DO = 'DO'
DZ = 'DZ'
EC = 'EC'
EE = 'EE'
EG = 'EG'
EH = 'EH'
ER = 'ER'
ES = 'ES'
ET = 'ET'
FI = 'FI'
FJ = 'FJ'
FK = 'FK'
FM = 'FM'
FO = 'FO'
FR = 'FR'
GA = 'GA'
GB = 'GB'
GD = 'GD'
GE = 'GE'
GF = 'GF'
GG = 'GG'
GH = 'GH'
GI = 'GI'
GL = 'GL'
GM = 'GM'
GN = 'GN'
GP = 'GP'
GQ = 'GQ'
GR = 'GR'
GS = 'GS'
GT = 'GT'
GU = 'GU'
GW = 'GW'
GY = 'GY'
HK = 'HK'
HM = 'HM'
HN = 'HN'
HR = 'HR'
HT = 'HT'
HU = 'HU'
ID = 'ID'
IE = 'IE'
IL = 'IL'
IM = 'IM'
IN = 'IN'
IO = 'IO'
IQ = 'IQ'
IS = 'IS'
IT = 'IT'
JE = 'JE'
JM = 'JM'
JO = 'JO'
JP = 'JP'
KE = 'KE'
KG = 'KG'
KH = 'KH'
KI = 'KI'
KM = 'KM'
KN = 'KN'
KR = 'KR'
KV = 'KV'
KW = 'KW'
KY = 'KY'
KZ = 'KZ'
LA = 'LA'
LB = 'LB'
LC = 'LC'
LI = 'LI'
LK = 'LK'
LR = 'LR'
LS = 'LS'
LT = 'LT'
LU = 'LU'
LV = 'LV'
LY = 'LY'
MA = 'MA'
MC = 'MC'
MD = 'MD'
ME = 'ME'
MG = 'MG'
MH = 'MH'
MK = 'MK'
ML = 'ML'
MM = 'MM'
MN = 'MN'
MO = 'MO'
MP = 'MP'
MQ = 'MQ'
MR = 'MR'
MS = 'MS'
MT = 'MT'
MU = 'MU'
MV = 'MV'
MW = 'MW'
MX = 'MX'
MY = 'MY'
MZ = 'MZ'
NA = 'NA'
NC = 'NC'
NE = 'NE'
NF = 'NF'
NG = 'NG'
NI = 'NI'
NL = 'NL'
NO = 'NO'
NP = 'NP'
NR = 'NR'
NU = 'NU'
NZ = 'NZ'
OM = 'OM'
PA = 'PA'
PE = 'PE'
PF = 'PF'
PG = 'PG'
PH = 'PH'
PK = 'PK'
PL = 'PL'
PM = 'PM'
PN = 'PN'
PR = 'PR'
PS = 'PS'
PT = 'PT'
PW = 'PW'
PY = 'PY'
QA = 'QA'
RE = 'RE'
RO = 'RO'
RS = 'RS'
RU = 'RU'
RW = 'RW'
SA = 'SA'
SB = 'SB'
SC = 'SC'
SE = 'SE'
SG = 'SG'
SH = 'SH'
SI = 'SI'
SJ = 'SJ'
SK = 'SK'
SL = 'SL'
SM = 'SM'
SN = 'SN'
SO = 'SO'
SR = 'SR'
ST = 'ST'
SV = 'SV'
SX = 'SX'
SZ = 'SZ'
TC = 'TC'
TD = 'TD'
TF = 'TF'
TG = 'TG'
TH = 'TH'
TJ = 'TJ'
TK = 'TK'
TL = 'TL'
TM = 'TM'
TN = 'TN'
TO = 'TO'
TP = 'TP'
TR = 'TR'
TT = 'TT'
TV = 'TV'
TW = 'TW'
TZ = 'TZ'
UA = 'UA'
UG = 'UG'
UM = 'UM'
US = 'US'
UY = 'UY'
UZ = 'UZ'
VA = 'VA'
VC = 'VC'
VE = 'VE'
VG = 'VG'
VI = 'VI'
VN = 'VN'
VU = 'VU'
WF = 'WF'
WS = 'WS'
YE = 'YE'
YT = 'YT'
ZA = 'ZA'
ZM = 'ZM'
ZW = 'ZW'
class Address(BaseModel):
address1: str
address2: Optional[str] = None
city: str
country: Country = Field(
...,
description="Two-letter ISO country code to be used as a hint for target region<br/><br/>\nNOTE: These are sample values, there are many\n<a href='http://www.iso.org/iso/country_codes.htm'>more</a>",
)
postalCode: str = Field(..., description='Postal or zip code')
state: str = Field(..., description='State or province or territory')
class Contact(BaseModel):
addressMailing: Address
email: EmailStr
fax: Optional[str] = None
jobTitle: Optional[str] = None
nameFirst: str
nameLast: str
nameMiddle: Optional[str] = None
organization: Optional[str] = None
phone: str
class ErrorField(BaseModel):
code: str = Field(
...,
description='Short identifier for the error, suitable for indicating the specific error within client code',
)
message: Optional[str] = Field(
None,
description='Human-readable, English description of the problem with the contents of the field',
)
path: str = Field(
...,
description="<ul>\n<li style='margin-left: 12px;'>JSONPath referring to a field containing an error</li>\n<strong style='margin-left: 12px;'>OR</strong>\n<li style='margin-left: 12px;'>JSONPath referring to a field that refers to an object containing an error, with more detail in `pathRelated`</li>\n</ul>",
)
pathRelated: Optional[str] = Field(
None,
description='JSONPath referring to a field containing an error, which is referenced by `path`',
)
class ErrorLimit(BaseModel):
code: str = Field(
...,
description='Short identifier for the error, suitable for indicating the specific error within client code',
)
fields: Optional[List[ErrorField]] = Field(
None,
description='List of the specific fields, and the errors found with their contents',
)
message: Optional[str] = Field(
None, description='Human-readable, English description of the error'
)
retryAfterSec: int = Field(
..., description='Number of seconds to wait before attempting a similar request'
)
class PeriodUnit(Enum):
MONTH = 'MONTH'
QUARTER = 'QUARTER'
SEMI_ANNUAL = 'SEMI_ANNUAL'
YEAR = 'YEAR'
ONE_TIME = 'ONE_TIME'
class LineItemPricingTaxDetail(BaseModel):
amount: Optional[int] = Field(None, description='Tax amount')
rate: Optional[float] = None
class LineItemSummary(BaseModel):
label: str = Field(..., description='Product label of the current line item')
class LineItemTaxCollector(BaseModel):
taxCollectorId: int = Field(..., description='Unique identifier for the company')
class OrderFee(BaseModel):
icann: Optional[int] = Field(
None, description='Domain registration transaction fee charged by ICANN'
)
total: int = Field(..., description='Sum of all fees')
class OrderPricing(BaseModel):
discount: int = Field(..., description='Discount from promotional pricing')
fees: OrderFee
id: Optional[float] = None
list: int = Field(..., description='Sum of list prices for the entire cart')
savings: int = Field(
...,
description='Savings off of list price <pre>`savings` = `list` - `subtotal`</pre>',
)
subtotal: int = Field(
..., description='Price with `discount` and without taxes or fees'
)
taxDetails: Optional[List[LineItemPricingTaxDetail]] = Field(
None, description='A collection of line item tax details'
)
taxes: int = Field(..., description='Taxes for the entire cart')
total: int = Field(
...,
description='Price the customer pays <pre>`total` = `subtotal` + `taxes` + `fees.total`</pre>',
)
class OrderSummaryPricing(BaseModel):
total: str = Field(
...,
description='Total amount charged for the current order. Negative for Refund and Chargeback',
)
class Pagination(BaseModel):
first: Optional[str] = Field(None, description='URI to access the first page')
last: Optional[str] = Field(None, description='URI to access the last page')
next: Optional[str] = Field(None, description='URI to access the next page')
previous: Optional[str] = Field(None, description='URI to access the previous page')
total: Optional[int] = Field(None, description='Number of records available')
class Category(Enum):
CREDIT_CARD = 'CREDIT_CARD'
PAYPAL = 'PAYPAL'
ACH = 'ACH'
GIFT_CARD = 'GIFT_CARD'
IN_STORE_CREDIT = 'IN_STORE_CREDIT'
PREPAID = 'PREPAID'
class Subcategory(Enum):
CHECKING_PERSONAL = 'CHECKING_PERSONAL'
CHECKING_BUSINESS = 'CHECKING_BUSINESS'
VISA = 'VISA'
MASTER_CARD = 'MASTER_CARD'
AMEX = 'AMEX'
JCB = 'JCB'
UNIONPAY = 'UNIONPAY'
class Payment(BaseModel):
amount: int = Field(..., description='Amount paid by the current payment')
category: Category = Field(
...,
description='The category of payment method used at the time of purchase.\nMost common values are listed in the enum.',
)
paymentProfileId: str = Field(
...,
description='Unique identifier of the payment profile used by current payment',
)
subcategory: Optional[Subcategory] = Field(
None,
description='The subcategory of payment method used at the time of purchase.\n This field is only set for certain payment categories, such as ACH and CREDIT_CARD.\nMost common values are listed in the enum.',
)
class Sort(Enum):
createdAt = 'createdAt'
field_createdAt = '-createdAt'
orderId = 'orderId'
field_orderId = '-orderId'
pricing_total = 'pricing.total'
field_pricing_total = '-pricing.total'
class BillTo(BaseModel):
contact: Contact
taxId: Optional[str] = Field(
None,
description='Tax id used for calculating the tax the customer is required to pay',
)
class Error(BaseModel):
code: str = Field(
...,
description='Short identifier for the error, suitable for indicating the specific error within client code',
)
fields: Optional[List[ErrorField]] = Field(
None,
description='List of the specific fields, and the errors found with their contents',
)
message: Optional[str] = Field(
None, description='Human-readable, English description of the error'
)
class LineItemPricing(BaseModel):
discount: int = Field(
...,
description='Discount off of sale price for given `quantity` and `period` <pre>`discount` = `sale` - `subtotal`</pre>',
)
fees: OrderFee
list: int = Field(..., description='List price for given `quantity` and `period`')
sale: int = Field(..., description='Actual price for the current product')
savings: int = Field(
...,
description='Savings off of list price for given `quantity` and `period` <pre>`savings` = `list` - `subtotal`</pre>',
)
subtotal: int = Field(
...,
description='Price with any discounts and without taxes or fees for given `quantity` and `period`',
)
taxes: int = Field(..., description='Taxes for given `quantity` and `period`')
unit: Dict[str, Any] = Field(
..., description='Pricing for a single unit of the given item'
)
class LineItemUnitPricing(BaseModel):
discount: int = Field(
..., description='Discount without consideration of `quantity` and `period`'
)
fees: OrderFee
list: int = Field(
..., description='List price without consideration of `quantity` and `period`'
)
sale: int = Field(
..., description='Sale price without consideration of `quantity` and `period`'
)
savings: int = Field(
..., description='Savings without consideration of `quantity` and `period`'
)
taxes: int = Field(
..., description='Taxes without consideration of `quantity` and `period`'
)
class OrderSummary(BaseModel):
createdAt: str = Field(
..., description='Date and time when the current order was created'
)
currency: str = Field(..., description='Currency in which the order was placed')
items: List[LineItemSummary] = Field(
..., description='Sets of two or more line items in current order'
)
orderId: str = Field(..., description='Unique identifier of the current order')
parentOrderId: Optional[str] = Field(
None,
description="Unique identifier of the parent order. All refund/chargeback orders are tied to the original order.\nThe orginal order's `orderId` is the `parentOrderId` of refund/chargeback orders",
)
pricing: OrderSummaryPricing
class LineItem(BaseModel):
domains: Optional[List[str]] = Field(
None,
description='A collection of domain names purchased if the current product is domain',
)
label: str = Field(
..., description='Human readable description of the current product'
)
period: Optional[float] = 1
periodUnit: Optional[PeriodUnit] = Field(
'MONTH', description='The unit of time that periodCount is measured in'
)
pfid: Optional[int] = Field(
None, description='Unique identifier of the current product'
)
pricing: LineItemPricing
quantity: int = Field(
..., description='Number of the current product included in the specified order'
)
taxCollector: Optional[LineItemTaxCollector] = None
class Order(BaseModel):
billTo: BillTo
createdAt: str = Field(
..., description='Date and time when the current order is created on'
)
currency: str = Field(
..., description='Currency in which the order has been placed'
)
items: List[LineItem]
orderId: str = Field(..., description='Unique identifier of current order')
parentOrderId: Optional[str] = Field(
None,
description="Unique identifier of the parent order. All refund/chargeback orders are tied to the original order.\nThe orginal order's `orderId` is the `parentOrderId` of refund/chargeback orders",
)
payments: List[Payment]
pricing: OrderPricing
class OrderList(BaseModel):
orders: List[OrderSummary] = Field(..., description='A collection of orders')
pagination: Pagination