zinn-sdk je náš oficiální klient v jazyce Python pro Zinn Digital® API, který je publikován v PyPI a importuje se jako zinn_sdk. Je generován ze stejné specifikace OpenAPI, ze které je rozhraní API vytvořeno, každá operace má synchronní variantu i variantu asyncio a při každé změně specifikace je automaticky publikována nová verze. Tento průvodce jej nainstaluje, provede jeho autentizaci a uskuteční Vaše první volání.
Instalace
pip install zinn-sdk
Vyžaduje Python 3.11 nebo novější a je licencován pod licencí MIT.
Vytvoření klíče API
Otevřete stránku Klíče API na svém řídicím panelu (app.zinndigital.com/api-keys) a stiskněte Vytvořit klíč. Pojmenujte klíč a udělte mu pouze ta oprávnění, která váš kód potřebuje — například sites.view pro zobrazení seznamu webů. Klíč se zobrazí pouze jednou; uložte jej do proměnné prostředí nebo do svého úložiště tajných údajů, nikdy do zdrojového kódu. Klíč můžete kdykoli odvolat na stejné stránce.
Veřejné koncové body katalogu, jako jsou hostingové regiony a plány, žádný klíč nevyžadují.
Vaše první volání
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)
Vyhledání operace
Operace jsou seskupeny podle oblasti API pod zinn_sdk.api a pojmenovány podle svého ID operace v zápisu snake case. Výpis webů je zinn_sdk.api.hosting.list_sites; domény a DNS jsou pod zinn_sdk.api.domains; fakturace pod zinn_sdk.api.billing. Referenční příručka k API uvádí ID každé operace.
Synchronní, asynchronní a úplná odpověď
Každý modul operace obsahuje čtyři funkce:
sync(...) vrací naparsovaný model, nebo None při neočekávaném stavu.
sync_detailed(...) vrací Response s status_code, headers a parsed.
asyncio(...) a asyncio_detailed(...) jsou stejné, s podporou await.
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())
Varianty _detailed použijte, když potřebujete odlišit 403 (klíči chybí oprávnění) od 404.
Kam dál
- Průvodce na našem webu: zinndigital.com/developers/sdk-python
- Každý koncový bod, jeho parametry a jeho oprávnění: zinndigital.com/developers/api
- Balíček na PyPI: pypi.org/project/zinn-sdk