開発者向け

コードで動かすホスティング

Zinn Digital®はAPIファーストのプラットフォームです。私たちのダッシュボードを動かしているのと同じエンジンAPIをそのままご利用いただけます。ビルド時に100%ドキュメント化され、バージョン管理されたスペックファーストのAPIに、生成されたSDK、CLI、Terraformプロバイダー、署名付きウェブフック、そしてMCPサーバーが備わっています。ターミナル、パイプライン、ステートファイル、AIエージェントなど、お客様が作業に使用するあらゆるツールにプラットフォームが対応します。

  • 650,000+以上世界中でホストされているサイト
  • 1すべてのツールが生成される元となるOpenAPI仕様書
  • 4クライアント SDK — TypeScript、Python、PHP、Go
  • OAuth 2.1スコープ付きの取り消し可能なAIエージェントアクセス

ひとつのAPI。すべてのサーフェスがそれを動かします。

多くのホスティング会社はコントロールパネルの後付けとしてAPIを追加しており、それが使い勝手に表れています。パネルの機能の半分がAPI化されないままになることも珍しくありません。しかし、私たちはその逆のアプローチを取りました。ダッシュボード、管理コンソール、CLI、Terraformプロバイダ、MCPサーバー、そしてお客様独自の統合機能のすべてが、同一のエンジンAPIを利用しています。パネル上で実行できる操作であれば、コードからもすべて実行可能です。

仕様ファースト、後からの文書化なし

OpenAPI仕様書が唯一の信頼できる情報源であり、仕様書に記載されていないエンドポイントがリリースされることはありません。このたった一つのルールにより、パブリックAPIは事後ではなく、ビルド時点で完全にドキュメント化されます。ドキュメント化されていないエンドポイントは存在し得ないため、ドキュメントの漏れは一切ありません。

自動生成(手動管理なし)

対話型リファレンスドキュメント、4つのクライアントSDK、CLIの大半、そしてTerraformプロバイダーの骨組みはすべて、その1つの仕様書から生成されます。1つのソースから多くの成果物を生み出し、常に同期されるため、実装から乖離したドキュメントを追いかける必要はもうありません。

廃止ポリシー付きのバージョン管理

エンドポイントは /v1 の下に配置され、公開された非推奨ポリシーと変更履歴が提供されます。ビルドの失敗から気づくのではなく、変更前に書面で通知されます。

CIで契約テスト済み

実装と仕様書の契約テストおよびOpenAPIのリンティングが変更ごとに実行されます。コードと仕様書の間に乖離が生じるとビルドが失敗するため、クライアントの生成元となる仕様書は、サーバーが実際に遵守している仕様書そのものになります。

認証、スコープ、そして大規模運用で直面する課題

入り口は2つありますが、その背後にある原則は1つです。どちらを使用しても、同じ権限チェックとデータベースレベルの分離が適用されます。

組織ごとのAPIキー

キーの形式は zdk_<mode>_<prefix>_<secret> です。シークレットの SHA-256 ハッシュのみが保存されるため、発行後にキーを再表示することはできません。データベースにアクセスできる者であっても同様です。キーにはスコープが付与され、取り消しが可能であり、個人単位ではなく組織単位で発行されます。

ライブモードとテストモードの分離

サンドボックスキーは本番用キーとは異なり、サンドボックスモードで動作するため、実際の課金やプロビジョニングは行われません。統合テストでは、費用をかけたりサーバーを構築したりすることなく、APIに負荷をかけることができます。

人間中心のOIDC

ユーザーセッションはKeycloak発行のJWTで認証され、レルムの公開鍵で検証され、APIキーと同じPrincipalオブジェクトに解決されます。エンドポイントは、組織ごとにチェックされるsites.createやapikeys.manageなどの粒度の細かいパーミッションキーでアクセス制御されます。ある組織でのパーミッションは、独立した無関係な組織へのアクセス権を付与しませんが、その組織の下位にネストされた組織には適用されます。

行レベルのセキュリティ基盤

すべてのがテナントリクエストは、プリンシパルから設定されたPostgres orgスコープを持つトランザクション内で実行されるため、ORMフィルタの適用忘れなどのヒューマンエラーに依存せず、データベースレベルで分離が強制されます。クエリセットのフィルタも多層防御として引き続き機能します。

デモのためではなく、マシンのために構築

APIはREADMEで立派に見せるのは簡単ですが、実際のトラフィックの下で正しく動作させるのは困難です。これこそ私たちが徹底的にこだわり抜いた部分であり、午前3時に連携機能が停止する原因になる部分だからです。

一括処理の動作に影響する重要な詳細として、重複ドメインに対する 409 は任意のテナントに対して「このホスト名はここでホスティングされていますか?」という問いに答える仕様になっており、これは列挙オラクルであり、Footprint-Free に対する深刻な非匿名化リスクとなります。サイト作成のスロットリングは安易な修正であり、一括プロビジョニング製品を完全に壊してしまっていたことでしょう。その代わりに、拒否された重複ドメインの試行のみがプリンシパルごとに制限されます。成功した作成は制限の対象外となるため、一日中一括プロビジョニングを行っても、プロービングはほぼ瞬時に機能しなくなります。

  • すべてのエラーで一貫したエラーエンベロープ(コード、人間向けのメッセージ、オプションのフィールドレベルの詳細、サポートに問い合わせる際に伝えられる request_id)が返されます。バリデーションエラーの場合は、問題のあるフィールド名とともに 422 が返されます。
  • POSTリクエストにおけるべき等キーは、インラインではなくコミット時にリプレイレコードが書き込まれるため、コミットされなかった行を指定するキャッシュされた201がリトライによって再生されることはありません。失敗したリクエストは処理中のロックを即座に解放するため、422エラーによって修正済みのリトライがロックアウトされることはありません。
  • UUIDv7上のキセットとしてのカーソルページネーション — 同時書き込みに対して安定しており、スキャン中に行が挿入されてもページドリフトが発生しません。
  • レスポンスに含まれる RateLimit-Remaining により、生成されたクライアントは推測に頼るのではなく、インテリジェントにバックオフできるようになります。
  • スコープ外のリソースは403ではなく404を返します。403はリソースの存在を確認することになってしまうためです。同様の理由で、スコープ外の組織でフィルタリングすると空のページが返されます。
  • サイトの作成はプロビジョニングではなく登録です。POST /v1/sitesは201を返し、ステータスはpendingとなり、ビルド処理でブロックされることはありません。イベントはレコードと同じトランザクション内でトランザクショナルアウトボックスに書き込まれるため、プロビジョニングの要求が確実に保証されている場合にのみサイトが存在します。

SDK、CLI、Terraformプロバイダー

同じ仕様でありながら、働き方の異なる3つの消費者。

クライアントSDK

TypeScript、Python、PHP、Go向けに自動生成され、仕様に準拠しているため、手動のラッパーを待つことなく、新しいエンドポイントをすぐに利用できます。

Zinnector®、CLI

WordPressサイトの足場を固め、Node以外何もインストールされていない状態でローカルで実行し、デプロイします。Zinnector®は、PHPのバージョン、ディスク、ファイル数など、デプロイ先のスロットに対してプロジェクトの事前チェックを行い、プッシュ後ではなくプッシュ前に警告を発します。また、ログイン、サイトの一覧表示、デプロイ、ドメインとDNSの管理、メールサービスの読み取り、バックアップの取得、許可リストに登録されたWP-CLIの実行、ログの追跡、一括処理の実行を行います。無料、MITライセンスであり、この同じ公開API上に構築されています。

Terraformプロバイダー

サイト、ドメイン、DNSレコード、メールボックス、プランをインフラストラクチャー・アズ・コードとして管理します。terraform applyでホスティングがプロビジョニングされ、誰も書き留めなかった一連のクリック操作ではなく、再現可能でレビュー可能な環境を実現できます。

インタラクティブ・リファレンス

サーバーの実装内容と完全に一致するエンドポイントを正確に記述し、ブラウザから直接読み取って呼び出せる生成済みドキュメント。

エンドポイントのダウンにも耐えるWebhook

プラットフォームの基盤には堅牢なイベントスパインがあります。すべての状態変化はデータベースの変更とアトミックにPostgresのトランザクショナルアウトボックスに書き込まれ、リレーによってNATS JetStreamにパブリッシュされます。イベントには型付けとバージョニングが施されており、site.deployed、order.paid、invoice.overdue、backup.completed、abuse.flagged、trial.ending、その他が含まれます。

興味のあるものに登録する

エンドポイントを WebhookSubscription として登録し、受信するイベントの種類を選択します。1 つのストリームで通知、分析、自動化、および連携機能にデータを一元供給します。つまり、当社と同じイベントをそのままご利用いただけます。

HMAC署名付き

すべての送信データにはHMAC署名が付与されているため、処理を実行する前に当社からの送信であることを確認できます。

バックオフを伴うリトライを実行し、ログに記録しました

配信に失敗した場合はバックオフを伴って再試行され、各試行はWebhookDeliveryとして記録されます。送信内容についてサポートにメールで問い合わせるのではなく、ダッシュボードから配信の確認や再送を行うことができます。

少なくとも1回配信のため、idで重複排除を行ってください

このパイプラインは、「正確に1回(exactly-once)」と偽るのではなく、意図的に「少なくとも1回(at-least-once)」の配信を行います。発行の途中で停止したリレーは、クレームのリースが期限切れとなり、イベントが再発行されます。エンベロープIDで重複排除を行えば、コンシューマーは構造上正しく動作します。

サイトにコードを追加する

APIは開発者のストーリーの半分にすぎません。もう半分は、リリースすることです。

  • OAuth経由でGitHub、GitLab、Bitbucketを接続し、設定ファイルではなくクレデンシャルストアにデプロイキーを保持します。
  • プッシュによりビルド&デプロイパイプラインがトリガーされ、ブランチと環境のマッピング(mainからproduction、stagingからstaging)や、composerおよびnpm用のスタックごとのビルドステップが実行されます。
  • デプロイに失敗したときは、以前のリリースにロールバックします。
  • ステージングのクローンとプッシュツーライブにより、訪問者に公開する前に実際の環境で変更の動作を確認できます。
  • CageFSによるアイソレーションにより、サイトごとにJailed SSH、SFTP、FTPを利用できるため、各テナントには自身のファイルのみが表示されます。
  • パネルターミナルおよびSSH経由でのwp-cli
  • code-server を使用したブラウザ版 VS Code —— 拡張機能、統合ターミナル、Gitを備えたフル機能のエディタで、サイトのファイルを直接編集できます。
  • サイトごとのPHPバージョン、編集可能なPHP設定、サイトごとの拡張機能、環境変数、そしてWP-cronに加え本物のcron。

AIエージェントが利用できるのと同じAPI

私たちは、ホスト型MCPサーバーとしてプラットフォームを提供しています。これは、エンジンAPIをラップする軽量なプロトコルアダプターであり、同一のアクションカタログ、RBAC(役割ベースのアクセス制御)、および監査証跡をそのまま再利用します。Claude Code、Cursor、ChatGPT、Claude Desktop、またはMCP対応クライアントを一度接続するだけで、APIに追加されるすべての機能が自動的に利用可能になります。

エージェントには、ツール(ドリフトの原因となる並行ロジックが存在しない、同一のAPIエンドポイント)、リソース(読み取り専用のサイトの稼働状況、設定、最近のログ、メトリクス、稼働時間、ナレッジベース記事。これにより、エージェントはアクションを実行する前に実際のデータに基づいて診断を行います)、およびプロンプト(「このサイトを診断する」や「移行の準備をする」などの公開済みワークフローテンプレート)の3つの要素が提供されます。

安全性も認証と同様です。OAuth 2.1、組織に紐づくトークン、行レベルセキュリティが適用されるRBAC権限(ツールごとにスコープ設定および失効可能)、本番環境から分離されたサンドボックスを備えています。削除、一時停止、請求、高額な支出などの破壊的アクションには、明示的な確認または人間の承認ポリシーが必要です。AIがトリガーする有料アクションにはレートリミットと支出上限が設定され、すべてのMCPコールは、ID、ツール、引数、結果とともに監査ログに記録されます。

私たちは個々のアプリを1つずつ統合するのではなくプロトコルをサポートしているため、ホスティングの統合を変更することなく、AIツールの選択肢を自由に変更できます。

よくある質問

パブリックAPIは、ダッシュボードが使用しているものと同じですか?

はい、同一のエンジンAPIが公開され、製品として鍛え上げられています。ダッシュボード、管理コンソール、CLI、Terraformプロバイダー、MCPサーバー、ウェブフックはいずれも単一のインターフェースを利用するクライアントであるため、APIが管理画面の機能追加から遅れをとることはありません。

費用をかけず、実際のサーバーを構築しなくてもインテグレーションのテストを行えますか?

はい。サンドイッチキーは本番用キーとは別に発行され、テストモードで実行されるため、実際の請求やプロビジョニングは行われません。CIをサンドイッチの認証情報に向けて、リクエストとレスポンスの全サイクルを安全にテストしてください。

リトライによって同じものが2つ作成されてしまうのを防ぐにはどうすればよいですか?

POSTリクエストに Idempotency-Key を送信してください。リプレイ記録はインラインではなくコミット時に書き込まれるため、実際にはコミットされなかった行に対してキャッシュされた成功結果がリプレイされることはありません。また、失敗したリクエストは即座にロックを解放するため、修正されたリトライがブロックされることもありません。Webhookの配信は設計上at-least-once(最低1回)となります。受信側でエンベロープIDを使用して重複排除を行ってください。

1つのAPIキーで、すべてのクライアント組織にアクセス権を付与できますか?

本日は見送ります。APIキーは組織単位で発行されるため、複数のクライアント組織にまたがる統合では組織ごとにキーを保持します。権限もユーザープリンシパルに対して組織単位でチェックされます。1つの組織でsites.createを保持していても、別個の無関係な組織へのアクセス権は付与されませんが、その組織の下位にネストされている組織には適用されます。これは意図的な設計であり、侵害されたキーの影響範囲をプラットフォーム全体ではなく、その組織およびその下位のサブ組織に限定します。

組み込みの開発者ロールで実際には何ができるのですか?

開発者の役割には、組織の読み取り、APIキーの管理、サイトの表示と作成、サイトの再起動、キャッシュのパージ、チケットの閲覧と返信が含まれます。課金管理は意図的に除外されています。デプロイおよびライブプッシュの権限はこの役割に含まれないことに注意してください。チームメンバーにそれらの権限が必要な場合は、「開発者」が最も幅広い技術的役割であると想定するのではなく、それらの権限を持つ役割を割り当ててください。

エンドポイントが1時間停止した場合、ウェブフックはどうなりますか?

配信はバックオフ機能付きで再試行され、すべての試行が確認可能なWebhookDeliveryとして記録されます。上流では、変更と同一のデータベーストランザクション内でイベントがトランザクションアウトボックスに書き込まれるため、コンシューマーが利用できない間もデータが失われることはありません。ダウンしたコンシューマーは遅延するだけでプロデューサーが停止することはなく、復旧後はダッシュボードから配信を再実行できます。

開発を始めるための費用はいくらですか?

Footprint-Free Hostingのカード不要の14日間無料トライアルを開始しましょう。お支払い情報は不要で、最大5つのサイトに対応しています。有料のFootprint-FreeプランはPBN 5向けに月額6ドルからご利用いただけます。どのプランにも30日間の返金保証、無料の移行サービス、ベンダーロックインなしの特典が付いています。

仕様書を読み、それに従って構築してください

仕様ファーストAPI、自動生成SDK、CLI、Terraformプロバイダー、署名付きウェブフック、そしてMCPサーバー — 世界中の65万以上のサイトを支えるホスティングで。クレジットカード不要、お支払い情報の登録なしで14日間の無料トライアルを開始できます。

無料で始める