TypeScript SDK

TypeScriptからホスティングを管理

@zinn-digital/sdk は、Zinn Digital® API 用の完全に型定義されたクライアントです。すべてのパス、パラメーター、レスポンスは、API が構築されているものと同じ OpenAPI 仕様から生成されるため、エディターが API 全体を把握し、タイプミスはコンパイルエラーになります。

すべての開発者向けドキュメント →

インストール

パッケージは@zinn-digitalスコープのもとでnpmにて公開されています。fetchを備えたあらゆるJavaScriptランタイムで動作します。

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キーが使用されます。キーは作成時に付与した権限のみを保持し、いつでも取り消すことができます。ソースコード内ではなく、環境変数またはシークレットストアに保管してください。

ダッシュボードでAPIキーを作成してください

含まれるもの

パブリックAPI全体、型定義済み

サイト、ドメインとDNS、請求、サポート、その他公開APIのあらゆる領域。レスポンスとエラーは型定義されており、スキーマ型はお客様ご自身のコード用にエクスポートされます。

自動生成(手動作成なし)

クライアントは、当社のOpenAPI仕様から生成された型に基づくopenapi-fetchです。仕様が変更されるたびに新しいバージョンが自動的に公開されるため、ラッパーを作成することなく新しいエンドポイントがSDKに反映されます。

小型で依存関係が少ない

1つのランタイム依存関係とネイティブの fetch。Node.js、ブラウザ、およびエッジランタイムで動作し、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);

質問

TypeScriptまたはJavaScriptのSDKはありますか?

はい。npm から @zinn-digital/sdk をインストールしてください。これは OpenAPI 仕様から生成された完全に型定義されたクライアントであり、パブリック API 全体をカバーしています。

認証するにはどうすればよいですか?

ダッシュボードの「APIキー」ページでAPIキーを作成し、Authorizationヘッダーにベアラートークンとして送信してください。パブリックカタログのエンドポイントにはキーは不要です。

SDKはどのようにして最新の状態に維持されますか?

これはAPIの構築元と同じOpenAPI仕様から生成され、その仕様が変更されるたびに新しいバージョンが自動的に公開されます。

すべてのエンドポイントを探索

SDKが呼び出し可能なすべての操作は、パラメータ、レスポンス、権限とともにAPIリファレンスに記載されています。

APIリファレンス