Dashboard and CLI login
Covers the 5 API operations in the auth category.
| Method | Path | Description |
|---|---|---|
| POST | /v1/auth/dev/login | Log in with the development login method |
| GET | /v1/auth/github/start | Start GitHub OAuth |
| GET | /v1/auth/github/callback | GitHub OAuth callback |
| GET | /v1/config | 이 배치의 이름들 |
| GET | /v1/me | The current user and their organizations |
POST /v1/auth/dev/login
A local-only login method. It serves the same purpose as GitHub OAuth but without the external auth round trip (docs/local-mvp.md §1). This route is not registered in production — it exists only on servers with RUNLOT_ENABLE_DEV_AUTH turned on.
Calling again with the same subject returns the same user — if a new account appeared every time you lost a token locally, it would be unusable.
operationId devLogin
Request body: application/json · object
| Status | Description | Response body |
|---|---|---|
| 200 | Session token | Session |
| 400 | — | — |
GET /v1/auth/github/start
redirect is the client callback to return to with the token carried in the fragment once login finishes (https://dash.runlot.io/login/callback). It must match a prefix in the server's allow-list (RUNLOT_GITHUB_REDIRECTS, defaulting to RUNLOT_PUBLIC_URL). It sends a 302 to the GitHub authorize page. The browser follows this path, so client libraries do not call it — open it with window.location.
operationId githubStart
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
redirect | query | Yes | string | — |
| Status | Description | Response body |
|---|---|---|
| 302 | To GitHub authorize | — |
| 400 | — | — |
GET /v1/auth/github/callback
This path is the GitHub app's Authorization callback URL. It exchanges the code for a session and then 302s to redirect — on success #token=…&expiresAt=…&userId=…&subject=…, on failure #error=<code>&message=…. It is a fragment so that the token does not end up in server logs or the Referer.
operationId githubCallback
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
code | query | No | string | — |
state | query | Yes | string | — |
error | query | No | string | — |
| Status | Description | Response body |
|---|---|---|
| 302 | To the client callback | — |
| 400 | — | — |
GET /v1/config
대시보드가 어느 배치에 붙어 있는지 알아보는 자리다 (docs/environments.md §3.2). 대시보드는 정적 빌드 하나라 배치마다 다른 값을 알 길이 없었고, 화면이 그것을 문자열로 박고 있었다 — 환경이 둘이 되면 dev 화면이 프로덕션의 주소를 안내하고 그 안내는 그럴듯해서 아무 시험에도 안 잡힌다.
인증이 없다: 로그인 화면에도 문서 링크가 있다. 여기 실리는 것은 랜딩 페이지에 이미 적힌 이름들뿐이다.
기능의 켜짐/꺼짐은 여기 없다 — 결제·저장소·이메일은 각자의 끝점이 자기 상태를 말한다.
operationId getSiteConfig
| Status | Description | Response body |
|---|---|---|
| 200 | 배치의 이름들 | object |
GET /v1/me
The current user and their organizations
operationId getMe
| Status | Description | Response body |
|---|---|---|
| 200 | User | object |
| 401 | — | — |