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 и са именувани според техния идентификатор на операция (operation id) в 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