API reference

On this page 240

Every endpoint this instance declares under /api, 194 of them, generated from the actions that implement them rather than written beside them. A hand-written reference is a second description of the same thing, and the second one is the one that goes stale.

Authentication is a bearer token unless an endpoint says otherwise:

curl -H "Authorization: Bearer $TOKEN" "$SERVER/api/repos/workflow-runs?owner=you&repo=yours"

A token carries scopes, and a repository the token cannot reach answers 404 rather than 403 - saying "forbidden" would confirm that a private repository exists.

204 of the 216 operations below declare their inputs on the action, and this page lists them. The rest validate inside the handler, so the page names the action instead of guessing - that number going up is the work, and a test holds it from going down.

Generated from OpenAPI 1.0.0.

Audit

GET /api/audit

NameInRequiredType
organization_idqueryoptionalnumber
actor_idqueryoptionalnumber
ownerqueryoptionalstring
repoqueryoptionalstring
actionqueryoptionalstring
sincequeryoptionalstring
untilqueryoptionalstring
limitqueryoptionalnumber
beforequeryoptionalnumber
formatqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

Auth

POST /api/auth/atproto

NameInRequiredType
identifierbodyrequiredstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/auth/atproto/callback

NameInRequiredType
statequeryoptionalstring
codequeryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/login

NameInRequiredType
codebodyoptionalstring
emailbodyoptionalstring
nextbodyoptionalstring
passkeybodyoptionalstring
passwordbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/logout

Inputs are not declared on Actions/Auth/LogoutAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/password/reset

NameInRequiredType
emailbodyoptionalstring
operationbodyoptionalstring
passwordbodyoptionalstring
tokenbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/register

NameInRequiredType
emailbodyoptionalstring
handlebodyoptionalstring
namebodyoptionalstring
nextbodyoptionalstring
passwordbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/auth/sso

NameInRequiredType
codequeryoptionalstring
nextqueryoptionalstring
statequeryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/auth/verify

NameInRequiredType
idqueryoptionalnumber
tokenqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/verify/resend

NameInRequiredType
idbodyoptionalnumber
tokenbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/auth/{provider}

NameInRequiredType
providerpathrequiredstring
nextqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/auth/{provider}/callback

NameInRequiredType
providerpathrequiredstring
codequeryoptionalstring
statequeryoptionalstring
errorqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/auth/{provider}/callback

NameInRequiredType
providerpathrequiredstring
codebodyoptionalstring
statebodyoptionalstring
errorbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

Discover

GET /api/discover

NameInRequiredType
beforequeryoptionalnumber
StatusMeans
200The newest events first, and the cursor to ask for the ones before them.
422Validation failed
500Server error

Explore

GET /api/explore

NameInRequiredType
topicqueryoptionalstring
languagequeryoptionalstring
daysqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error
NameInRequiredType
limitqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

Feed

GET /api/feed

NameInRequiredType
beforequeryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

Gh

POST /api/gh/repos/{owner}/{repo}/issues/{number}/comments

NameInRequiredType
ownerpathrequiredstring
repopathrequiredstring
numberpathrequiredstring
ownerbodyoptionalstring
repobodyoptionalstring
resourcebodyoptionalstring
shabodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
201Created, in the shape Octokit expects: an id and the fields it sent back.
401No credential, or one this instance does not recognise.
404No such repository, or a resource this surface does not implement - the body names the three that exist.
422Missing something GitHub would require too: head_sha, state, or body.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/gh/repos/{owner}/{repo}/statuses/{sha}

NameInRequiredType
ownerpathrequiredstring
repopathrequiredstring
shapathrequiredstring
ownerbodyoptionalstring
repobodyoptionalstring
resourcebodyoptionalstring
shabodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
201Created, in the shape Octokit expects: an id and the fields it sent back.
401No credential, or one this instance does not recognise.
404No such repository, or a resource this surface does not implement - the body names the three that exist.
422Missing something GitHub would require too: head_sha, state, or body.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/gh/repos/{owner}/{repo}/{resource}

NameInRequiredType
ownerpathrequiredstring
repopathrequiredstring
resourcepathrequiredstring
ownerbodyoptionalstring
repobodyoptionalstring
resourcebodyoptionalstring
shabodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
201Created, in the shape Octokit expects: an id and the fields it sent back.
401No credential, or one this instance does not recognise.
404No such repository, or a resource this surface does not implement - the body names the three that exist.
422Missing something GitHub would require too: head_sha, state, or body.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Health

GET /api/health

NameInRequiredType
quickqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

Insight

GET /api/insight

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
daysqueryoptionalnumber
StatusMeans
200The window, and every figure the operator screens show.
404No such repository, or the caller may not read the instance-wide numbers.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Instance

POST /api/instance/admin

NameInRequiredType
operationbodyoptionalstring
handlebodyoptionalstring
searchbodyoptionalstring
idbodyoptionalnumber
limitbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/instance/fleet

NameInRequiredType
operationbodyoptionalstring
namebodyoptionalstring
slugbodyoptionalstring
labelsbodyoptionalstring
reasonbodyoptionalstring
poolbodyoptionalnumber
queuebodyoptionalnumber
runnerbodyoptionalnumber
repositorybodyoptionalnumber
forcebodyoptionalboolean
requiredbodyoptionalboolean
pluginbodyoptionalstring
allowlistbodyoptionalstring
capabilitiesbodyoptionalstring
pinnedbodyoptionalboolean
tokenbodyoptionalnumber
expiresbodyoptionalstring
userbodyoptionalnumber
keybodyoptionalstring
valuebodyoptionalstring
StatusMeans
200The fleet as it now stands.
404Not an administrator. The endpoint does not admit it exists.
422The operation needs something it was not given.
500Server error

POST /api/instance/settings

NameInRequiredType
keybodyoptionalstring
valuebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

Mcp

POST /api/mcp

Inputs are not declared on Mcp/McpAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

Metrics

GET /api/metrics

Inputs are not declared on Actions/Ops/MetricsAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

Mirrors

POST /api/mirrors/sync

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/mirrors/webhook

Inputs are not declared on Actions/Mirror/MirrorWebhookAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

Og

GET /api/og

NameInRequiredType
pathqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

Openapi.json

GET /api/openapi.json

Inputs are not declared on Actions/Api/OpenApiAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

Operations

GET /api/operations/{id}

NameInRequiredType
idpathrequiredstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/operations/{id}/cancel

NameInRequiredType
idpathrequiredstring
idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

Orgs

DELETE /api/orgs

NameInRequiredType
confirmqueryoptionalstring
organization_idqueryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs

NameInRequiredType
billing_emailbodyoptionalstring
descriptionbodyoptionalstring
handlebodyoptionalstring
namebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/orgs

NameInRequiredType
handlebodyoptionalstring
organization_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/delete

NameInRequiredType
confirmbodyoptionalstring
organization_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/machine-accounts

NameInRequiredType
handlebodyoptionalstring
namebodyoptionalstring
organization_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

DELETE /api/orgs/members

NameInRequiredType
organization_idqueryoptionalcustom
user_idqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/members

NameInRequiredType
handlebodyoptionalstring
organization_idbodyoptionalcustom
rolebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/members/accept

NameInRequiredType
operationbodyoptionalstring
organization_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/members/remove

NameInRequiredType
organization_idbodyoptionalcustom
user_idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/members/role

NameInRequiredType
organization_idbodyoptionalcustom
rolebodyoptionalstring
user_idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/orgs/members/role

NameInRequiredType
organization_idbodyoptionalcustom
rolebodyoptionalstring
user_idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/teams

NameInRequiredType
descriptionbodyoptionalstring
namebodyoptionalstring
operationbodyoptionalstring
organization_idbodyoptionalcustom
parent_team_idbodyoptionalcustom
slugbodyoptionalstring
team_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/teams/members

NameInRequiredType
operationbodyoptionalstring
rolebodyoptionalstring
team_idbodyoptionalcustom
user_idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/orgs/tokens

NameInRequiredType
organization_idqueryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/orgs/update

NameInRequiredType
handlebodyoptionalstring
organization_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

Owners

GET /api/owners

NameInRequiredType
ownerqueryrequiredstring
qqueryoptionalstring
pagequeryoptionalnumber
per_pagequeryoptionalnumber
StatusMeans
200The owner, one page of their repositories, and their profile README when they have written one.
404No account or organization with that handle. An alias that has moved answers this too; follow /{handle} for the redirect.
422Validation failed
500Server error

Repos

DELETE /api/repos

NameInRequiredType
ownerqueryrequiredstring
repoqueryoptionalstring
repositoryqueryoptionalstring
confirmqueryoptionalstring
StatusMeans
200Deleted: the row and the repository on disk, together.
401Unauthenticated.
403Not yours to delete.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422The confirmation did not match the repository name. Deleting a repository takes the name, typed.
500Server error

POST /api/repos

NameInRequiredType
ownerbodyoptionalstring
default_branchbodyoptionalstring
descriptionbodyoptionalstring
gitignorebodyoptionalstring
hostbodyoptionalstring
licensebodyoptionalstring
license_holderbodyoptionalstring
namebodyoptionalstring
readmebodyoptionalcustom
visibilitybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
allow_merge_commitbodyoptionalcustom
allow_rebase_mergebodyoptionalcustom
allow_squash_mergebodyoptionalcustom
default_branchbodyoptionalstring
default_merge_strategybodyoptionalstring
delete_branch_on_mergebodyoptionalcustom
descriptionbodyoptionalstring
homepagebodyoptionalstring
is_archivedbodyoptionalcustom
is_templatebodyoptionalcustom
namebodyoptionalstring
visibilitybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/archive

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
formatqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/attachments

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/badge

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
workflowqueryoptionalstring
branchqueryoptionalstring
labelqueryoptionalstring
StatusMeans
200The badge, as SVG. Grey unknown when there is nothing to report, whatever the reason.
304Nothing has changed since the ETag the caller sent.
422Validation failed
500Server error

GET /api/repos/blame

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
limitqueryoptionalnumber
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/blob

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/blob/rows

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
countqueryoptionalnumber
fromqueryoptionalcustom
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/branches

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/checks

NameInRequiredType
ownerqueryrequiredstring
repositoryqueryoptionalstring
shaqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Every check on the commit, and the one state that follows from them.
401No credential, or one this instance does not recognise.
404No such repository, or one this caller may not see - deliberately the same answer, because distinguishing them tells a stranger that a private repository exists.
422Neither a commit sha nor a pull request number was named.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/checks

NameInRequiredType
ownerbodyrequiredstring
repositorybodyoptionalstring
shabodyrequiredstring
kindbodyoptionalstring
StatusMeans
200The run as it now stands. ignored is present when a late report was refused because a later one had already been recorded - which is not an error from the reporter's side, so it is not answered as one.
201A check run or commit status was created.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A malformed sha, an unknown state, or a completed run with no conclusion.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/collaborators

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
handlebodyoptionalstring
operationbodyoptionalstring
permissionbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/commit

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
refqueryoptionalstring
shaqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/commits

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
beforequeryoptionalstring
limitqueryoptionalnumber
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/compare

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
basequeryoptionalstring
headqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/coverage

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
shabodyrequiredstring
lcovbodyoptionalstring
StatusMeans
200Successful response
201The report, as this instance now holds it: the commit and the per-file coverage it will show in a diff.
401Unauthenticated.
403Reporting coverage needs the checks scope on a token that can reach this repository.
404No such repository, or none this caller may see.
413The report is larger than this instance accepts. A coverage file that big is usually a whole monorepo reported as one.
422A full commit sha is required, and the body has to read as lcov. A truncated upload fails here rather than becoming a diff with no coverage.
500Server error

POST /api/repos/delete

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
confirmbodyoptionalstring
StatusMeans
200Deleted: the row and the repository on disk, together.
401Unauthenticated.
403Not yours to delete.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422The confirmation did not match the repository name. Deleting a repository takes the name, typed.
500Server error

POST /api/repos/deploy-keys

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
can_writebodyoptionalstring
idbodyoptionalnumber
keybodyoptionalstring
operationbodyoptionalstring
titlebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/deployments

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
environmentbodyoptionalstring
shabodyoptionalstring
refbodyoptionalstring
urlbodyoptionalstring
statebodyoptionalstring
descriptionbodyoptionalstring
stagesbodyoptionalstring
healthbodyoptionalstring
pull_requestbodyoptionalnumber
runbodyoptionalnumber
reasonbodyoptionalstring
idbodyoptionalnumber
limitbodyoptionalnumber
StatusMeans
200The deployments this repository has, newest first.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A deployment needs an environment and a commit.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/dispatches

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
event_typebodyoptionalstring
StatusMeans
200Successful response
201The runs that were created. An event type no workflow watches creates none, which is not an error.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422The event type is missing, too long, or the payload is not an object.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/environments

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
namebodyoptionalstring
wait_minutesbodyoptionalnumber
require_checksbodyoptionalboolean
branchesbodyoptionalstring
descriptionbodyoptionalstring
reviewerbodyoptionalstring
StatusMeans
200The environments, or the one that changed.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such environment here, or no such person.
422A name is required, and a wait timer is minutes.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/forks

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
tobodyoptionalstring
StatusMeans
200Successful response
201The fork, with its own owner and name.
401Unauthenticated.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
409The destination owner already has a repository with that name.
422Validation failed
500Server error

GET /api/repos/issues

NameInRequiredType
ownerqueryrequiredstring
repoqueryoptionalstring
repositoryqueryoptionalstring
statequeryoptionalstring
sortqueryoptionalstring
directionqueryoptionalstring
labelsqueryoptionalstring
labelqueryoptionalstring
assigneequeryoptionalstring
authorqueryoptionalstring
milestonequeryoptionalstring
qqueryoptionalstring
searchqueryoptionalstring
limitqueryoptionalnumber
cursorqueryoptionalstring
StatusMeans
200A page of issues, and the cursor for the next. next is null on the last page rather than a cursor that returns nothing.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

POST /api/repos/issues

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
titlebodyrequiredstring
bodybodyoptionalstring
labelsbodyoptionalarray
milestone_idbodyoptionalnumber
StatusMeans
200Successful response
201The issue, with the number it was given.
401Unauthenticated.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422A title is required. An issue with no title is a row nobody can find again.
500Server error

PUT /api/repos/issues

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
bodybodyoptionalstring
titlebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/issues/assignees

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
assigneesbodyoptionalarray
StatusMeans
200The assignees as they now stand.
401Unauthenticated.
403Assigning somebody needs write access to the repository.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

POST /api/repos/issues/bulk

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
labelbodyoptionalstring
milestone_idbodyoptionalnumber
numbersbodyoptionalstring
operationbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

DELETE /api/repos/issues/comments

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
comment_idqueryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/issues/comments

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
bodybodyrequiredstring
StatusMeans
200Successful response
201The comment, rendered.
401Unauthenticated.
403The issue is locked, and this caller is not somebody who may comment on a locked issue.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422An empty comment. Nothing is not a remark.
500Server error

PUT /api/repos/issues/comments

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
bodybodyoptionalstring
comment_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/issues/labels

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
labelsbodyoptionalarray
StatusMeans
200The labels as they now stand.
401Unauthenticated.
403Labelling needs write access to the repository.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

PUT /api/repos/issues/lock

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
lockedbodyoptionalboolean
StatusMeans
200Whether the issue is now locked.
401Unauthenticated.
403Locking a conversation needs write access to the repository.
404No such repository or issue, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

PUT /api/repos/issues/milestone

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
milestonebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/issues/reactions

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
comment_idbodyoptionalcustom
contentbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/issues/state

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
reasonbodyoptionalstring
statebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/issues/tasks

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
checkedbodyoptionalstring
comment_idbodyoptionalcustom
expectedbodyoptionalstring
indexbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/labels

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
colorbodyoptionalstring
descriptionbodyoptionalstring
idbodyoptionalnumber
namebodyoptionalstring
operationbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/media

NameInRequiredType
ownerqueryrequiredstring
repoqueryoptionalstring
repositoryqueryoptionalstring
refqueryoptionalstring
pathqueryrequiredstring
StatusMeans
200The image, with the type its bytes say it is.
404No such repository or file, or the file is not an image of a kind this serves. A private repository answers this rather than 403.
413The file is larger than this endpoint will buffer. It is still available through /repos/raw as a download.
422Validation failed
500Server error
503Too many git processes are already running. Try again shortly.

POST /api/repos/milestones

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
descriptionbodyoptionalstring
due_onbodyoptionalstring
idbodyoptionalnumber
operationbodyoptionalstring
titlebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pages

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
enabledbodyoptionalboolean
source_branchbodyoptionalstring
domainbodyoptionalstring
visibilitybodyoptionalstring
StatusMeans
200The site’s settings and what is currently live.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409Another repository already claims that domain.
422The instance serves no Pages host, or the domain is not a domain.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/protected-branches

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
patternbodyoptionalstring
allow_deletionbodyoptionalcustom
allow_force_pushbodyoptionalcustom
dismiss_stale_reviewsbodyoptionalcustom
require_conversation_resolutionbodyoptionalcustom
require_human_approval_for_agentsbodyoptionalcustom
require_linear_historybodyoptionalcustom
required_approvalsbodyoptionalcustom
required_checksbodyoptionalcustom
require_up_to_datebodyoptionalcustom
enforce_adminsbodyoptionalcustom
push_restrictionsbodyoptionalcustom
push_restrictions_usersbodyoptionalcustom
push_restrictions_teamsbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
statequeryoptionalstring
authorqueryoptionalstring
basequeryoptionalstring
per_pagequeryoptionalnumber
cursorqueryoptionalstring
fieldsqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
titlebodyrequiredstring
headbodyrequiredstring
basebodyoptionalstring
bodybodyoptionalstring
draftbodyoptionalboolean
StatusMeans
200Successful response
201The pull request, with the number it was given.
401Unauthenticated.
404No such repository or pull request, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
409An open pull request from this head to this base already exists. Two of them would be two conversations about one change.
422A title and a head branch are required, the head must exist, and it cannot be the base.
500Server error

PUT /api/repos/pulls

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/auto-merge

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
strategybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/auto-merge/disarm

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/comments

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
pathbodyoptionalstring
linebodyoptionalnumber
sidebodyoptionalstring
start_linebodyoptionalnumber
bodybodyoptionalstring
thread_idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/blame

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
linequeryoptionalnumber
pathqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/conflicts

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/context

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
fromqueryoptionalcustom
layoutqueryoptionalstring
offsetqueryoptionalcustom
pathqueryoptionalstring
toqueryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/interdiff

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
pathqueryoptionalstring
sincequeryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/manifest

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
highlightqueryoptionalstring
layoutqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/rows

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
fromqueryoptionalstring
highlightqueryoptionalstring
layoutqueryoptionalstring
openqueryoptionalstring
toqueryoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/diff/structured

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
pathqueryoptionalstring
per_pagequeryoptionalnumber
offsetqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/last-look

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/live

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/merge

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
strategybodyoptionalstring
subjectbodyoptionalstring
body_textbodyoptionalstring
StatusMeans
200Merged, with the sha it landed as.
401Unauthenticated.
403Merging needs write access, and a protected branch may need more than that.
404No such repository or pull request, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
409The merge did not apply: a conflict, or a head that moved since the check.
422Unknown strategy, or one this repository does not allow.
500Server error

POST /api/repos/pulls/merge-stack

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
strategybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/mergeability

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
forcebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/restore-branch

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/review-requests

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
numberbodyrequirednumber
reviewer_idbodyrequirednumber
reviewer_typebodyoptionalstring
StatusMeans
200Successful response
201The request. Asking twice is not an error and does not ask twice.
401Unauthenticated.
403Requesting a review needs access to the repository.
404No such repository or pull request, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422A reviewer is a user or a team, and has to be one that exists.
500Server error

GET /api/repos/pulls/review-state

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/pulls/review-state/draft

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/review-state/since

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
sincequeryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/review-state/stale

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/pulls/review-state/viewed

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
pathbodyoptionalstring
viewedbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/pulls/reviews

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
statebodyoptionalstring
bodybodyoptionalstring
commentsbodyoptionalarray
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/pulls/reviews/dismiss

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
reasonbodyoptionalstring
review_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/show

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
fieldsqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/stack

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/pulls/state

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
statebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/pulls/suggested-reviewers

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/pulls/threads

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
resolvedbodyoptionalstring
thread_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/raw

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
inlinequeryoptionalstring
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/releases

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/releases

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
bodybodyoptionalstring
is_draftbodyoptionalcustom
is_prereleasebodyoptionalstring
namebodyoptionalstring
operationbodyoptionalstring
tag_namebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/releases/assets

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
namequeryoptionalstring
refqueryoptionalstring
tag_namequeryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/releases/assets

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
tag_namebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/repair-settings

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
enabledbodyoptionalboolean
forbidden_pathsbodyoptionalstring
stepsbodyoptionalstring
max_attemptsbodyoptionalnumber
max_minutesbodyoptionalnumber
max_costbodyoptionalnumber
StatusMeans
200The effective policy: the defaults, with this repository's row merged over them.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A budget below zero, which is a ceiling that can never be met.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

NameInRequiredType
ownerqueryrequiredstring
repositoryqueryoptionalstring
qqueryrequiredstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/secrets

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
scopebodyoptionalstring
referencebodyoptionalstring
environmentbodyoptionalstring
keybodyoptionalstring
valuebodyoptionalstring
StatusMeans
200The names that exist, their scopes, and when each was last set. Never a value.
401No credential, or one this instance does not recognise.
403An instance-wide or owner-wide secret is not a repository administrator's to set.
404No environment by that name here.
422A name and a value are required, and the name has to be usable in a shell.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/settings

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
allow_merge_commitbodyoptionalcustom
allow_rebase_mergebodyoptionalcustom
allow_squash_mergebodyoptionalcustom
default_branchbodyoptionalstring
default_merge_strategybodyoptionalstring
delete_branch_on_mergebodyoptionalcustom
descriptionbodyoptionalstring
homepagebodyoptionalstring
is_archivedbodyoptionalcustom
is_templatebodyoptionalcustom
namebodyoptionalstring
visibilitybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/stars

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
StatusMeans
200The star was added or removed. starred says which, and stars is the count after it.
302A browser form was answered with a redirect back to the page it came from. Scripts get the JSON above.
401Unauthenticated. A star belongs to somebody.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

GET /api/repos/tags

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/teams

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
permissionbodyoptionalstring
team_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/tests

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
viewqueryoptionalstring
suitequeryoptionalstring
branchqueryoptionalstring
runqueryoptionalnumber
testqueryoptionalnumber
statequeryoptionalstring
limitqueryoptionalnumber
cursorqueryoptionalnumber
StatusMeans
200The rows asked for, newest first, with the cursor for the next page. next is null on the last one rather than a cursor that returns nothing.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A view this instance does not have, or a page size outside what it will serve.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/tests/ingest

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
suitebodyoptionalstring
shabodyoptionalstring
branchbodyoptionalstring
keybodyoptionalstring
formatbodyoptionalstring
reportbodyoptionalstring
StatusMeans
200What was recorded, and the verdict this instance reaches once muted failures are set aside.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422The report could not be read. reason says what was wrong with it.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/tests/manage

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
suitebodyoptionalstring
testbodyoptionalnumber
reasonbodyoptionalstring
reviewbodyoptionalstring
whobodyoptionalstring
limitbodyoptionalnumber
StatusMeans
200The tests, or the one that changed.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such test in this repository, or none this caller may see.
422A mute needs a reason and a review date.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/tests/monitors

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
monitorbodyoptionalnumber
suitebodyoptionalstring
conditionbodyoptionalstring
thresholdbodyoptionalnumber
window_daysbodyoptionalnumber
enabledbodyoptionalboolean
StatusMeans
200The monitors, or the one that changed, or what an evaluation found.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such monitor in this repository.
422A threshold that means nothing for the chosen condition.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/tests/split

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
suitebodyoptionalstring
nodesbodyoptionalnumber
indexbodyoptionalnumber
StatusMeans
200The items this node should run, and a note when the split had little to work with.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422Nothing to split, or a node index outside the fleet.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/topics

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
topicsbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/repos/topics

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
topicsbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/transfer

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
tobodyoptionalstring
new_ownerbodyoptionalstring
StatusMeans
200Transferred. The repository is now under the new owner, and its old path redirects.
401Unauthenticated.
403Not yours to transfer, or not somewhere you may transfer it to.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422Validation failed
500Server error

GET /api/repos/tree

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
pathqueryoptionalstring
refqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/repos/variables

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
scopebodyoptionalstring
keybodyoptionalstring
valuebodyoptionalstring
StatusMeans
200Every effective variable, what set it, and what it overrode.
401No credential, or one this instance does not recognise.
403Only an administrator sets an instance-wide variable.
404No such repository, or one this caller may not see - deliberately the same answer.
422A key is required, and the workflow level is the file rather than a row.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/watches

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
subscriptionbodyoptionalstring
StatusMeans
200The subscription as it now stands.
302A browser form was answered with a redirect back to the page it came from. Scripts get the JSON above.
401Unauthenticated.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422The subscription is not one of all, participating or ignore.
500Server error

PUT /api/repos/watches

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
subscriptionbodyoptionalstring
StatusMeans
200The subscription as it now stands.
302A browser form was answered with a redirect back to the page it came from. Scripts get the JSON above.
401Unauthenticated.
404No such repository, or none this caller may see. A private repository answers this rather than 403, because a 403 confirms it exists.
422The subscription is not one of all, participating or ignore.
500Server error

POST /api/repos/webhooks

NameInRequiredType
ownerbodyrequiredstring
repobodyoptionalstring
repositorybodyoptionalstring
operationbodyoptionalstring
idbodyoptionalnumber
urlbodyoptionalstring
secretbodyoptionalstring
content_typebodyoptionalstring
activebodyoptionalboolean
limitbodyoptionalnumber
eventsbodyoptionalcustom
StatusMeans
200The webhook as it now stands, or its recent deliveries when operation is deliveries.
201The webhook, with the secret shown once.
401Unauthenticated.
403Managing webhooks needs administration access to the repository.
404No such repository or webhook, or none this caller may see.
422A URL this instance will not deliver to, or an event name it does not send. The SSRF policy refuses loopback and private ranges unless the operator allowed the host.
500Server error

POST /api/repos/webhooks/redeliver

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
delivery_idbodyoptionalcustom
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/repos/workflow-metrics

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
workflowqueryoptionalnumber
daysqueryoptionalnumber
StatusMeans
200The aggregate numbers, with the window they are of.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-notifications

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
userbodyoptionalstring
workflowbodyoptionalstring
branchbodyoptionalstring
jobbodyoptionalstring
conditionbodyoptionalstring
idbodyoptionalnumber
StatusMeans
200The rules this repository now has.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422The rule is missing something, or names a condition this instance does not have.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
statequeryoptionalstring
branchqueryoptionalstring
shaqueryoptionalstring
workflowqueryoptionalnumber
per_pagequeryoptionalnumber
cursorqueryoptionalstring
StatusMeans
200Runs, newest first, with the cursor for the next page. next is null on the last one rather than a cursor that returns nothing.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A state this instance does not have, answered with the list of the ones it does.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/approve

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
jobbodyoptionalcustom
StatusMeans
200The gate as it now stands, and the run's state after it.
303A browser gets its run page back; the same action serves the interface.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409That job is not waiting for anybody: it never was a gate, or somebody already opened it.
422A field the gate declared is missing or is not one of its options.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/approve-fork

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
decisionbodyoptionalstring
StatusMeans
200The run as it now stands.
303A browser gets its run page back; the same action serves the interface.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409That run is not waiting for a decision: it never was held, or somebody has already decided.
422The decision is approve or refuse.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs/artifact

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
idqueryrequirednumber
StatusMeans
200The bytes, as an attachment. X-Artifact-Digest carries the SHA-256 a client can check them against.
401No credential, or one this instance does not recognise.
404No such repository, no such artifact, or one belonging to a repository this caller may not see - deliberately the same answer.
410The artifact expired. The row is gone and so are the bytes; the date was in every listing that ever showed it.
422Validation failed
500Server error

Response headers: X-Artifact-Digest.

GET /api/repos/workflow-runs/artifacts

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
qqueryoptionalstring
StatusMeans
200Every artifact this run still holds, with the digest to check a download against and the date each one stops being available.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or no run with that number.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs/artifacts/archive

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200A tar archive of every artifact this run still holds.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, no such run, or a run with nothing in it.
410The rows are here but the bytes are gone, which is a disk that lost them rather than a run that produced nothing.
413The set is larger than this instance will assemble in one archive. The individual downloads still work.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/cancel

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
reasonbodyoptionalstring
StatusMeans
200The run as it now stands. cancelled is false when it had already finished, which is not an error: cancelling something that ended a moment ago is an ordinary thing to do.
303A browser gets its run page back. The same action serves the interface, so it answers HTML callers with a redirect.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409The run is in a state that cannot be cancelled.
422No run number was named.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/cancel-job

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
jobbodyoptionalstring
reasonbodyoptionalstring
StatusMeans
200The job as it now stands, and what the run became.
303A browser gets its run page back.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422No run number, or no job name.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/event

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
eventbodyoptionalstring
payloadbodyoptionalstring
keybodyoptionalstring
StatusMeans
200The event as recorded, and how many waiting jobs it ended. A repeat of a key already seen answers the same way rather than delivering twice.
303A browser gets its run page back; the same action serves the interface.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422No event name, or a payload that is not an object.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs/log

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
jobqueryrequirednumber
afterqueryoptionalnumber
attemptqueryoptionalnumber
StatusMeans
200The job output after the cursor, and the cursor to pass next time. Unchanged when there is nothing new, rather than an empty page that looks like the end.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or a job that is not this one's - the job id is a number anybody can increment.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs/log-image

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
artifactqueryoptionalstring
StatusMeans
200The image, inline, with the type its bytes say it is.
404No artifact of that name in this run.
410The artifact expired, or its stored copy is gone.
415The bytes are not a format this will render in place. SVG is refused whatever it contains.
422Validation failed
500Server error

POST /api/repos/workflow-runs/pause

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
actionbodyoptionalstring
StatusMeans
200The run as it now stands. changed is false when it was already in that state, which is not an error: two people pressing the same button is an ordinary afternoon.
303A browser gets its run page back; the same action serves the interface.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409A run that has finished, or one on its way out through a cancellation, cannot be held.
422No run number was named.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-runs/rerun

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
numberbodyoptionalnumber
scopebodyoptionalstring
jobbodyoptionalstring
stepbodyoptionalstring
StatusMeans
200The run, now on a new attempt, and how many jobs went back into the graph.
303A browser gets its run page back.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409The run has not finished. Two attempts of one job in flight is what the lease exists to prevent.
422Nothing matched the scope: no failures to re-run, or no job by that name.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflow-runs/show

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
numberqueryoptionalnumber
StatusMeans
200One run, its jobs and their steps, plus the workflow version it ran - so a reader can tell it from the file as it is today.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or no run with that number.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflow-templates

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
operationbodyoptionalstring
slugbodyoptionalstring
namebodyoptionalstring
descriptionbodyoptionalstring
pathbodyoptionalstring
sourcebodyoptionalstring
templatebodyoptionalnumber
branchbodyoptionalstring
overwritebodyoptionalboolean
StatusMeans
200The owner's templates, or the commit that applied one.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such template, or no such repository.
409That path already has a workflow, or the branch moved while this was writing.
422The template is not a workflow this instance can run. problems says which lines.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflows

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
statequeryoptionalstring
per_pagequeryoptionalnumber
cursorqueryoptionalstring
StatusMeans
200The workflows, by path, with the cursor for the next page. next is null on the last one rather than a cursor that returns nothing.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
422A state this instance does not have, answered with the list of the ones it does.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflows/dispatch

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
workflowbodyoptionalstring
refbodyoptionalstring
keybodyoptionalstring
StatusMeans
200Successful response
201The run that was created.
303A browser gets the run list back. The same action serves the interface, so it answers HTML callers with a redirect.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such repository, or one this caller may not see - deliberately the same answer.
409The workflow does not accept workflow_dispatch.
422The inputs do not match what the workflow declared. Every problem is listed, not just the first.
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

POST /api/repos/workflows/manage

NameInRequiredType
ownerbodyoptionalstring
repobodyoptionalstring
workflowbodyoptionalstring
operationbodyoptionalstring
reasonbodyoptionalstring
StatusMeans
200The workflow, and what it will and will not do now.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No workflow by that name or path in this repository.
409That workflow is removed: its file is gone from the branch, so there is nothing to enable.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET /api/repos/workflows/show

NameInRequiredType
ownerqueryoptionalstring
repoqueryoptionalstring
workflowqueryoptionalstring
versionqueryoptionalnumber
StatusMeans
200The workflow, every version it has had, and the named version's normalized graph.
401No credential, or one this instance does not recognise.
403The caller may see this repository but not do this to it, or their token does not carry the permission.
404No such workflow in this repository, or no version by that id.
422Validation failed
500Server error

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Reviews

GET /api/reviews/queue

Inputs are not declared on Actions/Pull/ReviewQueueAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

Runner

POST /api/runner/annotations

NameInRequiredType
summarybodyoptionalstring
contextbodyoptionalstring
appendbodyoptionalboolean
StatusMeans
200How many annotations were recorded, and the check they belong to.
401The job token is not one this instance issued, or the job is not running.
409The runner speaks a protocol version this server does not.
422Validation failed
500Server error

POST /api/runner/artifacts

Takes no parameters.

StatusMeans
200Successful response
201The artifact, with the digest a client can check what it downloads against and the date it stops being available.
401No job credential, or one this instance does not recognise.
404The credential names a job whose run has gone.
409This run already has an artifact under that name with different content. Replacing it silently would leave two people holding different files with one name.
413Past the per-artifact or per-run ceiling. The message says which and by how much.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

Response headers: X-Runner-Protocol-Supported.

POST /api/runner/artifacts/fetch

NameInRequiredType
namebodyoptionalstring
StatusMeans
200The bytes, with X-Artifact-Digest so the job can check them.
401No job credential, or one this instance does not recognise.
404This run has no artifact by that name - or it expired, which is the same answer to a job that needed it.
410The row is here but the bytes are gone, which is a disk that lost them rather than a name that was wrong.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

Response headers: X-Artifact-Digest.

POST /api/runner/caches

Takes no parameters.

StatusMeans
200Successful response
201Stored, with the scope it was actually written to - which is the run's own, whatever the runner assumed.
401No job credential, or one this instance does not recognise.
403The runner named a scope this run may not write to.
404The credential names a job whose run has gone.
413Past the snapshot ceiling. Above it a cache costs more to move than the install it replaces.
422No body, no key, or a digest that is not a sha-256.
426This runner speaks a protocol version the server does not.
500Server error

GET /api/runner/caches/restore

NameInRequiredType
keyqueryoptionalstring
StatusMeans
200The archive. X-Cache-Scope says whose it was and X-Cache-Exact whether it was this run's own rather than the fallback.
204No snapshot for that key. A cold cache is not an error.
401No job credential, or one this instance does not recognise.
404The credential names a job whose run has gone.
422No key.
426This runner speaks a protocol version the server does not.
500Server error

Response headers: X-Cache-Scope, X-Cache-Exact, X-Cache-Digest.

POST /api/runner/claim

Takes no parameters.

StatusMeans
200Successful response
401No credential, or one this instance does not recognise.
422Validation failed
426This runner speaks a protocol version the server does not. The body says which end is behind; every answer carries X-Runner-Protocol-Supported.
500Server error

Response headers: X-Runner-Protocol-Supported.

GET /api/runner/download

NameInRequiredType
targetqueryoptionalstring
StatusMeans
200The binary, as an octet stream.
404This instance has not built a runner for that platform, and says which command builds it.
422Validation failed
500Server error

POST /api/runner/heartbeat

NameInRequiredType
stepsbodyoptionalarray
StatusMeans
200The renewed lease, and how many step results this call recorded.
401No credential, or one this instance does not recognise.
422Validation failed
426This runner speaks a protocol version the server does not. The body says which end is behind; every answer carries X-Runner-Protocol-Supported.
500Server error

Response headers: X-Runner-Protocol-Supported.

POST /api/runner/logs

NameInRequiredType
sequencebodyrequirednumber
contentbodyoptionalstring
streambodyoptionalstring
StatusMeans
200Successful response
401No credential, or one this instance does not recognise.
422Validation failed
426This runner speaks a protocol version the server does not. The body says which end is behind; every answer carries X-Runner-Protocol-Supported.
500Server error

Response headers: X-Runner-Protocol-Supported.

POST /api/runner/metadata

NameInRequiredType
actionbodyoptionalstring
keybodyoptionalstring
valuebodyoptionalstring
if_versionbodyoptionalnumber
StatusMeans
200The value, or everything this run has been told.
401No job credential, or one this instance does not recognise.
409Somebody else wrote this key first. The value that is actually there comes back with the refusal, so a job can merge and try again.
413The value is larger than a value should be. That is a file, and a file is an artifact.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

POST /api/runner/oidc

NameInRequiredType
audiencebodyoptionalstring
StatusMeans
200The token and how long it lasts. Present it as a bearer to whatever trusts this instance.
401No job credential, or one this instance does not recognise.
403An untrusted run - a fork's pull request - gets no identity token.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

POST /api/runner/orchestrator

NameInRequiredType
sequencebodyrequirednumber
kindbodyoptionalstring
namebodyoptionalstring
StatusMeans
200What to do with this call.
401No job credential, or one this instance does not recognise.
404The credential names a job whose run has gone.
409The program diverged from its journal, or a budget is spent. The run is over and the reason says which.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

POST /api/runner/orchestrator/result

NameInRequiredType
entry_idbodyrequirednumber
StatusMeans
200Recorded.
401No job credential, or one this instance does not recognise.
404No such call, or one belonging to another run.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

POST /api/runner/register

NameInRequiredType
namebodyoptionalstring
labelsbodyoptionalstring
tagsbodyoptionalstring
StatusMeans
200Successful response
201The runner, with its own credential. Shown once; the column holds a hash.
401No registration token, or one that is unknown, revoked or expired.
422Validation failed
426This machine speaks a protocol version the server does not.
500Server error

POST /api/runner/report

NameInRequiredType
statebodyoptionalstring
errorbodyoptionalstring
StatusMeans
200Successful response
401No credential, or one this instance does not recognise.
422Validation failed
426This runner speaks a protocol version the server does not. The body says which end is behind; every answer carries X-Runner-Protocol-Supported.
500Server error

Response headers: X-Runner-Protocol-Supported.

POST /api/runner/split

NameInRequiredType
suitebodyoptionalstring
nodesbodyoptionalnumber
indexbodyoptionalnumber
StatusMeans
200The items this node should run.
401No credential, or one this instance does not recognise.
409Nothing to split.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

Response headers: X-Runner-Protocol-Supported.

POST /api/runner/upload

NameInRequiredType
stepsbodyrequiredstring
StatusMeans
200The jobs that were added.
401No credential, or one this instance does not recognise.
409Refused: the run is finished, the budget is spent, or the document is not valid. problems lists what was wrong.
422Validation failed
426This runner speaks a protocol version the server does not.
500Server error

Response headers: X-Runner-Protocol-Supported.

NameInRequiredType
qqueryoptionalstring
scopequeryoptionalstring
pagequeryoptionalnumber
per_pagequeryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/search/code

NameInRequiredType
qqueryrequiredstring
StatusMeans
200Successful response
422Validation failed
500Server error

User

GET /api/user

Inputs are not declared on Actions/Identity/WhoAmIAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/atproto

NameInRequiredType
operationbodyoptionalstring
identifierbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/forge-credentials

NameInRequiredType
operationbodyoptionalstring
hostbodyoptionalstring
providerbodyoptionalstring
tokenbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

DELETE /api/user/gpg-keys

NameInRequiredType
idqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/gpg-keys

NameInRequiredType
keybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/gpg-keys/delete

NameInRequiredType
idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

DELETE /api/user/keys

NameInRequiredType
idqueryoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/keys

NameInRequiredType
keybodyoptionalstring
titlebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/keys/delete

NameInRequiredType
idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

GET /api/user/notifications

NameInRequiredType
reasonqueryoptionalstring
repositoryqueryoptionalstring
unreadqueryoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/notifications/mutes

NameInRequiredType
durationbodyoptionalstring
mutedbodyoptionalstring
subject_idbodyoptionalcustom
subject_typebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/notifications/preferences

NameInRequiredType
channelbodyoptionalstring
deliverybodyoptionalstring
eventbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/notifications/push

NameInRequiredType
authbodyoptionalstring
endpointbodyoptionalstring
operationbodyoptionalstring
p256dhbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/notifications/push/test

Inputs are not declared on Actions/Notification/PushTestAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/notifications/read

NameInRequiredType
idbodyoptionalnumber
idsbodyoptionalstring
mark_allbodyoptionalcustom
reasonbodyoptionalstring
repositorybodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

PUT /api/user/notifications/schedule

NameInRequiredType
breaks_throughbodyoptionalstring
daysbodyoptionalnumber
do_not_disturb_untilbodyoptionalstring
ends_atbodyoptionalstring
starts_atbodyoptionalstring
timezonebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/passkeys

NameInRequiredType
operationbodyoptionalstring
idbodyoptionalcustom
credentialbodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/profile

NameInRequiredType
handlebodyoptionalstring
websitebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/sessions

NameInRequiredType
operationbodyoptionalstring
idbodyoptionalnumber
StatusMeans
200Successful response
422Validation failed
500Server error

DELETE /api/user/tokens

NameInRequiredType
idqueryrequirednumber
reasonqueryoptionalstring
StatusMeans
200Revoked. The token stops working immediately, and the reason is kept for the audit log.
401Unauthenticated.
403Not yours to revoke.
404No such token.
422Validation failed
500Server error

GET /api/user/tokens

Inputs are not declared on Actions/Tokens/ListTokensAction, so they are not listed here.

StatusMeans
200Successful response
422Validation failed
500Server error

POST /api/user/tokens

NameInRequiredType
namebodyrequiredstring
selectionbodyoptionalstring
expires_atbodyoptionalstring
organization_idbodyoptionalnumber
machine_account_idbodyoptionalnumber
permissionsbodyoptionalarray
repository_idsbodyoptionalarray
StatusMeans
200Successful response
201The token, shown once. It is stored as a hash, so this is the only time the value exists.
401Unauthenticated.
403A token for an organization or a machine account needs the right to act for it.
422A name is required, the selection must be one of the three, and an expiry that is not a date is refused rather than ignored.
500Server error

POST /api/user/tokens/revoke

NameInRequiredType
idbodyrequirednumber
reasonbodyoptionalstring
StatusMeans
200Revoked. The token stops working immediately, and the reason is kept for the audit log.
401Unauthenticated.
403Not yours to revoke.
404No such token.
422Validation failed
500Server error

POST /api/user/tokens/rotate

NameInRequiredType
idbodyrequirednumber
expires_atbodyoptionalstring
StatusMeans
200The new token, shown once, with the old one revoked.
401Unauthenticated.
403Not yours to rotate.
404No such token.
422Validation failed
500Server error

POST /api/user/two-factor

NameInRequiredType
operationbodyoptionalstring
codebodyoptionalstring
StatusMeans
200Successful response
422Validation failed
500Server error

View

GET /api/view/{owner}/{repo}/{kind}/{ref}

NameInRequiredType
ownerpathrequiredstring
repopathrequiredstring
kindpathrequiredstring
refpathrequiredstring
StatusMeans
200Successful response
422Validation failed
500Server error