User:Shubham040/sandbox

Introduction
GitHub is a Web-based Git version control repository hosting service. It is mostly used for computer code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.

Entities
Following is the list of various entities in GitHub:
 * User
 * Organization
 * Repository
 * People
 * Team
 * Project

Access in GitHub are managed by permission levels, a user account has two permission levels: the repository owner and collaborators. you can grant read/write access to collaborators on a personal repository.

Organization members can have owner, billing manager, or member roles. Owners have complete administrative access to your organization, while billing managers can manage billing settings. Member is the default role for everyone else. You can manage access permissions for multiple members at a time with teams.

There are three types of repository permissions read, write and admin available for people or teams collaborating on repositories that belong to an organization.

Below is the list of fixed set of roles and visibility which can be granted to Users or Teams to a repositories that belong to an organization.
 * Owner
 * Member
 * secret
 * Visible

Application Integration Mode
REST API's

Authentication Details
There are three ways to authenticate through GitHub API v3. Requests that require authentication will return 404 Not Found, instead of 403 Forbidden, in some places. This is to prevent the accidental leakage of private repositories to unauthorized users.

1. Basic Authentication : To use Basic Authentication with the GitHub API, simply send the username and password associated with the account.

2. OAuth2 token : Alternatively, you can use personal access tokens or OAuth tokens instead of your password.

Once the user has authorized the application, the OAuth2 acccess token can be included in the header of the API request:

curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com

or passed as a parameter:

curl https://api.github.com/?access_token=OAUTH-TOKEN

3. OAuth2 Key/Secret : This should only be used in server to server scenarios. Don't leak your OAuth application's client secret to your users. curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'

Supported Version
All requests to GitHub receive the v3 version of the REST API.

Prerequisites for Connector Development
Service account with client id and client secret with Manage an Enterprise OAuth scope to perform CRUD operations.

Operating System Dependencies
No dependency

Pagination Strategy
Requests that return multiple items will be paginated to 30 items by default. You can specify further pages with the <?page> parameter. For some resources, you can also set a custom page size up to 100 with the <?per_page> parameter.

Not Supported Operations
Get and Search operations on resources are not supported. Connector can be extended to add any of the missing operation if required.