Cost centers
Use the REST API to get cost center information.
Get all cost centers for an enterprise
Gets a list of all the cost centers for an enterprise.
Fine-grained access tokens for "Get all cost centers for an enterprise"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Get all cost centers for an enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
| Name, Type, Description |
|---|
state string Set to Can be one of: |
HTTP response status codes for "Get all cost centers for an enterprise"
| Status code | Description |
|---|---|
200 | Response when getting cost centers |
400 | Bad Request |
403 | Forbidden |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Get all cost centers for an enterprise"
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/enterprises/ENTERPRISE/settings/billing/cost-centersResponse when getting cost centers
Status: 200{
"costCenters": [
{
"id": "2eeb8ffe-6903-11ee-8c99-0242ac120002",
"name": "Cost Center Name",
"state": "active",
"azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"resources": [
{
"type": "User",
"name": "Monalisa"
},
{
"type": "Repo",
"name": "octocat/hello-world"
}
]
},
{
"id": "3ffb9ffe-6903-11ee-8c99-0242ac120003",
"name": "Another Cost Center",
"state": "active",
"resources": [
{
"type": "User",
"name": "Octocat"
}
]
}
]
}Create a new cost center
Creates a new cost center for an enterprise. The authenticated user must be an enterprise admin.
Fine-grained access tokens for "Create a new cost center"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Create a new cost center"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
| Name, Type, Description |
|---|
name string RequiredThe name of the cost center (max length 255 characters) |
HTTP response status codes for "Create a new cost center"
| Status code | Description |
|---|---|
200 | Cost center created successfully |
400 | Bad request |
409 | Conflict |
500 | Internal server error |
Code samples for "Create a new cost center"
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 POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/enterprises/ENTERPRISE/settings/billing/cost-centers \
-d '{"name":"Engineering Team"}'Example response for a created cost center
Status: 200{
"id": "abc123",
"name": "Engineering Team",
"resources": []
}Get a cost center by ID
Gets a cost center by ID. The authenticated user must be an enterprise admin.
Fine-grained access tokens for "Get a cost center by ID"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Get a cost center by ID"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
cost_center_id string RequiredThe ID corresponding to the cost center. |
HTTP response status codes for "Get a cost center by ID"
| Status code | Description |
|---|---|
200 | Response when getting a cost center |
400 | Bad Request |
403 | Forbidden |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Get a cost center by ID"
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/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_IDResponse when getting a cost center
Status: 200{
"id": "2eeb8ffe-6903-11ee-8c99-0242ac120002",
"name": "Cost Center Name",
"state": "active",
"azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"resources": [
{
"type": "User",
"name": "Monalisa"
},
{
"type": "Repo",
"name": "octocat/hello-world"
}
]
}Update a cost center name
Updates an existing cost center name.
Fine-grained access tokens for "Update a cost center name"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Update a cost center name"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name |
cost_center_id string RequiredThe unique identifier of the cost center |
| Name, Type, Description |
|---|
name string RequiredThe new name for the cost center |
HTTP response status codes for "Update a cost center name"
| Status code | Description |
|---|---|
200 | Response when updating a cost center |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
409 | Conflict |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Update a cost center name"
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/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID \
-d '{"name":"New Cost Center Name"}'Response when updating a cost center
Status: 200{
"id": "2eeb8ffe-6903-11ee-8c99-0242ac120002",
"name": "Cost Center Name",
"state": "active",
"azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"resources": [
{
"type": "User",
"name": "Monalisa"
},
{
"type": "Repo",
"name": "octocat/hello-world"
}
]
}Delete a cost center
Archieves a cost center by ID. The authenticated user must be an enterprise admin.
Fine-grained access tokens for "Delete a cost center"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Delete a cost center"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
cost_center_id string RequiredThe ID corresponding to the cost center. |
HTTP response status codes for "Delete a cost center"
| Status code | Description |
|---|---|
200 | Response when deleting a cost center |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Delete a cost center"
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 DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_IDResponse when deleting a cost center
Status: 200{
"message": "Cost center successfully deleted.",
"id": "2066deda-923f-43f9-88d2-62395a28c0cdd",
"name": "cc3",
"costCenterState": "CostCenterArchived"
}Add resources to a cost center
Adds resources to a cost center.
The usage for the resources will be charged to the cost center's budget. The authenticated user must be an enterprise admin in order to use this endpoint.
Fine-grained access tokens for "Add resources to a cost center"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Add resources to a cost center"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
cost_center_id string RequiredThe ID corresponding to the cost center. |
| Name, Type, Description |
|---|
users array of strings The usernames of the users to add to the cost center. |
organizations array of strings The organizations to add to the cost center. |
repositories array of strings The repositories to add to the cost center. |
HTTP response status codes for "Add resources to a cost center"
| Status code | Description |
|---|---|
200 | Response when adding resources to a cost center |
400 | Bad Request |
403 | Forbidden |
409 | Conflict |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Add resources to a cost center"
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 POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID/resource \
-d '{"users":["monalisa"]}'Response when adding resources to a cost center
Status: 200{
"message": "Resources successfully added to the cost center.",
"reassigned_resources": [
{
"resource_type": "user",
"name": "monalisa",
"previous_cost_center": "old-cost-center"
},
{
"resource_type": "organization",
"name": "octo-org",
"previous_cost_center": "another-cost-center"
},
{
"resource_type": "repository",
"name": "octo-repo",
"previous_cost_center": "yet-another-cost-center"
}
]
}Remove resources from a cost center
Remove resources from a cost center.
The usage for the resources will no longer be charged to the cost center's budget. The authenticated user must be an enterprise admin in order to use this endpoint.
Fine-grained access tokens for "Remove resources from a cost center"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "Remove resources from a cost center"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
cost_center_id string RequiredThe ID corresponding to the cost center. |
| Name, Type, Description |
|---|
users array of strings The usernames of the users to remove from the cost center. |
organizations array of strings The organizations to remove from the cost center. |
repositories array of strings The repositories to remove from the cost center. |
HTTP response status codes for "Remove resources from a cost center"
| Status code | Description |
|---|---|
200 | Response when removing resources from a cost center |
400 | Bad Request |
403 | Forbidden |
500 | Internal Error |
503 | Service unavailable |
Code samples for "Remove resources from a cost center"
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 DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID/resource \
-d '{"users":["monalisa"]}'Response when removing resources from a cost center
Status: 200{
"message": "Resources successfully removed from the cost center."
}