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

> Gewähren Sie Kunden Kollaboratorenzugang zu einem privaten GitHub-Repository auf der von Ihnen gewählten Berechtigungsebene und widerrufen Sie diesen automatisch bei Kündigung.

<Info>
  Die GitHub-Berechtigung fügt einen zahlenden Kunden als Kollaborator in einem privaten Repository hinzu. Sie wählen die Berechtigungsebene (`pull`, `push`, `triage`, `maintain` oder `admin`) und Dodo Payments übernimmt Einladung, Annahmeüberwachung und Entfernung bei Kündigung.
</Info>

## Was geliefert wird

* Der Kunde wird über einen OAuth-Flow, der seinen GitHub-Account mit dem Kauf verknüpft, zu Ihrem GitHub-Repository eingeladen.
* Sobald sie akzeptieren, gewährt GitHub ihnen auf der konfigurierten Berechtigungsebene Kollaboratorenzugang.
* Kündigung, Rückerstattung oder manueller Widerruf entfernt den Kollaborator.

Häufige Anwendungen sind quelloffene Produkte, bezahlte Vorlagen, Kurscode-Repos und gesperrte Client-SDKs.

## GitHub verbinden

<Steps>
  <Step title="Open Entitlements">
    Gehen Sie in Ihrem Dodo Payments-Dashboard zu **Berechtigungen** und klicken Sie auf **+** , um eine neue Berechtigung zu starten.
  </Step>

  <Step title="Pick GitHub">
    Wählen Sie **GitHub-Zugang** als Integration. Falls GitHub noch nicht verbunden ist, werden Sie aufgefordert, **GitHub verbinden** auszuwählen.

    <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="Neues Berechtigungspanel, das den Händler auffordert, GitHub zu verbinden" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    Durch Klicken öffnet sich GitHub in einem neuen Tab. Melden Sie sich an und installieren Sie die Dodo Payments GitHub App im Organisations- oder Benutzerkonto, das das Repository besitzt. Sie können Zugriff auf **alle Repositories** oder nur auf die gewähren, die Sie sperren möchten.

    <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-Installations- und Autorisierungsseite mit Optionen für Alle Repositories und Nur ausgewählte Repositories" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    Wenn GitHub zurückleitet, sehen Sie eine Bestätigung, dass das Konto verbunden ist.

    <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="Bestätigungsseite für erfolgreich verbundenen GitHub-Zugang" 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">
    Zurück im Dashboard, wählen Sie das **Repository**, dem die Berechtigung Zugriff gewähren soll, und wählen Sie die **Berechtigungsstufe**. Der Repository-Auswahldialog zeigt nur Repositories an, auf die die GitHub App Zugriff hat. Geben Sie der Berechtigung einen **Namen** und klicken Sie auf **Berechtigung erstellen**.

    <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-Berechtigungsformular mit verbundenem GitHub-Zugang, Repository-Auswahl, Berechtigungs-Dropdown und Namensfeld" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Speichern und die Berechtigung einem Produkt zuweisen. Kunden, die dieses Produkt kaufen, erhalten bei Lieferung eine GitHub-Einladung.
  </Step>
</Steps>

## Berechtigungsstufen

GitHubs Standard-Repository-Berechtigungen gelten:

| Berechtigung | Beste Verwendung                                                                |
| ------------ | ------------------------------------------------------------------------------- |
| `pull`       | Nur-Lese-Zugriff. Kunden können das Repo klonen, abrufen und anzeigen.          |
| `triage`     | Lesezugriff plus die Möglichkeit, Issues und Pull-Anfragen zu verwalten.        |
| `push`       | Lese- + Schreibzugriff. Kunden können Branches pushen und Pull-Anfragen öffnen. |
| `maintain`   | Push-Zugriff plus Verwaltung der Repositoriumseinstellungen (außer sensitiven). |
| `admin`      | Volle Kontrolle über das Repository. Mit Vorsicht verwenden.                    |

<Warning>
  Gewähren Sie das **geringste Privileg**, das zu Ihrem Anwendungsfall passt. Die meisten Szenarien mit kostenpflichtigem Inhalt benötigen nur `pull`.
</Warning>

## Kundenfluss

1. Der Kunde schließt den Kauf ab.
2. Dodo Payments erstellt einen Grant im `pending`-Status mit einem `oauth_url`, damit der Kunde seinen GitHub-Account verknüpfen kann.
3. Der Kunde autorisiert über den Link in seiner E-Mail oder im Kundenportal.
4. Dodo Payments lädt den GitHub-Account des Kunden mit der konfigurierten Berechtigung zum Repository ein. Der Grant wechselt zu `delivered`, sobald die Einladung erstellt ist.
5. Wenn das Abonnement gekündigt, erstattet oder widerrufen wird, wird der Kunde als Kollaborator entfernt.

## Erforderliche Konfiguration

| Feld         | Erforderlich | Beschreibung                                                                                                               |
| ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `target_id`  | Ja           | Das Repository, zu dem der Kunde eingeladen werden soll. Der Repository-Auswahldialog im Dashboard füllt dies für Sie aus. |
| `permission` | Ja           | Eine der Optionen: `pull`, `push`, `triage`, `maintain`, `admin`.                                                          |

## Erstellung über 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

Die Standard-[`entitlement_grant.*` Webhook-Ereignisse](/developer-resources/webhooks/intents/entitlement-grant) decken den GitHub-Flow ab:

* `entitlement_grant.created` enthält den `oauth_url` für die GitHub-Autorisierung.
* `entitlement_grant.delivered` wird ausgelöst, sobald die Kollaborator-Einladung erstellt ist.
* `entitlement_grant.failed` wird mit `error_code: "github_permission_denied"` (oder ähnlich) ausgelöst, wenn die GitHub App den Zugriff auf das Repository verloren hat.

## Fehlerbehebung

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    Die Dodo Payments GitHub App muss auf der Org oder dem Benutzer installiert sein, die bzw. der das Repository besitzt. Öffnen Sie **Berechtigungen → Integrationen → GitHub** und installieren Sie die App neu, indem Sie sicherstellen, dass Sie den relevanten Repositories Zugriff gewähren.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    Die Installation der GitHub App hat keinen Zugriff mehr auf das Repository oder das Repository wurde umbenannt/übertragen. Gewähren Sie der App erneut Zugang und der nächste Regrant wird erfolgreich sein.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    Kunden müssen die GitHub-Einladung über ihre Benachrichtigungsseite oder durch Klicken des Links in ihrer E-Mail akzeptieren. Bis sie akzeptieren, bleiben sie "eingeladen", können das Repo jedoch nicht klonen. Der Grant bleibt aus der Perspektive von Dodo Payments `delivered`; die Einladung ist das, was wir ausgeben.
  </Accordion>
</AccordionGroup>
