Skip to content

Finish a GitHub sign-in with what GitHub returned

POST
/katara/v1/github/authorizations/complete
curl --request POST \
--url https://api.katara.com/katara/v1/github/authorizations/complete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Katara-CSRF: 1' \
--data '{ "state": "example", "code": "example", "installation_id": 1 }'

GitHub is asked who the person is and, after an installation, whether they can reach it; their GitHub token is revoked before this answers.

X-Katara-CSRF
Allowed value: 1

Browser cookie mutations require value 1 and an allowed Origin. Session bearer clients may omit this header.

Media typeapplication/json

What GitHub returned to the callback page. installation_id is required after installing the App and is checked with GitHub before anything is linked.

object
state
required
string
/^[A-Za-z0-9_-]{43}$/
code
required
string
>= 1 characters <= 512 characters
installation_id
integer
>= 1 <= 9007199254740991
Examplegenerated
{
"state": "example",
"code": "example",
"installation_id": 1
}

Successful request

Media typeapplication/json
object
login
required

The GitHub login a person linked. Only the login and its id are kept; the token GitHub issued to prove it is revoked once used.

object
github_user_id
required
integer
>= 1 <= 9007199254740991
login
required
string
/^[A-Za-z0-9-]{1,39}$/
linked_at
required
string format: date-time
installation
required
One of:

An installation of the Katara GitHub App an organization reads through, as GitHub describes it.

object
installation_id
required
integer
>= 1 <= 9007199254740991
account_id
required
integer
>= 1 <= 9007199254740991
account_login
required
string
/^[A-Za-z0-9._-]{1,100}$/
account_type
required
string
Allowed values: User Organization Enterprise
repository_selection
required
string
Allowed values: all selected
suspended_at
required
One of:
string format: date-time
linked_by
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
linked_at
required
string format: date-time
Example
{
"installation": {
"account_type": "User",
"repository_selection": "all"
}
}

Request error

Media typeapplication/json
object
error
required
object
message
required
string
>= 1 characters <= 500 characters
type
required
string
>= 1 characters <= 100 characters
code
required

Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.

string
>= 1 characters <= 100 characters
param
required

The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.

string | null
request_id
required
string
>= 1 characters <= 100 characters
upstream_status
required
integer | null
action
Allowed values: sign_in reauthenticate request_access review fund retry reconcile refresh support
operation_id
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
snapshot_ref
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Example
{
"error": {
"action": "sign_in"
}
}