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 в панели управления

Что вы получаете

Весь публичный 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 вместе с ее параметрами, ответами и разрешениями.

Справочник по API