API Inventory — Codeberg / Forgejo REST API v1

Generated from the pinned spec, never a live fetch.

Spec file spec/swagger.v1.json
Spec sha256 90c40aa5e69a387700d1f28f6e61ba3ed01837b96e21fdfd8795e944fddaf9d5
Spec info.version 16.0.0-dev-668-1bdb1938+gitea-1.22.0
Swagger version 2.0
basePath /api/v1
Paths 326
Operations 506
Definitions 246

Provenance: SPEC_PROVENANCE.md. Verified spec/reality divergences: HAZARDS.md.

This file is the roadmap later waves tick off. operationId and Path are copied verbatim from the pinned spec and must not be edited by hand — regenerate if the spec is re-pinned.


0. Implementation status

A box is ticked only when the operation is reachable from CodebergClient on both rails. The ticked set below was derived from the *Api classes under modules/client/src/com/worxbend/codeberg4s/, not from a hand-kept list — one tick per request builder those classes actually construct.

In-scope v1 rows in §3 439 (tag-weighted; 438 distinct — createCurrentUserRepo is listed under both repository and user)
Implemented 439
Coverage of the in-scope surface 100 %
Coverage of the whole spec (506 operations) 86.8 %
Tag Implemented In scope Done
notification 7 7 100 %
settings 4 4 100 %
miscellaneous 14 14 100 %
issue 67 67 100 %
organization 69 69 100 %
user 80 80 100 %
repository 198 198 100 %
total 439 439 100 %

The remaining 67 operations of the 506 the spec declares are the ones PLAN.md §0 puts out of scope for v1: admin (51), activitypub (11) and package (6). They are listed in §4 and are deliberately not implemented.

Two operations answer a ZIP rather than JSON or text — DownloadActionArtifact and repoGetActionRunLogs. They are reachable as client.downloads, over a separate byte-carrying transport port, and both hold the whole archive in memory; the library does not stream.


1. Tag summary

Tag Operations GET POST PATCH PUT DELETE Scope
repository 198 105 42 10 10 31 in-scope v1
user 80 47 12 3 6 12 in-scope v1
organization 69 36 10 4 7 12 in-scope v1
issue 67 23 16 8 2 18 in-scope v1
admin 51 22 13 3 2 11 out-of-scope
miscellaneous 14 11 3 0 0 0 in-scope v1
activitypub 11 6 5 0 0 0 out-of-scope
notification 7 4 0 1 2 0 in-scope v1
package 6 3 2 0 0 1 deferred
settings 4 4 0 0 0 0 in-scope v1
total (tag-weighted) 507

Tag counts sum to 507 against 506 distinct operations because POST /user/repos (createCurrentUserRepo) is tagged both repository and user; it is listed under both tables below and must only be implemented once.

In-scope v1 surface: 439 tag-weighted operations (438 distinct).


2. Scope decisions (PLAN.md §0)

In scope for v1

Tag Rationale
user Current user, keys, follows, by-name lookups. PLAN.md §7 wave 1.
repository The bulk of the surface: CRUD, contents, branches, tags, releases, topics, pulls. PLAN.md §7 waves 2 and 4.
issue Issues, comments, labels, milestones, reactions, tracked time. PLAN.md §7 wave 3.
organization Orgs, teams, membership. PLAN.md §7 wave 5.
notification PLAN.md §7 wave 6.
miscellaneous Markdown render, search, version, signing key. PLAN.md §7 wave 7.
settings Instance capability discovery; cheap and useful for clients. PLAN.md §7 wave 7.

Deferred / out of scope

Tag Ops Status Reason
package 6 deferred Package registry. Not in the v1 value order (PLAN.md §7); revisit after G3-final.
activitypub 11 out-of-scope Federation endpoints. Explicit non-goal, PLAN.md §0.
admin 51 out-of-scope Instance administration. Explicit non-goal, PLAN.md §0.

OAuth2 token acquisition is out of scope as a flow, per PLAN.md §0: the library accepts a pre-obtained token only. The endpoints that manage OAuth2 applications are tagged user and are therefore listed in the user table below — they are marked out-of-scope in the Notes column rather than removed, so the inventory stays a faithful mirror of the spec.


3. In-scope endpoint checklists

Legend — Auth: optional = works anonymously against public data, a token only widens visibility; token = 401 without credentials; token (admin) = instance-admin token; token? = a mutation-shaped endpoint that performs no mutation, so anonymous access is plausible but unverified.

The Auth column is derived from path shape and HTTP method, not read from the spec: the spec declares one global security block covering all 506 operations with zero per-operation overrides, so it carries no per-endpoint auth information whatsoever (HAZARDS.md §2). Two derivations are calibrated against live probes — GET /user → 401 and GET /repos/forgejo/forgejo/issues → 200 anonymous. The rest follow the rule /user… current-user scope and any mutation need a token; /users/… public lookups do not. Treat the column as a planning aid and confirm per endpoint when implementing it.

Paged: query parameters the spec declares. page+limit is the honoured pagination contract (verified live, HAZARDS.md §5). on an array-returning GET is an unbounded collection — flagged in the Notes column.

3.1 user — 80 operations

GET 47 · POST 12 · PATCH 3 · PUT 6 · DELETE 12

Method Path operationId Auth Paged Notes
GET /user userGetCurrent token
GET /user/actions/runners getUserRunners token page+limit
POST /user/actions/runners registerUserRunner token
GET /user/actions/runners/jobs userSearchRunJobs token array response, no paging params
GET /user/actions/runners/registration-token userGetRunnerRegistrationToken token
DELETE /user/actions/runners/{runner_id} deleteUserRunner token
GET /user/actions/runners/{runner_id} getUserRunner token
DELETE /user/actions/secrets/{secretname} deleteUserSecret token
PUT /user/actions/secrets/{secretname} updateUserSecret token
GET /user/actions/variables getUserVariablesList token page+limit
DELETE /user/actions/variables/{variablename} deleteUserVariable token
GET /user/actions/variables/{variablename} getUserVariable token
POST /user/actions/variables/{variablename} createUserVariable token
PUT /user/actions/variables/{variablename} updateUserVariable token
POST /user/activitypub/follow userCurrentActivityPubFollow token
GET /user/applications/oauth2 userGetOAuth2Applications token page+limit out-of-scope (OAuth2 app mgmt)
POST /user/applications/oauth2 userCreateOAuth2Application token out-of-scope (OAuth2 app mgmt)
DELETE /user/applications/oauth2/{id} userDeleteOAuth2Application token out-of-scope (OAuth2 app mgmt)
GET /user/applications/oauth2/{id} userGetOAuth2Application token out-of-scope (OAuth2 app mgmt)
PATCH /user/applications/oauth2/{id} userUpdateOAuth2Application token out-of-scope (OAuth2 app mgmt)
DELETE /user/avatar userDeleteAvatar token
POST /user/avatar userUpdateAvatar token
PUT /user/block/{username} userBlockUser token
DELETE /user/emails userDeleteEmail token
GET /user/emails userListEmails token array response, no paging params
POST /user/emails userAddEmail token array response, no paging params
GET /user/followers userCurrentListFollowers token page+limit
GET /user/following userCurrentListFollowing token page+limit
DELETE /user/following/{username} userCurrentDeleteFollow token
GET /user/following/{username} userCurrentCheckFollowing token
PUT /user/following/{username} userCurrentPutFollow token
GET /user/gpg_key_token getVerificationToken token
POST /user/gpg_key_verify userVerifyGPGKey token
GET /user/gpg_keys userCurrentListGPGKeys token page+limit
POST /user/gpg_keys userCurrentPostGPGKey token
DELETE /user/gpg_keys/{id} userCurrentDeleteGPGKey token
GET /user/gpg_keys/{id} userCurrentGetGPGKey token
GET /user/hooks userListHooks token page+limit
POST /user/hooks userCreateHook token
DELETE /user/hooks/{id} userDeleteHook token
GET /user/hooks/{id} userGetHook token
PATCH /user/hooks/{id} userEditHook token
GET /user/keys userCurrentListKeys token page+limit
POST /user/keys userCurrentPostKey token
DELETE /user/keys/{id} userCurrentDeleteKey token
GET /user/keys/{id} userCurrentGetKey token
GET /user/list_blocked userListBlockedUsers token page+limit
GET /user/quota userGetQuota token
GET /user/quota/artifacts userListQuotaArtifacts token page+limit
GET /user/quota/attachments userListQuotaAttachments token page+limit
GET /user/quota/check userCheckQuota token
GET /user/quota/packages userListQuotaPackages token page+limit
GET /user/repos userCurrentListRepos token page+limit
POST /user/repos createCurrentUserRepo token dual-tagged repository+user; implement once
GET /user/settings getUserSettings token
PATCH /user/settings updateUserSettings token
GET /user/starred userCurrentListStarred token page+limit
DELETE /user/starred/{owner}/{repo} userCurrentDeleteStar token
GET /user/starred/{owner}/{repo} userCurrentCheckStarring token
PUT /user/starred/{owner}/{repo} userCurrentPutStar token
GET /user/stopwatches userGetStopWatches token page+limit
GET /user/subscriptions userCurrentListSubscriptions token page+limit
GET /user/teams userListTeams token page+limit
GET /user/times userCurrentTrackedTimes token page+limit
PUT /user/unblock/{username} userUnblockUser token
GET /users/search userSearch optional page+limit
GET /users/{username} userGet optional
GET /users/{username}/activities/feeds userListActivityFeeds optional page+limit
GET /users/{username}/followers userListFollowers optional page+limit
GET /users/{username}/following userListFollowing optional page+limit
GET /users/{username}/following/{target} userCheckFollowing optional
GET /users/{username}/gpg_keys userListGPGKeys optional page+limit
GET /users/{username}/heatmap userGetHeatmapData optional array response, no paging params
GET /users/{username}/keys userListKeys optional page+limit
GET /users/{username}/repos userListRepos optional page+limit
GET /users/{username}/starred userListStarred optional page+limit
GET /users/{username}/subscriptions userListSubscriptions optional page+limit
GET /users/{username}/tokens userGetTokens optional page+limit
POST /users/{username}/tokens userCreateToken token
DELETE /users/{username}/tokens/{token} userDeleteAccessToken token

3.2 repository — 198 operations

GET 105 · POST 42 · PATCH 10 · PUT 10 · DELETE 31

Method Path operationId Auth Paged Notes
POST /repos/migrate repoMigrate token
GET /repos/search repoSearch optional page+limit
DELETE /repos/{owner}/{repo} repoDelete token
GET /repos/{owner}/{repo} repoGet optional
PATCH /repos/{owner}/{repo} repoEdit token
GET /repos/{owner}/{repo}/actions/artifacts ListActionArtifacts optional page+limit
DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id} DeleteActionArtifact token
GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id} GetActionArtifact optional
GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/zip DownloadActionArtifact optional
GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs repoGetActionJobLogs optional
GET /repos/{owner}/{repo}/actions/runners getRepoRunners optional page+limit
POST /repos/{owner}/{repo}/actions/runners registerRepoRunner token
GET /repos/{owner}/{repo}/actions/runners/jobs repoSearchRunJobs optional array response, no paging params
GET /repos/{owner}/{repo}/actions/runners/registration-token repoGetRunnerRegistrationToken optional
DELETE /repos/{owner}/{repo}/actions/runners/{runner_id} deleteRepoRunner token
GET /repos/{owner}/{repo}/actions/runners/{runner_id} getRepoRunner optional
GET /repos/{owner}/{repo}/actions/runs ListActionRuns optional page+limit
DELETE /repos/{owner}/{repo}/actions/runs/{run_id} DeleteActionRun token
GET /repos/{owner}/{repo}/actions/runs/{run_id} ActionRun optional
GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts ListActionRunArtifacts optional page+limit
POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel CancelActionRun token
GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs ListActionRunJobs optional array response, no paging params
GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs repoGetActionRunLogs optional
GET /repos/{owner}/{repo}/actions/secrets repoListActionsSecrets optional page+limit
DELETE /repos/{owner}/{repo}/actions/secrets/{secretname} deleteRepoSecret token
PUT /repos/{owner}/{repo}/actions/secrets/{secretname} updateRepoSecret token
GET /repos/{owner}/{repo}/actions/tasks ListActionTasks optional page+limit
GET /repos/{owner}/{repo}/actions/variables getRepoVariablesList optional page+limit
DELETE /repos/{owner}/{repo}/actions/variables/{variablename} deleteRepoVariable token
GET /repos/{owner}/{repo}/actions/variables/{variablename} getRepoVariable optional
POST /repos/{owner}/{repo}/actions/variables/{variablename} createRepoVariable token
PUT /repos/{owner}/{repo}/actions/variables/{variablename} updateRepoVariable token
POST /repos/{owner}/{repo}/actions/workflows/{workflowfilename}/dispatches DispatchWorkflow token
GET /repos/{owner}/{repo}/activities/feeds repoListActivityFeeds optional page+limit
GET /repos/{owner}/{repo}/archive/{archive} repoGetArchive optional
GET /repos/{owner}/{repo}/assignees repoGetAssignees optional array response, no paging params
DELETE /repos/{owner}/{repo}/avatar repoDeleteAvatar token
POST /repos/{owner}/{repo}/avatar repoUpdateAvatar token
GET /repos/{owner}/{repo}/branch_protections repoListBranchProtection optional array response, no paging params
POST /repos/{owner}/{repo}/branch_protections repoCreateBranchProtection token
DELETE /repos/{owner}/{repo}/branch_protections/{name} repoDeleteBranchProtection token
GET /repos/{owner}/{repo}/branch_protections/{name} repoGetBranchProtection optional
PATCH /repos/{owner}/{repo}/branch_protections/{name} repoEditBranchProtection token
GET /repos/{owner}/{repo}/branches repoListBranches optional page+limit
POST /repos/{owner}/{repo}/branches repoCreateBranch token
DELETE /repos/{owner}/{repo}/branches/{branch} repoDeleteBranch token
GET /repos/{owner}/{repo}/branches/{branch} repoGetBranch optional
PATCH /repos/{owner}/{repo}/branches/{branch} repoUpdateBranch token
GET /repos/{owner}/{repo}/collaborators repoListCollaborators optional page+limit
DELETE /repos/{owner}/{repo}/collaborators/{collaborator} repoDeleteCollaborator token
GET /repos/{owner}/{repo}/collaborators/{collaborator} repoCheckCollaborator optional
PUT /repos/{owner}/{repo}/collaborators/{collaborator} repoAddCollaborator token
GET /repos/{owner}/{repo}/collaborators/{collaborator}/permission repoGetRepoPermissions optional
GET /repos/{owner}/{repo}/commits repoGetAllCommits optional page+limit
GET /repos/{owner}/{repo}/commits/{ref}/status repoGetCombinedStatusByRef optional page+limit
GET /repos/{owner}/{repo}/commits/{ref}/statuses repoListStatusesByRef optional page+limit
GET /repos/{owner}/{repo}/commits/{sha}/pull repoGetCommitPullRequest optional
GET /repos/{owner}/{repo}/compare/{basehead} repoCompareDiff optional
GET /repos/{owner}/{repo}/contents repoGetContentsList optional array response, no paging params
POST /repos/{owner}/{repo}/contents repoChangeFiles token
DELETE /repos/{owner}/{repo}/contents/{filepath} repoDeleteFile token
GET /repos/{owner}/{repo}/contents/{filepath} repoGetContents optional union response — see HAZARDS.md §3
POST /repos/{owner}/{repo}/contents/{filepath} repoCreateFile token
PUT /repos/{owner}/{repo}/contents/{filepath} repoUpdateFile token
POST /repos/{owner}/{repo}/convert repoConvert token
POST /repos/{owner}/{repo}/diffpatch repoApplyDiffPatch token
GET /repos/{owner}/{repo}/editorconfig/{filepath} repoGetEditorConfig optional
DELETE /repos/{owner}/{repo}/flags repoDeleteAllFlags token
GET /repos/{owner}/{repo}/flags repoListFlags optional array response, no paging params
PUT /repos/{owner}/{repo}/flags repoReplaceAllFlags token
DELETE /repos/{owner}/{repo}/flags/{flag} repoDeleteFlag token
GET /repos/{owner}/{repo}/flags/{flag} repoCheckFlag optional
PUT /repos/{owner}/{repo}/flags/{flag} repoAddFlag token
GET /repos/{owner}/{repo}/forks listForks optional page+limit
POST /repos/{owner}/{repo}/forks createFork token
GET /repos/{owner}/{repo}/git/blobs GetBlobs optional array response, no paging params
GET /repos/{owner}/{repo}/git/blobs/{sha} GetBlob optional
GET /repos/{owner}/{repo}/git/commits/{sha} repoGetSingleCommit optional
GET /repos/{owner}/{repo}/git/commits/{sha}.{diffType} repoDownloadCommitDiffOrPatch optional
DELETE /repos/{owner}/{repo}/git/notes/{sha} repoRemoveNote token
GET /repos/{owner}/{repo}/git/notes/{sha} repoGetNote optional
POST /repos/{owner}/{repo}/git/notes/{sha} repoSetNote token
GET /repos/{owner}/{repo}/git/refs repoListAllGitRefs optional array response, no paging params
GET /repos/{owner}/{repo}/git/refs/{ref} repoListGitRefs optional array response, no paging params
GET /repos/{owner}/{repo}/git/tags/{sha} GetAnnotatedTag optional
GET /repos/{owner}/{repo}/git/trees/{sha} GetTree optional page only
GET /repos/{owner}/{repo}/hooks repoListHooks optional page+limit
POST /repos/{owner}/{repo}/hooks repoCreateHook token
GET /repos/{owner}/{repo}/hooks/git repoListGitHooks optional array response, no paging params
DELETE /repos/{owner}/{repo}/hooks/git/{id} repoDeleteGitHook token
GET /repos/{owner}/{repo}/hooks/git/{id} repoGetGitHook optional
PATCH /repos/{owner}/{repo}/hooks/git/{id} repoEditGitHook token
DELETE /repos/{owner}/{repo}/hooks/{id} repoDeleteHook token
GET /repos/{owner}/{repo}/hooks/{id} repoGetHook optional
PATCH /repos/{owner}/{repo}/hooks/{id} repoEditHook token
POST /repos/{owner}/{repo}/hooks/{id}/tests repoTestHook token
GET /repos/{owner}/{repo}/issue_config repoGetIssueConfig optional
GET /repos/{owner}/{repo}/issue_config/validate repoValidateIssueConfig optional
GET /repos/{owner}/{repo}/issue_templates repoGetIssueTemplates optional array response, no paging params
GET /repos/{owner}/{repo}/issues/pinned repoListPinnedIssues optional array response, no paging params
GET /repos/{owner}/{repo}/keys repoListKeys optional page+limit
POST /repos/{owner}/{repo}/keys repoCreateKey token
DELETE /repos/{owner}/{repo}/keys/{id} repoDeleteKey token
GET /repos/{owner}/{repo}/keys/{id} repoGetKey optional
GET /repos/{owner}/{repo}/languages repoGetLanguages optional
GET /repos/{owner}/{repo}/media/{filepath} repoGetRawFileOrLFS optional
POST /repos/{owner}/{repo}/mirror-sync repoMirrorSync token
GET /repos/{owner}/{repo}/new_pin_allowed repoNewPinAllowed optional
GET /repos/{owner}/{repo}/pulls repoListPullRequests optional page+limit
POST /repos/{owner}/{repo}/pulls repoCreatePullRequest token
GET /repos/{owner}/{repo}/pulls/pinned repoListPinnedPullRequests optional array response, no paging params
GET /repos/{owner}/{repo}/pulls/{base}/{head} repoGetPullRequestByBaseHead optional
GET /repos/{owner}/{repo}/pulls/{index} repoGetPullRequest optional
PATCH /repos/{owner}/{repo}/pulls/{index} repoEditPullRequest token
GET /repos/{owner}/{repo}/pulls/{index}.{diffType} repoDownloadPullDiffOrPatch optional
GET /repos/{owner}/{repo}/pulls/{index}/commits repoGetPullRequestCommits optional page+limit
GET /repos/{owner}/{repo}/pulls/{index}/files repoGetPullRequestFiles optional page+limit
DELETE /repos/{owner}/{repo}/pulls/{index}/merge repoCancelScheduledAutoMerge token
GET /repos/{owner}/{repo}/pulls/{index}/merge repoPullRequestIsMerged optional
POST /repos/{owner}/{repo}/pulls/{index}/merge repoMergePullRequest token
DELETE /repos/{owner}/{repo}/pulls/{index}/requested_reviewers repoDeletePullReviewRequests token
POST /repos/{owner}/{repo}/pulls/{index}/requested_reviewers repoCreatePullReviewRequests token array response, no paging params
GET /repos/{owner}/{repo}/pulls/{index}/reviews repoListPullReviews optional page+limit
POST /repos/{owner}/{repo}/pulls/{index}/reviews repoCreatePullReview token
DELETE /repos/{owner}/{repo}/pulls/{index}/reviews/{id} repoDeletePullReview token
GET /repos/{owner}/{repo}/pulls/{index}/reviews/{id} repoGetPullReview optional
POST /repos/{owner}/{repo}/pulls/{index}/reviews/{id} repoSubmitPullReview token
GET /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments repoGetPullReviewComments optional array response, no paging params
POST /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments repoCreatePullReviewComment token
DELETE /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments/{comment} repoDeletePullReviewComment token
GET /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments/{comment} repoGetPullReviewComment optional
POST /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals repoDismissPullReview token
POST /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/undismissals repoUnDismissPullReview token
POST /repos/{owner}/{repo}/pulls/{index}/update repoUpdatePullRequest token
GET /repos/{owner}/{repo}/push_mirrors repoListPushMirrors optional page+limit
POST /repos/{owner}/{repo}/push_mirrors repoAddPushMirror token
POST /repos/{owner}/{repo}/push_mirrors-sync repoPushMirrorSync token
DELETE /repos/{owner}/{repo}/push_mirrors/{name} repoDeletePushMirror token
GET /repos/{owner}/{repo}/push_mirrors/{name} repoGetPushMirrorByRemoteName optional
GET /repos/{owner}/{repo}/raw/{filepath} repoGetRawFile optional
GET /repos/{owner}/{repo}/releases repoListReleases optional page+limit
POST /repos/{owner}/{repo}/releases repoCreateRelease token
GET /repos/{owner}/{repo}/releases/latest repoGetLatestRelease optional
DELETE /repos/{owner}/{repo}/releases/tags/{tag} repoDeleteReleaseByTag token
GET /repos/{owner}/{repo}/releases/tags/{tag} repoGetReleaseByTag optional
DELETE /repos/{owner}/{repo}/releases/{id} repoDeleteRelease token
GET /repos/{owner}/{repo}/releases/{id} repoGetRelease optional
PATCH /repos/{owner}/{repo}/releases/{id} repoEditRelease token
GET /repos/{owner}/{repo}/releases/{id}/assets repoListReleaseAttachments optional array response, no paging params
POST /repos/{owner}/{repo}/releases/{id}/assets repoCreateReleaseAttachment token
DELETE /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} repoDeleteReleaseAttachment token
GET /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} repoGetReleaseAttachment optional
PATCH /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} repoEditReleaseAttachment token
GET /repos/{owner}/{repo}/reviewers repoGetReviewers optional array response, no paging params
GET /repos/{owner}/{repo}/signing-key.gpg repoSigningKey optional
GET /repos/{owner}/{repo}/stargazers repoListStargazers optional page+limit
GET /repos/{owner}/{repo}/statuses/{sha} repoListStatuses optional page+limit
POST /repos/{owner}/{repo}/statuses/{sha} repoCreateStatus token
GET /repos/{owner}/{repo}/subscribers repoListSubscribers optional page+limit
DELETE /repos/{owner}/{repo}/subscription userCurrentDeleteSubscription token
GET /repos/{owner}/{repo}/subscription userCurrentCheckSubscription optional
PUT /repos/{owner}/{repo}/subscription userCurrentPutSubscription token
GET /repos/{owner}/{repo}/sync_fork repoSyncForkDefaultInfo optional
POST /repos/{owner}/{repo}/sync_fork repoSyncForkDefault token
GET /repos/{owner}/{repo}/sync_fork/{branch} repoSyncForkBranchInfo optional
POST /repos/{owner}/{repo}/sync_fork/{branch} repoSyncForkBranch token
GET /repos/{owner}/{repo}/tag_protections repoListTagProtection optional array response, no paging params
POST /repos/{owner}/{repo}/tag_protections repoCreateTagProtection token
DELETE /repos/{owner}/{repo}/tag_protections/{id} repoDeleteTagProtection token
GET /repos/{owner}/{repo}/tag_protections/{id} repoGetTagProtection optional
PATCH /repos/{owner}/{repo}/tag_protections/{id} repoEditTagProtection token
GET /repos/{owner}/{repo}/tags repoListTags optional page+limit
POST /repos/{owner}/{repo}/tags repoCreateTag token
DELETE /repos/{owner}/{repo}/tags/{tag} repoDeleteTag token
GET /repos/{owner}/{repo}/tags/{tag} repoGetTag optional
GET /repos/{owner}/{repo}/teams repoListTeams optional array response, no paging params
DELETE /repos/{owner}/{repo}/teams/{team} repoDeleteTeam token
GET /repos/{owner}/{repo}/teams/{team} repoCheckTeam optional
PUT /repos/{owner}/{repo}/teams/{team} repoAddTeam token
GET /repos/{owner}/{repo}/times repoTrackedTimes optional page+limit
GET /repos/{owner}/{repo}/times/{user} userTrackedTimes optional array response, no paging params
GET /repos/{owner}/{repo}/topics repoListTopics optional page+limit
PUT /repos/{owner}/{repo}/topics repoUpdateTopics token
DELETE /repos/{owner}/{repo}/topics/{topic} repoDeleteTopic token
PUT /repos/{owner}/{repo}/topics/{topic} repoAddTopic token
POST /repos/{owner}/{repo}/transfer repoTransfer token
POST /repos/{owner}/{repo}/transfer/accept acceptRepoTransfer token
POST /repos/{owner}/{repo}/transfer/reject rejectRepoTransfer token
POST /repos/{owner}/{repo}/wiki/new repoCreateWikiPage token
DELETE /repos/{owner}/{repo}/wiki/page/{pageName} repoDeleteWikiPage token
GET /repos/{owner}/{repo}/wiki/page/{pageName} repoGetWikiPage optional
PATCH /repos/{owner}/{repo}/wiki/page/{pageName} repoEditWikiPage token
GET /repos/{owner}/{repo}/wiki/pages repoGetWikiPages optional page+limit
GET /repos/{owner}/{repo}/wiki/revisions/{pageName} repoGetWikiPageRevisions optional page only
POST /repos/{template_owner}/{template_repo}/generate generateRepo token
GET /repositories/{id} repoGetByID optional
GET /topics/search topicSearch optional page+limit
POST /user/repos createCurrentUserRepo token dual-tagged repository+user; implement once

3.3 issue — 67 operations

GET 23 · POST 16 · PATCH 8 · PUT 2 · DELETE 18

Method Path operationId Auth Paged Notes
GET /repos/issues/search issueSearchIssues optional page+limit
GET /repos/{owner}/{repo}/issues issueListIssues optional page+limit
POST /repos/{owner}/{repo}/issues issueCreateIssue token
GET /repos/{owner}/{repo}/issues/comments issueGetRepoComments optional page+limit
DELETE /repos/{owner}/{repo}/issues/comments/{id} issueDeleteComment token
GET /repos/{owner}/{repo}/issues/comments/{id} issueGetComment optional
PATCH /repos/{owner}/{repo}/issues/comments/{id} issueEditComment token
GET /repos/{owner}/{repo}/issues/comments/{id}/assets issueListIssueCommentAttachments optional array response, no paging params
POST /repos/{owner}/{repo}/issues/comments/{id}/assets issueCreateIssueCommentAttachment token
DELETE /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} issueDeleteIssueCommentAttachment token
GET /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} issueGetIssueCommentAttachment optional
PATCH /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} issueEditIssueCommentAttachment token
DELETE /repos/{owner}/{repo}/issues/comments/{id}/reactions issueDeleteCommentReaction token
GET /repos/{owner}/{repo}/issues/comments/{id}/reactions issueGetCommentReactions optional array response, no paging params
POST /repos/{owner}/{repo}/issues/comments/{id}/reactions issuePostCommentReaction token
DELETE /repos/{owner}/{repo}/issues/{index} issueDelete token
GET /repos/{owner}/{repo}/issues/{index} issueGetIssue optional
PATCH /repos/{owner}/{repo}/issues/{index} issueEditIssue token
GET /repos/{owner}/{repo}/issues/{index}/assets issueListIssueAttachments optional array response, no paging params
POST /repos/{owner}/{repo}/issues/{index}/assets issueCreateIssueAttachment token
DELETE /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} issueDeleteIssueAttachment token
GET /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} issueGetIssueAttachment optional
PATCH /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} issueEditIssueAttachment token
DELETE /repos/{owner}/{repo}/issues/{index}/blocks issueRemoveIssueBlocking token
GET /repos/{owner}/{repo}/issues/{index}/blocks issueListBlocks optional page+limit
POST /repos/{owner}/{repo}/issues/{index}/blocks issueCreateIssueBlocking token
GET /repos/{owner}/{repo}/issues/{index}/comments issueGetComments optional array response, no paging params
POST /repos/{owner}/{repo}/issues/{index}/comments issueCreateComment token
DELETE /repos/{owner}/{repo}/issues/{index}/comments/{id} issueDeleteCommentDeprecated token
PATCH /repos/{owner}/{repo}/issues/{index}/comments/{id} issueEditCommentDeprecated token
POST /repos/{owner}/{repo}/issues/{index}/deadline issueEditIssueDeadline token
DELETE /repos/{owner}/{repo}/issues/{index}/dependencies issueRemoveIssueDependencies token
GET /repos/{owner}/{repo}/issues/{index}/dependencies issueListIssueDependencies optional page+limit
POST /repos/{owner}/{repo}/issues/{index}/dependencies issueCreateIssueDependencies token
DELETE /repos/{owner}/{repo}/issues/{index}/labels issueClearLabels token
GET /repos/{owner}/{repo}/issues/{index}/labels issueGetLabels optional array response, no paging params
POST /repos/{owner}/{repo}/issues/{index}/labels issueAddLabel token array response, no paging params
PUT /repos/{owner}/{repo}/issues/{index}/labels issueReplaceLabels token array response, no paging params
DELETE /repos/{owner}/{repo}/issues/{index}/labels/{identifier} issueRemoveLabel token
DELETE /repos/{owner}/{repo}/issues/{index}/pin unpinIssue token
POST /repos/{owner}/{repo}/issues/{index}/pin pinIssue token
PATCH /repos/{owner}/{repo}/issues/{index}/pin/{position} moveIssuePin token
DELETE /repos/{owner}/{repo}/issues/{index}/reactions issueDeleteIssueReaction token
GET /repos/{owner}/{repo}/issues/{index}/reactions issueGetIssueReactions optional page+limit
POST /repos/{owner}/{repo}/issues/{index}/reactions issuePostIssueReaction token
DELETE /repos/{owner}/{repo}/issues/{index}/stopwatch/delete issueDeleteStopWatch token
POST /repos/{owner}/{repo}/issues/{index}/stopwatch/start issueStartStopWatch token
POST /repos/{owner}/{repo}/issues/{index}/stopwatch/stop issueStopStopWatch token
GET /repos/{owner}/{repo}/issues/{index}/subscriptions issueSubscriptions optional page+limit
GET /repos/{owner}/{repo}/issues/{index}/subscriptions/check issueCheckSubscription optional
DELETE /repos/{owner}/{repo}/issues/{index}/subscriptions/{user} issueDeleteSubscription token
PUT /repos/{owner}/{repo}/issues/{index}/subscriptions/{user} issueAddSubscription token
GET /repos/{owner}/{repo}/issues/{index}/timeline issueGetCommentsAndTimeline optional page+limit
DELETE /repos/{owner}/{repo}/issues/{index}/times issueResetTime token
GET /repos/{owner}/{repo}/issues/{index}/times issueTrackedTimes optional page+limit
POST /repos/{owner}/{repo}/issues/{index}/times issueAddTime token
DELETE /repos/{owner}/{repo}/issues/{index}/times/{id} issueDeleteTime token
GET /repos/{owner}/{repo}/labels issueListLabels optional page+limit
POST /repos/{owner}/{repo}/labels issueCreateLabel token
DELETE /repos/{owner}/{repo}/labels/{id} issueDeleteLabel token
GET /repos/{owner}/{repo}/labels/{id} issueGetLabel optional
PATCH /repos/{owner}/{repo}/labels/{id} issueEditLabel token
GET /repos/{owner}/{repo}/milestones issueGetMilestonesList optional page+limit
POST /repos/{owner}/{repo}/milestones issueCreateMilestone token
DELETE /repos/{owner}/{repo}/milestones/{id} issueDeleteMilestone token
GET /repos/{owner}/{repo}/milestones/{id} issueGetMilestone optional
PATCH /repos/{owner}/{repo}/milestones/{id} issueEditMilestone token

3.4 organization — 69 operations

GET 36 · POST 10 · PATCH 4 · PUT 7 · DELETE 12

Method Path operationId Auth Paged Notes
POST /org/{org}/repos createOrgRepoDeprecated token
GET /orgs orgGetAll optional page+limit
POST /orgs orgCreate token
DELETE /orgs/{org} orgDelete token
GET /orgs/{org} orgGet optional
PATCH /orgs/{org} orgEdit token
GET /orgs/{org}/actions/runners getOrgRunners optional page+limit
POST /orgs/{org}/actions/runners registerOrgRunner token
GET /orgs/{org}/actions/runners/jobs orgSearchRunJobs optional array response, no paging params
GET /orgs/{org}/actions/runners/registration-token orgGetRunnerRegistrationToken optional
DELETE /orgs/{org}/actions/runners/{runner_id} deleteOrgRunner token
GET /orgs/{org}/actions/runners/{runner_id} getOrgRunner optional
GET /orgs/{org}/actions/secrets orgListActionsSecrets optional page+limit
DELETE /orgs/{org}/actions/secrets/{secretname} deleteOrgSecret token
PUT /orgs/{org}/actions/secrets/{secretname} updateOrgSecret token
GET /orgs/{org}/actions/variables getOrgVariablesList optional page+limit
DELETE /orgs/{org}/actions/variables/{variablename} deleteOrgVariable token
GET /orgs/{org}/actions/variables/{variablename} getOrgVariable optional
POST /orgs/{org}/actions/variables/{variablename} createOrgVariable token
PUT /orgs/{org}/actions/variables/{variablename} updateOrgVariable token
GET /orgs/{org}/activities/feeds orgListActivityFeeds optional page+limit
DELETE /orgs/{org}/avatar orgDeleteAvatar token
POST /orgs/{org}/avatar orgUpdateAvatar token
PUT /orgs/{org}/block/{username} orgBlockUser token
GET /orgs/{org}/hooks orgListHooks optional page+limit
POST /orgs/{org}/hooks orgCreateHook token
DELETE /orgs/{org}/hooks/{id} orgDeleteHook token
GET /orgs/{org}/hooks/{id} orgGetHook optional
PATCH /orgs/{org}/hooks/{id} orgEditHook token
GET /orgs/{org}/labels orgListLabels optional page+limit
POST /orgs/{org}/labels orgCreateLabel token
DELETE /orgs/{org}/labels/{id} orgDeleteLabel token
GET /orgs/{org}/labels/{id} orgGetLabel optional
PATCH /orgs/{org}/labels/{id} orgEditLabel token
GET /orgs/{org}/list_blocked orgListBlockedUsers optional page+limit
GET /orgs/{org}/members orgListMembers optional page+limit
DELETE /orgs/{org}/members/{username} orgDeleteMember token
GET /orgs/{org}/members/{username} orgIsMember optional
GET /orgs/{org}/public_members orgListPublicMembers optional page+limit
DELETE /orgs/{org}/public_members/{username} orgConcealMember token
GET /orgs/{org}/public_members/{username} orgIsPublicMember optional
PUT /orgs/{org}/public_members/{username} orgPublicizeMember token
GET /orgs/{org}/quota orgGetQuota optional
GET /orgs/{org}/quota/artifacts orgListQuotaArtifacts optional page+limit
GET /orgs/{org}/quota/attachments orgListQuotaAttachments optional page+limit
GET /orgs/{org}/quota/check orgCheckQuota optional
GET /orgs/{org}/quota/packages orgListQuotaPackages optional page+limit
POST /orgs/{org}/rename renameOrg token
GET /orgs/{org}/repos orgListRepos optional page+limit
POST /orgs/{org}/repos createOrgRepo token
GET /orgs/{org}/teams orgListTeams optional page+limit
POST /orgs/{org}/teams orgCreateTeam token
GET /orgs/{org}/teams/search teamSearch optional page+limit
PUT /orgs/{org}/unblock/{username} orgUnblockUser token
DELETE /teams/{id} orgDeleteTeam token
GET /teams/{id} orgGetTeam optional
PATCH /teams/{id} orgEditTeam token
GET /teams/{id}/activities/feeds orgListTeamActivityFeeds optional page+limit
GET /teams/{id}/members orgListTeamMembers optional page+limit
DELETE /teams/{id}/members/{username} orgRemoveTeamMember token
GET /teams/{id}/members/{username} orgListTeamMember optional
PUT /teams/{id}/members/{username} orgAddTeamMember token
GET /teams/{id}/repos orgListTeamRepos optional page+limit
DELETE /teams/{id}/repos/{org}/{repo} orgRemoveTeamRepository token
GET /teams/{id}/repos/{org}/{repo} orgListTeamRepo optional
PUT /teams/{id}/repos/{org}/{repo} orgAddTeamRepository token
GET /user/orgs orgListCurrentUserOrgs token page+limit
GET /users/{username}/orgs orgListUserOrgs optional page+limit
GET /users/{username}/orgs/{org}/permissions orgGetUserPermissions optional

3.5 notification — 7 operations

GET 4 · POST 0 · PATCH 1 · PUT 2 · DELETE 0

Method Path operationId Auth Paged Notes
GET /notifications notifyGetList token page+limit
PUT /notifications notifyReadList token
GET /notifications/new notifyNewAvailable token
GET /notifications/threads/{id} notifyGetThread token
PATCH /notifications/threads/{id} notifyReadThread token
GET /repos/{owner}/{repo}/notifications notifyGetRepoList token page+limit
PUT /repos/{owner}/{repo}/notifications notifyReadRepoList token

3.6 miscellaneous — 14 operations

GET 11 · POST 3 · PATCH 0 · PUT 0 · DELETE 0

Method Path operationId Auth Paged Notes
GET /actions/run getActionsRun optional
GET /gitignore/templates listGitignoresTemplates optional array response, no paging params
GET /gitignore/templates/{name} getGitignoreTemplateInfo optional
GET /label/templates listLabelTemplates optional array response, no paging params
GET /label/templates/{name} getLabelTemplateInfo optional array response, no paging params
GET /licenses listLicenseTemplates optional array response, no paging params
GET /licenses/{name} getLicenseTemplateInfo optional
POST /markdown renderMarkdown token? pure render, no side effect — anonymous access unverified
POST /markdown/raw renderMarkdownRaw token? pure render, no side effect — anonymous access unverified
POST /markup renderMarkup token? pure render, no side effect — anonymous access unverified
GET /nodeinfo getNodeInfo optional
GET /signing-key.gpg getSigningKey optional
GET /signing-key.ssh getSSHSigningKey optional
GET /version getVersion optional

3.7 settings — 4 operations

GET 4 · POST 0 · PATCH 0 · PUT 0 · DELETE 0

Method Path operationId Auth Paged Notes
GET /settings/api getGeneralAPISettings optional
GET /settings/attachment getGeneralAttachmentSettings optional
GET /settings/repository getGeneralRepositorySettings optional
GET /settings/ui getGeneralUISettings optional

4. Deferred endpoint listing (not to be implemented in v1)

package — 6 operations (deferred)

Method Path operationId
GET /packages/{owner} listPackages
POST /packages/{owner}/{type}/{name}/-/link/{repo_name} linkPackage
POST /packages/{owner}/{type}/{name}/-/unlink unlinkPackage
DELETE /packages/{owner}/{type}/{name}/{version} deletePackage
GET /packages/{owner}/{type}/{name}/{version} getPackage
GET /packages/{owner}/{type}/{name}/{version}/files listPackageFiles

activitypub — 11 operations (out-of-scope)

Method Path operationId
GET /activitypub/actor activitypubInstanceActor
POST /activitypub/actor/inbox activitypubInstanceActorInbox
POST /activitypub/actor/outbox activitypubInstanceActorOutbox
GET /activitypub/repository-id/{repository-id} activitypubRepository
POST /activitypub/repository-id/{repository-id}/inbox activitypubRepositoryInbox
POST /activitypub/repository-id/{repository-id}/outbox activitypubRepositoryOutbox
GET /activitypub/user-id/{user-id} activitypubPerson
GET /activitypub/user-id/{user-id}/activities/{activity-id} activitypubPersonActivityNote
GET /activitypub/user-id/{user-id}/activities/{activity-id}/activity activitypubPersonActivity
POST /activitypub/user-id/{user-id}/inbox activitypubPersonInbox
GET /activitypub/user-id/{user-id}/outbox activitypubPersonFeed

admin — 51 operations (out-of-scope)

Method Path operationId
GET /admin/actions/runners getAdminRunners
POST /admin/actions/runners registerAdminRunner
GET /admin/actions/runners/jobs adminGetActionRunJobs
GET /admin/actions/runners/registration-token adminGetRunnerRegistrationToken
DELETE /admin/actions/runners/{runner_id} deleteAdminRunner
GET /admin/actions/runners/{runner_id} getAdminRunner
GET /admin/cron adminCronList
POST /admin/cron/{task} adminCronRun
GET /admin/emails adminGetAllEmails
GET /admin/emails/search adminSearchEmails
GET /admin/hooks adminListHooks
POST /admin/hooks adminCreateHook
DELETE /admin/hooks/{id} adminDeleteHook
GET /admin/hooks/{id} adminGetHook
PATCH /admin/hooks/{id} adminEditHook
GET /admin/orgs adminGetAllOrgs
GET /admin/quota/groups adminListQuotaGroups
POST /admin/quota/groups adminCreateQuotaGroup
DELETE /admin/quota/groups/{quotagroup} adminDeleteQuotaGroup
GET /admin/quota/groups/{quotagroup} adminGetQuotaGroup
DELETE /admin/quota/groups/{quotagroup}/rules/{quotarule} adminRemoveRuleFromQuotaGroup
PUT /admin/quota/groups/{quotagroup}/rules/{quotarule} adminAddRuleToQuotaGroup
GET /admin/quota/groups/{quotagroup}/users adminListUsersInQuotaGroup
DELETE /admin/quota/groups/{quotagroup}/users/{username} adminRemoveUserFromQuotaGroup
PUT /admin/quota/groups/{quotagroup}/users/{username} adminAddUserToQuotaGroup
GET /admin/quota/rules adminListQuotaRules
POST /admin/quota/rules adminCreateQuotaRule
DELETE /admin/quota/rules/{quotarule} adminDeleteQuotaRule
GET /admin/quota/rules/{quotarule} adminGetQuotaRule
PATCH /admin/quota/rules/{quotarule} adminEditQuotaRule
GET /admin/runners/jobs adminSearchRunJobs
GET /admin/runners/registration-token adminGetRegistrationToken
GET /admin/unadopted adminUnadoptedList
DELETE /admin/unadopted/{owner}/{repo} adminDeleteUnadoptedRepository
POST /admin/unadopted/{owner}/{repo} adminAdoptRepository
GET /admin/users adminSearchUsers
POST /admin/users adminCreateUser
DELETE /admin/users/{username} adminDeleteUser
PATCH /admin/users/{username} adminEditUser
DELETE /admin/users/{username}/emails adminDeleteUserEmails
GET /admin/users/{username}/emails adminListUserEmails
POST /admin/users/{username}/keys adminCreatePublicKey
DELETE /admin/users/{username}/keys/{id} adminDeleteUserPublicKey
POST /admin/users/{username}/orgs adminCreateOrg
GET /admin/users/{username}/quota adminGetUserQuota
POST /admin/users/{username}/quota/groups adminSetUserQuotaGroups
POST /admin/users/{username}/rename adminRenameUser
POST /admin/users/{username}/repos adminCreateRepo
GET /admin/users/{username}/tokens adminListUserAccessTokens
POST /admin/users/{username}/tokens adminCreateUserAccessToken
DELETE /admin/users/{username}/tokens/{token} adminDeleteUserAccessToken

5. Pagination parameter census

Declared query params Operations
page+limit 103
page only 2
401

The two page only operations are GetTree (GET /repos/{owner}/{repo}/git/trees/{sha}) and repoGetWikiPageRevisions (GET /repos/{owner}/{repo}/wiki/revisions/{pageName}). GetTree returns a GitTreeResponse envelope carrying its own page, total_count and truncated fields rather than a bare array, so it needs its own paging shape.

Array-returning GETs with no page/limit (unbounded collections)

These violate the SCALACODESTYLE.md rule "never fetch an unbounded API collection eagerly" by construction — the server offers no way to page them. Each must either be documented as bounded-by-nature (labels on one issue) or returned as a Flow that the caller can stop consuming.

Tag operationId Path
admin (deferred tag) adminGetActionRunJobs /admin/actions/runners/jobs
admin (deferred tag) adminListQuotaRules /admin/quota/rules
admin (deferred tag) adminListUserEmails /admin/users/{username}/emails
admin (deferred tag) adminListUsersInQuotaGroup /admin/quota/groups/{quotagroup}/users
admin (deferred tag) adminSearchRunJobs /admin/runners/jobs
issue issueGetCommentReactions /repos/{owner}/{repo}/issues/comments/{id}/reactions
issue issueGetComments /repos/{owner}/{repo}/issues/{index}/comments
issue issueGetLabels /repos/{owner}/{repo}/issues/{index}/labels
issue issueListIssueAttachments /repos/{owner}/{repo}/issues/{index}/assets
issue issueListIssueCommentAttachments /repos/{owner}/{repo}/issues/comments/{id}/assets
miscellaneous getLabelTemplateInfo /label/templates/{name}
miscellaneous listGitignoresTemplates /gitignore/templates
miscellaneous listLabelTemplates /label/templates
miscellaneous listLicenseTemplates /licenses
organization orgSearchRunJobs /orgs/{org}/actions/runners/jobs
package (deferred tag) listPackageFiles /packages/{owner}/{type}/{name}/{version}/files
repository GetBlobs /repos/{owner}/{repo}/git/blobs
repository ListActionRunJobs /repos/{owner}/{repo}/actions/runs/{run_id}/jobs
repository repoGetAssignees /repos/{owner}/{repo}/assignees
repository repoGetContentsList /repos/{owner}/{repo}/contents
repository repoGetIssueTemplates /repos/{owner}/{repo}/issue_templates
repository repoGetPullReviewComments /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments
repository repoGetReviewers /repos/{owner}/{repo}/reviewers
repository repoListAllGitRefs /repos/{owner}/{repo}/git/refs
repository repoListBranchProtection /repos/{owner}/{repo}/branch_protections
repository repoListFlags /repos/{owner}/{repo}/flags
repository repoListGitHooks /repos/{owner}/{repo}/hooks/git
repository repoListGitRefs /repos/{owner}/{repo}/git/refs/{ref}
repository repoListPinnedIssues /repos/{owner}/{repo}/issues/pinned
repository repoListPinnedPullRequests /repos/{owner}/{repo}/pulls/pinned
repository repoListReleaseAttachments /repos/{owner}/{repo}/releases/{id}/assets
repository repoListTagProtection /repos/{owner}/{repo}/tag_protections
repository repoListTeams /repos/{owner}/{repo}/teams
repository repoSearchRunJobs /repos/{owner}/{repo}/actions/runners/jobs
repository userTrackedTimes /repos/{owner}/{repo}/times/{user}
user userGetHeatmapData /users/{username}/heatmap
user userListEmails /user/emails
user userSearchRunJobs /user/actions/runners/jobs