Skip to content
≡

9. Admin API#

LOCAL 인증 모드에서만 제공되는 관리자 전용 API이다. 최초 Admin API Key 발급은 /api/setup/ 엔드포인트를 통해 수행하며, 이후 /api/admin/api-keys/로 API키를 관리한다.

9.1 API 키 생성#

엔드포인트 :

POST /api/admin/api-keys

필요 권한 : ADMIN

요청 바디 :

필드 타입 필수 설명
clientId string 필수 API 키가 속할 클라이언트(테넌트) ID
role string 필수 권한 목록 (쉼표로 구분된 문자열)
description string 선택 API 키에 대한 설명

Note

값 설명
READ 조회 권한
WRITE 데이터 수정 권한
CREATE 생성 권한
DROP 삭제 권한
SHARED 공유 권한
ADMIN 관리자 권한

예제#

curl -X POST http://localhost:8080/api/admin/api-keys \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "mobileApp",
    "role": "READ,WRITE,CREATE",
    "description": "모바일 앱용 API 키"
  }'

응답 (201 Created):

{
  "clientId": "mobileApp",
  "apiKey": "generated_api_key_here",
  "role": "READ,WRITE,CREATE",
  "description": "모바일 앱용 API 키",
  "message": "API key created successfully. Please save this key as it will not be shown again."
}

Warning

생성된 API 키는 이 응답에서만 확인할 수 있으므로, 반드시 안전한 곳에 저장해야 한다.

9.2 API 키 목록 조회#

엔드포인트 :

GET /api/admin/api-keys

필요 권한 : ADMIN

쿼리 파라미터 :

파라미터 설명 기본값
page 페이지 번호 1
size 페이지 크기 10
keyword 검색 키워드 (clientId, description)

예제#

clientId 또는 description에 "mobile"이라는 키워드가 포함된 API 키를 검색하여, 페이지당 20개의 결과 중 첫번째 페이지를 요청하는 예제이다.

curl -X GET "http://localhost:8080/api/admin/api-keys?page=1&size=20&keyword=mobile" \
  -H "Authorization: Bearer ${TOKEN}" 

응답 (200 OK):

{
  "keys": [
    {
      "clientId": "mobileApp",
      "role": "CLIENT",
      "permissions": "READ,WRITE,CREATE",
      "description": "모바일 앱용 API 키",
      "createdBy": "admin",
      "createdAt": "2025-01-10T09:00:00",
      "expiresAt": null,
      "active": true,
      "lastUsedAt": null,
      "requestCount": 150
    }
  ],
  "total": 1
}

Note

위 응답에서 role은 시스템 역할(CLIENT 또는 ADMIN)이고, 실제 Global Authority 집합은 permissions 필드에 포함된다. 반면, 생성/권한 수정 요청에서는 하위 호환을 위해 role 필드에 권한 문자열을 전달한다.

9.3 API 키 삭제#

엔드포인트 :

DELETE /api/admin/api-keys/{clientId}

필요 권한 : ADMIN

예제#

curl -X DELETE http://localhost:8080/api/admin/api-keys/mobileApp \
  -H "Authorization: Bearer ${TOKEN}"

응답 (200 OK):

{
  "message": "API key deleted successfully",
  "clientId": "mobileApp"
}

9.4 API 키 폐기#

엔드포인트 :

PUT /api/admin/api-keys/{clientId}/revoke

필요 권한 : ADMIN

예제#

curl -X PUT http://localhost:8080/api/admin/api-keys/mobileApp/revoke \
  -H "Authorization: Bearer ${TOKEN}"

응답 (200 OK):

{
  "message": "API key revoked successfully",
  "clientId": "mobileApp"
}

9.5 API 키 권한 수정#

엔드포인트 :

PUT /api/admin/api-keys/{clientId}/permissions

필요 권한 : ADMIN

요청 바디 :

필드 타입 필수 설명
role string 필수 변경할 권한 목록 (쉼표로 구분된 문자열)

예제#

curl -X PUT http://localhost:8080/api/admin/api-keys/mobileApp/permissions \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"role": "READ,WRITE,DROP"}'

응답 (200 OK):

{
  "message": "API key permissions updated successfully",
  "clientId": "mobileApp",
  "permissions": "READ,WRITE,DROP"
}

9.6 테넌트 DB 계정 생성#

특정 클라이언트(테넌트)가 데이터베이스에 직접 접속할 수 있는 전용 계정을 생성한다.

엔드포인트 :

POST /api/admin/api-keys/{clientId}/db-account

필요 권한 : ADMIN

요청 바디 :

필드 타입 필수 설명
password string 필수 클라이언트(테넌트) 전용 데이터베이스 접속 계정의 비밀번호
{
  "password": "strong_password_123!"
}

예제#

curl -X POST http://localhost:8080/api/admin/api-keys/mobileApp/db-account \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"password": "db_password_123!"}'

응답 (200 OK): 빈 응답