# The organisation's GitHub App card

> Page: https://docs.plotwork.dev/api/get-orgs-org-github. Index of every page: https://docs.plotwork.dev/llms.txt

Whether the GitHub App is set up here and in the owner's plan, where to install it, the linked installations, and their repositories with the formats found and each one's status.

`GET /orgs/{org}/github`

## TL;DR

| Question | Answer |
|---|---|
| What does it do? | The organisation's GitHub App card. |
| What does it take? | `org` in the path. |
| What does it return? | Status 200 with a body of type [`GithubOverview`](https://docs.plotwork.dev/api/schemas.md#githuboverview). |
| What can go wrong? | `401` not signed in; `404` no such organisation, or the caller is not a member of it; `429` too many requests; `503` organisations are not set up on this server. Every failure uses the one error envelope. |

## What it does

Whether the GitHub App is set up here and in the owner's plan, where to install it, the linked installations, and their repositories with the formats found and each one's status. Any member may look.

## Path parameters

| Field | Type | Required | Description |
|---|---|---|---|
| `org` | `string` | yes | The organisation's id or its slug. |

## Responses

| Status | Meaning | Body |
|---|---|---|
| 200 | The card. | [`GithubOverview`](https://docs.plotwork.dev/api/schemas.md#githuboverview) |
| 401 | Not signed in. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 404 | No such organisation, or the caller is not a member of it. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 429 | Too many requests. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 503 | Organisations are not set up on this server. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |

## Response body

A 200 answer has the type [`GithubOverview`](https://docs.plotwork.dev/api/schemas.md#githuboverview).

| Field | Type | Required | Description |
|---|---|---|---|
| `configured` | `boolean` | yes | Whether the GitHub App is set up on this server. |
| `active` | `boolean` | yes | Whether the owner's plan includes the App (Pro and Enterprise). |
| `plan` | `"free" \| "pro" \| "enterprise"` | yes |  |
| `canManage` | `boolean` | yes | Whether the caller may link, unlink, scan and enable: the owner and admins. |
| `app` | `object \| null` | yes | The App, when set up: where to install it, and the client ID the portal starts a GitHub sign-in with. |
| `app.slug` | `string` | yes |  |
| `app.clientId` | `string` | yes |  |
| `app.installUrl` | `string` | yes |  |
| `installations` | `GithubInstallation[]` | yes |  |
| `installations[].id` | `string` | yes | GitHub's installation id. |
| `installations[].account` | `object` | yes |  |
| `installations[].account.login` | `string` | yes |  |
| `installations[].account.id` | `string` | yes |  |
| `installations[].account.type` | `"User" \| "Organization"` | yes |  |
| `installations[].repositorySelection` | `"all" \| "selected"` | yes | Whether the App reaches every repository of the account or the ones chosen on GitHub. |
| `installations[].suspended` | `boolean` | yes |  |
| `installations[].linkedAt` | `integer` | yes | Milliseconds since the epoch. |
| `installations[].linkedBy` | `object \| null` | yes |  |
| `installations[].linkedBy.id` | `string` | yes |  |
| `installations[].linkedBy.email` | `string` | yes |  |
| `installations[].settingsUrl` | `string` | yes | The installation's settings page on GitHub, where it is narrowed, suspended or uninstalled. |
| `repositories` | `GithubRepository[]` | yes |  |
| `repositories[].id` | `string` | yes | GitHub's repository id. |
| `repositories[].installationId` | `string` | yes |  |
| `repositories[].fullName` | `string` | yes |  |
| `repositories[].private` | `boolean` | yes |  |
| `repositories[].defaultBranch` | `string` | yes |  |
| `repositories[].formats` | `array \| null` | yes | The import formats the last scan found, such as `terraform`; null before a scan and after a push to the default branch. |
| `repositories[].detectedAt` | `integer \| null` | yes |  |
| `repositories[].status` | `"none" \| "pr_open" \| "fix_open" \| "merged" \| "closed" \| "adopted" \| "reporting" \| "failing"` | yes | `none`: not enabled. `pr_open`: the setup pull request is open. `fix_open`: a pull request that fixes the settings file is open; once it closes, the repository is scanned again. `merged`: merged, no drift run since. `adopted`: set up already, so Enable registered CI with no pull request, and no drift run since. `reporting` or `failing`: the latest drift run since it was enabled was clean, or drifted or failed. `closed`: the pull request was closed without merging. |
| `repositories[].pullRequest` | `object \| null` | yes |  |
| `repositories[].pullRequest.number` | `integer` | yes |  |
| `repositories[].pullRequest.url` | `string` | yes |  |
| `repositories[].enabledAt` | `integer \| null` | yes |  |
| `repositories[].lastRun` | `object \| null` | yes | The repository's latest drift run, whenever it was sent. |
| `repositories[].lastRun.checkedAt` | `integer` | yes |  |
| `repositories[].lastRun.drifted` | `integer` | yes |  |
| `repositories[].lastRun.failed` | `integer` | yes |  |
| `limits` | `object` | yes |  |
| `limits.maxRepositoriesPerInstallation` | `integer` | yes |  |

## See also

| Doc | Why |
|---|---|
| [API reference](https://docs.plotwork.dev/api/reference.md) | Every endpoint, and the error envelope |
| [Schemas](https://docs.plotwork.dev/api/schemas.md) | Every request and response type |
| [Tool reference](https://docs.plotwork.dev/mcp/tools.md) | The operations as callable tools |
