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

현재 사용자의 모바일 설정 수정 API

현재 사용자의 모바일 설정 수정 API는 JWT 토큰에서 사용자 ID를 추출하여 자신의 모바일 앱 설정 정보를 수정합니다.

참고

이 API는 JWT 인증을 통해 현재 로그인한 사용자의 모바일 앱 설정을 수정하는 데 사용됩니다. 별도의 사용자 ID 파라미터가 필요하지 않으며, 부분 업데이트를 지원합니다.

현재 사용자의 모바일 설정 수정

JWT 토큰에서 사용자 ID를 추출하여 자신의 모바일 앱 설정 정보를 수정합니다.

  • HTTP Method: PATCH
  • Path: /v1/mobile/me/settings
  • 인증: Access Token 필요 (Authorization: Bearer {accessToken})

Headers

HeaderTypeDescriptionRequired
AuthorizationstringBearer <access-token>Yes
Content-Typestringapplication/jsonYes

Path Parameters

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

JWT 토큰에서 사용자 ID 추출

JWT 토큰에서 자동으로 사용자 ID를 추출하여 해당 사용자의 설정을 수정합니다.

Query Parameters

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

Request Body

수정할 설정 정보를 포함한 JSON 객체입니다. 모든 필드는 선택적이며, 제공된 필드만 수정됩니다.

필드타입설명필수
screenshotAllowedboolean스크린샷 허용 여부No
appNotificationEnabledboolean앱 알림 활성화 여부No
systemNotificationEnabledboolean시스템 알림 활성화 여부No
analyticsConfigurationobject분석 설정No
analyticsConfiguration.enabledboolean분석 활성화 여부No
analyticsConfiguration.dataTypesarray분석 데이터 타입 배열No
healthKitPermissionGrantedbooleanHealthKit 권한 허용 여부 (iOS)No
healthConnectPermissionGrantedbooleanHealth Connect 권한 허용 여부 (Android)No
locationPermissionGrantedboolean위치 권한 허용 여부No
videoRecordingAllowedboolean비디오 녹화 허용 여부No
cameraPermissionGrantedboolean카메라 권한 허용 여부No
photoLibraryPermissionGrantedboolean사진 라이브러리 권한 허용 여부No
fcmTokenstringFirebase 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
}
필드타입설명필수
userIdstring사용자 IDYes
questionnaireBundleIdstring설문지 번들 IDYes
screenshotAllowedboolean스크린샷 허용 여부Yes
appNotificationEnabledboolean앱 알림 활성화 여부Yes
systemNotificationEnabledboolean시스템 알림 활성화 여부Yes
analyticsConfigurationobject분석 설정Yes
analyticsConfiguration.enabledboolean분석 활성화 여부Yes
analyticsConfiguration.dataTypesarray분석 데이터 타입 배열Yes
healthKitPermissionGrantedbooleanHealthKit 권한 허용 여부 (iOS)Yes
healthConnectPermissionGrantedbooleanHealth Connect 권한 허용 여부 (Android)Yes
locationPermissionGrantedboolean위치 권한 허용 여부Yes
videoRecordingAllowedboolean비디오 녹화 허용 여부Yes
cameraPermissionGrantedboolean카메라 권한 허용 여부Yes
photoLibraryPermissionGrantedboolean사진 라이브러리 권한 허용 여부Yes
fcmTokenstringFirebase Cloud Messaging 토큰 (nullable)No
createdAtnumber생성 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64)Yes
updatedAtnumber최종 수정 시간 (Unix timestamp in milliseconds, Kotlin: Long, Swift: Int64)Yes
lastResetAtnumber마지막 초기화 시간 (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.tsupdateUserMobileSettings 메서드를 사용하며, MobileControllerupdateCurrentUserMobileSettings를 통해 노출됩니다.
  • 주요 기능:
    1. JWT 토큰에서 사용자 ID 자동 추출
    2. 현재 사용자의 모바일 앱 설정 수정
    3. 부분 업데이트 지원 (PATCH 방식)
    4. 수정된 전체 설정 정보 반환
    5. 실시간 Analytics 설정 적용
  • JWT 가드를 통해 인증된 사용자만 접근할 수 있습니다.
  • 제공된 필드만 수정되며, 제공되지 않은 필드는 기존 값이 유지됩니다.
  • 수정 후 전체 설정 정보를 반환합니다.

JWT 인증 처리

이 API는 @UseGuards(JwtAuthGuard)를 사용하여 JWT 토큰 인증을 처리합니다:

  1. 토큰 검증: Authorization 헤더의 JWT 토큰을 검증합니다.
  2. 사용자 ID 추출: 토큰에서 사용자 ID를 추출합니다.
  3. 자동 매핑: 추출된 사용자 ID로 해당 사용자의 설정을 수정합니다.

Analytics Configuration 상세

analyticsConfiguration 객체에 대한 상세 설명입니다.

필드타입설명가능한 값
enabledboolean분석 기능 활성화 여부true, false
dataTypesarray수집할 데이터 타입 배열["usage", "performance", "all"]

참고:

  • enableddataTypes 설정으로 분석 수집 범위를 제어할 수 있습니다.
  • 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
}

권한 설정 필드 상세

필드플랫폼설명
healthKitPermissionGrantediOSApple HealthKit 데이터 접근 권한
healthConnectPermissionGrantedAndroidGoogle Health Connect 데이터 접근 권한
locationPermissionGranted공통위치 정보 접근 권한
cameraPermissionGranted공통카메라 접근 권한
photoLibraryPermissionGranted공통사진 라이브러리 접근 권한

보안 고려사항

  • JWT 토큰 검증: 모든 요청에서 JWT 토큰의 유효성을 검증합니다.
  • 자동 사용자 식별: 토큰에서 사용자 ID를 추출하여 다른 사용자의 설정에 접근할 수 없도록 보장합니다.
  • 권한 기반 접근: 인증된 사용자만 자신의 설정을 수정할 수 있습니다.
  • 입력 검증: 모든 입력 값에 대해 서버 측 검증을 수행합니다.

설정 업데이트 전략

  1. 부분 업데이트: 제공된 필드만 수정하여 클라이언트에서 필요한 부분만 업데이트할 수 있습니다.
  2. 원자적 업데이트: 모든 설정 변경은 트랜잭션 내에서 처리되어 일관성을 보장합니다.
  3. 실시간 적용: Analytics 설정 변경사항은 실시간으로 적용되어 응답에 반영됩니다.

변경 이력

버전날짜작성자변경 내용
0.1.02025-07-12bok@weltcorp.com최초 작성 - 현재 사용자의 모바일 설정 수정 API 문서화