SDK TypeScript
Gérez votre hébergement depuis TypeScript
@zinn-digital/sdk est un client entièrement typé pour l'API Zinn Digital®. Chaque chemin, paramètre et réponse est généré à partir de la même spécification OpenAPI que celle utilisée pour créer l'API, de sorte que votre éditeur connaît l'ensemble de l'API et qu'une faute de frappe constitue une erreur de compilation.
Installer
Le paquet est disponible sur npm sous le périmètre @zinn-digital. Il fonctionne dans tout environnement d'exécution JavaScript disposant de fetch.
npm install @zinn-digital/sdkDémarrage rapide
Listez les régions d'hébergement publiques sans clé, puis listez vos propres sites avec une clé.
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);Authentification
Les points de terminaison de catalogue publics, tels que les régions et les forfaits, ne nécessitent aucun identifiant. Tout le reste utilise une clé d'API par organisation envoyée sous forme de jeton porteur. Une clé ne dispose que des autorisations que vous lui accordez lors de sa création, et vous pouvez la révoquer à tout moment. Conservez-la dans une variable d'environnement ou dans votre magasin de secrets, jamais dans le code source.
Ce que vous obtenez
L'ensemble de l'API publique, typée
Sites, domaines et DNS, facturation, assistance et tous les autres domaines de l'API publique. Les réponses et les erreurs sont typées, et les types de schéma sont exportés pour votre propre code.
Généré, jamais écrit à la main
Le client est openapi-fetch sur des types générés à partir de notre spécification OpenAPI. Une nouvelle version est publiée automatiquement chaque fois que la spécification change, de sorte qu'un nouveau point de terminaison atteint le SDK sans que quiconque ait besoin d'écrire un wrapper.
Léger et avec peu de dépendances
Une seule dépendance d'exécution et un fetch natif. Il fonctionne dans Node.js, dans le navigateur et dans les environnements d'exécution edge, et il est sous licence MIT.
Saisi jusqu'en bas
Lisez les enregistrements DNS d'un domaine et filtrez-les selon le type d'enregistrement défini par la spécification.
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);Questions
Disposez-vous d'un SDK TypeScript ou JavaScript ?
Oui. Installez @zinn-digital/sdk depuis npm. Il s'agit d'un client entièrement typé généré à partir de notre spécification OpenAPI, et il couvre l'ensemble de l'API publique.
Comment m'authentifier ?
Créez une clé d'API sur la page Clés d'API de votre tableau de bord et envoyez-la en tant que jeton porteur dans l'en-tête Authorization. Les points de terminaison du catalogue public ne nécessitent aucune clé.
Comment le SDK est-il maintenu à jour ?
Il est généré à partir de la même spécification OpenAPI que celle utilisée pour concevoir l'API, et une nouvelle version est publiée automatiquement dès que cette spécification est modifiée.
Explorer chaque point de terminaison
Chaque opération que le SDK peut appeler est décrite dans la référence de l'API, avec ses paramètres, réponses et autorisations.