API DocsAuthenticationAuth

인증

JWT 로그인, 회원가입, 세션 관리, API 키

개요

이메일과 비밀번호로 로그인하여 JWT 토큰을 받으세요. 모든 보호된 엔드포인트의 Authorization 헤더에 Bearer 자격증명으로 토큰을 전달하세요. 토큰은 기본적으로 7일 후 만료됩니다.

기본 URL:

http
Authorization: Bearer <token>

인증

POST /auths/signup

새 사용자 계정을 등록합니다. ENABLE_SIGNUP 이 false이면 비활성화됩니다. 비밀번호는 ≤ 72바이트여야 합니다 (bcrypt 제한).

POST

새 사용자 계정을 등록합니다.

요청 본문

json
{
"name": "Jane Smith",
"email": "jane@example.com",
"password": "secret"
}

응답 200

json
{
"token": "eyJhbGci...",
"token_type": "Bearer",
"expires_at": 1700000000,
"id": "user-uuid",
"name": "Jane Smith",
"email": "jane@example.com",
"role": "user",
"profile_image_url": "/user.png",
"permissions": {}
}

오류

상태 코드설명
400이메일이 이미 사용 중이거나 형식이 유효하지 않음
403회원가입이 비활성화됨

POST /auths/signin

이메일과 비밀번호로 로그인합니다. 기본적으로 7일 동안 유효한 JWT 토큰을 반환합니다.

POST

이메일과 비밀번호로 로그인합니다.

요청 본문

json
{
"email": "jane@example.com",
"password": "secret"
}

응답 200

json
{
"token": "eyJhbGci...",
"token_type": "Bearer",
"expires_at": 1700000000,
"id": "user-uuid",
"name": "Jane Smith",
"email": "jane@example.com",
"role": "user"
}

오류

상태 코드설명
400이메일 또는 비밀번호가 유효하지 않음

GET /auths/

현재 세션 사용자의 전체 프로필과 유효 권한을 반환합니다.

GETAuth required

현재 사용자를 가져오고 세션을 갱신합니다.

응답 200

json
{
"token": "eyJhbGci...",
"token_type": "Bearer",
"expires_at": 1700000000,
"id": "user-uuid",
"email": "user@example.com",
"name": "Jane Smith",
"role": "user",
"permissions": {
  "workspace": { "models": false, "knowledge": false },
  "chat": { "file_upload": true, "share": true, "delete": true },
  "features": { "web_search": true, "image_generation": true }
}
}

오류

상태 코드설명
401토큰이 만료되었거나 유효하지 않음

GET /auths/signout

세션 쿠키를 지웁니다. OAuth를 사용하는 경우 리다이렉트 URL을 반환합니다.

GETAuth required

로그아웃하고 세션을 지웁니다.

응답 200

json
{ "status": true }

POST /auths/add

관리자 전용. 명시적으로 역할을 지정하여 새 사용자를 생성합니다.

POSTAdmin only

새 사용자를 생성합니다 (관리자 전용).

요청 본문

json
{
"name": "John Doe",
"email": "john@example.com",
"password": "secret",
"role": "user",
"profile_image_url": ""
}

역할은 pending, user, admin 중 하나여야 합니다.

응답 200

json
{
"token": "eyJhbGci...",
"id": "user-uuid",
"email": "john@example.com",
"name": "John Doe",
"role": "user"
}

오류

상태 코드설명
400이메일이 이미 사용 중

API 키

JWT 토큰의 장기 대안입니다. 만료되지 않으며 세션 로그아웃 후에도 유효합니다. 사용자당 활성 키는 하나 — 새 키를 생성하면 이전 키가 교체됩니다.

POST /auths/api_key

현재 사용자의 API 키를 생성하거나 교체합니다.

POSTAuth required

새 API 키를 생성합니다.

응답 200

json
{ "api_key": "sk-..." }

오류

상태 코드설명
403ENABLE_API_KEY가 비활성화됨

GET /auths/api_key

현재 사용자의 활성 API 키를 가져옵니다.

GETAuth required

현재 API 키를 가져옵니다.

응답 200

json
{ "api_key": "sk-..." }

오류

상태 코드설명
404아직 API 키가 생성되지 않음

DELETE /auths/api_key

현재 사용자의 API 키를 삭제합니다. 키는 즉시 무효화됩니다.

DELETEAuth required

API 키를 삭제합니다.

응답 200

json
true

계정 관리

POST /auths/update/profile

현재 사용자의 이름, 프로필 이미지, 커스텀 정보를 업데이트합니다.

POSTAuth required

사용자 프로필을 업데이트합니다.

요청 본문

json
{
"name": "Updated Name",
"profile_image_url": "https://...",
"info": { "logo_url": "s3://bucket/path" }
}

응답 200

업데이트된 사용자 객체.

POST /auths/update/password

현재 사용자의 비밀번호를 변경합니다.

POSTAuth required

비밀번호를 변경합니다.

요청 본문

json
{
"password": "current-password",
"new_password": "new-password"
}

응답 200

json
true

오류

상태 코드설명
400현재 비밀번호가 올바르지 않음

관리자 설정

GET /auths/admin/config

시스템 전체 인증 및 기능 설정을 반환합니다.

GETAdmin only

인증 설정을 가져옵니다.

응답 200

json
{
"ENABLE_SIGNUP": true,
"ENABLE_API_KEY": true,
"DEFAULT_USER_ROLE": "user",
"JWT_EXPIRES_IN": "7d",
"ENABLE_MESSAGE_RATING": true,
"ENABLE_CHANNELS": false,
"ENABLE_NOTES": true
}

POST /auths/admin/config

시스템 전체 인증 설정을 업데이트합니다.

POSTAdmin only

인증 설정을 업데이트합니다.

응답 200

업데이트된 설정 객체.