Dashboard와 CLI 로그인
auth 카테고리의 API 작업 5개를 다룹니다.
| 메서드 | 경로 | 설명 |
|---|---|---|
| POST | /v1/auth/dev/login | dev 로그인 방식으로 로그인 |
| GET | /v1/auth/github/start | GitHub OAuth 시작 |
| GET | /v1/auth/github/callback | GitHub OAuth 콜백 |
| GET | /v1/config | 이 배포의 이름 |
| GET | /v1/me | 현재 사용자와 소속 조직 |
POST /v1/auth/dev/login
이 방식은 로컬 전용 로그인 방식입니다. GitHub OAuth와 같은 목적이지만 외부 인증 왕복 없이 동작합니다(docs/local-mvp.md §1). 프로덕션에서는 이 경로가 등록되지 않으며, RUNLOT_ENABLE_DEV_AUTH가 켜진 서버에서만 존재합니다.
같은 subject로 다시 호출하면 동일한 사용자를 반환합니다 — 로컬에서 토큰을 잃어버릴 때마다 새 계정이 생성된다면 사용할 수 없을 것입니다.
operationId devLogin
요청 본문: application/json · object
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 200 | 세션 토큰 | Session |
| 400 | — | — |
GET /v1/auth/github/start
redirect는 로그인이 끝난 뒤 토큰을 프래그먼트로 담아 돌아갈 클라이언트 콜백입니다(https://dash.runlot.io/login/callback). 서버의 허용 목록(RUNLOT_GITHUB_REDIRECTS, 기본값은 RUNLOT_PUBLIC_URL)에 있는 접두사와 일치해야 합니다. 이 요청은 GitHub 인증 페이지로 302를 보냅니다. 브라우저가 이 경로를 따라가므로 클라이언트 라이브러리는 이를 호출하지 않습니다 — window.location으로 엽니다.
operationId githubStart
| 매개변수 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
redirect | query | 예 | 문자열 | — |
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 302 | GitHub 인증으로 | — |
| 400 | — | — |
GET /v1/auth/github/callback
이 경로는 GitHub 앱의 Authorization 콜백 URL입니다. 코드를 세션으로 교환한 뒤 redirect로 302를 보냅니다 — 성공 시 #token=…&expiresAt=…&userId=…&subject=…, 실패 시 #error=<code>&message=…입니다. 토큰이 서버 로그나 Referer 헤더에 기록되지 않도록 프래그먼트를 사용합니다.
operationId githubCallback
| 매개변수 | 위치 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
code | query | 아니오 | 문자열 | — |
state | query | 예 | 문자열 | — |
error | query | 아니오 | 문자열 | — |
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 302 | 클라이언트 콜백으로 | — |
| 400 | — | — |
GET /v1/config
여기서 대시보드는 자신이 어느 배포에 연결되어 있는지를 알아냅니다(docs/environments.md §3.2). 대시보드는 단일 정적 빌드이므로 배포마다 다른 값을 알 방법이 없고, 페이지는 이를 문자열로 하드코딩했습니다 — 환경이 두 개가 되는 순간 개발 페이지가 프로덕션 주소를 가리키게 되는데, 그 안내가 그럴듯해 보여서 어떤 테스트도 이를 잡아내지 못합니다.
인증 없음: 로그인 페이지에도 문서 링크가 있습니다. 여기 나타나는 것은 랜딩 페이지에 이미 실린 이름들뿐입니다.
기능의 켜짐/꺼짐 상태는 여기 없습니다 — Billing, Storage, Email은 각각 자체 상태를 보고하는 고유 엔드포인트를 갖고 있습니다.
operationId getSiteConfig
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 200 | 배포의 이름 | object |
GET /v1/me
현재 사용자와 소속 조직
operationId getMe
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 200 | 사용자 | object |
| 401 | — | — |