본문으로 건너뛰기
버전: 0.68.0

앱 설정 정보 조회 API

앱 설정 정보 조회 API는 모바일 앱 초기화 시 필요한 통합 시스템 설정 정보를 조회합니다.

참고

이 API는 모바일 앱이 시작될 때 필요한 기본 설정 정보들을 제공합니다. 언어별 설정, 시스템 구성 정보 등을 포함합니다.

1. 앱 설정 정보 조회

모바일 앱 초기화 시 필요한 통합 시스템 설정 정보를 조회합니다.

  • HTTP Method: GET
  • Path: /v1/mobile/app-settings
  • 인증: App Token 필요 (Authorization: Bearer {appToken})

Headers

HeaderTypeDescriptionRequired
AuthorizationstringBearer <app-token>Yes
Accept-Languagestring언어 태그 (Language Codes 참조, 기본값: de-DE)Yes

Query Parameters

이 API는 Query Parameter를 사용하지 않습니다.

노트

2025-05-27 기준으로는 Query Parameter를 사용하지 않으며, 향후 필요에 따라 추가 파라미터 지원 여부를 논의할 예정입니다.

Request Body

이 API는 Request Body를 사용하지 않습니다.

Responses

HTTP Status Code설명Error Code(s)
200 OK조회 성공-
401 Unauthorized앱 토큰 인증 실패2051
404 Not Found앱 설정 없음8010
500 Internal Server Error서버 내부 오류8000
200 OK - 앱 설정 정보 조회 성공
{
"id": "hashcode",
"systemSettings": {
"globalConfig": {
"sessionTimeoutMinutes": 30,
"maxUploadSizeMB": 10
}
},
"featureFlags": [
{
"name": "enableNewSleepTracking",
"isEnabled": true,
"description": "New sleep tracking functionality"
},
{
"name": "enableQuestionnaireSurvey",
"isEnabled": false,
"description": "In-app questionnaire survey feature"
}
],
"agreements": [
{
"versionsId": "terms-of-service",
"type": "TERMS",
"validFrom": 1746316800000,
"isRequired": true
},
{
"versionsId": "privacy-policy",
"type": "PRIVACY_POLICY",
"validFrom": 1744675200000,
"isRequired": true
}
],
"announcementSummaries": [
{
"id": "announce-123",
"title": "새로운 기능이 추가되었습니다",
"createdAt": 1747126800000,
"isNew": true,
"importance": "high"
}
],
"mobile": {
"android": {
"latest": {
"code": "12",
"name": "1.2.15"
},
"min": {
"code": "11",
"name": "1.2.14"
}
},
"iOS": {
"latest": {
"build": 57,
"name": "1.2.15"
},
"min": {
"build": 57,
"name": "1.2.15"
}
}
},
"authenticationMethods": [
{
"type": "email",
"isEnabled": true,
"displayName": "이메일"
},
{
"type": "google",
"isEnabled": true,
"displayName": "Google"
},
{
"type": "apple",
"isEnabled": true,
"displayName": "Apple"
}
],
"device": {
"minFreeSpaceMB": 500
},
"lastUpdatedAt": 1747557000,
"cacheExpiresAt": 1747600200
}
필드타입설명필수
idstring설정 ID (해시코드)Yes
systemSettingsobject시스템 설정No
systemSettings.globalConfigobject글로벌 설정No
systemSettings.globalConfig.sessionTimeoutMinutesnumber세션 타임아웃 (분, Kotlin: Int, Swift: Int)No
systemSettings.globalConfig.maxUploadSizeMBnumber최대 업로드 크기 (MB, Kotlin: Int, Swift: Int)No
featureFlagsarray기능 플래그 목록No
featureFlags[].namestring기능 플래그 이름No
featureFlags[].isEnabledboolean기능 활성화 여부No
featureFlags[].descriptionstring기능 설명No
agreementsarray약관 버전 정보No
agreements[].versionsIdstring약관 버전 IDNo
agreements[].typestring약관 타입No
agreements[].validFromnumber유효 시작 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64)No
agreements[].isRequiredboolean필수 동의 여부No
announcementSummariesarray공지사항 요약 목록No
announcementSummaries[].idstring공지사항 IDNo
announcementSummaries[].titlestring공지사항 제목No
announcementSummaries[].createdAtnumber생성 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64)No
announcementSummaries[].isNewboolean새 공지사항 여부No
announcementSummaries[].importancestring중요도No
mobileobject모바일 앱 버전 정보No
mobile.androidobjectAndroid 버전 정보No
mobile.android.latestobjectAndroid 최신 버전No
mobile.android.latest.codestringAndroid 최신 버전 코드No
mobile.android.latest.namestringAndroid 최신 버전 이름No
mobile.android.minobjectAndroid 최소 지원 버전No
mobile.android.min.codestringAndroid 최소 버전 코드No
mobile.android.min.namestringAndroid 최소 버전 이름No
mobile.iOSobjectiOS 버전 정보No
mobile.iOS.latestobjectiOS 최신 버전No
mobile.iOS.latest.buildnumberiOS 최신 빌드 번호 (Kotlin: Int, Swift: Int)No
mobile.iOS.latest.namestringiOS 최신 버전 이름No
mobile.iOS.minobjectiOS 최소 지원 버전No
mobile.iOS.min.buildnumberiOS 최소 빌드 번호 (Kotlin: Int, Swift: Int)No
mobile.iOS.min.namestringiOS 최소 버전 이름No
authenticationMethodsarray지원 인증 방식 목록No
authenticationMethods[].typestring인증 방식 타입No
authenticationMethods[].isEnabledboolean활성화 여부No
authenticationMethods[].displayNamestring표시 이름No
deviceobject디바이스 요구사항No
device.minFreeSpaceMBnumber최소 여유 공간 (MB, Kotlin: Int, Swift: Int)No
lastUpdatedAtnumber마지막 업데이트 시간 (Unix timestamp in seconds, Kotlin: Long, Swift: Int64)No
cacheExpiresAtnumber캐시 만료 시간 (Unix timestamp in seconds, Kotlin: Long, Swift: Int64)No
401 Unauthorized - 앱 토큰 인증 실패
{
"code": 2051,
"message": "INVALID_TOKEN",
"detail": "토큰이 유효하지 않습니다"
}
404 Not Found - 앱 설정 없음
{
"code": 8010,
"message": "APP_SETTINGS_NOT_FOUND",
"detail": "앱 설정을 찾을 수 없습니다"
}
500 Internal Server Error - 서버 내부 오류
{
"code": 8000,
"message": "SERVER_ERROR",
"detail": "서버 내부 오류가 발생했습니다"
}

설명

  • mobile.service.tsgetAppSettings 메서드에 해당하며, MobileController를 통해 노출됩니다.
  • 주요 기능:
    1. 설정 ID (해시코드) 제공
    2. 시스템 전역 설정 제공 (세션 타임아웃, 업로드 제한 등)
    3. 기능 플래그를 통한 클라이언트 기능 제어
    4. 약관 버전 정보 제공
    5. 공지사항 요약 목록 제공
    6. 플랫폼별 최소 버전 요구사항
    7. 지원 인증 방식 목록
    8. 디바이스 요구사항 (저장공간 등)
    9. 캐시 관리를 위한 타임스탬프 정보
  • 모바일 앱 시작 시 이 API를 호출하여 필요한 모든 기본 설정 정보를 한 번에 조회합니다.
  • 클라이언트는 이 정보를 바탕으로 기능 활성화, 약관 동의, 버전 호환성 등을 관리할 수 있습니다.

Accept-Language 헤더 상세

설명예시 응답 언어 설정
ko-KR한국어한국어 설정 반환
en-US영어(미국)영어 설정 반환
de-DE독일어독일어 설정 반환

참고: Accept-Language 헤더가 제공되지 않거나 지원하지 않는 언어인 경우 기본값으로 de-DE가 사용됩니다.

사용 예시

요청 예시:

curl -X GET "https://api.dta-wide.com/mobile/app-settings" \
-H "Authorization: Bearer your-app-token" \
-H "Accept-Language: ko-KR"

응답 예시:

{
"id": "hashcode",
"systemSettings": {
"globalConfig": {
"sessionTimeoutMinutes": 30,
"maxUploadSizeMB": 10
}
},
"featureFlags": [
{
"name": "enableNewSleepTracking",
"isEnabled": true,
"description": "New sleep tracking functionality"
}
],
"agreements": [
{
"versionsId": "terms-of-service",
"type": "TERMS",
"validFrom": 1746316800000,
"isRequired": true
}
],
"announcementSummaries": [
{
"id": "announce-123",
"title": "새로운 기능이 추가되었습니다",
"createdAt": 1747126800000,
"isNew": true,
"importance": "high"
}
],
"mobile": {
"android": {
"latest": {
"code": "12",
"name": "1.2.15"
},
"min": {
"code": "11",
"name": "1.2.14"
}
},
"iOS": {
"latest": {
"build": 57,
"name": "1.2.15"
},
"min": {
"build": 57,
"name": "1.2.15"
}
}
},
"authenticationMethods": [
{
"type": "email",
"isEnabled": true,
"displayName": "이메일"
}
],
"device": {
"minFreeSpaceMB": 500
},
"lastUpdatedAt": 1747557000,
"cacheExpiresAt": 1747600200
}

주요 필드 상세

SystemSettings

시스템 전역 설정을 포함합니다.

  • globalConfig.sessionTimeoutMinutes: 앱 세션 타임아웃 시간 (분)
  • globalConfig.maxUploadSizeMB: 파일 업로드 최대 크기 제한 (MB)

FeatureFlags

클라이언트 기능 제어를 위한 플래그 목록입니다.

  • name: 기능 식별자
  • isEnabled: 해당 기능 활성화 여부
  • description: 기능에 대한 설명

Agreements

약관 정보 목록입니다.

  • versionsId: 약관 버전 식별자
  • type: 약관 타입 (TERMS, PRIVACY_POLICY 등)
  • validFrom: 해당 약관이 유효해지는 시점 (Unix timestamp)
  • isRequired: 필수 동의 약관 여부

Mobile Version Information

모바일 앱 버전 정보입니다.

  • mobile.android.latest: Android 최신 버전 정보
    • code: 버전 코드 (앱 스토어에서 사용하는 내부 버전 번호)
    • name: 사용자에게 표시되는 버전 이름
  • mobile.android.min: Android 최소 지원 버전 정보
  • mobile.iOS.latest: iOS 최신 버전 정보
    • build: 빌드 번호 (App Store에서 사용하는 내부 빌드 번호)
    • name: 사용자에게 표시되는 버전 이름
  • mobile.iOS.min: iOS 최소 지원 버전 정보

Authentication Methods

지원하는 인증 방식 목록입니다.

  • type: 인증 방식 (email, google, apple 등)
  • isEnabled: 해당 인증 방식 활성화 여부
  • displayName: 클라이언트에서 표시할 이름

2. AppSettings 새 버전 생성

관리자가 새로운 버전의 AppSettings를 생성합니다. 기존 설정은 history로 이관되고 새 버전이 활성화됩니다.

  • HTTP Method: POST
  • Path: /v1/mobile/admin/app-settings
  • 인증: Access Token 필요 (관리자 권한 필요)

Headers

HeaderTypeDescriptionRequired
AuthorizationstringBearer <access-token> (관리자 권한 필요)Yes
Content-Typestringapplication/jsonYes

Request Body

{
"systemSettings": {
"globalConfig": {
"sessionTimeoutMinutes": 30,
"maxUploadSizeMB": 10
}
},
"agreementVersions": [],
"announcementSummaries": [],
"featureFlags": [
{
"name": "enableNewSleepTracking",
"isEnabled": true,
"description": "New sleep tracking functionality"
}
],
"mobile": {
"android": {
"latest": { "code": "12", "name": "1.2.15" },
"min": { "code": "11", "name": "1.2.14" }
},
"iOS": {
"latest": { "build": 37, "name": "0.1.6" },
"min": { "build": 37, "name": "0.1.6" }
}
},
"authenticationMethods": [
{
"type": "email",
"isEnabled": true,
"displayName": "이메일"
}
],
"reason": "iOS 버전을 build 37, name 0.1.6으로 업데이트"
}

Responses

HTTP Status Code설명Error Code(s)
201 CreatedAppSettings 생성 성공-
400 Bad Request유효하지 않은 요청 데이터8001
401 Unauthorized인증 실패2001
403 Forbidden관리자 권한 없음2060
500 Internal Server Error서버 내부 오류8000
201 Created - AppSettings 생성 성공
{
"id": "new-settings-uuid-789",
"version": 16,
"systemSettings": {
"globalConfig": {
"sessionTimeoutMinutes": 30,
"maxUploadSizeMB": 10
}
},
"featureFlags": [
{
"name": "enableNewSleepTracking",
"isEnabled": true,
"description": "New sleep tracking functionality"
}
],
"agreements": [],
"announcementSummaries": [],
"mobile": {
"android": {
"latest": { "code": "12", "name": "1.2.15" },
"min": { "code": "11", "name": "1.2.14" }
},
"iOS": {
"latest": { "build": 37, "name": "0.1.6" },
"min": { "build": 37, "name": "0.1.6" }
}
},
"authenticationMethods": [
{
"type": "email",
"isEnabled": true,
"displayName": "이메일"
}
],
"lastUpdatedAt": 1747570000
}
401 Unauthorized - 인증 실패
{
"code": 2001,
"message": "UNAUTHORIZED",
"detail": "관리자 권한이 필요합니다."
}
400 Bad Request - 유효하지 않은 요청 데이터
{
"code": 8001,
"message": "INVALID_APP_SETTINGS",
"detail": "유효하지 않은 AppSettings 데이터입니다."
}

설명

  • 이 API는 immutable versioning 전략을 사용합니다.
  • 새 버전 생성 시 기존 활성 AppSettings는 AppSettingsHistory 테이블로 자동 이관됩니다.
  • 새로 생성된 설정이 즉시 활성화되어 GET /v1/mobile/app-settings API에서 반환됩니다.
  • version 필드는 자동으로 증가합니다 (예: 15 → 16).
  • reason 필드는 변경 이력 추적을 위한 선택적 필드입니다.

사용 예시

iOS 버전 정보 업데이트 요청:

curl -X POST "https://api.dta-wide.com/mobile/admin/app-settings" \
-H "Authorization: Bearer your-access-token" \
-H "Content-Type: application/json" \
-d '{
"systemSettings": {
"globalConfig": {
"sessionTimeoutMinutes": 30,
"maxUploadSizeMB": 10
}
},
"agreementVersions": [],
"announcementSummaries": [],
"featureFlags": [],
"mobile": {
"android": {
"latest": { "code": "12", "name": "1.2.15" },
"min": { "code": "11", "name": "1.2.14" }
},
"iOS": {
"latest": { "build": 37, "name": "0.1.6" },
"min": { "build": 37, "name": "0.1.6" }
}
},
"authenticationMethods": [],
"reason": "iOS 버전을 build 37, name 0.1.6으로 업데이트"
}'

변경 이력

버전날짜작성자변경 내용
0.1.02025-05-27elizabeth@weltcorp.com최초 작성 - 앱 설정 정보 조회 API 문서화
0.2.02025-08-03bok@weltcorp.com구현체에 맞춰 응답 구조 업데이트 - systemSettings, featureFlags, agreements 등 추가
0.3.02025-08-03bok@weltcorp.com모바일 버전 정보 구조 개선 - androidMinVersion/iOSMinVersion을 mobile 객체로 대체, latest/min 버전 및 code/build 정보 추가
0.4.02025-08-03bok@weltcorp.comAppSettings 새 버전 생성 API 추가 - POST /v1/mobile/admin/app-settings로 관리자가 설정 관리 가능