액세스 코드 관리 API
참고: 이 문서에 설명된 모든 API는
dta-wir-medi-api애플리케이션에 구현되어 있습니다. (Go)
개요
액세스 코드 관리 API는 환자가 앱에 접근하기 위한 액세스 코드를 생성, 발송, 관리하는 기능을 제공합니다.
주요 기능
- 액세스 코드 생성: 환자 등록을 위한 액세스 코드 생성
- 액세스 코드 생성 및 알림 전송: 액세스 코드를 생성하고 이메일/SMS로 전송
- 액세스 코드 상태 업데이트: 액세스 코드 활성화/비활성화
[POST] /v1/accesscodes - 액세스 코드 생성
액세스 코드 생성
환자 등록을 위한 액세스 코드를 생성합니다.
- HTTP Method:
POST - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required | Default |
|---|---|---|---|---|
| accountId | number | 담당 의료진 계정 ID | ✔ | - |
| siteId | number | 사이트 ID | ✔ | - |
| groupId | number | 그룹 ID | ✔ | - |
| registrationChannelId | number | 등록 채널 ID | ✗ | 1 (SleepQDashboard) |
| validDays | number | 유효 기간 (일) | ✗ | - |
Request Body 예시
{
"accountId": 10,
"siteId": 1,
"groupId": 5,
"registrationChannelId": 1,
"validDays": 30
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 액세스 코드 생성 성공 | - |
400 Bad Request | 잘못된 요청 | BAD_REQUEST (40000) |
401 Unauthorized | 인증 실패 | UNAUTHORIZED (40100) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"accesscode": "ABC123XYZ",
"expiresAt": "2024-02-15 10:30:00 +0000 UTC"
}
| 필드 | 타입 | 설명 |
|---|---|---|
| accesscode | string | 생성된 액세스 코드 |
| expiresAt | string | 만료 일시 (UTC) |
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 40000,
"message": "요청한 정보가 유효하지 않습니다."
}
401 Unauthorized - 인증 실패
{
"status": 401,
"code": 40100,
"message": "UNAUTHORIZED"
}
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
[POST] /v1/accesscodes/notification - 액세스 코드 생성 및 알림 전송
액세스 코드 생성 및 알림 전송
환자 등록을 위한 액세스 코드를 생성하고 이메일 또는 SMS로 전송합니다.
- HTTP Method:
POST - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required | Default |
|---|---|---|---|---|
| accountId | number | 담당 의료진 계정 ID | ✔ | - |
| siteId | number | 사이트 ID | ✔ | - |
| groupId | number | 그룹 ID | ✔ | - |
| string | 수신자 이메일 (이메일 발송 시) | ✗ | - | |
| phone | string | 수신자 전화번호 (SMS 발송 시) | ✗ | - |
| notificationMethod | string (enum) | 알림 방법 (EMAIL, SMS, KAKAOTALK) | ✗ | |
| registrationChannelId | number | 등록 채널 ID | ✗ | 1 (SleepQDashboard) |
| saveAccountId | boolean | 계정 ID 저장 여부 | ✗ | - |
| validDays | number | 유효 기간 (일) | ✗ | - |
notificationMethod 값:
EMAIL(1): 이메일로 발송SMS(2): SMS로 발송KAKAOTALK(3): 카카오톡으로 발송Unknown(0): 기본값 (EMAIL로 처리)
Request Body 예시
{
"accountId": 10,
"siteId": 1,
"groupId": 5,
"email": "patient@example.com",
"notificationMethod": "EMAIL",
"registrationChannelId": 1,
"saveAccountId": true,
"validDays": 30
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 액세스 코드 생성 및 발송 성공 | - |
400 Bad Request | 잘못된 요청 | BAD_REQUEST (40000) |
401 Unauthorized | 인증 실패 | UNAUTHORIZED (40100) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"accesscode": "ABC123XYZ",
"accesscodeCreatedAt": "2024-01-15 10:30:00 +0000 UTC",
"accesscodeExpiresAt": "2024-02-15 10:30:00 +0000 UTC",
"sent": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| accesscode | string | 생성된 액세스 코드 |
| accesscodeCreatedAt | string | 생성 일시 (UTC) |
| accesscodeExpiresAt | string | 만료 일시 (UTC) |
| sent | boolean | 알림 발송 성공 여부 |
처리 로직:
- 액세스 코드 생성
- 지정된 방법(이메일/SMS)으로 알림 전송
- saveAccountId가 true인 경우 계정 정보 저장
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 40000,
"message": "요청한 정보가 유효하지 않습니다."
}
발생 가능한 에러 메시지:
- 이메일과 전화번호가 모두 제공되지 않은 경우
- 알림 방법이 유효하지 않은 경우
401 Unauthorized - 인증 실패
{
"status": 401,
"code": 40100,
"message": "UNAUTHORIZED"
}
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
[PATCH] /v1/patients/accesscodes/{accesscodeId}/status - 액세스 코드 상태 업데이트
액세스 코드 상태 업데이트
[클라이언트 수정 필요]
asis:/v1/patients/accesscodes/{accesscodeId}/status
tobe:/v1/users/accesscodes/{accesscodeId}/status
액세스 코드의 상태를 활성화 또는 비활성화합니다.
- HTTP Method:
PATCH - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Path Parameters
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| accesscodeId | number | 액세스 코드 ID | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| status | number | 상태 (1: 활성, 0: 비활성) | ✔ |
Request Body 예시
{
"status": 0
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 상태 업데이트 성공 | - |
400 Bad Request | 잘못된 요청 | BAD_REQUEST (40000) |
401 Unauthorized | 인증 실패 | UNAUTHORIZED (40100) |
404 Not Found | 액세스 코드 미발견 | NOT_FOUND (40400) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"success": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| success | boolean | 성공 여부 (true) |
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 40000,
"message": "유효하지 않은 상태 값입니다."
}
401 Unauthorized - 인증 실패
{
"status": 401,
"code": 40100,
"message": "UNAUTHORIZED"
}
404 Not Found - 액세스 코드 미발견
{
"status": 404,
"code": 40400,
"message": "액세스 코드를 찾을 수 없습니다."
}
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
등록 채널 ID
| ID | 채널명 | 설명 |
|---|---|---|
| 1 | SleepQDashboard | SleepQ 대시보드 |
| 기타 | 추가 채널 | - |