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

# Droit GitHub

> Attribuez aux clients un accès collaborateur à un dépôt GitHub privé au niveau de permission que vous choisissez, et révoquez automatiquement en cas d'annulation.

<Info>
  Le droit GitHub ajoute un client payant en tant que collaborateur sur un dépôt privé. Vous choisissez le niveau de permission (`pull`, `push`, `triage`, `maintain`, ou `admin`) et Dodo Payments gère l'invitation, le suivi de l'acceptation et la suppression en cas d'annulation.
</Info>

## Ce qui est livré

* Le client est invité à votre dépôt GitHub via un flux OAuth qui lie leur compte GitHub à l'achat.
* Une fois qu'ils acceptent, GitHub leur accorde l'accès collaborateur au niveau de permission configuré.
* L'annulation, le remboursement ou la révocation manuelle supprime le collaborateur.

Les utilisations courantes incluent les produits à code source ouvert, les modèles payants, les dépôts de code de cours et les SDK clients protégés.

## Connecter GitHub

<Steps>
  <Step title="Open Entitlements">
    Dans votre tableau de bord Dodo Payments, allez à **Droits** et cliquez sur **+** pour commencer un nouveau droit.
  </Step>

  <Step title="Pick GitHub">
    Choisissez **Accès GitHub** comme intégration. Si GitHub n'est pas encore connecté, il vous sera demandé de **Connecter 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="Nouveau panneau de droit demandant au marchand de connecter GitHub" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    En cliquant dessus, GitHub s'ouvre dans un nouvel onglet. Connectez-vous, puis installez l'application GitHub Dodo Payments sur l'organisation ou le compte utilisateur qui possède le dépôt. Vous pouvez accorder l'accès à **tous les dépôts** ou seulement à ceux que vous souhaitez protéger.

    <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="Page d'installation et d'autorisation de GitHub avec options Tous les dépôts et Seuls les dépôts sélectionnés" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    Lorsque GitHub redirige en retour, vous verrez une confirmation que le compte est connecté.

    <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="Page de confirmation de connexion réussie de l'Accès 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">
    De retour dans le tableau de bord, choisissez le **dépôt** auquel le droit doit accorder l'accès et sélectionnez le niveau de **permission**. Le sélecteur de dépôt n'affiche que les dépôts auxquels l'application GitHub a accès. Donnez un **nom** au droit et cliquez sur **Créer un droit**.

    <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="Formulaire de droit GitHub avec Accès GitHub connecté, sélecteur de dépôt, menu déroulant de permission et champ de nom" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Enregistrez et attachez le droit à tout produit. Les clients qui achètent ce produit reçoivent une invitation GitHub lors de la livraison.
  </Step>
</Steps>

## Niveaux de permission

Les permissions standard des dépôts GitHub s'appliquent :

| Permission | Idéal pour                                                                                         |
| ---------- | -------------------------------------------------------------------------------------------------- |
| `pull`     | Accès en lecture seule. Les clients peuvent cloner, récupérer et consulter le dépôt.               |
| `triage`   | Accès en lecture plus possibilité de gérer les problèmes et les pull requests.                     |
| `push`     | Accès en lecture + écriture. Les clients peuvent pousser des branches et ouvrir des pull requests. |
| `maintain` | Accès au push plus gestion des paramètres du dépôt (à l'exception des paramètres sensibles).       |
| `admin`    | Contrôle total du dépôt. À utiliser avec précaution.                                               |

<Warning>
  Accordez le **moins de privilèges** possible qui convient à votre cas d'utilisation. La plupart des scénarios de contenu payant n'ont besoin que de `pull`.
</Warning>

## Flux client

1. Le client termine l'achat.
2. Dodo Payments crée une subvention avec le statut `pending` avec un `oauth_url` pour que le client puisse lier son compte GitHub.
3. Le client autorise via le lien dans son e-mail ou portail client.
4. Dodo Payments invite le compte GitHub du client au dépôt avec la permission configurée. La subvention passe à `delivered` une fois l'invitation créée.
5. Si l'abonnement est annulé, remboursé ou révoqué, le collaborateur est retiré.

## Configuration requise

| Champ        | Requis | Description                                                                                       |
| ------------ | ------ | ------------------------------------------------------------------------------------------------- |
| `target_id`  | Oui    | Le dépôt auquel inviter le client. Le sélecteur de dépôt du tableau de bord le remplit pour vous. |
| `permission` | Oui    | L'un de `pull`, `push`, `triage`, `maintain`, `admin`.                                            |

## Créer via l'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

Les [événements webhook](/developer-resources/webhooks/intents/entitlement-grant) standard `entitlement_grant.*` couvrent le flux GitHub :

* `entitlement_grant.created` inclut le `oauth_url` pour l'autorisation GitHub.
* `entitlement_grant.delivered` est déclenché une fois l'invitation du collaborateur créée.
* `entitlement_grant.failed` est déclenché avec `error_code: "github_permission_denied"` (ou similaire) si l'application GitHub a perdu l'accès au dépôt.

## Dépannage

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    L'application GitHub Dodo Payments doit être installée sur l'org ou l'utilisateur qui possède le dépôt. Ouvrez **Droits → Intégrations → GitHub** et réinstallez l'application, en veillant à accorder l'accès aux dépôts pertinents.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    L'installation de l'application GitHub n'a plus accès au dépôt, ou le dépôt a été renommé/transféré. Accordez à nouveau l'accès à l'application et la prochaine demande de réattribution réussira.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    Les clients doivent accepter l'invitation GitHub depuis leur page de notifications ou en cliquant sur le lien dans leur e-mail. Tant qu'ils n'acceptent pas, ils restent "invités" mais ne peuvent pas cloner le dépôt. La subvention est encore `delivered` du point de vue de Dodo Payments ; c'est l'invitation que nous émettons.
  </Accordion>
</AccordionGroup>
