zinn-sdk, Zinn Digital® API'si için PyPI'da yayınlanan ve zinn_sdk olarak içe aktarılan resmi Python istemcimizdir. API'nin oluşturulduğu aynı OpenAPI belirtiminden üretilir; her işlemin senkron ve asyncio varyantları bulunur ve belirtim her değiştiğinde otomatik olarak yeni bir sürüm yayınlanır. Bu kılavuz onu kurar, kimliğini doğrular ve ilk çağrılarınızı gerçekleştirir.
Kurulum
pip install zinn-sdk
Python 3.11 veya sonraki bir sürümünü gerektirir ve MIT lisanslıdır.
API anahtarı oluşturma
Kontrol panelinizin API anahtarları sayfasını açın (app.zinndigital.com/api-keys) ve Anahtar oluştur düğmesine basın. Anahtara bir ad verin ve yalnızca kodunuzun ihtiyaç duyduğu izinleri tanımlayın — örneğin siteleri listelemek için sites.view. Anahtar yalnızca bir kez gösterilir; onu bir ortam değişkeninde veya gizli anahtar deponuzda saklayın, asla kaynak kodda barındırmayın. Bir anahtarı dilediğiniz zaman aynı sayfadan iptal edebilirsiniz.
Barındırma bölgeleri ve planları gibi genel katalog uç noktaları hiçbir anahtar gerektirmez.
İlk çağrılarınız
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)
Bir işlem bulma
İşlemler, zinn_sdk.api altında API alanına göre gruplandırılır ve snake case biçimindeki işlem kimliklerine (operation id) göre adlandırılır. Siteleri listeleme zinn_sdk.api.hosting.list_sites altındadır; alan adları ve DNS zinn_sdk.api.domains altındadır; faturalandırma ise zinn_sdk.api.billing altındadır. API referansı her işlemin kimliğini gösterir.
Eşzamanlı, eşzamansız ve tam yanıt
Her işlem modülünün dört işlevi vardır:
sync(...) ayrıştırılmış modeli veya beklenmeyen bir durumda None döndürür.
sync_detailed(...), status_code, headers ve parsed içeren bir Response döndürür.
asyncio(...) ve asyncio_detailed(...) aynıdır, beklenebilir (awaitable) niteliktedir.
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())
Bir 403 hatasını (anahtarın izni eksik) 404 hatasından ayırt etmeniz gerektiğinde _detailed varyantlarını kullanın.
Sıradaki adımlar
- Web sitemizdeki kılavuz: zinndigital.com/developers/sdk-python
- Tüm uç noktalar, parametreleri ve izinleri: zinndigital.com/developers/api
- PyPI üzerindeki paket: pypi.org/project/zinn-sdk