> ## 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.

# GitHub エンタイトルメント

> 顧客に対し、選択した権限レベルでプライベートGitHubリポジトリへの共同作業者アクセスを許可し、キャンセル時に自動的に取り消します。

<Info>
  GitHubのエンタイトルメントは、有料顧客をプライベートリポジトリの共同作業者として追加します。権限レベル（`pull`、`push`、`triage`、`maintain`、または `admin`）を選択し、Dodo Paymentsが招待、受諾の追跡、キャンセル時の削除を行います。
</Info>

## 配信されるもの

* 顧客はOAuthフローを通じてGitHubリポジトリに招待され、彼らのGitHubアカウントと購入をリンクします。
* 受諾すると、GitHubが設定された権限レベルで共同作業者アクセスを付与します。
* キャンセル、払い戻し、または手動の取り消しにより、共同作業者が削除されます。

一般的な用途には、ソース利用可能な製品、有料テンプレート、コースコードリポジトリ、ゲート付きクライアントSDKが含まれます。

## GitHubを接続

<Steps>
  <Step title="Open Entitlements">
    Dodo Paymentsダッシュボードで、**Entitlements**に移動し、\*\*+\*\*をクリックして新しいエンタイトルメントを開始します。
  </Step>

  <Step title="Pick GitHub">
    統合として**GitHub Access**を選択します。GitHubがまだ接続されていない場合は、**Connect GitHub**を促されます。

    <Frame caption="Connect GitHub prompt before the install handoff.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/connect-prompt.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=8a836c94099accdb2b3dc31c22d0e11b" alt="新しいエンタイトルメントパネルがGitHubの接続を促している" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    クリックすると、新しいタブでGitHubが開きます。サインインしてから、Dodo Payments GitHubアプリをリポジトリを所有する組織またはユーザーアカウントにインストールします。**全てのリポジトリ**またはゲートを設定する予定のリポジトリにのみアクセス権を付与できます。

    <Frame caption="GitHub Install & Authorize page — choose which repositories the app can manage.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/oauth-install.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=0788d3f6e9df8a087de824967f09c215" alt="全リポジトリと選択したリポジトリのオプションを持つGitHubインストールおよび認証ページ" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    GitHubがリダイレクトされると、アカウントが接続されたことが確認できます。

    <Frame caption="Account connected — return to the Dodo Payments dashboard to continue.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/connected.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=ee3c87c3b3917f473ff3d376dfdc6494" alt="GitHub Accessが正常に接続された確認ページ" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1137" data-path="images/entitlements/github/connected.png" />
    </Frame>
  </Step>

  <Step title="Pick a repository and permission">
    ダッシュボードに戻り、エンタイトルメントがアクセスを許可する**リポジトリ**を選択し、**権限**レベルを選びます。リポジトリピッカーにはGitHubアプリがアクセス可能なリポジトリのみが表示されます。エンタイトルメントに**名前**を付けて**Create Entitlement**をクリックします。

    <Frame caption="Creating a GitHub entitlement. Pick the repository and the permission you want customers to receive.">
      <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="接続されたGitHub Access、リポジトリセレクター、権限ドロップダウン、名前フィールドを持つGitHubエンタイトルメントフォーム" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    エンタイトルメントを保存して任意の商品に添付します。その商品を購入した顧客は、配信時にGitHubの招待を受け取ります。
  </Step>
</Steps>

## 権限レベル

GitHubの標準リポジトリ権限が適用されます：

| 権限         | 最適な用途                                       |
| ---------- | ------------------------------------------- |
| `pull`     | 読み取り専用アクセス。顧客はリポジトリをクローン、フェッチ、表示できます。       |
| `triage`   | 読み取りアクセスに加え、問題とプルリクエストを管理する能力があります。         |
| `push`     | 読み取り+書き込みアクセス。顧客はブランチをプッシュし、プルリクエストを作成できます。 |
| `maintain` | プッシュアクセスに加え、リポジトリ設定（機密を除く）を管理します。           |
| `admin`    | リポジトリの完全な制御。使用には注意が必要です。                    |

<Warning>
  使用ケースに合った**最低限の権限**を付与してください。ほとんどの有料コンテンツシナリオには`pull`だけが必要です。
</Warning>

## 顧客フロー

1. 顧客がチェックアウトを完了します。
2. Dodo Paymentsが顧客がGitHubアカウントをリンクするための `pending`ステータスの付与を作成します。
3. 顧客はメールや顧客ポータル内のリンクを介して認可します。
4. Dodo Paymentsが設定された権限でリポジトリに顧客のGitHubアカウントを招待します。招待が作成されると付与は`delivered`に移動します。
5. サブスクリプションがキャンセル、払い戻し、または取り消されると、顧客が共同作業者として削除されます。

## 必要な設定

| フィールド        | 必須 | 説明                                                  |
| ------------ | -- | --------------------------------------------------- |
| `target_id`  | はい | 顧客を招待するリポジトリ。ダッシュボードのリポジトリピッカーがこれを自動入力します。          |
| `permission` | はい | `pull`, `push`, `triage`, `maintain`, `admin`のいずれか。 |

## API経由で作成

<CodeGroup>
  ```typescript TypeScript theme={null} theme={null}
  const entitlement = await client.entitlements.create({
    name: 'Code Share Repository',
    integration_type: 'github',
    integration_config: {
      target_id: 'acme/private-sdk',
      permission: 'pull',
    },
  });
  ```

  ```python Python theme={null} theme={null}
  client.entitlements.create(
      name="Code Share Repository",
      integration_type="github",
      integration_config={
          "target_id": "acme/private-sdk",
          "permission": "pull",
      },
  )
  ```

  ```go Go theme={null} theme={null}
  client.Entitlements.New(ctx, dodopayments.EntitlementNewParams{
    Name:            dodopayments.F("Code Share Repository"),
    IntegrationType: dodopayments.F(dodopayments.EntitlementIntegrationTypeGithub),
    IntegrationConfig: dodopayments.F[dodopayments.IntegrationConfigUnionParam](
      dodopayments.IntegrationConfigGitHubConfigParam{
        TargetID:   dodopayments.F("acme/private-sdk"),
        Permission: dodopayments.F("pull"),
      },
    ),
  })
  ```
</CodeGroup>

## Webhooks

標準の[`entitlement_grant.*` webhookイベント](/developer-resources/webhooks/intents/entitlement-grant)はGitHubフローをカバーします：

* `entitlement_grant.created`にはGitHub認証用の`oauth_url`を含みます。
* `entitlement_grant.delivered`は共同作業者の招待が作成されると発火します。
* `entitlement_grant.failed`はGitHubアプリがリポジトリへのアクセスを失った場合に`error_code: "github_permission_denied"`（または類似のもの）と共に発火します。

## トラブルシューティング

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    Dodo Payments GitHubアプリはリポジトリを所有する会社またはユーザーにインストールされている必要があります。**Entitlements → Integrations → GitHub** を開き、アプリを再インストールし、関連するリポジトリへのアクセス権を付与してください。
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    GitHubアプリのインストールがリポジトリへのアクセス権を持たなくなったか、リポジトリ名が変更された/転送されました。アプリへのアクセスを再度許可し、次の再付与が成功します。
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    顧客は通知ページからまたはメール内のリンクをクリックして、GitHubの招待を受け入れる必要があります。彼らが受け入れるまで、"招待済み"のままであり、リポジトリをクローンすることはできません。Dodo Paymentsの観点から、付与はまだ`delivered`です。招待が発行したものです。
  </Accordion>
</AccordionGroup>
