runlot
ReferenceAPI

Dashboard and CLI login

Covers the 5 API operations in the auth category.

MethodPathDescription
POST/v1/auth/dev/loginLog in with the development login method
GET/v1/auth/github/startStart GitHub OAuth
GET/v1/auth/github/callbackGitHub OAuth callback
GET/v1/config이 배치의 이름들
GET/v1/meThe 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

StatusDescriptionResponse body
200Session tokenSession
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

ParameterInRequiredTypeDescription
redirectqueryYesstring
StatusDescriptionResponse body
302To 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

ParameterInRequiredTypeDescription
codequeryNostring
statequeryYesstring
errorqueryNostring
StatusDescriptionResponse body
302To the client callback
400

GET /v1/config

대시보드가 어느 배치에 붙어 있는지 알아보는 자리다 (docs/environments.md §3.2). 대시보드는 정적 빌드 하나라 배치마다 다른 값을 알 길이 없었고, 화면이 그것을 문자열로 박고 있었다 — 환경이 둘이 되면 dev 화면이 프로덕션의 주소를 안내하고 그 안내는 그럴듯해서 아무 시험에도 안 잡힌다.

인증이 없다: 로그인 화면에도 문서 링크가 있다. 여기 실리는 것은 랜딩 페이지에 이미 적힌 이름들뿐이다.

기능의 켜짐/꺼짐은 여기 없다 — 결제·저장소·이메일은 각자의 끝점이 자기 상태를 말한다.

operationId getSiteConfig

StatusDescriptionResponse body
200배치의 이름들object

GET /v1/me

The current user and their organizations

operationId getMe

StatusDescriptionResponse body
200Userobject
401

On this page