Skip to content

API Reference

The Oore CI daemon (oored) exposes a RESTful JSON API.

Base URL

http://127.0.0.1:8787

All endpoints are versioned under /v1. Override the listen address with --listen or OORED_LISTEN_ADDR.

Authentication

The API uses different authentication depending on the endpoint group:

ContextAuth typeHeader
Setup endpointsSetup session tokenAuthorization: Bearer <setup_session_token>
User endpointsUser session tokenAuthorization: Bearer <user_session_token>
Public endpointsNone
Runner endpointsRunner tokenAuthorization: Bearer <runner_token>

Setup session tokens are obtained by verifying a bootstrap token. TTL: 30 minutes (sliding window).

User session tokens are obtained through the OIDC callback. TTL: 24 hours.

Runner tokens are obtained by registering a runner.

Error format

All error responses use a consistent JSON structure:

json
{
  "error": "Human-readable error message",
  "code": "machine_readable_error_code",
  "details": "Optional additional context"
}

The details field is omitted when not applicable.

Common error codes

HTTP StatusCodeDescription
400invalid_inputRequest body validation failed
400invalid_redirect_uriRedirect URI is malformed
401missing_authAuthorization header not provided
401invalid_sessionSession token is invalid
401session_expiredSession token has expired
401no_sessionNo active setup session exists
403forbiddenInsufficient RBAC permissions
403user_not_foundNo user account for this identity
409already_configuredSetup is already complete (ready state)
409invalid_stateOperation not valid in current setup state
409setup_incompleteAuth endpoints require setup to be complete
410token_consumedBootstrap token already used
410token_expiredBootstrap token TTL elapsed
429too_many_attemptsRate limit exceeded (bootstrap verification)
429too_many_pendingToo many pending OIDC auth requests
500store_errorDatabase or storage error
500encryption_errorFailed to encrypt/decrypt secrets
502oidc_discovery_errorFailed to discover OIDC provider
502token_exchange_errorFailed to exchange authorization code
502missing_id_tokenIdP didn't return an ID token
502id_token_verification_errorID token verification failed
502missing_emailID token missing email claim

CORS

Default allowed origins:

  • http://localhost:3000
  • http://127.0.0.1:3000
  • http://localhost:4173
  • http://127.0.0.1:4173

Primary configuration lives in Settings API / Preferences UI. Environment variables still work as fallback defaults:

  • OORE_CORS_ORIGINS — comma-separated list (preferred)
  • OORE_CORS_ORIGIN — single origin (backward compatible)

Allowed methods: GET, POST, PUT, PATCH, DELETE, OPTIONS

Allowed headers: Content-Type, Authorization

Endpoint groups

Setup API

First-run instance configuration. Mutating endpoints require a setup session and are permanently disabled after ready state.

MethodPathAuth
GET/v1/public/setup-statusPublic
POST/v1/setup/bootstrap-token/verifyPublic
POST/v1/setup/oidc/configureSetup session
POST/v1/setup/owner/start-oidcSetup session
POST/v1/setup/owner/verify-oidcSetup session
POST/v1/setup/completeSetup session

Auth API

OIDC authentication and session management. Only available when setup is complete.

MethodPathAuth
GET/v1/auth/oidc/startPublic
POST/v1/auth/oidc/callbackPublic
POST/v1/auth/logoutUser session

Users API

User management. Requires a user session with appropriate RBAC permissions.

MethodPathAuth
GET/v1/users/meUser session
GET/v1/usersUser session (owner/admin)
POST/v1/users/inviteUser session (owner/admin)
PATCH/v1/users/{user_id}/roleUser session (owner/admin)
DELETE/v1/users/{user_id}User session (owner/admin)
POST/v1/users/{user_id}/enableUser session (owner/admin)

Projects API

Project management.

MethodPathAuth
GET/v1/projectsUser session
POST/v1/projectsUser session
GET/v1/projects/{project_id}User session
PATCH/v1/projects/{project_id}User session
DELETE/v1/projects/{project_id}User session (owner/admin)

Pipelines API

Pipeline configuration and signing.

MethodPathAuth
GET/v1/projects/{project_id}/pipelinesUser session
POST/v1/projects/{project_id}/pipelinesUser session
GET/v1/pipelines/{pipeline_id}User session
PATCH/v1/pipelines/{pipeline_id}User session
DELETE/v1/pipelines/{pipeline_id}User session
POST/v1/pipelines/validateUser session

Builds API

Build triggering and monitoring.

MethodPathAuth
POST/v1/projects/{project_id}/buildsUser session
GET/v1/buildsUser session
GET/v1/builds/{build_id}User session
POST/v1/builds/{build_id}/cancelUser session

Runners API

Runner registration and job management.

MethodPathAuth
POST/v1/runners/registerUser session
GET/v1/runnersUser session
PATCH/v1/runners/{runner_id}Runner token
POST/v1/runners/{runner_id}/heartbeatRunner token
POST/v1/runners/{runner_id}/claimRunner token

Integrations API

Source control integrations (GitHub, GitLab).

MethodPathAuth
GET/v1/integrationsUser session
GET/v1/integrations/{id}User session
DELETE/v1/integrations/{id}User session
GET/v1/integrations/{id}/repositoriesUser session
POST/v1/integrations/github/startUser session
POST/v1/integrations/github/completeUser session
POST/v1/integrations/gitlab/startUser session
POST/v1/integrations/gitlab/authorizeUser session

Settings API

Instance configuration.

MethodPathAuth
GET/v1/settings/artifact-storageUser session
PUT/v1/settings/artifact-storageUser session (owner/admin)
GET/v1/settings/preferencesUser session
PUT/v1/settings/preferencesUser session (owner/admin)

Build Logs API

Build log streaming and retrieval.

MethodPathAuth
GET/v1/builds/{build_id}/logsUser session
GET/v1/builds/{build_id}/logs/streamStream token (SSE)
POST/v1/builds/{build_id}/stream-tokenUser session

Artifacts API

Build artifact management and downloads.

MethodPathAuth
GET/v1/builds/{build_id}/artifactsUser session
POST/v1/artifacts/{artifact_id}/download-linkUser session
GET/v1/artifacts/download/{token}Download token

Webhooks

External webhook receivers (outside CORS).

MethodPathAuth
POST/v1/webhooks/githubGitHub signature
POST/v1/webhooks/gitlabGitLab token

Health Check

MethodPathAuth
GET/healthzPublic

Returns {"ok": true}.

Metrics

MethodPathAuth
GET/metricsPublic

Returns Prometheus-format metrics.

Self-hosted mobile CI, built for Flutter.