REST API endpoints for team synchronization
Use the REST API to manage connections between GitHub teams and external identity provider (IdP) groups.
About team synchronization
To use these endpoints, the authenticated user must be a team maintainer or an owner of the organization associated with the team. The token you use to authenticate will also need to be authorized for use with your IdP (SSO) provider. For more information, see Authorizing a personal access token for use with single sign-on.
You can manage GitHub team members through your IdP with team synchronization. Team synchronization must be enabled to use these endpoints. For more information, see Managing team synchronization for your organization.
Note
These endpoints cannot be used with Enterprise Managed Users. To learn more about managing an organization with managed users, see REST API endpoints for external groups.
List IdP groups for an organization
Lists IdP groups available in an organization.
Fine-grained access tokens for "List IdP groups for an organization"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Members" organization permissions (write)
Parameters for "List IdP groups for an organization"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| Name, Type, Description | 
|---|
| per_pageintegerThe number of results per page (max 100). For more information, see "Using pagination in the REST API." Default:  | 
| pagestringPage token | 
| qstringFilters the results to return only those that begin with the value specified by this parameter. For example, a value of  | 
HTTP response status codes for "List IdP groups for an organization"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "List IdP groups for an organization"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/orgs/ORG/team-sync/groupsResponse
Status: 200{
  "groups": [
    {
      "group_id": "123",
      "group_name": "Octocat admins",
      "group_description": "The people who configure your octoworld."
    },
    {
      "group_id": "456",
      "group_name": "Octocat docs members",
      "group_description": "The people who make your octoworld come to life."
    }
  ]
}List IdP groups for a team
List IdP groups connected to a team on GitHub Enterprise Cloud.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
Note
You can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/team-sync/group-mappings.
Fine-grained access tokens for "List IdP groups for a team"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Members" organization permissions (write)
Parameters for "List IdP groups for a team"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| team_slugstring RequiredThe slug of the team name. | 
HTTP response status codes for "List IdP groups for a team"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "List IdP groups for a team"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/orgs/ORG/teams/TEAM_SLUG/team-sync/group-mappingsResponse
Status: 200{
  "groups": [
    {
      "group_id": "123",
      "group_name": "Octocat admins",
      "group_description": "The people who configure your octoworld."
    },
    {
      "group_id": "456",
      "group_name": "Octocat docs members",
      "group_description": "The people who make your octoworld come to life."
    }
  ]
}Create or update IdP group connections
Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty groups array will remove all connections for a team.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
Note
You can also specify a team by org_id and team_id using the route PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings.
Fine-grained access tokens for "Create or update IdP group connections"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Members" organization permissions (write)
Parameters for "Create or update IdP group connections"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| team_slugstring RequiredThe slug of the team name. | 
| Name, Type, Description | ||||
|---|---|---|---|---|
| groupsarray of objectsThe IdP groups you want to connect to a GitHub team. When updating, the new  | ||||
| Properties of  | 
| Name, Type, Description | 
|---|
| group_idstring RequiredID of the IdP group. | 
| group_namestring RequiredName of the IdP group. | 
| group_descriptionstring RequiredDescription of the IdP group. | 
HTTP response status codes for "Create or update IdP group connections"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "Create or update IdP group connections"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -X PATCH \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/orgs/ORG/teams/TEAM_SLUG/team-sync/group-mappings \
  -d '{"groups":[{"group_id":"123","group_name":"Octocat admins","group_description":"string"}]}'Response
Status: 200{
  "groups": [
    {
      "group_id": "123",
      "group_name": "Octocat admins",
      "group_description": "The people who configure your octoworld."
    },
    {
      "group_id": "456",
      "group_name": "Octocat docs members",
      "group_description": "The people who make your octoworld come to life."
    }
  ]
}List IdP groups for a team (Legacy)
Warning
Endpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List IdP groups for a team endpoint.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
List IdP groups connected to a team on GitHub Enterprise Cloud.
Fine-grained access tokens for "List IdP groups for a team (Legacy)"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Members" organization permissions (write)
Parameters for "List IdP groups for a team (Legacy)"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| team_idinteger RequiredThe unique identifier of the team. | 
HTTP response status codes for "List IdP groups for a team (Legacy)"
| Status code | Description | 
|---|---|
| 200 | OK | 
| 403 | Forbidden | 
| 404 | Resource not found | 
Code samples for "List IdP groups for a team (Legacy)"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/teams/TEAM_ID/team-sync/group-mappingsResponse
Status: 200{
  "groups": [
    {
      "group_id": "123",
      "group_name": "Octocat admins",
      "group_description": "The people who configure your octoworld."
    },
    {
      "group_id": "456",
      "group_name": "Octocat docs members",
      "group_description": "The people who make your octoworld come to life."
    }
  ]
}Create or update IdP group connections (Legacy)
Warning
Endpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Create or update IdP group connections endpoint.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty groups array will remove all connections for a team.
Fine-grained access tokens for "Create or update IdP group connections (Legacy)"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Members" organization permissions (write)
Parameters for "Create or update IdP group connections (Legacy)"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| team_idinteger RequiredThe unique identifier of the team. | 
| Name, Type, Description | |||||||
|---|---|---|---|---|---|---|---|
| groupsarray of objects RequiredThe IdP groups you want to connect to a GitHub team. When updating, the new  | |||||||
| Properties of  | 
| Name, Type, Description | 
|---|
| group_idstring RequiredID of the IdP group. | 
| group_namestring RequiredName of the IdP group. | 
| group_descriptionstring RequiredDescription of the IdP group. | 
| idstring | 
| namestring | 
| descriptionstring | 
synced_at string HTTP response status codes for "Create or update IdP group connections (Legacy)"
| Status code | Description | 
|---|---|
| 200 | OK | 
| 403 | Forbidden | 
| 422 | Validation failed, or the endpoint has been spammed. | 
Code samples for "Create or update IdP group connections (Legacy)"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -X PATCH \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/teams/TEAM_ID/team-sync/group-mappings \
  -d '{"groups":[{"group_id":"123","group_name":"Octocat admins","description":"The people who configure your octoworld.","group_description":"string"}]}'Response
Status: 200{
  "groups": [
    {
      "group_id": "123",
      "group_name": "Octocat admins",
      "group_description": "The people who configure your octoworld."
    }
  ]
}