本文へ移動

カスタムライセンス API

Launch は Licentivo と独自ライセンスサービスに対応しています。「システム設定 → ライセンスシステム」でストア全体の提供元を一つ選択します。

カスタムライセンス商品は販売者独自のライセンスサービスと SDK を使用します。Launch は販売、入金確認、購入状態の同期、提供情報の照会を担当します。

  1. sandbox と live ごとに接続、署名鍵、商品とプランの対応を設定し、接続を確認してからプランを公開します。
  2. 注文がある接続は直接置き換えられません。提供元を変更する前に注文を移行し、プランを再公開してください。
  3. 購入、更新、アップグレード、返金、障害復旧をテスト環境で確認してから本番設定を公開します。

販売者のライセンスサービス API

次の四つの API は販売者のライセンスサービスが実装し、Launch サーバーが呼び出します。www.licentivo.com に送信しないでください。

API目的
GET /launch/v1/capabilitiesプロトコル、接続、環境、対応する購入形式と提供形式を宣言します。
POST /launch/v1/events購入の完全なスナップショットを受信し、イベントを永続化してから受領情報を返します。
GET /launch/v1/events/{event_id}元イベントの受領情報を照会します。ライセンス変更の完了を示すのは applied のみです。
GET /launch/v1/entitlements/{entitlement_ref}/delivery現在の購入バージョンの既存の提供情報を読み取り、ライセンスを重複発行しません。

スナップショットには購入バージョン、現在の状態、絶対日時による有効期間が含まれます。valid_until=null は永久購入を示します。返金後も基本購入が残る場合があるため、受信側は完全なスナップショットから権限を再計算します。

POST /launch/v1/events · JSON
{
  "schema": "launch-external-licensing-v1",
  "event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
  "connection_ref": "merchant-01-sandbox",
  "environment": "sandbox",
  "type": "entitlement.snapshot",
  "change_reason": "purchase",
  "account_ref": "customer_opaque_001",
  "entitlement_ref": "purchase_opaque_001",
  "launch_product_id": "c6dd463e-50f7-4b76-8239-0a8ec6fc304b",
  "launch_plan_version_id": "5459a073-9362-4b46-949d-9b0c5d84421a",
  "product_ref": "desktop-editor",
  "plan_ref": "professional-yearly-v1",
  "version": 1,
  "desired_state": "active",
  "valid_from": "2026-10-26T00:00:00Z",
  "valid_until": "2027-10-26T00:00:00Z"
}

署名と再試行

接続ごとに、32 バイト以上の乱数からなる独立した HMAC-SHA256 鍵を使用します。リクエストには鍵 ID、Unix 秒のタイムスタンプ、ランダム nonce、署名を含めます。署名、300 秒の時間窓、nonce の再利用を検証します。

HMAC-SHA256 · UTF-8 canonical request
v1
<key_id>
<timestamp>
<nonce>
<UPPERCASE HTTP METHOD>
<encoded full path and raw query>
<lowercase SHA-256 of the exact request body>

署名入力の末尾に改行を追加しません。X-Launch-Signature は v1= にパディングなしの base64url 署名を続けた値です。GET 本文は空です。

再試行ではイベント ID と元の本文を保持し、毎回新しい nonce を使用します。タイムアウト後は元イベントを先に照会します。旧バージョンで新バージョンを上書きせず、202 をライセンス適用完了と見なしません。

Launch 管理者・顧客 API

これらの API は販売者自身の Launch サイトにあります。管理者は Web セッションと X-CSRF-Token を使用し、顧客は自分の現在有効な購入のみを読み取れます。

PUT /api/v1/admin/licensing/provider{"provider":"custom_http"}
GET/POST /api/v1/admin/licensing/connectionsGET/POST
PUT /api/v1/admin/licensing/connections/{id}POST /api/v1/admin/licensing/connections/{id}/check
PUT /api/v1/admin/products/{id}/licensingenvironment + connection_id + mappings
GET /api/v1/me/products/{id}/delivery?environment=sandboxpending / ready / unavailable

提供内容はライセンスキー、HTTPS のアクティベーションリンク、またはプレーンテキストの案内です。同期成功はクライアント実行時の認可確認を代替しません。

完全なプロトコルと例 · OpenAPI をダウンロード · Python 受信側の例

Launch 管理者・顧客向け OpenAPI