zinn-sdk হলো Zinn Digital® API-এর জন্য আমাদের অফিসিয়াল Python ক্লায়েন্ট, যা PyPI-তে প্রকাশিত এবং zinn_sdk হিসেবে ইম্পোর্ট করা হয়। API যে OpenAPI স্পেসিফিকেশন থেকে তৈরি করা হয়েছে এটিও ঠিক তা থেকেই প্রস্তুত করা হয়েছে, প্রতিটি অপারেশনের সিঙ্ক্রোনাস এবং 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)
একটি অপারেশন খোঁজা
অপারেশনগুলো zinn_sdk.api-এর অধীনে API ক্ষেত্র অনুসারে দলবদ্ধ করা হয়েছে এবং তাদের অপারেশন আইডি অনুযায়ী snake case-এ নামকরণ করা হয়েছে। সাইটগুলোর তালিকা তৈরি করা হলো zinn_sdk.api.hosting.list_sites; ডোমেন এবং DNS রয়েছে zinn_sdk.api.domains-এর অধীনে; বিলিং রয়েছে zinn_sdk.api.billing-এর অধীনে। API রেফারেন্সে প্রতিটি অপারেশনের আইডি প্রদর্শিত হয়।
Sync, async এবং সম্পূর্ণ প্রতিক্রিয়া
প্রতিটি অপারেশন মডিউলে চারটি ফাংশন রয়েছে:
sync(...) পার্স করা মডেল প্রদান করে, অথবা কোনো অপ্রত্যাশিত স্ট্যাটাসে None প্রদান করে।
sync_detailed(...) status_code, headers এবং parsed সহ একটি Response প্রদান করে।
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())
যখন আপনার 403 (কীটিতে অনুমতির অভাব রয়েছে) এবং 404-এর মধ্যে পার্থক্য করার প্রয়োজন হবে, তখন _detailed ভেরিয়েন্টগুলি ব্যবহার করুন।
এরপর কোথায় যাবেন
- আমাদের ওয়েবসাইটের নির্দেশিকা: zinndigital.com/developers/sdk-python
- প্রতিটি এন্ডপয়েন্ট, এর প্যারামিটার এবং এর অনুমতি: zinndigital.com/developers/api
- PyPI-তে প্যাকেজ: pypi.org/project/zinn-sdk