|
|
from typing import Dict, List, Optional |
|
|
from pydantic import BaseModel, Field, validator, field_validator |
|
|
from datetime import datetime |
|
|
|
|
|
|
|
|
class PsxStock(BaseModel): |
|
|
script_code: str |
|
|
script_name: str |
|
|
ldcp: str |
|
|
open: str |
|
|
high: str |
|
|
low: str |
|
|
current: str |
|
|
change: str |
|
|
volume: str |
|
|
trend: str |
|
|
|
|
|
|
|
|
class PsxMarketResponse(BaseModel): |
|
|
sectors: Dict[str, List[PsxStock]] |
|
|
|
|
|
|
|
|
|
|
|
class CircuitBreaker(BaseModel): |
|
|
lower_limit: float = Field(..., alias="lowerLimit") |
|
|
upper_limit: float = Field(..., alias="upperLimit") |
|
|
current_price: float = Field(..., alias="currentPrice") |
|
|
|
|
|
class DayRange(BaseModel): |
|
|
low: float |
|
|
high: float |
|
|
current: float |
|
|
|
|
|
class YearRange(BaseModel): |
|
|
low: float |
|
|
high: float |
|
|
current: float |
|
|
|
|
|
class TradingStats(BaseModel): |
|
|
open_price: Optional[float] = Field(None, alias="open") |
|
|
high_price: Optional[float] = Field(None, alias="high") |
|
|
low_price: Optional[float] = Field(None, alias="low") |
|
|
close_price: Optional[float] = Field(None, alias="close") |
|
|
volume: Optional[int] = None |
|
|
ask_price: Optional[float] = Field(None, alias="askPrice") |
|
|
ask_volume: Optional[int] = Field(None, alias="askVolume") |
|
|
bid_price: Optional[float] = Field(None, alias="bidPrice") |
|
|
bid_volume: Optional[int] = Field(None, alias="bidVolume") |
|
|
ldcp: Optional[float] = None |
|
|
var: Optional[float] = None |
|
|
haircut: Optional[float] = None |
|
|
pe_ratio: Optional[float] = Field(None, alias="peRatio") |
|
|
|
|
|
class QuoteData(BaseModel): |
|
|
company_name: str = Field(..., alias="companyName") |
|
|
symbol: str |
|
|
sector: str |
|
|
current_price: float = Field(..., alias="currentPrice") |
|
|
change: float |
|
|
change_percent: float = Field(..., alias="changePercent") |
|
|
circuit_breaker: CircuitBreaker |
|
|
day_range: DayRange = Field(..., alias="dayRange") |
|
|
year_range: YearRange = Field(..., alias="yearRange") |
|
|
trading_stats: TradingStats = Field(..., alias="tradingStats") |
|
|
one_year_change: Optional[float] = Field(None, alias="oneYearChange") |
|
|
ytd_change: Optional[float] = Field(None, alias="ytdChange") |
|
|
|
|
|
class FinancialResult(BaseModel): |
|
|
date: str |
|
|
title: str |
|
|
document_link: Optional[str] = Field(None, alias="documentLink") |
|
|
pdf_link: Optional[str] = Field(None, alias="pdfLink") |
|
|
|
|
|
class FinancialEntry(BaseModel): |
|
|
period: str |
|
|
sales: Optional[float] = None |
|
|
profit_after_tax: Optional[float] = Field(None, alias="profitAfterTax") |
|
|
eps: Optional[float] = None |
|
|
|
|
|
class Financials(BaseModel): |
|
|
annual: List[FinancialEntry] |
|
|
quarterly: List[FinancialEntry] |
|
|
|
|
|
class RatioEntry(BaseModel): |
|
|
period: str |
|
|
gross_profit_margin: Optional[float] = Field(None, alias="grossProfitMargin") |
|
|
net_profit_margin: Optional[float] = Field(None, alias="netProfitMargin") |
|
|
eps_growth: Optional[float] = Field(None, alias="epsGrowth") |
|
|
peg: Optional[float] = None |
|
|
|
|
|
class CompanyProfile(BaseModel): |
|
|
business_description: str = Field(..., alias="businessDescription") |
|
|
key_people: List[Dict[str, str]] = Field(..., alias="keyPeople") |
|
|
address: str |
|
|
website: str |
|
|
registrar: str |
|
|
auditor: str |
|
|
fiscal_year_end: str = Field(..., alias="fiscalYearEnd") |
|
|
|
|
|
class EquityProfile(BaseModel): |
|
|
market_cap: float = Field(..., alias="marketCap") |
|
|
shares: int |
|
|
free_float_units: int = Field(..., alias="freeFloatUnits") |
|
|
free_float_percent: float = Field(..., alias="freeFloatPercent") |
|
|
|
|
|
class CompanyData(BaseModel): |
|
|
|
|
|
|
|
|
|
|
|
announcements: List[FinancialResult] |
|
|
financials: Financials |
|
|
ratios: List[RatioEntry] |
|
|
timestamp: datetime = Field(default_factory=datetime.now) |
|
|
|
|
|
|
|
|
|
|
|
class CircuitBreakerRow(BaseModel): |
|
|
symbol: str |
|
|
ldcp: float |
|
|
open: float |
|
|
high: float |
|
|
low: float |
|
|
current: float |
|
|
change: float |
|
|
change_percent: float |
|
|
volume: int |
|
|
|
|
|
@field_validator( |
|
|
"ldcp", "open", "high", "low", "current", "change", "change_percent", |
|
|
mode="before" |
|
|
) |
|
|
@classmethod |
|
|
def parse_float(cls, v): |
|
|
return float(v.replace(",", "").replace("%", "")) |
|
|
|
|
|
@field_validator("volume", mode="before") |
|
|
@classmethod |
|
|
def parse_int(cls, v): |
|
|
return int(v.replace(",", "")) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from typing import Optional |
|
|
from pydantic import BaseModel |
|
|
|
|
|
|
|
|
|
|
|
class CountryName(BaseModel): |
|
|
field_1inch: str = Field(..., alias='1inch') |
|
|
aave: str |
|
|
ada: str |
|
|
aed: str |
|
|
afn: str |
|
|
agix: str |
|
|
akt: str |
|
|
algo: str |
|
|
all: str |
|
|
amd: str |
|
|
amp: str |
|
|
ang: str |
|
|
aoa: str |
|
|
ape: str |
|
|
apt: str |
|
|
ar: str |
|
|
arb: str |
|
|
ars: str |
|
|
atom: str |
|
|
aud: str |
|
|
avax: str |
|
|
awg: str |
|
|
axs: str |
|
|
azn: str |
|
|
bake: str |
|
|
bam: str |
|
|
bat: str |
|
|
bbd: str |
|
|
bch: str |
|
|
bdt: str |
|
|
bgn: str |
|
|
bhd: str |
|
|
bif: str |
|
|
bmd: str |
|
|
bnb: str |
|
|
bnd: str |
|
|
bob: str |
|
|
brl: str |
|
|
bsd: str |
|
|
bsv: str |
|
|
bsw: str |
|
|
btc: str |
|
|
btg: str |
|
|
btn: str |
|
|
btt: str |
|
|
busd: str |
|
|
bwp: str |
|
|
byn: str |
|
|
byr: str |
|
|
bzd: str |
|
|
cad: str |
|
|
cake: str |
|
|
cdf: str |
|
|
celo: str |
|
|
cfx: str |
|
|
chf: str |
|
|
chz: str |
|
|
clp: str |
|
|
cnh: str |
|
|
cny: str |
|
|
comp: str |
|
|
cop: str |
|
|
crc: str |
|
|
cro: str |
|
|
crv: str |
|
|
cspr: str |
|
|
cuc: str |
|
|
cup: str |
|
|
cve: str |
|
|
cvx: str |
|
|
czk: str |
|
|
dai: str |
|
|
dash: str |
|
|
dcr: str |
|
|
dfi: str |
|
|
djf: str |
|
|
dkk: str |
|
|
doge: str |
|
|
dop: str |
|
|
dot: str |
|
|
dydx: str |
|
|
dzd: str |
|
|
egld: str |
|
|
egp: str |
|
|
enj: str |
|
|
eos: str |
|
|
ern: str |
|
|
etb: str |
|
|
etc: str |
|
|
eth: str |
|
|
eur: str |
|
|
fei: str |
|
|
fil: str |
|
|
fjd: str |
|
|
fkp: str |
|
|
flow: str |
|
|
flr: str |
|
|
frax: str |
|
|
ftt: str |
|
|
gala: str |
|
|
gbp: str |
|
|
gel: str |
|
|
ggp: str |
|
|
ghs: str |
|
|
gip: str |
|
|
gmd: str |
|
|
gmx: str |
|
|
gnf: str |
|
|
gno: str |
|
|
grt: str |
|
|
gt: str |
|
|
gtq: str |
|
|
gusd: str |
|
|
gyd: str |
|
|
hbar: str |
|
|
hkd: str |
|
|
hnl: str |
|
|
hnt: str |
|
|
hot: str |
|
|
hrk: str |
|
|
ht: str |
|
|
htg: str |
|
|
huf: str |
|
|
icp: str |
|
|
idr: str |
|
|
ils: str |
|
|
imp: str |
|
|
imx: str |
|
|
inj: str |
|
|
inr: str |
|
|
iqd: str |
|
|
irr: str |
|
|
isk: str |
|
|
jep: str |
|
|
jmd: str |
|
|
jod: str |
|
|
jpy: str |
|
|
kas: str |
|
|
kava: str |
|
|
kcs: str |
|
|
kda: str |
|
|
kes: str |
|
|
kgs: str |
|
|
khr: str |
|
|
kmf: str |
|
|
knc: str |
|
|
kpw: str |
|
|
krw: str |
|
|
ksm: str |
|
|
kwd: str |
|
|
kyd: str |
|
|
kzt: str |
|
|
lak: str |
|
|
lbp: str |
|
|
ldo: str |
|
|
leo: str |
|
|
link: str |
|
|
lkr: str |
|
|
lrc: str |
|
|
lrd: str |
|
|
lsl: str |
|
|
ltc: str |
|
|
ltl: str |
|
|
luna: str |
|
|
lunc: str |
|
|
lvl: str |
|
|
lyd: str |
|
|
mad: str |
|
|
mana: str |
|
|
mbx: str |
|
|
mdl: str |
|
|
mga: str |
|
|
mina: str |
|
|
mkd: str |
|
|
mkr: str |
|
|
mmk: str |
|
|
mnt: str |
|
|
mop: str |
|
|
mru: str |
|
|
mur: str |
|
|
mvr: str |
|
|
mwk: str |
|
|
mxn: str |
|
|
myr: str |
|
|
mzn: str |
|
|
nad: str |
|
|
near: str |
|
|
neo: str |
|
|
nexo: str |
|
|
nft: str |
|
|
ngn: str |
|
|
nio: str |
|
|
nok: str |
|
|
npr: str |
|
|
nzd: str |
|
|
okb: str |
|
|
omr: str |
|
|
one: str |
|
|
op: str |
|
|
ordi: str |
|
|
pab: str |
|
|
paxg: str |
|
|
pen: str |
|
|
pepe: str |
|
|
pgk: str |
|
|
php: str |
|
|
pi: str |
|
|
pkr: str |
|
|
pln: str |
|
|
pol: str |
|
|
pyg: str |
|
|
qar: str |
|
|
qnt: str |
|
|
qtum: str |
|
|
ron: str |
|
|
rpl: str |
|
|
rsd: str |
|
|
rub: str |
|
|
rune: str |
|
|
rvn: str |
|
|
rwf: str |
|
|
sand: str |
|
|
sar: str |
|
|
sbd: str |
|
|
scr: str |
|
|
sdg: str |
|
|
sek: str |
|
|
sgd: str |
|
|
shib: str |
|
|
shp: str |
|
|
sle: str |
|
|
sll: str |
|
|
snx: str |
|
|
sol: str |
|
|
sos: str |
|
|
srd: str |
|
|
std: str |
|
|
stn: str |
|
|
stx: str |
|
|
sui: str |
|
|
svc: str |
|
|
syp: str |
|
|
szl: str |
|
|
thb: str |
|
|
theta: str |
|
|
tjs: str |
|
|
tmt: str |
|
|
tnd: str |
|
|
ton: str |
|
|
top: str |
|
|
trx: str |
|
|
try_: str = Field(..., alias='try') |
|
|
ttd: str |
|
|
tusd: str |
|
|
twd: str |
|
|
twt: str |
|
|
tzs: str |
|
|
uah: str |
|
|
ugx: str |
|
|
uni: str |
|
|
usd: str |
|
|
usdc: str |
|
|
usdd: str |
|
|
usdp: str |
|
|
usdt: str |
|
|
uyu: str |
|
|
uzs: str |
|
|
ves: str |
|
|
vet: str |
|
|
vnd: str |
|
|
vuv: str |
|
|
waves: str |
|
|
wemix: str |
|
|
woo: str |
|
|
wst: str |
|
|
xaf: str |
|
|
xag: str |
|
|
xau: str |
|
|
xaut: str |
|
|
xcd: str |
|
|
xcg: str |
|
|
xch: str |
|
|
xdc: str |
|
|
xdr: str |
|
|
xec: str |
|
|
xem: str |
|
|
xlm: str |
|
|
xmr: str |
|
|
xof: str |
|
|
xpf: str |
|
|
xrp: str |
|
|
xtz: str |
|
|
yer: str |
|
|
zar: str |
|
|
zec: str |
|
|
zil: str |
|
|
zmk: str |
|
|
zmw: str |
|
|
zwl: str |
|
|
|
|
|
|
|
|
|
|
|
class PkrRates(BaseModel): |
|
|
"""Model for PKR exchange rates against various currencies""" |
|
|
|
|
|
inch: float = Field(..., alias='1inch') |
|
|
aave: Optional[float] = 0.000027870604 |
|
|
ada: Optional[float] = 0.01212527 |
|
|
aed: Optional[float] = 0.013141508 |
|
|
afn: Optional[float] = 0.22735161 |
|
|
agix: Optional[float] = 0.046521451 |
|
|
akt: Optional[float] = 0.010385581 |
|
|
algo: Optional[float] = 0.036216193 |
|
|
all: Optional[float] = 0.29080989 |
|
|
amd: Optional[float] = 1.36284581 |
|
|
amp: Optional[float] = 2.24984732 |
|
|
ang: Optional[float] = 0.0064189272 |
|
|
aoa: Optional[float] = 3.27135551 |
|
|
ape: Optional[float] = 0.026637767 |
|
|
apt: Optional[float] = 0.0036678014 |
|
|
ar: Optional[float] = 0.0017025592 |
|
|
arb: Optional[float] = 0.02994547 |
|
|
ars: Optional[float] = 4.99480145 |
|
|
atom: Optional[float] = 0.0016563239 |
|
|
ats: Optional[float] = 0.041480256 |
|
|
aud: Optional[float] = 0.0050590778 |
|
|
avax: Optional[float] = 0.00037492198 |
|
|
awg: Optional[float] = 0.0064052552 |
|
|
axs: Optional[float] = 0.0024467576 |
|
|
azm: Optional[float] = 30.44265554 |
|
|
azn: Optional[float] = 0.0060885311 |
|
|
bake: Optional[float] = 1.34151212 |
|
|
bam: Optional[float] = 0.0058958256 |
|
|
bat: Optional[float] = 0.026497622 |
|
|
bbd: Optional[float] = 0.0071567097 |
|
|
bch: Optional[float] = 0.000006389789 |
|
|
bdt: Optional[float] = 0.43772915 |
|
|
bef: Optional[float] = 0.12160414 |
|
|
bgn: Optional[float] = 0.0058958256 |
|
|
bhd: Optional[float] = 0.0013454614 |
|
|
bif: Optional[float] = 10.57869332 |
|
|
bmd: Optional[float] = 0.0035783548 |
|
|
bnb: Optional[float] = 0.0000056818118 |
|
|
bnd: Optional[float] = 0.0045205631 |
|
|
bob: Optional[float] = 0.024734743 |
|
|
brl: Optional[float] = 0.018678264 |
|
|
bsd: Optional[float] = 0.0035783548 |
|
|
bsv: Optional[float] = 0.00020956946 |
|
|
bsw: Optional[float] = 1.81327133 |
|
|
btc: Optional[float] = 0.000000051457291 |
|
|
btg: Optional[float] = 0.0041817238 |
|
|
btn: Optional[float] = 0.32404079 |
|
|
btt: Optional[float] = 10075.74928564 |
|
|
busd: Optional[float] = 0.0035764397 |
|
|
bwp: Optional[float] = 0.046911298 |
|
|
byn: Optional[float] = 0.010237608 |
|
|
byr: Optional[float] = 102.37607704 |
|
|
bzd: Optional[float] = 0.0071995125 |
|
|
cad: Optional[float] = 0.0048731761 |
|
|
cake: Optional[float] = 0.0026684964 |
|
|
cdf: Optional[float] = 8.1224622 |
|
|
celo: Optional[float] = 0.039886713 |
|
|
cfx: Optional[float] = 0.062977778 |
|
|
chf: Optional[float] = 0.0027485132 |
|
|
chz: Optional[float] = 0.084007786 |
|
|
clp: Optional[float] = 3.08238532 |
|
|
cnh: Optional[float] = 0.024695302 |
|
|
cny: Optional[float] = 0.024721696 |
|
|
comp: Optional[float] = 0.00017687447 |
|
|
cop: Optional[float] = 13.09720649 |
|
|
crc: Optional[float] = 1.72893021 |
|
|
cro: Optional[float] = 0.043457367 |
|
|
crv: Optional[float] = 0.013495293 |
|
|
cspr: Optional[float] = 0.99753074 |
|
|
cuc: Optional[float] = 0.0035783548 |
|
|
cup: Optional[float] = 0.085787938 |
|
|
cve: Optional[float] = 0.33240757 |
|
|
cvx: Optional[float] = 0.001812335 |
|
|
cyp: Optional[float] = 0.0017643013 |
|
|
czk: Optional[float] = 0.073152658 |
|
|
dai: Optional[float] = 0.0035784301 |
|
|
dash: Optional[float] = 0.000088593379 |
|
|
dcr: Optional[float] = 0.00014578477 |
|
|
dem: Optional[float] = 0.0058958256 |
|
|
dfi: Optional[float] = 5.35164713 |
|
|
djf: Optional[float] = 0.63819024 |
|
|
dkk: Optional[float] = 0.022531693 |
|
|
doge: Optional[float] = 0.03161875 |
|
|
dop: Optional[float] = 0.2223377 |
|
|
dot: Optional[float] = 0.0025389979 |
|
|
dydx: Optional[float] = 0.031888397 |
|
|
dzd: Optional[float] = 0.46388719 |
|
|
eek: Optional[float] = 0.047166605 |
|
|
egld: Optional[float] = 0.00068601026 |
|
|
egp: Optional[float] = 0.16730156 |
|
|
enj: Optional[float] = 0.15902853 |
|
|
eos: Optional[float] = 0.040239152 |
|
|
ern: Optional[float] = 0.053675323 |
|
|
esp: Optional[float] = 0.50156856 |
|
|
etb: Optional[float] = 0.55621057 |
|
|
etc: Optional[float] = 0.0003995226 |
|
|
eth: Optional[float] = 0.0000017365799 |
|
|
eur: Optional[float] = 0.0030144878 |
|
|
eurc: Optional[float] = 0.0030166921 |
|
|
fei: Optional[float] = 0.0035090934 |
|
|
fil: Optional[float] = 0.0035277925 |
|
|
fim: Optional[float] = 0.01792333 |
|
|
fjd: Optional[float] = 0.0078727543 |
|
|
fkp: Optional[float] = 0.0026213082 |
|
|
flow: Optional[float] = 0.07995228 |
|
|
flr: Optional[float] = 0.36052625 |
|
|
frax: Optional[float] = 0.0036090592 |
|
|
frf: Optional[float] = 0.019773744 |
|
|
ftt: Optional[float] = 0.010051534 |
|
|
gala: Optional[float] = 0.83330051 |
|
|
gbp: Optional[float] = 0.0026213082 |
|
|
gel: Optional[float] = 0.009591452 |
|
|
ggp: Optional[float] = 0.0026213082 |
|
|
ghc: Optional[float] = 393.42404137 |
|
|
ghs: Optional[float] = 0.039342404 |
|
|
gip: Optional[float] = 0.0026213082 |
|
|
gmd: Optional[float] = 0.26411095 |
|
|
gmx: Optional[float] = 0.00054220394 |
|
|
gnf: Optional[float] = 31.40305737 |
|
|
gno: Optional[float] = 0.000027069202 |
|
|
grd: Optional[float] = 1.02718671 |
|
|
grt: Optional[float] = 0.12436019 |
|
|
gt: Optional[float] = 0.0004932477 |
|
|
gtq: Optional[float] = 0.027422428 |
|
|
gusd: Optional[float] = 0.0035820834 |
|
|
gyd: Optional[float] = 0.74824559 |
|
|
hbar: Optional[float] = 0.03468262 |
|
|
hkd: Optional[float] = 0.02797238 |
|
|
hnl: Optional[float] = 0.094857481 |
|
|
hnt: Optional[float] = 0.0031545799 |
|
|
hot: Optional[float] = 8.77272144 |
|
|
hrk: Optional[float] = 0.022712658 |
|
|
ht: Optional[float] = 0.014406174 |
|
|
htg: Optional[float] = 0.46996889 |
|
|
huf: Optional[float] = 1.14312086 |
|
|
icp: Optional[float] = 0.0014210805 |
|
|
idr: Optional[float] = 60.2210084 |
|
|
iep: Optional[float] = 0.002374102 |
|
|
ils: Optional[float] = 0.011043883 |
|
|
imp: Optional[float] = 0.0026213082 |
|
|
imx: Optional[float] = 0.020578292 |
|
|
inj: Optional[float] = 0.0010994197 |
|
|
inr: Optional[float] = 0.32404079 |
|
|
iqd: Optional[float] = 4.68801963 |
|
|
irr: Optional[float] = 4575.15188598 |
|
|
isk: Optional[float] = 0.43718127 |
|
|
itl: Optional[float] = 5.83686224 |
|
|
jep: Optional[float] = 0.0026213082 |
|
|
jmd: Optional[float] = 0.55854612 |
|
|
jod: Optional[float] = 0.0025370536 |
|
|
jpy: Optional[float] = 0.5464799 |
|
|
kas: Optional[float] = 0.10824109 |
|
|
kava: Optional[float] = 0.061803407 |
|
|
kcs: Optional[float] = 0.00041413697 |
|
|
kda: Optional[float] = 0.44424418 |
|
|
kes: Optional[float] = 0.46130149 |
|
|
kgs: Optional[float] = 0.31295651 |
|
|
khr: Optional[float] = 14.37682204 |
|
|
klay: Optional[float] = 0.05966859 |
|
|
kmf: Optional[float] = 1.48303077 |
|
|
knc: Optional[float] = 0.023756734 |
|
|
kpw: Optional[float] = 3.22057115 |
|
|
krw: Optional[float] = 5.15615217 |
|
|
ksm: Optional[float] = 0.00074242121 |
|
|
kwd: Optional[float] = 0.0010966712 |
|
|
kyd: Optional[float] = 0.0029556765 |
|
|
kzt: Optional[float] = 1.77225517 |
|
|
lak: Optional[float] = 76.63134176 |
|
|
lbp: Optional[float] = 321.24646567 |
|
|
ldo: Optional[float] = 0.010060335 |
|
|
leo: Optional[float] = 0.00040689885 |
|
|
link: Optional[float] = 0.00039577489 |
|
|
lkr: Optional[float] = 1.10636398 |
|
|
lrc: Optional[float] = 0.10452585 |
|
|
lrd: Optional[float] = 0.6665422 |
|
|
lsl: Optional[float] = 0.057056562 |
|
|
ltc: Optional[float] = 0.000064180737 |
|
|
ltl: Optional[float] = 0.010408423 |
|
|
luf: Optional[float] = 0.12160414 |
|
|
luna: Optional[float] = 0.055650373 |
|
|
lunc: Optional[float] = 103.17056374 |
|
|
lvl: Optional[float] = 0.002118582 |
|
|
lyd: Optional[float] = 0.022530779 |
|
|
mad: Optional[float] = 0.032674995 |
|
|
mana: Optional[float] = 0.033309473 |
|
|
mbx: Optional[float] = 0.067994222 |
|
|
mdl: Optional[float] = 0.060616726 |
|
|
mga: Optional[float] = 15.70701508 |
|
|
mgf: Optional[float] = 78.53507542 |
|
|
mina: Optional[float] = 0.052000424 |
|
|
mkd: Optional[float] = 0.18573365 |
|
|
mkr: Optional[float] = 0.0000021884969 |
|
|
mmk: Optional[float] = 7.5133109 |
|
|
mnt: Optional[float] = 12.76193802 |
|
|
mop: Optional[float] = 0.028811551 |
|
|
mro: Optional[float] = 1.42969127 |
|
|
mru: Optional[float] = 0.14296913 |
|
|
mtl: Optional[float] = 0.0012941196 |
|
|
mur: Optional[float] = 0.16422284 |
|
|
mvr: Optional[float] = 0.05529167 |
|
|
mwk: Optional[float] = 6.20471537 |
|
|
mxn: Optional[float] = 0.061423027 |
|
|
mxv: Optional[float] = 0.0070874814 |
|
|
myr: Optional[float] = 0.013980479 |
|
|
mzm: Optional[float] = 228.55055252 |
|
|
mzn: Optional[float] = 0.22855055 |
|
|
nad: Optional[float] = 0.057056562 |
|
|
near: Optional[float] = 0.0033478921 |
|
|
neo: Optional[float] = 0.0012221448 |
|
|
nexo: Optional[float] = 0.0041653116 |
|
|
nft: Optional[float] = 10324.6074446 |
|
|
ngn: Optional[float] = 4.85024477 |
|
|
nio: Optional[float] = 0.13151867 |
|
|
nlg: Optional[float] = 0.0066430568 |
|
|
nok: Optional[float] = 0.034016339 |
|
|
npr: Optional[float] = 0.51870829 |
|
|
nzd: Optional[float] = 0.0059255473 |
|
|
okb: Optional[float] = 0.000044555727 |
|
|
omr: Optional[float] = 0.0013744249 |
|
|
one: Optional[float] = 1.34065259 |
|
|
op: Optional[float] = 0.018308592 |
|
|
ordi: Optional[float] = 0.0012187735 |
|
|
pab: Optional[float] = 0.0035783548 |
|
|
paxg: Optional[float] = 0.0000007115336 |
|
|
pen: Optional[float] = 0.011999961 |
|
|
pepe: Optional[float] = 737.8067472 |
|
|
pgk: Optional[float] = 0.015333169 |
|
|
php: Optional[float] = 0.20716718 |
|
|
pi: Optional[float] = 0.018629944 |
|
|
pkr: Optional[float] = 1.0 |
|
|
pln: Optional[float] = 0.012697271 |
|
|
pol: Optional[float] = 0.033052428 |
|
|
pte: Optional[float] = 0.60435054 |
|
|
pyg: Optional[float] = 23.44895477 |
|
|
qar: Optional[float] = 0.013025212 |
|
|
qnt: Optional[float] = 0.000048647043 |
|
|
qtum: Optional[float] = 0.0034882245 |
|
|
rol: Optional[float] = 153.53159924 |
|
|
ron: Optional[float] = 0.01535316 |
|
|
rpl: Optional[float] = 0.0020615425 |
|
|
rsd: Optional[float] = 0.35404644 |
|
|
rub: Optional[float] = 0.27456613 |
|
|
rune: Optional[float] = 0.0085832862 |
|
|
rvn: Optional[float] = 0.56276866 |
|
|
rwf: Optional[float] = 5.21546965 |
|
|
sand: Optional[float] = 0.038975081 |
|
|
sar: Optional[float] = 0.013418831 |
|
|
sbd: Optional[float] = 0.028782375 |
|
|
scr: Optional[float] = 0.052206617 |
|
|
sdd: Optional[float] = 214.75529922 |
|
|
sdg: Optional[float] = 2.14755299 |
|
|
sek: Optional[float] = 0.031929605 |
|
|
sgd: Optional[float] = 0.0045205631 |
|
|
shib: Optional[float] = 518.99655842 |
|
|
shp: Optional[float] = 0.0026213082 |
|
|
sit: Optional[float] = 0.72239185 |
|
|
skk: Optional[float] = 0.090814459 |
|
|
sle: Optional[float] = 0.081765145 |
|
|
sll: Optional[float] = 81.76514481 |
|
|
snx: Optional[float] = 0.011623316 |
|
|
sol: Optional[float] = 0.000040638459 |
|
|
sos: Optional[float] = 2.04303502 |
|
|
spl: Optional[float] = 0.00059639247 |
|
|
srd: Optional[float] = 0.13559105 |
|
|
srg: Optional[float] = 135.59105178 |
|
|
ssp: Optional[float] = 16.29194282 |
|
|
std: Optional[float] = 74.1291884 |
|
|
stn: Optional[float] = 0.074129188 |
|
|
stx: Optional[float] = 0.012988158 |
|
|
sui: Optional[float] = 0.0034980047 |
|
|
svc: Optional[float] = 0.031310605 |
|
|
syp: Optional[float] = 0.3957423 |
|
|
szl: Optional[float] = 0.057056562 |
|
|
thb: Optional[float] = 0.11116065 |
|
|
theta: Optional[float] = 0.016388406 |
|
|
tjs: Optional[float] = 0.033782985 |
|
|
tmm: Optional[float] = 62.54995053 |
|
|
tmt: Optional[float] = 0.01250999 |
|
|
tnd: Optional[float] = 0.010272105 |
|
|
ton: Optional[float] = 0.0024115185 |
|
|
top: Optional[float] = 0.0084204575 |
|
|
trl: Optional[float] = 156077.25045115 |
|
|
trx: Optional[float] = 0.012694543 |
|
|
try_: float = Field(..., alias='try') |
|
|
ttd: Optional[float] = 0.024142566 |
|
|
tusd: Optional[float] = 0.0035839966 |
|
|
tvd: Optional[float] = 0.0050590778 |
|
|
twd: Optional[float] = 0.11230099 |
|
|
twt: Optional[float] = 0.0068069886 |
|
|
tzs: Optional[float] = 9.23521055 |
|
|
uah: Optional[float] = 0.15408012 |
|
|
ugx: Optional[float] = 12.66715156 |
|
|
uni: Optional[float] = 0.00098728734 |
|
|
usd: Optional[float] = 0.0035783548 |
|
|
usdc: Optional[float] = 0.0035786866 |
|
|
usdd: Optional[float] = 0.0035802976 |
|
|
usdp: Optional[float] = 0.0035803197 |
|
|
usdt: Optional[float] = 0.003579871 |
|
|
uyu: Optional[float] = 0.13856147 |
|
|
uzs: Optional[float] = 43.73539013 |
|
|
val: Optional[float] = 5.83686224 |
|
|
veb: Optional[float] = 140480603.3195581 |
|
|
ved: Optional[float] = 1.40480603 |
|
|
vef: Optional[float] = 140480.60331956 |
|
|
ves: Optional[float] = 1.40480603 |
|
|
vet: Optional[float] = 0.40967996 |
|
|
vnd: Optional[float] = 92.87837846 |
|
|
vuv: Optional[float] = 0.42560658 |
|
|
waves: Optional[float] = 0.0063235068 |
|
|
wemix: Optional[float] = 0.011294285 |
|
|
woo: Optional[float] = 0.19966932 |
|
|
wst: Optional[float] = 0.0097052715 |
|
|
xaf: Optional[float] = 1.97737435 |
|
|
xag: Optional[float] = 0.000046224216 |
|
|
xau: Optional[float] = 0.00000070955592 |
|
|
xaut: Optional[float] = 0.0000007159874 |
|
|
xbt: Optional[float] = 0.000000051485012 |
|
|
xcd: Optional[float] = 0.0096659557 |
|
|
xcg: Optional[float] = 0.0064189272 |
|
|
xch: Optional[float] = 0.0011740879 |
|
|
xdc: Optional[float] = 0.095836852 |
|
|
xdr: Optional[float] = 0.0026022409 |
|
|
xec: Optional[float] = 417.58644553 |
|
|
xem: Optional[float] = 4.50114505 |
|
|
xlm: Optional[float] = 0.020355646 |
|
|
xmr: Optional[float] = 0.000010185332 |
|
|
xof: Optional[float] = 1.97737435 |
|
|
xpd: Optional[float] = 0.0000020938589 |
|
|
xpf: Optional[float] = 0.35972408 |
|
|
xpt: Optional[float] = 0.0000017299438 |
|
|
xrp: Optional[float] = 0.0023407297 |
|
|
xtz: Optional[float] = 0.0085248659 |
|
|
yer: Optional[float] = 0.85292226 |
|
|
zar: Optional[float] = 0.057056562 |
|
|
zec: Optional[float] = 0.000010949103 |
|
|
zil: Optional[float] = 0.79280654 |
|
|
zmk: Optional[float] = 65.25187985 |
|
|
zmw: Optional[float] = 0.06525188 |
|
|
zwd: Optional[float] = 1.29500661 |
|
|
zwg: Optional[float] = 0.091476953 |
|
|
zwl: Optional[float] = 228.57567566 |
|
|
|
|
|
|
|
|
class ExchangeRateResponse(BaseModel): |
|
|
"""Main model for exchange rate data""" |
|
|
date: datetime |
|
|
pkr: PkrRates |
|
|
|
|
|
|
|
|
|
|
|
class CurrencyResponse(BaseModel): |
|
|
country: str |
|
|
currency: float |
|
|
|
|
|
class CurrencyCountryResponse(BaseModel): |
|
|
response: List[CurrencyResponse] |
|
|
|
|
|
|
|
|
|