開発者向けAPIとMCP

アプリで管理しているすべての機能は、独自のコードやAIアシスタントからも管理することができます。Workflow Webhooksには、REST APIとMCPサーバーという2つのインターフェースが用意されています。どちらも「開発者向けページ」に掲載されています。

APIキー

どちらのサーフェスも、APIキーを使用して認証を行います。**「Developer」**ページの「API keys」セクションで、キーを作成し、そのアクセスレベルを選択してください:

  • 読み取り専用 - Webhookの一覧表示、呼び出し履歴および統計情報の閲覧が可能です。
  • 読み取り・書き込み - さらに、Webhookの作成、更新、削除も可能です。
  • 読み取り、書き込み、実行――また、テストの実行を実行したり、過去の実行を再生したりすることもできます。

完全な鍵は、作成時に一度だけ表示されます。その際にコピーして、安全な場所に保管してください。二度と表示されることはありません。鍵はハッシュ化された状態で保存され、平文で保存されることは決してありません。また、鍵はいつでも無効化することができます。

すべてのリクエストにおいて、キーをベアラー・トークンとして送信してください:

text
Authorization: Bearer fwk_your_key_here

なぜ「実行」が別のレベルになっているのか

Webhook を発火させると、実際に Shopify Flow のワークフローが実行され、それらのワークフローによってストアに変更が加わります。具体的には、注文へのタグ付け、メールの送信、在庫の更新などが行われます。これを独立したレベルに保つことで、日常業務のためにスクリプトや AI アシスタントに渡すキーが、誤って自動化機能をトリガーしてしまうことを防ぐことができます。 デフォルトでは読み取り用キーを配布し、実行用キーは本当に必要な場合にのみ作成するようにしてください。

ベースURL

API および MCP サーバーは、専用のホスト名から提供されています:

text
https://shopify.workflow-webhooks.app

つまり、REST API は https://shopify.workflow-webhooks.app/api/v1 にあり、MCP サーバーは https://shopify.workflow-webhooks.app/api/mcp にあります。「開発者」ページには、両方が表示されており、それぞれに「コピー」ボタンがあります。

このホスト名は /api のみを提供します。組み込みの管理用UIは、Shopify という登録済みのURLで引き続き利用可能です。これらを分離することで、スクリプトやCIジョブ、AIクライアントに貼り付けるアドレスが安定し、アプリの組み込み状況に影響されなくなります。

REST API

ベースURLは「開発者」ページに表示されています。主なエンドポイントは以下の通りです:

方法 パス レベル 目的
GET /api/v1 なし APIインデックス - APIが稼働中であることを確認します
GET /api/v1/me 読む 認証を確認し、キーのレベルをご確認ください
GET /api/v1/webhooks 読む Webhookの一覧を表示する
投稿 /api/v1/webhooks 書く Webhookを作成する
GET /api/v1/webhooks/:id 読む Webhookを1つ取得する
PUT / PATCH /api/v1/webhooks/:id 書く Webhookを更新する
DELETE /api/v1/webhooks/:id 書く Webhookを削除する
投稿 /api/v1/webhooks/:id/test 実行する テスト実行を実行する
GET /api/v1/history 読む リストの呼び出し
GET /api/v1/history/:id 読む 1つの呼び出しと、そのペイロードを取得します
投稿 /api/v1/history/:id/replay 実行する 過去の呼び出しを再生する
GET /api/v1/stats 読む 合計、成功率、日別データ
GET /api/v1/templates 読む 組み込みのWebhookテンプレート

キーが正常に動作するか、簡単に確認する方法:

bash
curl https://shopify.workflow-webhooks.app/api/v1/me \
  -H "Authorization: Bearer fwk_your_key_here"
json
{ "authenticated": true, "shop": "your-store.myshopify.com", "level": "READ" }

MCPサーバー

MCPサーバーを利用すると、AIアシスタント(Claude、Cursor、VS Code、Gemini CLIなど)が会話の中でWebhookを操作できるようになります。「Developer」ページにある「MCP」タブには、サーバーのURLと、各クライアントごとにコピーしてすぐに使える接続コマンド(キーはすでに挿入済み)が表示されます。

これらのツールはRESTエンドポイントを反映しており、ツールセットはキーの権限レベルに応じて異なります。読み取り専用のキーの場合、作成、削除、またはWebhookのトリガーを行うツールは表示されません。認証およびデータ処理はすべてサーバー側で行われます。

お客様のデータの保護について

このAPIに自動化ツールやAIアシスタントを連携させる前に、知っておくべきことが2つあります。

**Webhookの認証トークンは、いかなる場合でも読み取ることはできません。**Webhookに設定したトークンや署名用シークレットは、APIやMCPを通じて、いかなるレベルにおいても読み取ることはできません。レスポンスからは、トークンが設定されているかどうか(hasToken)のみが確認でき、その値自体は決して確認できません。新しいトークンを設定することはできますが、以前のトークンを取得することはできません。

**ペイロード内の個人データはマスキングされています。**Webhookのペイロードは外部システムから送信されるものであり、お客様情報が含まれていることがよくあります。 呼び出しペイロードがサーバーから送信される前に、個人データと見なされる値(メールアドレス、電話番号、カード番号、および人名を含むフィールド(customerName、shippingAddress など))は、*** に置き換えられます。リクエストヘッダーのサニタイズ処理は、アプリの履歴画面で行われているのと同じ方法で行われます。

このマスキング処理は慎重に行われていますが、完全な保証ではありません。この処理はフィールド名や値のパターンに対して行われるため、フリーテキストフィールド内にある個人データ(メモ、コメント、メッセージ本文など)は、そのまま漏れてしまう可能性があります。APIの応答にはお客様データが含まれている可能性があるものとして扱い、それに応じて適切に保存してください。

**テストおよびリプレイは、上限を消費しません。**API を通じて実行した呼び出しはテストとして記録されるため、プランの月間上限にはカウントされません。リプレイも同様にカウントされません。元の呼び出しがすでにカウント済みだからです。

今後の手順

レート制限

REST APIとMCPサーバーは、APIキーごとに1つの利用枠を共有します。

  • キーごとに60秒あたり300リクエストを、固定ウィンドウとして設定します。
  • **実行レベルの呼び出しには、1時間あたり60回という、より厳格な2つ目の割り当てが設定されています。**これらは両方の割り当てを消費するため、実行が集中すると、共有の割り当て分も消費されてしまいます。このアプリの場合、Webhookのテスト呼び出しや履歴エントリの再生が該当しますが、これらはいずれも実際にはShopify Flowのワークフローを実行することになります。
  • **どのプランでも同様です。**ご利用のプランでは、API呼び出しではなく、関数の呼び出し回数が計測されるため、プランのアップグレードを行ってもこれらの数値は増加しません。
  • HTTP 429 が返されました。一旦待機してから再試行してください。できれば指数関数的なバックオフを行ってください。
  • 万が一、キャッシュが一時的に利用できなくなった場合でも、リミッターはお客様の連携をブロックすることなく、オープン状態を維持します。

受信するWebhookにはレート制限は適用されません

最もよく寄せられる質問ですので、明確にしておきたいと思います。弊社では、**受信するWebhookの配信を制限することはありません。**送信元システムからどのようなバーストで送信されてきても、到着した順に速やかに配信いたします。弊社側では、1秒あたりや1分あたりの上限は設けておりません。

唯一の制限は、ご利用のプランにおける30日間の呼び出し許容量です。これが使い切られると、期間がリセットされるか、プランをアップグレードするまで、それ以降の呼び出しは処理されなくなります。それ以外については、Shopifyの制限が適用されます。Shopify Flowには独自の実行制限があり、トリガーペイロードの上限は50KBとなっています。

Shopify

これらは、ShopifyがShopifyのAPIに対して設定している制限であり、当社が設定しているものではありません。これらは、このアプリ(およびお客様のワークフロー)がShopify側で実行できる操作に適用されるものであり、当社の制限を十分に下回っている場合でも、大規模なストアではこれらの制限に達してしまう可能性があります。

  • ShopifyのすべてのAPIにおいて、入力配列の最大要素数は250個に制限されています。これを超える要素数を含むリクエストは拒否されます。
  • **ページネーションは25,000件で終了します。**件数は25,000件までは正確ですが、それを超えるとShopifyは25001を返します。これは「25,000件を超える」という意味です。さらに深く検索する必要がある場合は、まずフィルタリングを行ってください。
  • GraphQL Admin API の利用量は、クエリコスト(秒あたりのポイント)に基づいて計測され、上限はストアの「Shopify」プランによって異なります:
Shopify プラン 1秒あたりのポイント数
標準 100
上級 200
さらに 1000
エンタープライズ(コマースコンポーネント) 2000

ストアフロント APIにはレート制限は設けられていません。

詳細はこちら:Shopify APIのレート制限