> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 導入

> 顧客が支払った際に、ライセンスキー、ダウンロードファイル、フィーチャーフラグ、および Discord、GitHub、Telegram、Framer、Notion などのプラットフォームへのアクセスを自動的に提供。

<Info>
  権利は、成功した支払いまたはアクティブなサブスクリプションを実際のアクセスに変えます：顧客の受信トレイのライセンスキー、アプリがチェックするフィーチャーフラグ、Discord の役割、GitHub リポジトリ、Notion テンプレート、Framer リミックスリンク、Telegram チャット招待、またはダウンロード可能なファイル バンドル。Dodo Payments は、支払いライフサイクルの変化に応じてそのアクセスを自動的に発行、追跡、および取り消します。
</Info>

<Frame caption="The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.">
  <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=12a326205f64d1e71485bce46114d296" alt="左側に特権のリストがあり、右側に付与アクティビティがある特権ダッシュボード" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1195" data-path="images/entitlements/list.png" />
</Frame>

## 特権とは何ですか？

**特権**とは、顧客に提供するものの再利用可能な定義です: Proライセンスキー、"Patrons" Discord役割、プライベートGitHubリポジトリへのアクセス、ダウンロード可能な電子書籍バンドルなど。特権を製品に添付し、Dodo Paymentsが残りを処理します。

顧客が製品を購入すると、Dodo Paymentsはその特権の単一の発行である**付与**を作成します。付与は、小さな状態セットを通過します: 配信が進行中の場合は`pending`、顧客がアクセスした後は`delivered`、配信が完了できなかった場合は`failed`、アクセスが取り消された場合は`revoked`といった具合です。

<Tip>
  特権は**履行**（顧客がアクセスを持っているか）を制御します。クレジットは**消費**（彼らがどれだけ使用できるか）を制御します。両方とも同じ製品に添付できます。クレジットについては[クレジットベースの請求](/features/credit-based-billing)をご覧ください。
</Tip>

## 利用可能な統合

Dodo Paymentsは、各特権を専用の統合を通じて配信します。あなたが販売するものに合った統合を選択してください。

<CardGroup cols={2}>
  <Card title="License Keys" icon="key" href="/features/license-keys">
    アクティベーション制限と有効期限を持つユニークなライセンスキーを生成します。ソフトウェア、プラグイン、CLIに最適です。
  </Card>

  <Card title="Digital Files" icon="download" href="/features/digital-product-delivery">
    事前サインされたダウンロードURLとオプションの指示を持つダウンロード可能なファイル（電子書籍、テンプレート、メディア）を配信します。
  </Card>

  <Card title="Feature Flags" icon="flag" href="/features/entitlements/feature-flags">
    自分のアプリで購入を通じて機能をゲートします。即時に配信され、API を介して確認され、キャンセル時に取り消されます。
  </Card>

  <Card title="Discord" icon="discord" href="/features/entitlements/discord">
    購入時に顧客に Discord サーバーで役割を付与します。キャンセル時に自動的に取り消されます。
  </Card>

  <Card title="GitHub" icon="github" href="/features/entitlements/github">
    選択した許可レベルで、プライベートリポジトリに顧客を共同作業者として追加します。
  </Card>

  <Card title="Telegram" icon="telegram" href="/features/entitlements/telegram">
    購入後にプライベートな Telegram チャットまたはチャンネルに顧客を追加します。
  </Card>

  <Card title="Framer" icon="puzzle-piece" href="/features/entitlements/framer">
    支払った顧客向けに Framer テンプレートのリミックスリンクを解除します。
  </Card>

  <Card title="Notion" icon="book" href="/features/entitlements/notion">
    購入時に Notion テンプレートを顧客のワークスペースに複製します。
  </Card>
</CardGroup>

***

## 権利のしくみ

権利は、すでに受け取っている Webhook としての同じ支払いおよびサブスクリプションのイベントによって駆動されます。購入の場合、権利 API を自分で呼び出す必要はありません。Dodo Payments は、支払いライフサイクルに基づいて自動的に権利を作成および取り消します。

### 権利のライフサイクル

<Steps>
  <Step title="Created">
    支払いが完了するかサブスクリプションがアクティブ化されると権利が作成されます。ライセンスキーとフィーチャーフラグは、直接 `delivered` にジャンプします。その他の統合は `pending` から始まります。OAuth ベースの統合 (Discord、GitHub、Notion) には、顧客が同意を完了するために訪問する必要がある `oauth_url` が含まれています。プラットフォーム直結型統合 (Telegram、Framer、デジタルファイル) は、プロビジョニング中は短い間 `pending` にあり、その後 `delivered` に移行します。
  </Step>

  <Step title="Delivered">
    配信が完了すると（ライセンスキー生成、役割付与、リポジトリアクセス付与、ファイルリンク解決、OAuth 完了）、権利は `delivered` に移動し、`delivered_at` が設定されます。
  </Step>

  <Step title="Failed">
    統合通話が再試行不可能なエラー（取り消された OAuth トークン、許可が拒否された、ファイルが存在しなくなった）を返した場合、権利は `failed` に移動します。`error_code` および `error_message` フィールドはその理由をキャプチャします。
  </Step>

  <Step title="Revoked">
    アクセスが撤回されると（サブスクリプションがキャンセルされる、返金が発行される、または商人による取り消し）、権利は `revoked` に移動します。`revocation_reason` フィールドはトリガーを記録します。
  </Step>
</Steps>

### イベントによる権利の動作

| Event                                             | Behavior                                                                                                                                                                                         |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `payment.succeeded` (one-time payment)            | 添付された権利ごとに 1 つの権利を発行します。                                                                                                                                                                         |
| `payment.succeeded` (subscription-linked payment) | No-op。権利は以下のサブスクリプションイベントによって駆動されます。                                                                                                                                                             |
| `subscription.active`                             | すでにない場合は、添付された権利の権利を発行します。同じサブスクリプションのために以前に取り消されたすべての権利を再発行します。                                                                                                                                 |
| `subscription.renewed`                            | No-op。既存の権利は更新を越えて持続します。                                                                                                                                                                         |
| `subscription.on_hold`                            | すべての配信済みおよび保留中の権利を取り消します。`revocation_reason: subscription_on_hold`。                                                                                                                              |
| `subscription.cancelled`                          | すべてを取り消します。`revocation_reason: subscription_cancelled`。                                                                                                                                          |
| `subscription.expired`                            | すべてを取り消します。`revocation_reason: subscription_expired`。                                                                                                                                            |
| `subscription.plan_changed`                       | 現在のすべての権利を取り消し、新しいプランの権利を出します。`revocation_reason: plan_changed`。                                                                                                                                 |
| `refund.succeeded` (one-time payment)             | その支払いの権利を取り消します。`revocation_reason: refund`。                                                                                                                                                     |
| Manual API revoke                                 | `revocation_reason: manual` で取り消します。手動の取り消しはサブスクリプションの更新時に自動再付与されません。                                                                                                                            |
| License key disabled                              | ライセンスキーの権利の場合、基盤となるキーを無効にすると、`revocation_reason: license_key_disabled` で権利が取り消されます。キーが再有効化されると自動的に再活性化されます。                                                                                      |
| Platform drift detected                           | 統合のプラットフォーム側が同期から外れる場合 (Discord 役割が手動で削除される、GitHub アプリがリポジトリアクセスを失う、または検出パスでターゲットが見つからない)、権利は `revocation_reason: platform_external` で取り消されます。基盤となるプラットフォームの問題が解決されるまで、サブスクリプションの更新時に自動再付与されません。 |

<Note>
  サブスクリプション駆動の権利は、`(entitlement, customer, subscription)` によって冪等です。更新および再活性化は重複した権利を作成しません。一回限りの権利は、`(entitlement, customer, payment)` によって冪等です。
</Note>

***

## 最初の権利を作成

<Steps>
  <Step title="Open Entitlements">
    Dodo Payments ダッシュボードの **Entitlements** に移動し、**+** をクリックして新しい権利を作成します。
  </Step>

  <Step title="Pick an integration">
    統合タイプを選択します: ライセンスキー、デジタルファイル、フィーチャーフラグ、Discord、GitHub、Telegram、Framer、または Notion。プラットフォーム統合の場合は、接続していなければ最初にアカウントを接続してください。
  </Step>

  <Step title="Configure delivery">
    統合に固有のフィールドを記入してください。たとえば、GitHub はリポジトリと許可レベルを求め、Discord はサーバーとオプションの役割を求め、ライセンスキーは有効化制限と有効期限を求めます。

    <Frame caption="Creating a GitHub entitlement. Each integration shows the fields it needs.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=722e925ec5158a5d16c58213132ccb9d" alt="統合セレクターと設定フィールドを持つ新規権利フォーム" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save">
    権利を保存します。これで、任意の商品に添付することができます。
  </Step>
</Steps>

## 商品に権利を添付

商品を開き、**Advanced Settings → Entitlements & Credits** を展開し、商品購入時に配信される権利を選択します。単一の商品で複数の権利を同時に配信できます。たとえば、Pro プランには、ライセンスキー、GitHub アクセス、および Discord 役割を含めることができます。

<Frame caption="Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.">
  <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=965ad78262791fa8dbb712b4fdf89538" alt="製品権利選択パネルで各権利のチェックボックスを表示" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1197" data-path="images/entitlements/attach-to-product.png" />
</Frame>

***

## 顧客体験

### Eメールと顧客ポータル

顧客は、購入後に配信メールを受け取り、ライセンスキー、ダウンロードリンク、OAuth 招待リンク、またはプラットフォーム招待など、製品の権利に該当するものが含まれます。同じ情報は、[Customer Portal](/features/customer-portal) の注文履歴から無期限に利用可能です。

### OAuth ベースの配信

Discord、GitHub、Notion サブスクライバーアクセスでは、顧客が Dodo Payments にアクセス権を与えるための認可が必要です。これらの権利は、顧客が Eメールまたは顧客ポータルからリンクを使用して OAuth フローを完了するまで、`pending` ステータスに留まります。認可されると、権利は `delivered` に移行し、プラットフォームアクセスが即時に提供されます。

### 取り消し

取り消された権利はプラットフォームレベルで削除されます：Discord の役割が削除され、GitHub の共同作業者が削除され、ライセンスキーが無効になります。顧客は、顧客ポータルで変更が反映されたことを見ることができます。

<Warning>
  デジタルファイルの場合、取り消しは今後の事前署名 URL へのアクセスを削除しますが、一度ダウンロード済みのコピーを無効にはしません。それに応じてコンテンツゲートを計画します。
</Warning>

***

## 権利の管理

ダッシュボードから任意の権利を開いて、その権利を確認します。権利の詳細パネルには、総権利数、ステータスフィルタ、顧客情報、配信日、および取り消しアクションが表示されます。

権利をプログラム的に管理することもできます：

<CodeGroup>
  ```typescript TypeScript theme={null} theme={null}
  import DodoPayments from 'dodopayments';

  const client = new DodoPayments({
    bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
  });

  // List grants for an entitlement
  const grants = await client.entitlements.grants.list('ent_abc123', {
    status: 'Delivered',
  });

  // Revoke a single grant
  await client.entitlements.grants.revoke('grant_xyz789', {
    id: 'ent_abc123',
  });
  ```

  ```python Python theme={null} theme={null}
  client.entitlements.grants.list(
      "ent_abc123",
      status="Delivered",
  )

  client.entitlements.grants.revoke(
      "grant_xyz789",
      id="ent_abc123",
  )
  ```

  ```go Go theme={null} theme={null}
  grants, _ := client.Entitlements.Grants.List(
    ctx, "ent_abc123",
    dodopayments.EntitlementGrantListParams{Status: dodopayments.F("delivered")},
  )

  _, _ = client.Entitlements.Grants.Revoke(ctx, "grant_xyz789", "ent_abc123")
  ```
</CodeGroup>

***

## API 管理

<CardGroup cols={2}>
  <Card title="Create Entitlement" icon="plus" href="/api-reference/entitlements/create-entitlement">
    任意の統合タイプの新規権利を作成します。
  </Card>

  <Card title="List Entitlements" icon="list" href="/api-reference/entitlements/list-entitlements">
    統合タイプごとのフィルタリングを使用して権利を一覧表示します。
  </Card>

  <Card title="Get Entitlement" icon="magnifying-glass" href="/api-reference/entitlements/get-entitlement">
    権利とその解決済み設定を取得します。
  </Card>

  <Card title="Update Entitlement" icon="pen" href="/api-reference/entitlements/update-entitlement">
    名前、説明、または統合設定を更新します。
  </Card>

  <Card title="Delete Entitlement" icon="trash" href="/api-reference/entitlements/delete-entitlement">
    権利をソフト削除します；既存の権利は影響を受けません。
  </Card>

  <Card title="Upload File" icon="upload" href="/api-reference/entitlements/upload-file">
    最大 500 MiB までのファイルをデジタルファイルの権利にアップロードします。
  </Card>

  <Card title="List Grants" icon="users" href="/api-reference/entitlements/list-grants">
    ステータスおよび顧客フィルタを使用して権利のすべてを一覧表示します。
  </Card>

  <Card title="Revoke Grant" icon="ban" href="/api-reference/entitlements/revoke-grant">
    単一の権利を手動で取り消します。
  </Card>
</CardGroup>

***

## Webhooks

Dodo Payments は、権利のライフサイクルに対して 4 つの webhook イベントを発行します。これらのイベントを購読して、各顧客がアクセスできる内容に関してアプリケーションを同期状態に保ちます。

| Event                         | Fires when                                                                                                                           |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `entitlement_grant.created`   | 新しい権利が作成されます。ライセンスキーの権利は `delivered` に届きます。全ての他の統合は `pending` に届き、プラットフォームコールが成功した（または OAuth ベースの統合の場合、顧客が認可した）後、`delivered` に移行します。 |
| `entitlement_grant.delivered` | 権利が配信済みに移行します。顧客は今アクセス可能です。                                                                                                          |
| `entitlement_grant.failed`    | 権利を配信できませんでした。`error_code` および `error_message` を確認します。                                                                               |
| `entitlement_grant.revoked`   | アクセスが撤回されました。`revocation_reason` を確認します。                                                                                             |

<Card title="Entitlement Grant Webhook Payloads" icon="bell" href="/developer-resources/webhooks/intents/entitlement-grant">
  完全なペイロードスキーマ、サンプルイベント、および `revocation_reason` リファレンスを表示します。
</Card>

***

## ベストプラクティス

* **配信チャネルごとに一つの権利を使用すること。** 異なる役割の意図で異なる製品間で単一の Discord 権利を共有しないでください。クリーンな取り消しのために役割ごとに一つの権利を作成します。
* **最初にテストモードでテストすること。** 権利を作成し、テスト製品に添付し、チェックアウトを実行し、権利が `pending → delivered` を経て移行するのを確認します。テストサブスクリプションをキャンセルして権利が取り消されることを確認します。
* **`entitlement_grant.delivered` に聞く。`payment.succeeded` ではなく。** 支払いは、完了前に成功することがあります（特に OAuth フローの場合）。納品済みイベントを待って、自社システムの依存機能を解除します。
* **`entitlement_grant.failed` をアクション可能として扱うこと。** 失敗した権利は、顧客が支払ったがアクセスを得られなかったことを意味します。これをサポートチームに表面化させるか、再権利をトリガーします。
* **`revocation_reason` を保持フローにマッピングすること。** `subscription_on_hold` の取り消しは回復可能です（顧客がカードを更新するかもしれません）。`manual` の取り消しは意図的です。顧客コミュニケーションで異なる取り扱いをします。
