@zinn-digital/sdk ááẠnpm áá±á«áºááœáẠáá¯ááºáá±áá¬ážáá±á¬ Zinn Digital® API á¡ááœáẠáá»áœááºá¯ááºááá¯á·á ááá¬ážááẠTypeScript client ááŒá
áºáá«áááºá áááºážááŸá áááºážááŒá±á¬ááºážá áá«áá¬áá®áá¬ááŸáá·áº áá¯á¶á·ááŒááºááŸá¯ááá¯ááºážááᯠAPI áááºáá±á¬ááºáá¬ážááá·áº áá°áá®áá±á¬ OpenAPI áááºááŸááºáá»ááºá០áá¯ááºáá¯ááºáá¬ážááŒá®áž ááá¯áááºááŸááºáá»áẠááŒá±á¬ááºážáá²ááá·áºá¡áá«ááá¯ááºáž áá¬ážááŸááºážá¡áá
áºáá
áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±áá«áááºá á€áááºážááœáŸááºáá»ááºááẠáááºážááᯠááá·áºááœááºážááŒááºážá á¡áá±á¬ááºá¡áá¬ážá
áá
á
áºááŒááºážááŸáá·áº áááºá ááááá¯á¶áž áá±á«áºááá¯ááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºáá±ážáá«áááºá
ááá·áºááœááºážáá«
npm install @zinn-digital/sdk
áááºážááẠfetch áá«ááŸááá±á¬ áááºááá·áº JavaScript runtime ááœááºáááᯠá¡áá¯ááºáá¯ááºáá«áááº- Node.jsá ááá±á¬ááºáá¬ááŸáá·áº edge runtimes ááá¯á· ááŒá
áºáá«áááºá áááºážááœáẠruntime á¡ááŸá®á¡ááá¯áá
áºáá¯ááŒá
áºáá±á¬ openapi-fetch áá«ááŸáááŒá®áž MIT ááá¯ááºá
ááºááá¬ážáá«áááºá
API áá®ážáá
áºáᯠáááºáá®ážáá«
ááá·áºáááºááŸáºáá¯ááºá API áá®ážáá»á¬áž á
á¬áá»ááºááŸá¬ (app.zinndigital.com/api-keys) ááᯠááœáá·áºááŒá®áž áá®ážáá
áºáᯠáááºáá®ážáá« ááᯠááŸáááºáá«á áá®ážá¡ááœáẠá¡áááºáá
áºáá¯áá±ážááŒá®áž ááá·áºáá¯áẠááá¯á¡ááºáá±á¬ ááœáá·áºááŒá¯áá»ááºáá»á¬ážááá¯áᬠáá±ážáá« â á¥ááá¬á¡á¬ážááŒáá·áº ááá¯ááºáá»á¬ážááᯠá
á¬áááºážááŒá¯á
á¯áááºá¡ááœáẠsites.view ááŒá
áºáá«áááºá áá®ážááᯠáá
áºááŒáááºáᬠááŒááá«áááºá áááºážááᯠáááºáááºážáá»áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬áááºááá¯áž ááá¯á·ááá¯áẠááá·áºáá»áŸáá¯á·ááŸááºáá»áẠááááºážáááºážáá¬áá±áá¬ááœáẠááááºážáááºážáá«á á¡áááºážá¡ááŒá
áºáá¯ááºáá²ááœáẠáá¯á¶ážááááááºážáááºážáá«ááŸáá·áºá áááºááẠááá¯á
á¬áá»ááºááŸá¬áá±á«áºááœááºááẠáá®ážááᯠá¡áá»áááºáááœá±áž áááºáá»ááºááá¯ááºáá«áááºá
ááá¯á
áááºáž áá±ááá»á¬ážááŸáá·áº á¡á
á®á¡á
ááºáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡áá»á¬ážáá¯á¶áž áááºááá±á¬áẠá¡áá¯á¶ážááŸááºáá»á¬ážááẠáááºááá·áºáá®ážáá»áŸ áá¯á¶ážááááá¯á¡ááºáá«á
ááá·áºááááá¯á¶áž áá±á«áºááá¯ááŸá¯áá»á¬áž
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);
áááºážááᯠZINN_API_KEY=zdk_live_⊠npx tsx first-calls.ts ááŒáá·áº áá¯ááºáá±á¬ááºáá«á áááááá¯ááºážááœáẠhosting áá±ááá»á¬ážááᯠáá±á¬áºááŒáá±ážáááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áẠááá¯ááºáá
áºáá¯áá»áŸáẠáá
áºááá¯ááºážá
á® áá±á¬áºááŒáá±ážáááºááŒá
áºáááºá
áááºáááá¯ááºááá¯ááºáá¯ááºá¡ááœáẠá¡áá»áá¯ážá¡á
á¬ážáá»á¬áž
Schema á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠáá¯ááºáá°áá±ážáá¬ážáá±á¬ááŒá±á¬áá·áº áááºáááá¯ááºááá¯áẠfunctions áá»á¬ážááẠAPI á áá¯á¶á
á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááº-
import type { components } from "@zinn-digital/sdk";
type Site = components["schemas"]["Site"];
type DnsRecord = components["schemas"]["DnsRecord"];
á
á¬áá¯á¶ážáá±á«ááºážááŸá¬ážááœááºážáá±áá±á¬ áááºážááŒá±á¬ááºážá áá«áá¬áá®áᬠááá¯á·ááá¯áẠááá¯ááºááºáá
áºáá¯ááẠááááºááááẠááŸá¬ážááœááºážá
áœá¬áá¯ááºáá±á¬ááºáá±á¬ áá±á¬ááºážááá¯áá»ááºáá
áºáᯠááŒá
áºááá·áºá¡á
á¬áž compile error áá
áºáᯠááŒá
áºáá«áááºá
á¡ááŸá¬ážá¡ááœááºážáá»á¬áž
áá±á«áºááá¯ááŸá¯ááá¯ááºážááẠ{ data, error, response } ááᯠááŒááºáá±ážáá«áááºá 2xx ááá¯ááºáá±á¬ áá¯á¶á·ááŒááºááŸá¯ááœáẠdata ááẠundefined ááŒá
áºááŒá®áž error ááẠAPI á á¡ááŸá¬ážá
á¬á¡áááºááŒá
áºáááº- error.error.codeá áá°áááºááá¯ááºáá±á¬ error.error.message ááŸáá·áº á¡áááºááŒá¯ááŸá¯ áá¡á±á¬ááºááŒááºááŒááºážáá»á¬ážá¡ááœáẠááá¯ááºááºáá
áºáá¯á
á®ááᯠá¡áááºáááºááŸááºáá±ážáá±á¬ error.error.details ááá¯á· ááŒá
áºáá«áááºá 403 ááẠá¡ááá¯áá«áá®ážááœáẠá¡áá¯á¶ážááŸáẠááá¯á¡ááºáá±á¬ ááœáá·áºááŒá¯áá»ááºáááŸááᯠá¡áááá¹áá¬ááºááá«ááẠâ ááá¯ááá¯áá»á¬ážááŒá¬ážáá±á¬ ááœáá·áºááŒá¯áá»ááºáá«ááá·áº áá®ážáá
áºáá¯ááᯠááŒááºáááºá¡áá¯á¶ážáááŒá¯áá² ááá¯ááœáá·áºááŒá¯áá»ááºáá«ááŸááá±á¬ áá®ážáá
áºáá¯ááᯠáááºáá®ážáá«á
áá±á¬ááºááẠááœá¬ážáá±á¬ááºáááá·áºáá±áá¬áá»á¬áž
- áá»áœááºá¯ááºááá¯á·á áááºááá¯ááºááŸá áááºážááœáŸááº- zinndigital.com/developers/sdk-typescript
- á¡áá¯á¶ážááŸááºááá¯ááºážá áááºážá áá«áá¬áá®áá¬áá»á¬ážááŸáá·áº áááºážá ááœáá·áºááŒá¯áá»ááº- zinndigital.com/developers/api
- npm ááŸá áááºáá±á·áá»áº- npmjs.com/package/@zinn-digital/sdk