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

> امنح العملاء حق الوصول كمساهم في مستودع GitHub خاص بمستوى الإذن الذي تختاره، وقم بالإلغاء تلقائيًا عند الإلغاء.

<Info>
  استحقاق GitHub يضيف العميل الذي يقوم بالدفع كمساهم في مستودع خاص. يمكنك اختيار مستوى الإذن (`pull`، `push`، `triage`، `maintain`، أو `admin`) ويتولى Dodo Payments عملية الدعوة، تتبع القبول، والإزالة عند الإلغاء.
</Info>

## ما الذي يُقدم

* تتم دعوة العميل إلى مستودع GitHub الخاص بك عبر تدفق OAuth الذي يربط حساب GitHub الخاص بهم بالشراء.
* بمجرد قبولهم، يمنحهم GitHub الوصول كمساهم بمستوى الإذن الذي تم تكوينه.
* الإلغاء أو الاسترداد أو الإلغاء اليدوي يزيل المساهم.

تشمل الاستخدامات الشائعة المنتجات المتاحة المصدر، القوالب المدفوعة، مستودعات الكود الخاصة بالدورات، وSDKs العملاء المحمية.

## الاتصال بـ GitHub

<Steps>
  <Step title="Open Entitlements">
    في لوحة التحكم على Dodo Payments، انتقل إلى **الاستحقاقات** وانقر على **+** لبدء استحقاق جديد.
  </Step>

  <Step title="Pick GitHub">
    اختر **الوصول إلى GitHub** كتكامل. إذا لم يكن GitHub متصلاً بعد، ستتم مطالبتك بـ **اتصال 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="New entitlement panel prompting the merchant to connect GitHub" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1129" data-path="images/entitlements/github/connect-prompt.png" />
    </Frame>

    النقر يفتح GitHub في علامة تبويب جديدة. قم بتسجيل الدخول، ثم قم بتثبيت تطبيق Dodo Payments GitHub على حساب المنظمة أو المستخدم الذي يمتلك المستودع. يمكنك منح الوصول إلى **جميع المستودعات** أو فقط تلك التي تنوي حمايتها.

    <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 Install and Authorize page with All repositories and Only select repositories options" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1120" data-path="images/entitlements/github/oauth-install.png" />
    </Frame>

    عندما يعود التوجيه من GitHub، ستشاهد تأكيدًا بأن الحساب متصل.

    <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="GitHub Access connected successfully confirmation page" 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">
    عد إلى لوحة التحكم، اختر **المستودع** الذي يجب أن يمنح الاستحقاق الوصول إليه واختر مستوى **الإذن**. يعرض منتقي المستودعات فقط المستودعات التي يملك تطبيق GitHub الوصول إليها. امنح الاستحقاق **اسمًا** وانقر على **إنشاء استحقاق**.

    <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 entitlement form with connected GitHub Access, repository selector, permission dropdown, and name field" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/github/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    احفظ واربط الاستحقاق بأي منتج. العملاء الذين يشترون هذا المنتج يتلقون دعوة GitHub عند التسليم.
  </Step>
</Steps>

## مستويات الإذن

تطبق أذونات المستودع القياسية لـ GitHub:

| إذن        | الأفضل لـ                                                               |
| ---------- | ----------------------------------------------------------------------- |
| `pull`     | وصول للقراءة فقط. يمكن للعملاء استنساخ وتحميل ومشاهدة المستودع.         |
| `triage`   | وصول للقراءة بالإضافة إلى القدرة على إدارة المشكلات وطلبات السحب.       |
| `push`     | وصول للقراءة والكتابة. يمكن للعملاء دفع الفروع وفتح طلبات السحب.        |
| `maintain` | وصول للدفع بالإضافة إلى إدارة إعدادات المستودع (باستثناء الحساسة منها). |
| `admin`    | السيطرة الكاملة على المستودع. استخدم بحذر.                              |

<Warning>
  امنح **الحد الأدنى من الامتيازات** التي تتناسب مع حالتك. معظم سيناريوهات المحتوى المدفوع تحتاج فقط `pull`.
</Warning>

## تدفق العميل

1. يكمل العميل عملية الدفع.
2. ينشئ Dodo Payments منحة في حالة `pending` مع `oauth_url` للعميل لربط حسابه على GitHub.
3. يقوم العميل بالتصريح عبر الرابط في بريده الإلكتروني أو في بوابة العميل.
4. يدعو Dodo Payments حساب GitHub الخاص بالعميل إلى المستودع بالإذن المحدد. تتغير المنحة إلى `delivered` بمجرد إنشاء الدعوة.
5. إذا تم إلغاء الاشتراك أو استرداده أو إلغاؤه، تتم إزالة المساهم كمتعاون.

## التكوين المطلوب

| الحقل        | مطلوب | الوصف                                                                              |
| ------------ | ----- | ---------------------------------------------------------------------------------- |
| `target_id`  | نعم   | المستودع لدعوة العميل إليه. يقوم منتقي المستودع في لوحة التحكم بملء هذا نيابة عنك. |
| `permission` | نعم   | أحد `pull`، `push`، `triage`، `maintain`، `admin`.                                 |

## الإنشاء عبر 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

تشمل [أحداث Webhook القياسية](/developer-resources/webhooks/intents/entitlement-grant) غطاء تدفق GitHub:

* `entitlement_grant.created` يتضمن `oauth_url` للتصريح عبر GitHub.
* `entitlement_grant.delivered` يتم إطلاقه بمجرد إنشاء دعوة المساهم.
* `entitlement_grant.failed` يتم إطلاقه مع `error_code: "github_permission_denied"` (أو ما شابه) إذا فقد تطبيق GitHub الوصول إلى المستودع.

## استكشاف الأخطاء وإصلاحها

<AccordionGroup>
  <Accordion title="Repository picker is empty">
    يجب تثبيت تطبيق Dodo Payments GitHub على المنظمة أو المستخدم الذي يمتلك المستودع. افتح **الاستحقاقات → التكاملات → GitHub** وأعد تثبيت التطبيق مع التأكد من منح الوصول إلى المستودعات ذات الصلة.
  </Accordion>

  <Accordion title="Grant fails with permission_denied">
    لا يملك تثبيت تطبيق GitHub الوصول إلى المستودع بعد الآن، أو تم إعادة تسمية/نقل المستودع. أعد منح الوصول إلى التطبيق وستنجح المحاولة التالية.
  </Accordion>

  <Accordion title="Customer hasn't accepted the invite">
    يجب على العملاء قبول الدعوة من صفحة الإشعارات الخاصة بـ GitHub أو بالنقر على الرابط في بريدهم الإلكتروني. حتى يقبلوا، يظلون "مدعوين" ولكن لا يمكنهم استنساخ المستودع. تظل المنحة في حالة `delivered` من منظور Dodo Payments؛ الدعوة هي ما نصدره.
  </Accordion>
</AccordionGroup>
