認証、エラー処理、Webhook、主要なワークフローを理解し、信頼性の高い Giftpack 連携を構築できます。
Giftpack API を利用すると、リワード、インセンティブ、マーチャンダイズ、受取人による選択を含むワークフローを、お客様のバックエンドから作成・運用できます。ビジネストリガーと顧客データはお客様のシステムで管理し、カタログの在庫状況、受取人向けエクスペリエンス、フルフィルメント、配送状況の更新は Giftpack が処理します。
本番環境のベース URL は次のとおりです。
https://developer.giftpack.ai
リクエストとレスポンスの完全なスキーマについては、API Reference を参照してください。このガイドでは、適切なリソースファミリーの選び方と、作成後に各リソースの状態がどのように遷移するかを説明します。
| 目的 | 主要リソース | ライフサイクルイベント |
|---|---|---|
| Smart Gifting、予約配信型リワード、自動表彰 | Campaign と Giftee | giftee.* |
| Gift Mall または Merchandise Catalog からの直接注文 | Marketplace Order と Marketplace Order Receiver | marketplace_order_receiver.* |
| メンバーのリワード残高を管理 | Point Recipient と Point History | ポイント利用後に生成される Marketplace Order を追跡 |
Smart Gifting では、Campaign がプログラム全体のコンテナとなり、Giftee が受取人ごとのライフサイクルを表します。
Campaign -> Giftee -> Redemption -> Fulfillment -> Delivery
カタログからの直接注文では、Marketplace Order が注文全体のコンテナとなり、Marketplace Order Receiver が受取人ごとのライフサイクルを表します。
Marketplace Order -> Receiver -> Claim or Selection -> Fulfillment -> Delivery
giftee と marketplace_order_receiver を同じものとして扱わないでください。フルフィルメントの状態が似ていても、イベント名はそれぞれ異なる注文ファミリーを示します。
作成および更新リクエストでは、その時点のリソース状態が返されます。受取人による操作、フルフィルメント、発送、配達は、その後も非同期で進行します。
信頼性の高い連携を構築するには、次の点を守ってください。
id を重複排除キーとして扱う。Giftpack で API キーを作成したら、Webhook イベントカタログを取得してアクセスを確認します。
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
レスポンスには、API が現在サポートしている Webhook イベントタイプが一覧で返されます。ハードコードされたクライアント側のリストではなく、このエンドポイントが正式なイベントカタログです。

この定義は、Giftpack API 連携で使用する主要なドメインオブジェクトを説明します。 ワークフロー構築前に、オブジェクト同士の関係を理解することが重要です。 Giftpack は次の 3 つの主要レイヤーで構成されます。
エンゲージメントレイヤー (Engagement Layer)コマースレイヤー (Commerce Layer)サプライ & オペレーションレイヤー (Supply & Operations Layer)このレイヤーは、送信者と受信者の関係ライフサイクルをモデル化します。 イベント駆動 (event-driven) で、非同期処理が多いのが特徴です。
ギフトやリワードを受け取る可能性がある実在の個人(従業員、顧客、パートナー)です。API 上で Recipient は Giftpack ワークスペース内の永続的な識別子です。Recipient は Campaign と独立して存在でき、時間の経過とともに複数の Campaign に参加できます。
ターゲティングや一括割り当てに使う論理的な受信者集合です。グループは組織上の構造であり、取引を表すものではありません。
Campaign は単一のエンゲージメント意図を表します。
定義する要素:
Campaign は注文(order)ではありません。 Campaign は redemption と fulfillment イベントが進行するライフサイクルコンテナです。
Recipient が Campaign に紐づくと Giftee になります。 Giftee はキャンペーン単位での参加状態を表します。 この区別は重要です。
Recipient = identityGiftee = campaign-bound stateCampaign の表示・伝達レイヤーを定義し、次を含みます。
Template はコミュニケーションに影響し、fulfillment ロジックには影響しません。
受信者がギフトを受け取るために行うアクションを表します。 発生経路:
Redemption は状態を “invited” から “claimed” へ遷移させます。
Giftee がギフトを受け取るための一意 URL です。
Campaign Template を用いて redemption link を配信するメールです。
このレイヤーは取引と fulfillment 関連処理を扱います。 Campaign ワークフローとは独立して動作する場合があります。
送信者が直接選択する固定商品です。 通常は注文作成後すぐに fulfilled されます。
1 人以上の受信者向けの直接購入トランザクションです。 Campaign 型の redemption を経由せず、fulfillment に直接進む場合があります。 Marketplace Order ≠ Campaign。
Marketplace Order の fulfillment 対象として割り当てられた受信者です。
Giftpack の在庫・倉庫システムで管理されるカスタマイズ可能商品です。 次を要する場合があります。
Marketplace または Swag カタログ内の販売可能コンテナオブジェクトです。
商品の購入可能な具体構成です。例:
トランザクションは常に Product Variant 単位で発生します。
このレイヤーは fulfillment と vendor 管理を支えます。 多くの連携では抽象化されますが、ステータス遷移理解には重要です。
以下を担う運用レイヤー:
Giftpack エコシステムへ商品を供給する vendor です。
カタログ品質、onboarding、運用管理のために Procurement Office が監督する Provider です。
API 操作で Provider を参照するための一意識別子です。
以下は各エンティティの関係を示します。
Recipient
└─ may belong to Recipient Group
└─ becomes Giftee when attached to Campaign
Campaign (Engagement Container)
├─ defines Redemption rules
├─ manages Giftee states
└─ may generate Fulfillment Orders
Commerce Layer
├─ Marketplace Order (direct transaction)
└─ Swag Order (inventory-based transaction)
Redemption
├─ Link-based
├─ Email-based
└─ Transitions state before fulfillment
Giftpack の主要な /v1 オペレーションでは、ワークスペース単位の API キーを X-API-KEY ヘッダーで送信します。API キーは、信頼できるサーバーサイドアプリケーションからのみ使用してください。
API キーは Developer Settings で管理できます。ワークスペースと現在のユーザーには、Giftpack Open API 機能へのアクセス権、および必要な開発者設定権限が必要です。
Developer ページを利用できない場合は、連携の開発を始める前に、ワークスペース管理者へ契約プランとご自身のロールを確認してください。
API キーをブラウザー JavaScript、モバイルアプリケーション、ログ、スクリーンショット、サポートチケット、ソース管理に含めないでください。
ステージング環境と本番環境では別々の認証情報を使用します。キーが漏えいした可能性がある場合は、直ちに無効化してください。
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
API キーによってワークスペースが識別されます。リソースに対する認可はサーバー側で適用されるため、別のワークスペースに属する ID を指定しても、そのリソースへのアクセス権は得られません。
https://developer.giftpack.ai に送信する。API Reference に掲載されている一部のコネクターオペレーションでは、Bearer Token またはプロバイダー固有の認証を使用します。各オペレーションに表示されるセキュリティスキームに従い、Giftpack API キーでコネクターエンドポイントを呼び出せるとは想定しないでください。
X-API-KEY をマスキングする。公開 API の契約では、すべてのオペレーションに共通するレート制限や単一の再試行ポリシーは保証されていません。利用可能な場合は、エンドポイント固有のヘッダーと API Reference を確認し、大量のバーストリクエストを計画する前に Giftpack へお問い合わせください。
Giftpack のオペレーションでは、標準の HTTP ステータスコードを使用します。API Reference に記載されているエラーレスポンスのメディアタイプは application/problem+json です。
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Property email is required but is missing.",
"instance": "https://developer.giftpack.ai/errors/example",
"errors": [
{
"location": "body.email",
"message": "The email field is required.",
"value": null
}
]
}
type: 問題の種類を識別する URI。about:blank の場合があります。title: 問題を人が読める形式で示す、安定した概要。status: このレスポンスに対応する HTTP ステータス。detail: 発生した具体的なエラーの説明。instance: 提供される場合、このエラー発生を識別する URI。errors: location、message、value を含む、省略可能なフィールド単位の詳細。すべてのエラーに全フィールドが含まれるとは限りません。省略可能なフィールドがなくても、また将来未知のフィールドが追加されても処理できるパーサーを実装してください。
| ステータス | 意味 | 推奨対応 |
|---|---|---|
2xx | HTTP オペレーションは成功 | 返された ID を保存し、その後のライフサイクル変更は Webhook で追跡する |
400 | リクエストが不正、または検証に失敗 | リクエストを修正してから再実行する |
401 | 認証情報がない、または無効 | サーバー側の API キーと環境を確認する |
403 | 認証済みだが権限がない | ワークスペースの所有関係、プランのアクセス範囲、ユーザー権限を確認する |
404 | リソースまたはルートが見つからない | エンドポイントとリソース ID を確認する |
409 | リクエストが現在の状態と競合 | リソースを再取得し、そのオペレーションが引き続き有効か判断する |
5xx | Giftpack または上流サービスがリクエストを完了できなかった | 現在の状態を保持し、オペレーションを安全に再実行できる場合のみ再試行する |
各オペレーションで規定されるレスポンスについては、API Reference が正式な情報源です。
GET リクエストは通常、上限付き指数バックオフで再試行できます。状態を変更するリクエストでは、より慎重な対応が必要です。
通信タイムアウトは、クライアントがレスポンスを受信しなかったことを意味します。サーバーがリクエストを完了しなかったことの証明にはなりません。
問題をエスカレーションする際は、エンドポイント、メソッド、UTC タイムスタンプ、HTTP ステータス、関連するリソース ID、機密情報をマスキングした Problem レスポンスを提供してください。API キーやマスキングしていない受取人データは、決して含めないでください。
Webhook は、API リクエストの完了後に発生する受取人およびフルフィルメントの状態遷移を通知します。ライフサイクルを把握するための主要なシグナルとして Webhook を使用し、状態の照合には GET オペレーションを使用してください。
古いリストをハードコードせず、現在のカタログを取得してください。
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
現在のカタログには、2 つのリソースファミリーが含まれています。
giftee
連携から開始された Campaign、予約プログラム、自動リワードワークフローなど、Smart Gifting の注文における受取人のライフサイクルイベントです。
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedgiftee.cancelgiftee.resumegiftee.deletemarketplace_order_receiver
Smart Gifting の Campaign ワークフローを介さず、Gift Mall または Merchandise Catalog から直接行われた注文における受取人のライフサイクルイベントです。
marketplace_order_receiver.createdmarketplace_order_receiver.launchedmarketplace_order_receiver.shippedmarketplace_order_receiver.deliveredmarketplace_order_receiver.failedmarketplace_order_receiver.returnedmarketplace_order_receiver.reviewedmarketplace_order_receiver.delete各配信の内容は JSON オブジェクトです。data は構造化されたリソースのスナップショットであり、エスケープされた JSON 文字列ではありません。
{
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "giftee.shipped",
"data": {
"id": "23e4567-e89b-12d3-a456-426655440000",
"type": "giftee",
"email": "recipient@example.com",
"status": 12,
"delivery_status": 2,
"budget": 100,
"campaign": {
"id": "323e4567-e89b-12d3-a456-426655440000"
},
"recipient": {
"id": "423e4567-e89b-12d3-a456-426655440000"
},
"delivery_tracking_code": "TRACKING-CODE"
},
"created_at": "2026-09-01 15:23:33"
}
id は永続的なイベント発生 ID です。重複排除キーとして使用してください。type はリソースファミリーと状態遷移を識別します。data はイベント発生時点のリソース状態を保持します。フィールドはリソースファミリーとライフサイクルの段階によって異なります。created_at はイベントの発生時刻です。配信順序が前後する可能性があるため、状態遷移を並べる際はこの値を使用してください。Giftpack は、未加工のリクエストボディから算出した HMAC-SHA256 ダイジェストを、小文字の 16 進数文字列として X-Giftpack-Signature に設定して送信します。
const crypto = require('crypto');
function verifyGiftpackWebhook(rawBody, signature, secret) {
if (!signature) return false;
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const actualBuffer = Buffer.from(signature, 'utf8');
const expectedBuffer = Buffer.from(expected, 'utf8');
return (
actualBuffer.length === expectedBuffer.length &&
crypto.timingSafeEqual(actualBuffer, expectedBuffer)
);
}
ペイロードをパースまたは処理する前に、署名を検証してください。Webhook シークレットはサーバーサイドのシークレットストレージに保管します。
POST を送信します。2xx レスポンスを返すと、配信は成功として記録されます。id に基づいて冪等に処理してください。イベントを検証し、永続的に受け入れた後、速やかに 2xx を返してください。負荷の高い処理はキューへ移します。
Webhook のイベントログとリクエストログでは、次の数値ステータスを使用します。
-1: 失敗0: 処理中1: 成功イベント詳細レスポンスには、トラブルシューティングに使用できる構造化された webhook_event_data、試行回数、個別のリクエストレコードが含まれます。
X-Giftpack-Signature を検証する。id で重複排除する。created_at を保存し、イベントが順不同で到着しても処理できるようにする。2xx を返す。受取人がリワードを受け取る方法に合ったリソースファミリーを選択してください。すべての必須フィールドとレスポンスモデルについては、API Reference が正式な情報源です。
連携、予約プログラム、自動化によって Campaign ベースの受取人向けエクスペリエンスを作成する場合は、このワークフローを使用します。
POST /v1/campaigns で Campaign を作成または選択する。POST /v1/giftees で各受取人を追加する。POST /v1/giftees/{gifteeId}/redemptionlink で受取人用リンクを生成する。giftee.* Webhook イベントで受取人のライフサイクルを追跡する。以降のオペレーションには、返された Giftee ID を使用してください。Redemption URL を独自に組み立てないでください。
まず、giftee.created、giftee.launched、giftee.preparing、giftee.shipped、giftee.delivered、giftee.failed、giftee.returned を購読します。連携でそれらの状態遷移が必要な場合は、キャンセル、再開、削除、レビューの各イベントも追加してください。
Smart Gifting の Campaign ではなく、Gift Mall または Merchandise Catalog から直接注文する場合は、Marketplace Order を使用します。
curl https://developer.giftpack.ai/v1/marketplaceorders \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"marketplace_order_name": "September employee rewards",
"marketplace_order_start_date": "2026-09-01",
"marketplace_order_end_date": "2026-09-30",
"marketplace_order_type": "Normal",
"submit": false,
"receivers": [
{
"member_id": "9a1232aa-238f-421c-82e7-45693d1b25b4",
"country": "US",
"gift_message": "Thank you for your contribution.",
"email_notification": true,
"sms_notification": false,
"marketplace_feature": false,
"donation_feature": false,
"products": [
{
"marketplace_product_id": "961be65a-88d8-4040-8808-843ccf5da624",
"marketplace_product_variant_id": "961be65a-a96a-412d-b22a-325f07d85647",
"product_quantity": 1
}
]
}
]
}'
アプリケーションで確認または更新が必要な場合は、注文を下書きとして作成します。準備ができたら、POST /v1/marketplaceorders/{marketplaceOrderId}/submit で送信してください。
各受取人は marketplace_order_receiver.* イベントで追跡します。Receiver は Campaign ではなく Marketplace Order に属するため、これらのイベントは giftee.* とは別のイベントファミリーです。
メンバーがリワード残高を保持し、後から利用する場合は、ポイントを使用します。
POST /v1/pointrecipients/{memberId}/enablepointfeature でポイント機能を有効にする。PATCH /v1/pointrecipients/{memberId}/points で残高を更新する。残高の更新には credits と points の両方が必要です。
curl https://developer.giftpack.ai/v1/pointrecipients/MEMBER_ID/points \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"credits": 1,
"points": 100,
"expired_at": "2027-09-01",
"notes": "Annual recognition allocation"
}'
ビジネスロジックを主にポイントで表現している場合でも、credits を省略しないでください。タイムアウト後に残高更新を再実行する前に、返された Point Recipient と Point History を確認してください。