Skip to main content
The LaneSync REST API powers the dashboard, CI evidence upload, and deploy gates. Hosted SaaS base URL:
Self-hosted customers use their own API URL. Set SDLC_API_URL in CI workflows accordingly.

Authentication

Session-protected routes

Require authenticated GitHub OAuth session:
  • /api/dashboard
  • /api/repos
  • /api/milestones (most routes)
  • /api/sync
  • /api/quality
  • /api/reviews
  • /api/history
  • /api/projects
  • /api/team
  • /api/settings/api-keys
  • /api/settings/mcp-keys
  • /api/config/repo-warnings
  • /api/events
  • /api/debug

CI-authenticated routes

Require Authorization: Bearer with GitHub OIDC JWT or LaneSync API key:
  • POST /api/evidence/upload
  • POST /api/evidence/upload-report
  • GET /api/milestones/check
Tenant is derived from the verified token (repository_owner for OIDC) or API key scope — not from an unauthenticated body field.

Public routes (no auth)

  • GET /api/health
  • GET /api/auth/*
  • GET /api/config/status and GitHub App installation callbacks. Legacy /manifest-start, /manifest-callback, and /setup credential writes return HTTP 410.
  • POST /api/webhook (HMAC verified)
  • POST /api/config/setup (first-run only)

Content type

JSON endpoints return Content-Type: application/json unless noted. Multipart used for /api/evidence/upload-report.

Error format

Errors return a JSON body with an error field:
Internal details are logged server-side; production responses use generic messages for 500 errors.

HTTP status codes

Key endpoints by area

Collection pagination

Supply page or pageSize to request a paginated collection. Pages start at 1; page defaults to 1 and accepts integers through 100000. pageSize defaults to 25 and accepts 10, 25 or 50. Invalid pagination values return 400. These session-protected GET endpoints support pagination:
  • /api/dashboard: search matches repository or release; outcome accepts all, blocked, needs_approval, ready_to_deploy or in_progress.
  • /api/repos: search matches organization or repository; results are returned in groups.
  • /api/projects: org selects an organization; search matches project details or linked repository/release names.
  • /api/reviews/pending: scope=mine (default) selects verified eligible reviews; scope=workspace includes other workspace reviews.
  • /api/history: repository=owner/repo, from=YYYY-MM-DD and to=YYYY-MM-DD filter recorded releases. UTC date boundaries are inclusive.
  • /api/quality: owner, repo, milestone, type and environment filter complete release groups in results.
  • /api/milestones/{owner}/{repo}: search matches release versions in that repository.
Search and filters apply before pagination on the endpoints that support them. Each paginated response includes:
total counts all matching records or release groups, rather than the rows on the current page. pages is at least 1, including an empty collection. An out-of-range page can return an empty collection; use the returned metadata to select a valid page. Dashboard counts cover all active releases matching search, independently of the selected outcome and page. History also returns repository choices across its full collection. Quality exports include all matching release groups rather than the current page.
Paginated setup, readiness and review lists return stored observations while verification refreshes in the background. Pending or expired observations do not establish readiness or approval eligibility. Use the stage-details and release-review endpoints for current checks. If you omit both pagination parameters, the existing unpaginated response shape is retained; /api/repos returns an array rather than a groups envelope.

Deploy gate (CI)

CI pipelines check production readiness with CI auth:

Evidence upload (CI)

See CI evidence upload.

OpenAPI specification

The API Reference tab auto-generates interactive endpoint documentation from openapi.json. Use it for request/response schemas and try requests against your instance.