zinn-sdk je naš službeni Python klijent za Zinn Digital® API, objavljen na PyPI-ju i uvezen kao zinn_sdk. Generiran je iz iste OpenAPI specifikacije iz koje je izgrađen i sam API, svaka operacija ima synchronous i asyncio varijante, a nova verzija se automatski objavljuje kad god se specifikacija promijeni. Ovaj vodič ga instalira, autentificira i upućuje vaše prve pozive.
Instalacija
pip install zinn-sdk
Zahtijeva Python 3.11 ili noviji i licenciran je pod licencom MIT.
Stvorite API ključ
Otvorite stranicu API ključevi na svojoj upravljačkoj ploči (app.zinndigital.com/api-keys) i pritisnite Stvori ključ. Dodijelite ključu naziv i samo one dozvole koje su potrebne vašem kodu — na primjer sites.view za popis web-mjesta. Ključ se prikazuje samo jednom; spremite ga u varijablu okruženja ili u svoju sigurnu pohranu tajni, nikada u izvorni kod. Ključ možete opozvati u bilo kojem trenutku na istoj stranici.
Javne krajnje točke kataloga, poput regija hostinga i planova, uopće ne zahtijevaju ključ.
Vaši prvi pozivi
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)
Pronalaženje operacije
Operacije su grupirane prema području API-ja pod zinn_sdk.api i imenovane prema svojem ID-u operacije u snake case formatu. Popisivanje web-mjesta je zinn_sdk.api.hosting.list_sites; domene i DNS nalaze se pod zinn_sdk.api.domains; naplata je pod zinn_sdk.api.billing. Referenca API-ja prikazuje ID svake operacije.
Sinkrono, asinkrono i potpuni odgovor
Svaki modul operacije ima četiri funkcije:
sync(...) vraća parsirani model ili None pri neočekivanom statusu.
sync_detailed(...) vraća Response sa status_code, headers i parsed.
asyncio(...) i asyncio_detailed(...) jednaki su, uz podršku za čekanje (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())
Upotrijebite varijante _detailed kada trebate razlikovati 403 (ključu nedostaje dopuštenje) od 404.
Kamo dalje
- Vodič na našoj web-stranici: zinndigital.com/developers/sdk-python
- Svaka krajnja točka, njezini parametri i njezino dopuštenje: zinndigital.com/developers/api
- Paket na PyPI-ju: pypi.org/project/zinn-sdk