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

# Titolo GitHub

> Consenti ai clienti di avere accesso come collaboratori a un repository GitHub privato al livello di autorizzazione che scegli, e revoca automaticamente in caso di cancellazione.

<Info>
  Il diritto GitHub aggiunge un cliente pagante come collaboratore su un repository privato. Scegli il livello di autorizzazione (`pull`, `push`, `triage`, `maintain`, o `admin`) e Dodo Payments gestisce l'invito, il monitoraggio dell'accettazione e la rimozione in caso di cancellazione.
</Info>

## Cosa viene consegnato

* Il cliente viene invitato al tuo repository GitHub tramite un flusso OAuth che collega il suo account GitHub all'acquisto.
* Una volta accettato, GitHub concede loro l'accesso come collaboratori al livello di autorizzazione configurato.
* La cancellazione, il rimborso o la revoca manuale rimuove il collaboratore.

Gli usi comuni includono prodotti con codice sorgente disponibile, modelli a pagamento, repository di codice per corsi e SDK client con accesso limitato.

## Connetti GitHub

<Steps>
  <Step title="Open Entitlements">
    Nel tuo dashboard Dodo Payments, vai a **Diritti** e fai clic su **+** per avviare un nuovo diritto.
  </Step>

  <Step title="Pick GitHub">
    Scegli **Accesso GitHub** come integrazione. Se GitHub non è ancora connesso, ti verrà richiesto di **Connettere 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="Pannello di nuovo diritto che invita il commerciante a connettere GitHub" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    Facendo clic si apre GitHub in una nuova scheda. Accedi, quindi installa l'app GitHub Dodo Payments sull'organizzazione o sull'account utente che possiede il repository. Puoi concedere l'accesso a **tutti i repository** o solo a quelli che intendi limitare.

    <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="Pagina Installa e Autorizza GitHub con opzioni Tutti i repository e Solo selezionati" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    Quando GitHub reindirizza indietro, vedrai una conferma che l'account è connesso.

    <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="Pagina di conferma Accesso GitHub connesso con successo" 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">
    Torna al dashboard, scegli il **repository** a cui il diritto deve concedere l'accesso e seleziona il livello di **autorizzazione**. Il selettore di repository mostra solo i repository a cui l'app GitHub ha accesso. Dai un **nome** al diritto e fai clic su **Crea Diritto**.

    <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="Modulo diritto GitHub con Accesso GitHub connesso, selettore di repository, menu a discesa delle autorizzazioni e campo nome" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Salva e allega il diritto a qualsiasi prodotto. I clienti che acquistano quel prodotto riceveranno un invito GitHub alla consegna.
  </Step>
</Steps>

## Livelli di autorizzazione

Si applicano le autorizzazioni standard del repository GitHub:

| Autorizzazione | Migliore per                                                                                    |
| -------------- | ----------------------------------------------------------------------------------------------- |
| `pull`         | Accesso in sola lettura. I clienti possono clonare, recuperare e visualizzare il repo.          |
| `triage`       | Accesso di lettura più la possibilità di gestire problemi e richieste di pull.                  |
| `push`         | Accesso in lettura + scrittura. I clienti possono inviare modifiche e aprire richieste di pull. |
| `maintain`     | Accesso invio più gestione delle impostazioni del repository (esclusi quelli sensibili).        |
| `admin`        | Controllo completo del repository. Usare con cautela.                                           |

<Warning>
  Concedi il **minimo privilegio** che si adatta al tuo caso d'uso. La maggior parte degli scenari a pagamento richiede solo `pull`.
</Warning>

## Flusso del cliente

1. Il cliente completa il checkout.
2. Dodo Payments crea un diritto in stato `pending` con un `oauth_url` per consentire al cliente di collegare il proprio account GitHub.
3. Il cliente autorizza tramite il collegamento nell'email o nel portale clienti.
4. Dodo Payments invita l'account GitHub del cliente al repository al livello di autorizzazione configurato. Il diritto passa a `delivered` una volta creata l'invito.
5. Se l'abbonamento viene cancellato, rimborsato o revocato, il cliente viene rimosso come collaboratore.

## Configurazione richiesta

| Campo        | Necessario | Descrizione                                                                                           |
| ------------ | ---------- | ----------------------------------------------------------------------------------------------------- |
| `target_id`  | Sì         | Il repository a cui invitare il cliente. Il selettore del repository del dashboard lo riempie per te. |
| `permission` | Sì         | Uno di `pull`, `push`, `triage`, `maintain`, `admin`.                                                 |

## Creare tramite 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

Gli eventi standard del [webhook](/developer-resources/webhooks/intents/entitlement-grant) `entitlement_grant.*` coprono il flusso GitHub:

* `entitlement_grant.created` include l'`oauth_url` per l'autorizzazione GitHub.
* `entitlement_grant.delivered` viene attivato una volta creata l'invito del collaboratore.
* `entitlement_grant.failed` viene attivato con `error_code: "github_permission_denied"` (o simile) se l'app GitHub ha perso l'accesso al repository.

## Risoluzione dei problemi

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    L'app GitHub Dodo Payments deve essere installata sull'org o sull'utente che possiede il repository. Apri **Diritti → Integrazioni → GitHub** e reinstalla l'app, assicurandoti di concedere l'accesso ai repository pertinenti.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    L'installazione dell'app GitHub non ha più accesso al repository, o il repository è stato rinominato/trasferito. Concedi nuovamente l'accesso all'app e il prossimo re-grant avrà successo.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    I clienti devono accettare l'invito GitHub dalla loro pagina notifiche o facendo clic sul collegamento nella loro email. Finché non accettano, rimangono "invitati" ma non possono clonare il repo. Il diritto è ancora `delivered` dal punto di vista di Dodo Payments; l'invito è ciò che emettiamo.
  </Accordion>
</AccordionGroup>
