SDK do TypeScript
Gerencie sua hospedagem a partir do TypeScript
O @zinn-digital/sdk é um cliente totalmente tipado para a API do Zinn Digital®. Cada caminho, parâmetro e resposta é gerado a partir da mesma especificação OpenAPI na qual a API foi construída, para que o seu editor conheça toda a API e um erro de digitação seja um erro de compilação.
Instalar
O pacote está disponível no npm sob o escopo @zinn-digital. Ele funciona em qualquer ambiente de execução JavaScript que possua fetch.
npm install @zinn-digital/sdkInício rápido
Liste as regiões de hospedagem públicas sem uma chave e, em seguida, liste seus próprios sites com uma.
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);Autenticação
Endpoints públicos do catálogo, como regiões e planos, não exigem credenciais. Todo o restante usa uma chave de API por organização enviada como bearer token. Uma chave possui apenas as permissões que você concede ao criá-la, e você pode revogá-la a qualquer momento. Mantenha-a em uma variável de ambiente ou em seu armazenamento de segredos, nunca no código-fonte.
O que você recebe
Toda a API pública, tipada
Sites, domínios e DNS, faturamento, suporte e todas as outras áreas da API pública. As respostas e os erros são tipados, e os tipos de esquema são exportados para seu próprio código.
Gerado, nunca escrito à mão
O cliente é o openapi-fetch baseado em tipos gerados a partir da nossa especificação OpenAPI. Uma nova versão é publicada automaticamente sempre que a especificação é alterada, portanto um novo endpoint chega ao SDK sem que ninguém precise escrever um wrapper.
Pequeno e com poucas dependências
Uma única dependência de tempo de execução e fetch nativo. Ele roda no Node.js, no navegador e em ambientes de execução de borda, e possui licença MIT.
Digitado até o fim
Leia os registros DNS de um domínio e filtre-os pelo tipo de registro definido na especificação.
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);Perguntas
Você tem um SDK para TypeScript ou JavaScript?
Sim. Instale o @zinn-digital/sdk a partir do npm. Ele é um cliente totalmente tipado gerado a partir de nossa especificação OpenAPI e cobre toda a API pública.
Como eu me autentico?
Crie uma chave de API na página Chaves de API do seu painel e envie-a como um token de portador no cabeçalho Authorization. Os endpoints de catálogo público não precisam de chave.
Como o SDK é mantido atualizado?
Ele é gerado a partir da mesma especificação OpenAPI na qual a API foi construída, e uma nova versão é publicada automaticamente sempre que essa especificação é alterada.
Explorar cada endpoint
Cada operação que o SDK pode chamar está descrita na referência da API, com seus parâmetros, respostas e permissões.