zinn-sdk муштарии расмии Python-и мо барои Zinn Digital® API мебошад, ки дар PyPI нашр шудааст ва ҳамчун zinn_sdk ворид карда мешавад. Он аз ҳамон мушаххасоти OpenAPI тавлид ёфтааст, ки API аз он сохта шудааст, ҳар як амалиёт вариантҳои ҳамзамон ва asyncio дорад, ва ҳар вақте ки мушаххасот тағйир меёбад, нусхаи нав ба таври худкор нашр мешавад. Ин дастур онро насб мекунад, тасдиқи ҳаққоният менамояд ва дархостҳои аввалини шуморо иҷро мекунад.
Насб
pip install zinn-sdk
Он ба Python 3.11 ё навтар ниёз дорад ва таҳти иҷозатномаи MIT нашр шудааст.
Эҷоди калиди API
Саҳифаи Калидҳои API-ро дар панели идораи худ (app.zinndigital.com/api-keys) боз кунед ва Эҷоди калид-ро пахш намоед. Ба калид ном гузоред ва танҳо иҷозатҳоеро диҳед, ки рамзи шумо ба онҳо ниёз дорад — масалан sites.view барои рӯйхати сомонаҳо. Калид як маротиба намоиш дода мешавад; онро дар тағйирёбандаи муҳит ё нигоҳдорандаи махфии худ сабт кунед, ҳеҷ гоҳ дар рамзи аслӣ нагузоред. Шумо метавонед калидро дар дилхоҳ вақт дар ҳамон саҳифа бекор кунед.
Нуқтаҳои ниҳоии феҳристи умумӣ, ба монанди минтақаҳои мизбонӣ ва нақшаҳо, ба ягон калид ниёз надоранд.
Зангҳои аввалини шумо
import os
from zinn_sdk import AuthenticatedClient, Client
from zinn_sdk.api.catalog import list_public_hosting_regions
from zinn_sdk.api.hosting import list_sites
# Public catalogue endpoints need no key.
public = Client(base_url="https://api.zinndigital.com")
regions = list_public_hosting_regions.sync(client=public)
print([region.slug for region in regions.data])
# Everything else uses a per-organisation API key.
api = AuthenticatedClient(base_url="https://api.zinndigital.com", token=os.environ["ZINN_API_KEY"])
page = list_sites.sync(client=api, limit=5)
for site in page.data:
print(site.name, site.status)
Ёфтани амалиёт
Амалиётҳо аз рӯи минтақаи API дар зери zinn_sdk.api гурӯҳбандӣ шудаанд ва бо номи шиносаи амалиёти худ дар шакли snake case номгузорӣ шудаанд. Рӯйхати сомонаҳо дар zinn_sdk.api.hosting.list_sites аст; доменҳо ва DNS дар зери zinn_sdk.api.domains; биллинг дар зери zinn_sdk.api.billing. Маълумотномаи API шиносаи ҳар як амалиётро нишон медиҳад.
Ҳамзамон, ноҳамзамон ва посухи пурра
Ҳар як модули амалиёт дорои чор функсия мебошад:
sync(...) модели таҳлилшударо бармегардонад, ё None ҳангоми мақоми ғайричашмдошт.
sync_detailed(...) объекти Response-ро бо status_code, headers ва parsed бармегардонад.
asyncio(...) ва asyncio_detailed(...) якхела мебошанд, мунтазиршаванда (awaitable).
import asyncio
from zinn_sdk.api.hosting import list_sites
async def main() -> None:
response = await list_sites.asyncio_detailed(client=api, limit=5)
print(response.status_code, len(response.parsed.data))
asyncio.run(main())
Вақте ки шумо бояд 403-ро (ба калид иҷозат намерасад) аз 404 фарқ кунед, вариантҳои _detailed-ро истифода баред.
Минбаъд ба куҷо муроҷиат кардан мумкин аст
- Дастур дар вебгоҳи мо: zinndigital.com/developers/sdk-python
- Ҳар як нуқтаи ниҳоӣ, параметрҳои он ва иҷозати он: zinndigital.com/developers/api
- Баста дар PyPI: pypi.org/project/zinn-sdk