현재 사용자의 모바일 설정 수정 API
현재 사용자의 모바일 설정 수정 API는 JWT 토큰에서 사용자 ID를 추출하여 자신의 모바일 앱 설정 정보를 수정합니다.
참고
이 API는 JWT 인증을 통해 현재 로그인한 사용자의 모바일 앱 설정을 수정하는 데 사용됩니다. 별도의 사용자 ID 파라미터가 필요하지 않으며, 부분 업데이트를 지원합니다.
현재 사용자의 모바일 설정 수정
JWT 토큰에서 사용자 ID를 추출하여 자신의 모바일 앱 설정 정보를 수정합니다.
- HTTP Method:
PATCH - Path:
/v1/mobile/me/settings - 인증: Access Token 필요 (Authorization: Bearer
{accessToken})
Headers
| Header | Type | Description | Required |
|---|---|---|---|
Authorization | string | Bearer <access-token> | Yes |
Content-Type | string | application/json | Yes |
Path Parameters
이 API는 Path Parameter를 사용하지 않습니다.
JWT 토큰에서 사용자 ID 추출
JWT 토큰에서 자동으로 사용자 ID를 추출하여 해당 사용자의 설정을 수정합니다.
Query Parameters
이 API는 Query Parameter를 사용하지 않습니다.
Request Body
수정할 설정 정보를 포함한 JSON 객체입니다. 모든 필드는 선택적이며, 제공된 필드만 수정됩니다.
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
screenshotAllowed | boolean | 스크린샷 허용 여부 | No |
appNotificationEnabled | boolean | 앱 알림 활성화 여부 | No |
systemNotificationEnabled | boolean | 시스템 알림 활성화 여부 | No |
analyticsConfiguration | object | 분석 설정 | No |
analyticsConfiguration.enabled | boolean | 분석 활성화 여부 | No |
analyticsConfiguration.dataTypes | array | 분석 데이터 타입 배열 | No |
healthKitPermissionGranted | boolean | HealthKit 권한 허용 여부 (iOS) | No |
healthConnectPermissionGranted | boolean | Health Connect 권한 허용 여부 (Android) | No |
locationPermissionGranted | boolean | 위치 권한 허용 여부 | No |
videoRecordingAllowed | boolean | 비디오 녹화 허용 여부 | No |
cameraPermissionGranted | boolean | 카메라 권한 허용 여부 | No |
photoLibraryPermissionGranted | boolean | 사진 라이브러리 권한 허용 여부 | No |
fcmToken | string | Firebase Cloud Messaging 토큰 | No |
Responses
| HTTP Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 수정 성공 | - |
400 Bad Request | 유효하지 않은 모바일 설정 값 | 8062 |
401 Unauthorized | 액세스 토큰 인증 실패 | 2001 |
404 Not Found | 사용자 모바일 설정을 찾을 수 없음 | 8061 |
500 Internal Server Error | 서버 내부 오류 | 8000 |
200 OK - 현재 사용자의 모바일 설정 수정 성공
{
"userId": "user-123-uuid",
"questionnaireBundleId": "bundle-456-uuid",
"screenshotAllowed": true,
"appNotificationEnabled": false,
"systemNotificationEnabled": true,
"analyticsConfiguration": {
"enabled": false,
"dataTypes": []
},
"healthKitPermissionGranted": false,
"healthConnectPermissionGranted": true,
"locationPermissionGranted": false,
"videoRecordingAllowed": true,
"cameraPermissionGranted": false,
"photoLibraryPermissionGranted": false,
"fcmToken": "fXYZ789012ABCD...",
"createdAt": 1747500000000,
"updatedAt": 1747560000000,
"lastResetAt": 1747500000000
}
| 필드 | 타입 | 설명 | 필수 |
|---|---|---|---|
userId | string | 사용자 ID | Yes |
questionnaireBundleId | string | 설문지 번들 ID | Yes |
screenshotAllowed | boolean | 스크린샷 허용 여부 | Yes |
appNotificationEnabled | boolean | 앱 알림 활성화 여부 | Yes |
systemNotificationEnabled | boolean | 시스템 알림 활성화 여부 | Yes |
analyticsConfiguration | object | 분석 설정 | Yes |
analyticsConfiguration.enabled | boolean | 분석 활성화 여부 | Yes |
analyticsConfiguration.dataTypes | array | 분석 데이터 타입 배열 | Yes |
healthKitPermissionGranted | boolean | HealthKit 권한 허용 여부 (iOS) | Yes |
healthConnectPermissionGranted | boolean | Health Connect 권한 허용 여부 (Android) | Yes |
locationPermissionGranted | boolean | 위치 권한 허용 여부 | Yes |
videoRecordingAllowed | boolean | 비디오 녹화 허용 여부 | Yes |
cameraPermissionGranted | boolean | 카메라 권한 허용 여부 | Yes |
photoLibraryPermissionGranted | boolean | 사진 라이브러리 권한 허용 여부 | Yes |
fcmToken | string | Firebase Cloud Messaging 토큰 (nullable) | No |
createdAt | number | 생성 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64) | Yes |
updatedAt | number | 최종 수정 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64) | Yes |
lastResetAt | number | 마지막 초기화 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64) | Yes |
400 Bad Request - 유효하지 않은 모바일 설정 값
{
"code": 8062,
"message": "INVALID_MOBILE_SETTINGS",
"detail": "유효하지 않은 모바일 설정 값입니다."
}
401 Unauthorized - 액세스 토큰 인증 실패
{
"code": 2001,
"message": "UNAUTHORIZED",
"detail": "유효하지 않은 액세스 토큰입니다."
}
참고: JWT 토큰에서 사용자 ID를 추출할 수 없는 경우에도 이 오류가 발생할 수 있습니다.
404 Not Found - 사용자 모바일 설정을 찾을 수 없음
{
"code": 8061,
"message": "USER_MOBILE_SETTINGS_NOT_FOUND",
"detail": "사용자 모바일 설정을 찾을 수 없습니다."
}
500 Internal Server Error - 서버 내부 오류
{
"code": 8000,
"message": "SERVER_ERROR",
"detail": "서버 내부 오류가 발생했습니다."
}
설명
mobile.service.ts의updateUserMobileSettings메서드를 사용하며,MobileController의updateCurrentUserMobileSettings를 통해 노출됩니다.- 주요 기능:
- JWT 토큰에서 사용자 ID 자동 추출
- 현재 사용자의 모바일 앱 설정 수정
- 부분 업데이트 지원 (PATCH 방식)
- 수정된 전체 설정 정보 반환
- 실시간 Analytics 설정 적용
- JWT 가드를 통해 인증된 사용자만 접근할 수 있습니다.
- 제공된 필드만 수정되며, 제공되지 않은 필드는 기존 값이 유지됩니다.
- 수정 후 전체 설정 정보를 반환합니다.
JWT 인증 처리
이 API는 @UseGuards(JwtAuthGuard)를 사용하여 JWT 토큰 인증을 처리합니다:
- 토큰 검증: Authorization 헤더의 JWT 토큰을 검증합니다.
- 사용자 ID 추출: 토큰에서 사용자 ID를 추출합니다.
- 자동 매핑: 추출된 사용자 ID로 해당 사용자의 설정을 수정합니다.
Analytics Configuration 상세
analyticsConfiguration 객체에 대한 상세 설명입니다.
| 필드 | 타입 | 설명 | 가능한 값 |
|---|---|---|---|
enabled | boolean | 분석 기능 활성화 여부 | true, false |
dataTypes | array | 수집할 데이터 타입 배열 | ["usage", "performance", "all"] 등 |
참고:
enabled와dataTypes설정으로 분석 수집 범위를 제어할 수 있습니다.dataTypes에"all"이 포함되면 모든 분석 데이터를 수집하고, 구체적인 타입들을 지정하면 선택적으로 수집합니다.
사용 예시
요청 예시:
curl -X PATCH "https://api.dta-wide.com/mobile/me/settings" \
-H "Authorization: Bearer your-access-token" \
-H "Content-Type: application/json" \
-d '{
"screenshotAllowed": true,
"appNotificationEnabled": false,
"analyticsConfiguration": {
"enabled": false,
"dataTypes": []
},
"fcmToken": "fXYZ789012ABCD..."
}'
응답 예시:
{
"userId": "user-123-uuid",
"questionnaireBundleId": "bundle-456-uuid",
"screenshotAllowed": true,
"appNotificationEnabled": false,
"systemNotificationEnabled": true,
"analyticsConfiguration": {
"enabled": false,
"dataTypes": []
},
"healthKitPermissionGranted": true,
"healthConnectPermissionGranted": false,
"locationPermissionGranted": true,
"videoRecordingAllowed": false,
"cameraPermissionGranted": true,
"photoLibraryPermissionGranted": true,
"fcmToken": "fXYZ789012ABCD...",
"createdAt": 1747500000000,
"updatedAt": 1747560000000,
"lastResetAt": 1747500000000
}
부분 업데이트 예시
알림 설정만 수정:
{
"appNotificationEnabled": false,
"systemNotificationEnabled": true
}
분석 설정만 수정:
{
"analyticsConfiguration": {
"enabled": true,
"dataTypes": ["usage", "performance"]
}
}
권한 설정만 수정:
{
"cameraPermissionGranted": true,
"photoLibraryPermissionGranted": true,
"locationPermissionGranted": false
}
권한 설정 필드 상세
| 필드 | 플랫폼 | 설명 |
|---|---|---|
healthKitPermissionGranted | iOS | Apple HealthKit 데이터 접근 권한 |
healthConnectPermissionGranted | Android | Google Health Connect 데이터 접근 권한 |
locationPermissionGranted | 공통 | 위치 정보 접근 권한 |
cameraPermissionGranted | 공통 | 카메라 접근 권한 |
photoLibraryPermissionGranted | 공통 | 사진 라이브러리 접근 권한 |
보안 고려사항
- JWT 토큰 검증: 모든 요청에서 JWT 토큰의 유효성을 검증합니다.
- 자동 사용자 식별: 토큰에서 사용자 ID를 추출하여 다른 사용자의 설정에 접근할 수 없도록 보장합니다.
- 권한 기반 접근: 인증된 사용자만 자신의 설정을 수정할 수 있습니다.
- 입력 검증: 모든 입력 값에 대해 서버 측 검증을 수행합니다.
설정 업데이트 전략
- 부분 업데이트: 제공된 필드만 수정하여 클라이언트에서 필요한 부분만 업데이트할 수 있습니다.
- 원자적 업데이트: 모든 설정 변경은 트랜잭션 내에서 처리되어 일관성을 보장합니다.
- 실시간 적용: Analytics 설정 변경사항은 실시간으로 적용되어 응답에 반영됩니다.
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-07-12 | bok@weltcorp.com | 최초 작성 - 현재 사용자의 모바일 설정 수정 API 문서화 |