관리자 계정 API
참고: 이 문서에 설명된 모든 API는
dta-wi-mono모노레포의dta-wi-medi-api애플리케이션에 구현되어 있습니다.
개요
관리자 계정 API는 MD(의료진) 계정의 CRUD 기능을 제공합니다.
주요기능
- MD 계정 목록 조회: 페이징, 정렬이 가능한 MD 계정 목록 조회
- MD 계정 상세 조회: 특정 MD 계정의 상세 정보 조회
- MD 계정 생성: 새로운 MD 계정 생성
- MD 계정 수정: 기존 MD 계정 정보 수정
- MD 계정 삭제: MD 계정 삭제 (소프트/하드 삭제 지원)
[GET] /v1/admin/accounts - MD 계정 목록 조회
MD 계정 목록 조회
특정 사이트(병원)의 MD 계정 목록을 조회합니다.
- HTTP Method:
GET - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
Query Parameters
| 파라미터 | 타입 | 설명 | Required | Default |
|---|---|---|---|---|
| siteId | string | 사이트 UUID | ✔ | - |
| limit | number | 한 페이지당 조회할 계정 수 (최대 100) | ✗ | 10 |
| page | number | 조회할 페이지 번호 | ✗ | 1 |
| orderBy | string | 정렬 기준 (created_at, name, email, position_id, updated_at) | ✗ | created_at |
| orderDirection | string | 정렬 방식 (asc, desc) | ✗ | desc |
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 조회 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"pagination": {
"page": 1,
"limit": 10,
"totalCount": 100,
"totalPages": 10,
"next": "?page=2&limit=10",
},
"items": [
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"id": 1,
"name": "김철수",
"email": "doctor@weltcorp.com",
"phoneNumber": "010****5678",
"birthdate": "1980-01-01",
"position": "STUDY_ADMIN",
"authorizedToPrescribe": true,
"positionId": 2,
"createdAt": "2024-09-30 14:12:08 KST",
"updatedAt": "2024-09-30 14:12:08 KST"
}
]
}
| 필드 | 타입 | 설명 |
|---|---|---|
| pagination | object | 페이지네이션 정보 |
| pagination.page | number | 현재 페이지 번호 |
| pagination.limit | number | 페이지당 항목 수 |
| pagination.totalCount | number | 총 항목 수 |
| pagination.totalPages | number | 총 페이지 수 |
| pagination.next | string | null | 다음 페이지 URL |
| pagination.previous | string | null | 이전 페이지 URL |
| items | array | MD 계정 데이터 배열 |
| items[].uuid | string | MD 계정 UUID |
| items[].id | number | MD 계정 ID |
| items[].name | string | MD 이름 |
| items[].email | string | MD 이메일 |
| items[].phoneNumber | string | MD 전화번호 (마스킹 처리) |
| items[].birthdate | string | MD 생년월일 (YYYY-MM-DD) |
| items[].position | string | MD position |
| items[].authorizedToPrescribe | boolean | 처방 권한 여부 |
| items[].positionId | number | position ID |
| items[].createdAt | string | 생성일 (KST) |
| items[].updatedAt | string | 수정일 (KST) |
401 Unauthorized - 인증 실패
{
"status": 401,
"code": 1080,
"message": "UNAUTHORIZED",
"detail": "{\"displayText\":\"No token found in Authorization header\"}"
}
[GET] /v1/admin/accounts/{accountId} - MD 계정 상세 조회
MD 계정 상세 조회
특정 MD 계정의 상세 정보를 조회합니다.
- HTTP Method:
GET - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
Path Parameters
| 파라미터 | 타입 | 설명 | Required |
|---|---|---|---|
| accountId | string | MD 계정 UUID | ✔ |
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 조회 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
404 Not Found | 계정을 찾을 수 없음 | 1071 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"id": 1,
"name": "김철수",
"email": "doctor@weltcorp.com",
"phoneNumber": "01012345678",
"birthdate": "1980-01-01",
"position": "STUDY_ADMIN",
"authorizedToPrescribe": true,
"positionId": 2,
"createdAt": "2024-09-30 14:12:08 KST",
"updatedAt": "2024-09-30 14:12:08 KST"
}
| 필드 | 타입 | 설명 |
|---|---|---|
| uuid | string | MD 계정 UUID |
| id | number | MD 계정 ID |
| name | string | MD 이름 |
| string | MD 이메일 | |
| phoneNumber | string | MD 전화번호 |
| birthdate | string | MD 생년월일 (YYYY-MM-DD) |
| position | string | MD position |
| authorizedToPrescribe | boolean | 처방 권한 여부 |
| positionId | number | position ID |
| createdAt | string | 생성일 (KST) |
| updatedAt | string | 수정일 (KST) |
404 Not Found - 계정을 찾을 수 없음
{
"status": 404,
"code": 1071,
"message": "MD_ACCOUNT_NOT_FOUND",
"detail": "등록된 MD 계정을 찾을 수 없습니다."
}
[POST] /v1/admin/accounts - MD 계정 생성
MD 계정 생성
새로운 MD 계정을 생성합니다.
- HTTP Method:
POST - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| siteId | string | 사이트 UUID | ✔ |
| name | string | MD 이름 | ✔ |
| string | MD 이메일 | ✔ | |
| phoneNumber | string | MD 전화번호 | ✗ |
| authorizedToPrescribe | boolean | 처방 권한 여부 | ✗ |
| positionId | number | position ID | ✗ |
Request Body 예시
{
"siteId": "123e4567-e89b-12d3-a456-426614174000",
"name": "김철수",
"email": "doctor@weltcorp.com",
"phoneNumber": "01012345678",
"authorizedToPrescribe": true,
"positionId": 2
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 생성 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"id": 1,
"name": "김철수",
"email": "doctor@weltcorp.com",
"phoneNumber": "01012345678",
"birthdate": null,
"position": "STUDY_ADMIN",
"authorizedToPrescribe": true,
"positionId": 2,
"createdAt": "2024-09-30 14:12:08 KST",
"updatedAt": "2024-09-30 14:12:08 KST"
}
[PATCH] /v1/admin/accounts/{accountId} - MD 계정 수정
MD 계정 수정
기존 MD 계정의 정보를 수정합니다.
- HTTP Method:
PATCH - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Path Parameters
| 파라미터 | 타입 | 설명 | Required |
|---|---|---|---|
| accountId | string | MD 계정 UUID | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| string | MD 이메일 | ✗ | |
| name | string | MD 이름 | ✗ |
| phoneNumber | string | MD 전화번호 | ✗ |
| birthdate | string | MD 생년월일 (YYYY-MM-DD) | ✗ |
| positionId | number | position ID | ✗ |
| authorizedToPrescribe | boolean | 처방 권한 여부 | ✗ |
Request Body 예시
{
"name": "김철수",
"email": "updated.email@example.com",
"phoneNumber": "01012345678",
"birthdate": "1980-01-01",
"positionId": 2,
"authorizedToPrescribe": true
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 수정 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
404 Not Found | 계정을 찾을 수 없음 | 1071 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"id": 1,
"name": "김철수",
"email": "updated.email@example.com",
"phoneNumber": "01012345678",
"birthdate": "1980-01-01",
"position": "STUDY_ADMIN",
"authorizedToPrescribe": true,
"positionId": 2,
"createdAt": "2024-09-30 14:12:08 KST",
"updatedAt": "2024-10-01 10:30:15 KST"
}
[DELETE] /v1/admin/accounts/{accountId} - MD 계정 삭제
MD 계정 삭제
MD 계정을 삭제합니다. 소프트 삭제 또는 하드 삭제를 선택할 수 있습니다.
- HTTP Method:
DELETE - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
Path Parameters
| 파라미터 | 타입 | 설명 | Required |
|---|---|---|---|
| accountId | string | MD 계정 UUID | ✔ |
Query Parameters
| 파라미터 | 타입 | 설명 | Required | Default |
|---|---|---|---|---|
| hard | boolean | 물리 삭제 여부 (true: hard delete, false: soft delete) | ✗ | false |
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 삭제 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
404 Not Found | 계정을 찾을 수 없음 | 1071 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"id": 1,
"name": "이유민",
"email": "doctor@weltcorp.com",
"phoneNumber": "01012345678",
"birthdate": "1980-01-01",
"position": "STUDY_ADMIN",
"authorizedToPrescribe": true,
"positionId": 2,
"createdAt": "2024-09-30 14:12:08 KST",
"updatedAt": "2024-10-01 10:30:15 KST"
}