Skip to content

Endpoint index

Every route the API serves. {orgID} accepts a UUID or slug; {repoID} is a UUID only.

Path Notes
GET /readyz Readiness + database ping. Use for external checks.
GET /healthz Liveness. Internal probes only.
GET /api/v1/plans The plan catalogue
POST /api/v1/billing/webhook Billing provider callback, signature-verified

Reference →

Path Permission
GET /api/v1/users/me authenticated
PATCH /api/v1/users/me authenticated
POST /api/v1/auth/session authenticated
GET /api/v1/search authenticated (scoped to your orgs)
GET /api/v1/notifications authenticated
POST /api/v1/notifications/{id}/read authenticated
POST /api/v1/invitations/accept authenticated
GET /api/v1/users/me/invitations authenticated
POST /api/v1/invitations/{invID}/accept authenticated
GET /api/v1/users/me/shared-repositories authenticated

Reference →

Path Permission
GET /api/v1/organizations authenticated
POST /api/v1/organizations authenticated
GET /api/v1/organizations/{orgID} organization.read
PATCH /api/v1/organizations/{orgID} organization.update
DELETE /api/v1/organizations/{orgID} organization.delete
GET /api/v1/organizations/{orgID}/members members.read
PATCH /api/v1/organizations/{orgID}/members/{userID} members.remove
DELETE /api/v1/organizations/{orgID}/members/{userID} members.remove
POST /api/v1/organizations/{orgID}/leave organization.read
GET /api/v1/organizations/{orgID}/invitations members.read
POST /api/v1/organizations/{orgID}/invitations members.invite
POST /api/v1/organizations/{orgID}/invitations/{invID}/link members.invite
DELETE /api/v1/organizations/{orgID}/invitations/{invID} members.invite
GET /api/v1/organizations/{orgID}/usage usage.read
GET /api/v1/organizations/{orgID}/usage/series usage.read
GET /api/v1/organizations/{orgID}/activity repositories.read
GET /api/v1/organizations/{orgID}/dashboard usage.read
GET /api/v1/organizations/{orgID}/recommendations usage.read
GET /api/v1/organizations/{orgID}/artifacts repositories.read
GET /api/v1/organizations/{orgID}/repositories repositories.read
POST /api/v1/organizations/{orgID}/repositories repositories.create
Path Permission
GET /api/v1/organizations/{orgID}/storage-groups storage.read
POST /api/v1/organizations/{orgID}/storage-groups storage.manage
GET /api/v1/organizations/{orgID}/storage-groups/{groupID} storage.read
PATCH /api/v1/organizations/{orgID}/storage-groups/{groupID} storage.manage
DELETE /api/v1/organizations/{orgID}/storage-groups/{groupID} storage.manage

Reference → · Not reachable by token scopes — session roles only.

Path Permission
GET /api/v1/organizations/{orgID}/tokens tokens.create
POST /api/v1/organizations/{orgID}/tokens tokens.create
DELETE /api/v1/organizations/{orgID}/tokens/{tokenID} tokens.revoke
GET /api/v1/organizations/{orgID}/webhooks organization.update
POST /api/v1/organizations/{orgID}/webhooks organization.update
PATCH /api/v1/organizations/{orgID}/webhooks/{webhookID} organization.update
DELETE /api/v1/organizations/{orgID}/webhooks/{webhookID} organization.update
GET /api/v1/organizations/{orgID}/webhooks/{webhookID}/deliveries organization.update
GET /api/v1/organizations/{orgID}/audit audit.read
GET /api/v1/organizations/{orgID}/storage/connections storage.read
POST /api/v1/organizations/{orgID}/storage/connections storage.manage
GET /api/v1/organizations/{orgID}/storage/connections/{connID} storage.read
PATCH /api/v1/organizations/{orgID}/storage/connections/{connID} storage.manage
POST /api/v1/organizations/{orgID}/storage/connections/{connID}/test storage.manage
DELETE /api/v1/organizations/{orgID}/storage/connections/{connID} storage.manage
GET /api/v1/organizations/{orgID}/billing billing.read
POST /api/v1/organizations/{orgID}/billing/checkout billing.update
POST /api/v1/organizations/{orgID}/billing/portal billing.update
POST /api/v1/organizations/{orgID}/billing/confirm billing.update
POST /api/v1/organizations/{orgID}/billing/byos-addon billing.update

Reference → · All paths prefixed /api/v1/repositories/{repoID}.

Path Permission
GET / repository.pull
PATCH / repository.update
DELETE / repository.admin
GET /usage repository.pull
GET /objects repository.pull
GET /transfers repository.pull
GET /connect repository.pull
GET /overview repository.pull
GET /tree repository.pull
GET /file repository.pull
GET /file/history repository.pull
GET /commits repository.pull
GET /commits/{sha} repository.pull
GET /branches repository.pull
GET /releases repository.pull
GET /releases/{tag} repository.pull
PATCH /releases/{tag} repository.update
GET /artifacts/{oid} repository.pull
GET /artifacts/{oid}/timeline repository.pull
GET /graph repository.pull
POST /graph/edges repository.update
DELETE /graph/edges/{edgeID} repository.update
GET /snapshots repository.pull
POST /snapshots repository.push
GET /health repository.pull
GET /recommendations repository.pull
POST /recommendations/{recID}/dismiss repository.update
GET /activity repository.pull
GET /storage/series repository.pull
GET /storage/folders repository.pull
GET /storage/summary repository.pull
GET /members repository.members.manage
POST /members repository.members.manage
DELETE /members/{userID} repository.members.manage
GET /invitations repository.members.manage
POST /invitations repository.members.manage
DELETE /invitations/{invID} repository.members.manage

Reference → · All require repository.push.

Path
GET /api/v1/repositories/{repoID}/index/state
POST /api/v1/repositories/{repoID}/index/sessions
POST /api/v1/repositories/{repoID}/index/sessions/{sessionID}/commits
POST /api/v1/repositories/{repoID}/index/sessions/{sessionID}/tree
POST /api/v1/repositories/{repoID}/index/sessions/{sessionID}/finalize

Uploads → · Downloads →

Path Permission
POST /api/v1/repositories/{repoID}/uploads repository.push
POST /api/v1/repositories/{repoID}/uploads/{sessionID}/objects repository.push
POST /api/v1/repositories/{repoID}/uploads/{sessionID}/objects/{oid}/complete repository.push
POST /api/v1/repositories/{repoID}/uploads/{sessionID}/finalize repository.push
POST /api/v1/repositories/{repoID}/downloads/authorize repository.pull

Reference →

Path Permission
POST /api/v1/repositories/{repoID}/lfs/objects/batch repository.pull (+ push for uploads)
POST /api/v1/repositories/{repoID}/lfs/finalize repository.push
POST /api/v1/repositories/{repoID}/lfs/transfers repository.pull
GET /api/v1/repositories/{repoID}/lfs/* repository.pull
HEAD /api/v1/repositories/{repoID}/lfs/* repository.pull
PUT /api/v1/repositories/{repoID}/lfs/* repository.push

Documented in the SDK contract; these return 404 (or 405) today.

Path Instead use
GET /api/v1/resolve?uri=cavs://… repository + oid
GET /api/v1/artifacts/{id} /repositories/{repoID}/artifacts/{oid}
GET /api/v1/artifacts/{id}/versions /repositories/{repoID}/artifacts/{oid}/timeline
POST /api/v1/repositories/{repoID}/lfs/verify the CAVS agent, or check /objects
/api/v1/repositories/{repoID}/runs… /graph/edges
/api/v1/organizations/{orgID}/service-accounts… cavs_ci_ tokens