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())
Користите варијанте _detailed када треба да разликујете 403 (кључу недостаје дозвола) од 404.
Шта даље
- Водич на нашем веб-сајту: zinndigital.com/developers/sdk-python
- Свака крајња тачка, њени параметри и њена дозвола: zinndigital.com/developers/api
- Пакет на PyPI: pypi.org/project/zinn-sdk