약관 동의 API
이 섹션에서는 서비스 약관 동의와 관련된 API 엔드포인트를 설명합니다.
통합 동의 항목 조회
특정 시점(예: 회원가입, 로그인 후 첫 진입)에 사용자에게 반드시 제시하고 동의받아야 하는 필수 약관과 함께 표시될 선택적 동의 항목 및 해당 사용자의 현재 동의 상태를 한 번에 조회하기 위해 사용됩니다. 클라이언트는 이 응답을 사용하여 동의 화면을 구성할 수 있습니다.
- HTTP Method:
GET - Path:
/de/v1/auth/agreements - 인증:
appToken또는accessToken필요 (Authorization: Bearer {token})
Headers
| Header | Type | Description | Required |
|---|---|---|---|
Authorization | string | 발급받은 앱 토큰 (appToken) 또는 사용자 액세스 토큰 (accessToken) | Yes |
Accept-Language | string | 조회할 약관의 언어 코드 (예: de-DE, ko-KR, en-US). 기본값: de-DE | No |
Query Parameters
이 엔드포인트는 쿼리 파라미터를 사용하지 않습니다.
Responses Summary
| HTTP Status Code | 설명 | Error Code(s) | Remarks |
|---|---|---|---|
200 OK | 성공 | - | |
401 Unauthorized | 유효하지 않은 토큰 | 2051 | |
500 Internal Server Error | 서버 내부 오류 | 2000, 4000 | 4000번 코드는 개인정보 처리방침 detailsUrl 누락 시 발생합니다. |
Responses
200 OK - 성공
{
"items": [
{
"versionId": "9f8a7b6c-5d4e-3f2g-1h0i-j9k8l7m6n5o4", // 약관 Version ID (UUID 형식)
"type": "TERMS", // 약관 항목
"isRequired": true, // 필수 동의 여부
"title": "Nutzungsbedingungen", // 약관 이름 번역 (agreements_translations.name)
"text": "Ich stimme den Nutzungsbedingungen gemäß der DiGAV § 4 Abs. 2 zu.", // 현지화된 텍스트
"detailsUrl": "https://www.weltcorp.com", // 관련 설명 페이지 URL
"orderIndex": 0,
"isAgreeable": true // 동의 가능 여부 (동의 체크박스 표시)
},
{
"versionId": "2222222225d4e-3f2g-1h0i-j8k8l7m6n5o4", // 동의 Version ID (UUID 형식)
"type": "CONSENT", // 동의 항목
"isRequired": false,
"title": "Datenverarbeitung zur Verbesserung", // 동의 항목 이름 번역
"text": "Ich erlaube die Verarbeitung der zu der dauerhaften Gewährleistung der technischen Funktionsfähigkeit...", // 현지화된 텍스트
"detailsUrl": "https://www.weltcorp.com", // 관련 설명 페이지 URL
"orderIndex": 1,
"isAgreeable": true // 동의 가능 여부 (동의 체크박스 표시)
}
// ... 다른 필요한 약관 또는 동의 항목 추가 ...
],
"privacyPolicy": {
"versionId": "2222222225d4e-3f2g-1h0i-j8k8l7m6n5o4", // Privacy Policy version ID (UUID 형식)
"type": "PRIVACY_POLICY", // 개인 정보 처리 항목
"title": "Datenschutzhinweise", // 약관 이름 번역 (agreements_translations.name)
"text": "Du kannst in unseren Datenschutzhinweisen nachlesen, wie wir deine Daten verarbeiten.", // 현지화된 텍스트
"detailsUrl": "https://www.weltcorp.com", // 설명 페이지 URL
"isAgreeable": false // 개인정보처리방침은 동의 항목이 아님 (정보 표시 전용)
}
}
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
items | array | 조회된 약관 및 동의 항목 목록 배열 | Yes |
privacyPolicy | object | 개인정보 처리방침 정보 객체 | Yes |
items 배열 내 객체 필드 정보
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
versionId | string | 항목 버전 고유 ID | Yes |
type | string | 항목 유형: TERMS, CONSENT, PRIVACY_POLICY 중 하나 (AgreementType 참조) | Yes |
isRequired | boolean | 필수 여부 | Yes |
title | string | 약관 이름 번역 (agreements_translations.name) | Yes |
text | string | 약관 내용 (현지화된 텍스트) | Yes |
detailsUrl | string | 상세 내용 URL (null일 수 있음) | No |
orderIndex | number | 동의 항목 순서 인덱스 (type 별 default 값 존재) | No |
isAgreeable | boolean | 동의 가능 여부. true이면 동의 체크박스를 표시하고, false이면 정보 표시 전용 | Yes |
privacyPolicy 객체 필드 정보
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
versionId | string | 개인정보처리방침 버전 고유 ID | Yes |
type | string | 항목 유형: PRIVACY_POLICY (AgreementType 참조) | Yes |
title | string | 약관 이름 번역 (agreements_translations.name) | Yes |
text | string | 약관 내용 | Yes |
detailsUrl | string | 상세 내용 URL | Yes |
isAgreeable | boolean | 항상 false (개인정보처리방침은 동의 항목이 아닌 정보 표시 전용) | Yes |
401 Unauthorized - 유효하지 않은 토큰
{
"code": 2051,
"message": "INVALID_TOKEN",
"detail": "토큰이 유효하지 않습니다"
}
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
code | number | 애플리케이션 오류 코드 | Yes |
message | string | 오류 메시지 코드 | Yes |
detail | string | 사용자 친화적인 오류 설명 | Yes |
500 Internal Server Error - 서버 내부 오류
{
"code": 2000,
"message": "SERVER_ERROR",
"detail": "서버 내부 오류"
}
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
code | number | 애플리케이션 오류 코드 | Yes |
message | string | 오류 메시지 코드 | Yes |
detail | string | 사용자 친화적인 오류 설명 | Yes |
500 Internal Server Error - 개인정보 처리방침 상세 URL 누락
이 오류는 privacyPolicy 객체에 필수적인 detailsUrl 필드가 누락된 경우 발생합니다.
{
"code": 4000,
"message": "SERVER_ERROR",
"detail": "Privacy Policy detailsUrl is missing."
}
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
code | number | 애플리케이션 오류 코드 (4000) | Yes |
message | string | 오류 메시지 코드 ("AGREEMENTS_SERVER_ERROR") | Yes |
detail | string | 사용자 친화적인 오류 설명 | Yes |
설명
- 이 API는 동의가 필요한 약관과 선택적 동의 항목을 통합적으로 조회하여 클라이언트가 동의 화면을 구성하는 데 필요한 모든 정보를 제공합니다.
항목 타입별 특징
-
약관(TERMS) 항목 (AgreementType 참조):
versionId는 UUID 형식의 약관 버전 ID입니다.isRequired는 약관 설정에 따라 true(필수 동의) 또는 false(선택적 동의)입니다.text는 Accept-Language 헤더에 따라 현지화된 약관 제목입니다.detailsUrl은 약관 전문을 볼 수 있는 URL이며, 언어 코드가 포함됩니다.
-
동의(CONSENT) 항목 (AgreementType 참조):
versionId는 UUID 형식의 동의 버전 ID입니다.isRequired는 항상 false입니다 (모든 동의 항목은 선택적).text는 Accept-Language 헤더에 따라 현지화된 동의 문구입니다.detailsUrl은 동의와 관련된 추가 정보를 볼 수 있는 URL이거나 null입니다.
-
개인정보 처리방침(PRIVACY_POLICY) 항목 (AgreementType 참조):
privacyPolicy객체로 제공되는 개인정보 처리방침 정보입니다.versionId는 UUID 형식의 개인정보 처리방침 버전 ID입니다.text는 Accept-Language 헤더에 따라 현지화된 개인정보 처리방침 제목입니다.detailsUrl은 개인정보 처리방침 전문을 볼 수 있는 URL입니다.
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.62.0 | 2025-12-30 | pibi@weltcorp.com | orderIndex 업데이트 |
| 0.67.0 | 2026-02-23 | jeff@weltcorp.com | isAgreeable 필드 추가 |