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

> Berikan akses kolaborator kepada pelanggan ke sebuah repositori GitHub pribadi pada tingkat izin yang Anda pilih, dan cabut secara otomatis saat pembatalan.

<Info>
  Hak GitHub menambahkan pelanggan berbayar sebagai kolaborator pada repositori pribadi. Anda memilih tingkat izin (`pull`, `push`, `triage`, `maintain`, atau `admin`) dan Dodo Payments menangani undangan, pelacakan penerimaan, dan penghapusan saat pembatalan.
</Info>

## Apa yang Diberikan

* Pelanggan diundang ke repositori GitHub Anda melalui alur OAuth yang menghubungkan akun GitHub mereka ke pembelian.
* Setelah mereka menerima, GitHub memberikan mereka akses kolaborator pada tingkat izin yang dikonfigurasikan.
* Pembatalan, pengembalian dana, atau pencabutan manual menghapus kolaborator.

Penggunaan umum termasuk produk berbasis sumber, template berbayar, repo kode kursus, dan SDK klien terbatas.

## Hubungkan GitHub

<Steps>
  <Step title="Open Entitlements">
    Di dashboard Dodo Payments Anda, buka **Entitlement** dan klik **+** untuk memulai hak baru.
  </Step>

  <Step title="Pick GitHub">
    Pilih **Akses GitHub** sebagai integrasi. Jika GitHub belum terhubung, Anda akan diminta untuk **Menghubungkan 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="Panel hak baru meminta pedagang untuk menghubungkan GitHub" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    Mengklik akan membuka GitHub di tab baru. Masuk, kemudian pasang Dodo Payments GitHub App pada organisasi atau akun pengguna yang memiliki repositori. Anda dapat memberikan akses ke **semua repositori** atau hanya yang ingin Anda batasi.

    <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="Halaman Instal dan Otorisasi GitHub dengan opsi Semua repositori dan Hanya pilih repositori" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    Ketika GitHub mengarahkan kembali, Anda akan melihat konfirmasi bahwa akun telah terhubung.

    <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="Halaman konfirmasi berhasil terhubungnya Akses GitHub" 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">
    Kembali ke dashboard, pilih **repositori** yang harus diberikan hak akses dan pilih tingkat **izin**. Pemilih repositori hanya menampilkan repositori yang dapat diakses Aplikasi GitHub. Berikan hak **nama** dan klik **Buat Hak**.

    <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="Formulir hak GitHub dengan Akses GitHub terhubung, pemilih repositori, dropdown izin, dan bidang nama" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Simpan dan lampirkan hak kepada produk apa pun. Pelanggan yang membeli produk tersebut menerima undangan GitHub saat pengiriman.
  </Step>
</Steps>

## Tingkat Izin

Izin repositori standar GitHub berlaku:

| Izin       | Terbaik untuk                                                                    |
| ---------- | -------------------------------------------------------------------------------- |
| `pull`     | Akses hanya baca. Pelanggan dapat mengkloning, mengambil, dan melihat repo.      |
| `triage`   | Akses baca ditambah kemampuan mengelola isu dan pull request.                    |
| `push`     | Akses baca + tulis. Pelanggan dapat mendorong cabang dan membuka pull request.   |
| `maintain` | Akses dorong ditambah pengelolaan pengaturan repositori (kecuali yang sensitif). |
| `admin`    | Kontrol penuh repositori. Gunakan dengan hati-hati.                              |

<Warning>
  Berikan **izin paling sedikit** yang sesuai dengan kasus penggunaan Anda. Sebagian besar skenario konten berbayar hanya memerlukan `pull`.
</Warning>

## Alur Pelanggan

1. Pelanggan menyelesaikan pembayaran.
2. Dodo Payments membuat hak dalam status `pending` dengan `oauth_url` untuk pelanggan menghubungkan akun GitHub mereka.
3. Pelanggan mengotorisasi melalui tautan di email atau portal pelanggan mereka.
4. Dodo Payments mengundang akun GitHub pelanggan ke repositori pada izin yang dikonfigurasikan. Hak berpindah ke `delivered` setelah undangan dibuat.
5. Jika langganan dibatalkan, dikembalikan, atau dicabut, pelanggan dihapus sebagai kolaborator.

## Konfigurasi yang Diperlukan

| Bidang       | Diperlukan | Deskripsi                                                                                  |
| ------------ | ---------- | ------------------------------------------------------------------------------------------ |
| `target_id`  | Ya         | Repositori untuk mengundang pelanggan. Pemilih repositori dashboard mengisinya untuk Anda. |
| `permission` | Ya         | Salah satu dari `pull`, `push`, `triage`, `maintain`, `admin`.                             |

## Buat melalui 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

Event webhook standar [`entitlement_grant.*`](/developer-resources/webhooks/intents/entitlement-grant) mencakup alur GitHub:

* `entitlement_grant.created` mencakup `oauth_url` untuk otorisasi GitHub.
* `entitlement_grant.delivered` aktif setelah undangan kolaborator dibuat.
* `entitlement_grant.failed` aktif dengan `error_code: "github_permission_denied"` (atau serupa) jika Aplikasi GitHub kehilangan akses ke repositori.

## Pemecahan Masalah

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    Aplikasi Dodo Payments GitHub harus dipasang pada organisasi atau pengguna yang memiliki repositori. Buka **Entitlement → Integrations → GitHub** dan pasang ulang aplikasi tersebut, pastikan memberikan akses ke repositori yang relevan.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    Instalasi Aplikasi GitHub tidak lagi memiliki akses ke repositori, atau repositori tersebut telah diubah/ditransfer. Berikan akses ulang kepada aplikasi tersebut dan pemberian akses berikutnya akan berhasil.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    Pelanggan harus menerima undangan GitHub dari halaman notifikasi mereka atau dengan mengklik tautan di email mereka. Sampai mereka menerima, mereka tetap "diundang" tetapi tidak dapat mengkloning repo. Hak masih dianggap `delivered` dari perspektif Dodo Payments; undangan adalah apa yang kami keluarkan.
  </Accordion>
</AccordionGroup>
