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

# Derechos de GitHub

> Otorga a los clientes acceso como colaboradores a un repositorio privado de GitHub en el nivel de permiso que elijas, y revoca automáticamente al cancelarse.

<Info>
  El derecho de GitHub añade a un cliente que paga como colaborador en un repositorio privado. Tú eliges el nivel de permiso (`pull`, `push`, `triage`, `maintain`, o `admin`) y Dodo Payments se encarga de la invitación, el seguimiento de aceptación y la eliminación al cancelarse.
</Info>

## Qué se entrega

* El cliente es invitado a tu repositorio de GitHub a través de un flujo OAuth que vincula su cuenta de GitHub con la compra.
* Una vez aceptado, GitHub les otorga acceso como colaboradores en el nivel de permiso configurado.
* La cancelación, el reembolso o la revocación manual eliminan al colaborador.

Usos comunes incluyen productos con código fuente disponible, plantillas de pago, repositorios de código de cursos y SDKs de clientes con restricciones.

## Conectar GitHub

<Steps>
  <Step title="Open Entitlements">
    En tu panel de Dodo Payments, ve a **Derechos** y haz clic en **+** para iniciar un nuevo derecho.
  </Step>

  <Step title="Pick GitHub">
    Elige **Acceso a GitHub** como la integración. Si GitHub aún no está conectado, se te pedirá que **Conectes 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="Nuevo panel de derechos solicitando al comerciante que conecte GitHub" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    Al hacer clic se abre GitHub en una nueva pestaña. Inicia sesión, luego instala la aplicación de GitHub de Dodo Payments en la organización o cuenta de usuario que posee el repositorio. Puedes otorgar acceso a **todos los repositorios** o solo a aquellos que pretendes restringir.

    <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="Página de instalación y autorización de GitHub con opciones de Todos los repositorios y Solo repositorios seleccionados" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    Cuando GitHub redirige de vuelta, verás una confirmación de que la cuenta está conectada.

    <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="Página de confirmación de acceso a GitHub conectado con éxito" 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 vuelta en el panel, elige el **repositorio** al que el derecho debe otorgar acceso y selecciona el nivel de **permiso**. El selector de repositorios solo muestra aquellos a los que la aplicación de GitHub tiene acceso. Dale un **nombre** al derecho y haz clic en **Crear Derecho**.

    <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="Formulario de derechos de GitHub con acceso a GitHub conectado, selector de repositorios, menú desplegable de permisos y campo de nombre" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Guarda y adjunta el derecho a cualquier producto. Los clientes que compren ese producto recibirán una invitación de GitHub al entregarse.
  </Step>
</Steps>

## Niveles de permiso

Se aplican los permisos estándar del repositorio de GitHub:

| Permiso    | Mejor para                                                                                                |
| ---------- | --------------------------------------------------------------------------------------------------------- |
| `pull`     | Acceso de solo lectura. Los clientes pueden clonar, obtener y ver el repositorio.                         |
| `triage`   | Acceso de lectura más la capacidad de gestionar problemas y solicitudes de extracción.                    |
| `push`     | Acceso de lectura + escritura. Los clientes pueden hacer push de ramas y abrir solicitudes de extracción. |
| `maintain` | Acceso de push más la gestión de configuraciones del repositorio (excluyendo las sensibles).              |
| `admin`    | Control completo del repositorio. Úsalo con precaución.                                                   |

<Warning>
  Otorga el **menor privilegio** que se ajuste a tu caso de uso. La mayoría de los escenarios de contenido de pago solo necesitan `pull`.
</Warning>

## Flujo del cliente

1. El cliente completa la compra.
2. Dodo Payments crea una concesión en estado `pending` con un `oauth_url` para que el cliente vincule su cuenta de GitHub.
3. El cliente autoriza a través del enlace en su correo electrónico o portal de cliente.
4. Dodo Payments invita a la cuenta de GitHub del cliente al repositorio en el permiso configurado. La concesión pasa a `delivered` una vez creada la invitación.
5. Si la suscripción se cancela, se reembolsa o se revoca, el cliente es eliminado como colaborador.

## Configuración requerida

| Campo        | Requerido | Descripción                                                                                           |
| ------------ | --------- | ----------------------------------------------------------------------------------------------------- |
| `target_id`  | Sí        | El repositorio al que invitar al cliente. El selector de repositorios del panel completa esto por ti. |
| `permission` | Sí        | Uno de `pull`, `push`, `triage`, `maintain`, `admin`.                                                 |

## Crear vía 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

Los eventos de webhook estándar [`entitlement_grant.*`](/developer-resources/webhooks/intents/entitlement-grant) cubren el flujo de GitHub:

* `entitlement_grant.created` incluye el `oauth_url` para la autorización de GitHub.
* `entitlement_grant.delivered` se activa una vez creada la invitación de colaborador.
* `entitlement_grant.failed` se activa con `error_code: "github_permission_denied"` (o similar) si la aplicación de GitHub perdió acceso al repositorio.

## Solución de problemas

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    La aplicación de GitHub de Dodo Payments debe estar instalada en la organización o usuario que posee el repositorio. Abre **Derechos → Integraciones → GitHub** y reinstala la aplicación, asegurándote de otorgar acceso a los repositorios relevantes.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    La instalación de la aplicación de GitHub ya no tiene acceso al repositorio, o el repositorio fue renombrado/transferido. Re-otorga acceso a la aplicación y el próximo reotorgamiento tendrá éxito.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    Los clientes deben aceptar la invitación de GitHub desde su página de notificaciones o haciendo clic en el enlace en su correo electrónico. Hasta que acepten, permanecerán "invitados" pero no podrán clonar el repositorio. Desde la perspectiva de Dodo Payments, la concesión aún es `delivered`; la invitación es lo que emitimos.
  </Accordion>
</AccordionGroup>
