GitHub
Version
This integration utilizes the GitHub REST API latest version.
Base URL
The base URL used for all GitHub API endpoints:https://api.github.com
Authentication & Authorization
The DataGrail GitHub integration connects using OAuth 2.0.
Scopes
The GitHub integration requires specific scopes that must be granted in order to function for a given capability.
| Scope | Base | Access |
|---|---|---|
read:org | ✅ | ✅ |
repo:status | ✅ | ✅ |
Endpoints Utilized
DataGrail uses the following endpoints to authorize and test the connection:
| Method | Endpoint | Purpose | Docs |
|---|---|---|---|
| GET | /user | Validate credentials | |
| POST | https://github.com/login/oauth/access_token | Get access token | |
| GET | https://github.com/login/oauth/authorize | Request authorization |
Limits
Limits in GitHub are calculated using the leaky
bucket algorithm. All requests that are made after rate limits have been
exceeded are throttled and an HTTP 429 Too Many Requests error is returned.
Requests succeed again after enough requests have emptied out of the bucket.
- DataGrail supports requests throttling to stay within 70-80% of specified service rate limits.
- DataGrail processes API responses with HTTP 429 status to interrupt requests, waiting and retrying (using an exponential backoff strategy).
Capabilities
Access
DataGrail's GitHub integration provides Synchronous Access capabilities for the following supported identifier category: Email.Data Interactions
For "Access" requests, DataGrail will take the following actions:
- Fetch app installations accessible to the user access token.
- For each installation, extract the username and fetch installation details by username.
- For each user installation, extract the installation_id and authenticate as an installation.
- For each installation, search issues using configured identifiers.
- For each issue, extract the comments_url and get related comments.
- Fetch organizations for the authenticated user.
- For each organization, fetch all teams in an organization that are visible to the authenticated user.
- For each team, fetch all discussions on a team's page and select discussions where the body includes text with configured identifiers.
- For each discussion, fetch all discussion comments.
Endpoints Utilized
Disclaimer: The information contained in this message does not constitute as legal advice. We would advise seeking professional counsel before acting on or interpreting any material.