TypeScript SDK
Управляйте своим хостингом из TypeScript
@zinn-digital/sdk — это полностью типизированный клиент для Zinn Digital® API. Каждый путь, параметр и ответ генерируются на основе той же спецификации OpenAPI, на которой построено само API, поэтому ваш редактор знает все API, а опечатка становится ошибкой компиляции.
Установить
Пакет доступен в npm под областью видимости @zinn-digital. Он работает в любой среде выполнения JavaScript, поддерживающей fetch.
npm install @zinn-digital/sdkБыстрый старт
Выведите список общедоступных регионов хостинга без ключа, а затем выведите список собственных сайтов с ключом.
import { createApiClient } from "@zinn-digital/sdk";
const api = createApiClient({ baseUrl: "https://api.zinndigital.com" });
// Public catalogue endpoints need no key.
const { data: regions } = await api.GET("/v1/catalog/regions");
console.log(regions?.data.map((r) => r.slug));
// Everything else uses a per-organisation API key.
api.use({
onRequest({ request }) {
request.headers.set("Authorization", `Bearer ${process.env.ZINN_API_KEY}`);
},
});
const { data, error } = await api.GET("/v1/sites", { params: { query: { limit: 5 } } });
if (error) throw new Error(error.error.message);
for (const site of data.data) console.log(site.name, site.status);Аутентификация
Общедоступные конечные точки каталога, такие как регионы и тарифные планы, не требуют учетных данных. Для всего остального используется API-ключ организации, отправляемый в качестве bearer token. Ключ содержит только те разрешения, которые вы предоставляете ему при создании, и вы можете отозвать его в любое время. Храните его в переменной окружения или в хранилище секретов, ни в коем случае не в исходном коде.
Что вы получаете
Весь публичный API, типизированный
Сайты, домены и DNS, биллинг, поддержка и любые другие разделы общедоступного API. Ответы и ошибки типизированы, а типы схем экспортируются для вашего собственного кода.
Сгенерировано, никогда не писалось вручную
Клиент представляет собой openapi-fetch поверх типов, сгенерированных на основе нашей спецификации OpenAPI. Новая версия публикуется автоматически при каждом изменении спецификации, поэтому новая конечная точка попадает в SDK без необходимости написания обёртки вручную.
Компактный и с минимальными зависимостями
Одна зависимость времени выполнения и нативный fetch. Работает в Node.js, в браузере и в средах выполнения edge, и распространяется под лицензией MIT.
Введено до самого низа
Прочитайте DNS-записи домена и отфильтруйте их по типу записи, указанному в спецификации.
import type { components } from "@zinn-digital/sdk";
type DnsRecord = components["schemas"]["DnsRecord"];
// Paths, parameters and responses are all typed from the OpenAPI spec:
// a misspelt query parameter is a compile error, not a silent no-op.
const { data: records } = await api.GET("/v1/domains/{domainId}/dns/records", {
params: { path: { domainId: "YOUR_DOMAIN_ID" } },
});
const txt: DnsRecord[] = (records?.data ?? []).filter((r) => r.type === "TXT");
for (const record of txt) console.log(record.name, record.value);Вопросы
Есть ли у вас SDK для TypeScript или JavaScript?
Да. Установите @zinn-digital/sdk из npm. Это полностью типизированный клиент, созданный на основе нашей спецификации OpenAPI, и он охватывает весь публичный API.
Как пройти аутентификацию?
Создайте ключ API на странице «Ключи API» панели управления и отправьте его в качестве токена bearer в заголовке Authorization. Для общедоступных конечных точек каталога ключ не требуется.
Как SDK поддерживается в актуальном состоянии?
Он создается на основе той же спецификации OpenAPI, на которой построен сам API, и новая версия публикуется автоматически при каждом изменении этой спецификации.
Изучить каждую конечную точку
Каждая операция, которую может вызывать SDK, описана в справочнике по API вместе с ее параметрами, ответами и разрешениями.