{"components":{"schemas":{"Err":{"properties":{"error":{"properties":{"code":{"example":"VALID_001","type":"string"},"message":{"type":"string"}},"type":"object"},"success":{"example":false,"type":"boolean"}},"type":"object"},"Ok":{"properties":{"data":{},"success":{"example":true,"type":"boolean"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http"}}},"info":{"description":"\u300cDouble Walking AI 2.0\u300d \ubaa8\ubc14\uc77c \uc571 MVP \u2194 \uc11c\ubc84 REST API. \uac1c\ubc1c\uacc4\ud68d\uc11c 5\uc7a5(API 32\uc885)\uacfc \ub3d9\uc77c \uacc4\uc57d + \uc6b4\uc601 \ud655\uc7a5.\n\n**v1.2.0(\uc2a4\ud0a4\ub9c8 3)**: \uc138\uc158 = 1 \ub17c\ub9ac \uc138\uc158 + N \uae30\uae30 \ub808\uadf8(devices[]), \uae30\uae30 \ub2e8\ub3c5 \uc138\uc158 \uc77c\uad04 \uc5c5\ub85c\ub4dc(/sessions/import), AI \uac1c\uc778\ud654 \ud30c\ub77c\ubbf8\ud130(gos-ai-1.0: /users/me/ai-params, ack, /sessions/{id}/ai-metrics), \uc88c\uc6b0 \uc815\uc815(/sessions/{id}/site). \uae30\uc874 34\uc885 \uacbd\ub85c\u00b7\uba54\uc11c\ub4dc\u00b7\uc751\ub2f5 \ud0a4 \ubd88\ubcc0.\n\n\uacf5\ud1b5 \uc751\ub2f5: `{ \"success\": true, \"data\": ... }` / \uc624\ub958: `{ \"success\": false, \"error\": { \"code\", \"message\" } }`\n\n\uc778\uc99d: `Authorization: Bearer <accessToken>` (Access 1\uc2dc\uac04 / Refresh 30\uc77c).\n\n**\uc0c1\ud0dc \ucf54\ub4dc**: \uc870\ud68c\u00b7\uc218\uc815 200, \uc0dd\uc131 \uacc4\uc5f4 \ubc0f register/login/refresh \ub294 201 (\uac1c\ubc1c\uacc4\ud68d\uc11c 5.3.1 \uc758 200 \ud45c\uae30\ub294 201 \ub85c \uc815\uc815). \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc740 \uba54\uc11c\ub4dc \ub4f1 HTTP \uc624\ub958\ub294 \ud574\ub2f9 \uc0c1\ud0dc\ucf54\ub4dc\uc640 `HTTP_{code}` \ucf54\ub4dc\ub85c \uc751\ub2f5.\n\n**\uac80\uc99d \uc624\ub958 \ucf54\ub4dc**: \ud544\uc218 \ub204\ub77d VALID_001, \ud5c8\uc6a9\uac12(enum) \uc704\ubc18 VALID_002, \uc22b\uc790 \ubc94\uc704 \uc704\ubc18 VALID_003, \uc774\uba54\uc77c \ud615\uc2dd VALID_004, \ube44\ubc00\ubc88\ud638 \uae38\uc774 VALID_005, \ubc30\uc5f4 \uc544\ub2d8 VALID_006, alarmTime \ud615\uc2dd VALID_007, UUID \ud615\uc2dd VALID_008, \ub0a0\uc9dc \ud30c\ub77c\ubbf8\ud130 VALID_009 (\uac1c\ubc1c\uacc4\ud68d\uc11c 5.3.2 \uc758 enum \uc704\ubc18 = VALID_001 \ud45c\uae30\ub294 VALID_002 \ub85c \uc815\uc815).\n\n**\uc77c\uc2dc**: \uc800\uc7a5\u00b7\uc751\ub2f5\uc740 UTC ISO 8601 `Z`(\uc608 `2026-09-05T03:28:44Z`), \uc694\uccad\uc740 `Z`/`+09:00` \ud45c\uae30 \ubaa8\ub450 \uc218\uc6a9. \uc77c\ubcc4 \ud1b5\uacc4\u00b7\uc8fc\uac04(\uc6d4~\uc77c)\u00b7\uc6d4\uac04 \uacbd\uacc4\uc640 \uc624\ub298\uc758 \ucd94\ucc9c \ub0a0\uc9dc\ub294 **Asia/Seoul(KST) \ub2ec\ub825 \uae30\uc900**\uc73c\ub85c \uacc4\uc0b0.","title":"Double Walking AI 2.0 API","version":"1.2.0"},"openapi":"3.0.3","paths":{"/admin/ai-params":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_ai_params_get","parameters":[{"description":"\uc0ac\uc6a9\uc790 ID \ub85c \ud544\ud130(\uc120\ud0dd, \uc815\uc218). \ubd84\uc11d \ud654\uba74\uc5d0\uc11c\ub294 '\ud1b5\uacc4' \uac00 \uc544\ub2c8\ub77c \uac1c\ubcc4 \uae30\ub85d \uc870\ud68c\uc774\uba70 \uac10\uc0ac \ub85c\uadf8\uc5d0 \ub0a8\ub294\ub2e4","in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"AI \uac1c\uc778\ud654 \ud30c\ub77c\ubbf8\ud130 \ud604\ud669 \u2014 (\uc0ac\uc6a9\uc790, \ubd80\uc704)\ubcc4 \ud604\ud589 revision\u00b7aiStage\u00b7startLevel\u00b7maxLevel\u00b7ceilingLevel\u00b7autoRamp\u00b7confidence\u00b7sessionCount\u00b7currentAcked\u00b7lastAck (v1.2.0)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/analytics":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_analytics_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\uc9d1\uacc4 \ub2e8\uc704 day | week(\uc6d4\uc694\uc77c \uc2dc\uc791) | month (\uae30\ubcf8 day)","in":"query","name":"bucket","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \ubaa8\ub4dc MASSAGE | AUTO | AUTO_CYCLE | AI | APP_ROUTINE (\ucf64\ub9c8\ub85c \ubcf5\uc218)","in":"query","name":"mode","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \ucd9c\ucc98 APP | DEVICE_STANDALONE","in":"query","name":"source","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \uc0c1\ud0dc STARTED | COMPLETED | ABORTED","in":"query","name":"status","required":false,"schema":{"type":"string"}},{"description":"\ub8e8\ud2f4 ID (0 = \ub8e8\ud2f4 \uc5c6\uc74c)","in":"query","name":"routineId","required":false,"schema":{"type":"string"}},{"description":"\uc2dc\uac01 \uc2e0\ub8b0\ub3c4 EXACT | ESTIMATED | UNKNOWN (\uae30\ubcf8: UNKNOWN \uc81c\uc678 \u2014 \uc77c\ubcc4 \ud1b5\uacc4\uc640 \uac19\uc740 \uaddc\uce59)","in":"query","name":"timeConfidence","required":false,"schema":{"type":"string"}},{"description":"\uc5f0\ub839\ub300 20s | 30s | 40s | 50s | 60s+ (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"ageBand","required":false,"schema":{"type":"string"}},{"description":"\uc131\ubcc4 M | F | NONE (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"gender","required":false,"schema":{"type":"string"}},{"description":"\uc9c1\uc5c5 DESK | STANDING | FIELD | HOME | ETC (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"jobType","required":false,"schema":{"type":"string"}},{"description":"\uc88c\uc2dd \uc2dc\uac04 LT4 | 4_8 | GT8 (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"sittingHours","required":false,"schema":{"type":"string"}},{"description":"\uc6b4\ub3d9 \ube48\ub3c4 RARE | W1_2 | W3+ (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"exerciseFreq","required":false,"schema":{"type":"string"}},{"description":"\ubd88\ud3b8 \ubd80\uc704 FATIGUE | SWELLING | CRAMP (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"concern","required":false,"schema":{"type":"string"}},{"description":"\ub370\uc774\ud130 \ucd9c\ucc98 real(\uc2e4\ub370\uc774\ud130, \uae30\ubcf8) | all | demo(\uc2dc\uc5f0\u00b7\uc2dc\ud5d8)","in":"query","name":"dataset","required":false,"schema":{"type":"string"}},{"description":"all(\uc6b4\uc601 \ud1b5\uacc4, \uae30\ubcf8) | beta(BETA_DATA \ub3d9\uc758\uc790\ub9cc). \ud559\uc2b5\uc6a9 \ub0b4\ubcf4\ub0b4\uae30\ub294 \ud56d\uc0c1 beta \ub85c \uac15\uc81c\ub41c\ub2e4","in":"query","name":"consent","required":false,"schema":{"type":"string"}},{"description":"\uc18d\uc131\ubcc4 \ubd84\ud574 \ucd95\uc744 \ucf64\ub9c8\ub85c \uc9c0\uc815(\uae30\ubcf8 mode,source,status,routine,ageBand,gender,jobType)","in":"query","name":"breakdown","required":false,"schema":{"type":"string"}},{"description":"\uad50\ucc28\ud45c \ud589 \ucd95","in":"query","name":"crossRow","required":false,"schema":{"type":"string"}},{"description":"\uad50\ucc28\ud45c \uc5f4 \ucd95","in":"query","name":"crossCol","required":false,"schema":{"type":"string"}},{"description":"\uc18c\uc9d1\ub2e8 \ubcf4\ud638 \uc784\uacc4(\ub300\uc0c1\uc790 \uc218). \uae30\ubcf8 5 \uc774\uba70 5 \ubbf8\ub9cc\uc73c\ub85c\ub294 \ub0ae\ucd9c \uc218 \uc5c6\ub2e4","in":"query","name":"kThreshold","required":false,"schema":{"type":"string"}},{"description":"\uc0ac\uc6a9\uc790 ID \ub85c \ud544\ud130(\uc120\ud0dd, \uc815\uc218). \ubd84\uc11d \ud654\uba74\uc5d0\uc11c\ub294 '\ud1b5\uacc4' \uac00 \uc544\ub2c8\ub77c \uac1c\ubcc4 \uae30\ub85d \uc870\ud68c\uc774\uba70 \uac10\uc0ac \ub85c\uadf8\uc5d0 \ub0a8\ub294\ub2e4","in":"query","name":"userId","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub204\uc801 \ub370\uc774\ud130 \uc9d1\uacc4 \u2014 \uae30\uac04\u00b7\ubaa8\ub4dc\u00b7\ucd9c\ucc98\u00b7\uc0c1\ud0dc\u00b7\ub8e8\ud2f4\u00b7\ud504\ub85c\ud544 \uc18d\uc131 \ud544\ud130\ubcc4 KPI\u00b7\ucd94\uc138\u00b7\uc18d\uc131\ubcc4 \ubd84\ud574\u00b7\ubd84\ud3ec\u00b7\uad50\ucc28\ud45c\u00b7\uc694\uc77c\u00d7\uc2dc\uac04\u00b7\ud53c\ub4dc\ubc31\u00b7AI \uc9c0\ud45c. \ud0c8\ud1f4\uc790(users.status\u2260ACTIVE)\ub294 \ud504\ub85c\ud544\uacfc \uacb0\ud569\ud558\ub294 \ubaa8\ub4e0 \uc9d1\uacc4\uc5d0\uc11c \uc81c\uc678\ud55c\ub2e4. \ud504\ub85c\ud544 \uc18d\uc131(ageBand\u00b7gender\u00b7jobType\u00b7sittingHours\u00b7exerciseFreq\u00b7concern)\uc73c\ub85c \uc881\ud600 \ub300\uc0c1\uc790\uac00 k(\uae30\ubcf8 5)\uba85 \ubbf8\ub9cc\uc774\uba74 \uc751\ub2f5 \uc804\uccb4\ub97c \uc5b5\uc81c\ud55c\ub2e4(suppressed=true, subjectCount\u00b7\uc0ac\uc720\ub9cc \ubc18\ud658\ud558\uace0 totals\u00b7series\u00b7breakdown\u00b7heatmap\u00b7cross \ub294 \ube44\uc6b4\ub2e4). \uc6b4\uc601 \ud56d\ubaa9(\ubaa8\ub4dc\u00b7\ucd9c\ucc98\u00b7\uc0c1\ud0dc\u00b7\ub8e8\ud2f4\u00b7\uae30\uac04)\ub9cc\uc73c\ub85c \uc881\ud78c \uacbd\uc6b0\ub294 \uc5b5\uc81c\ud558\uc9c0 \uc54a\uace0 \ub300\uc0c1\uc790 \uc218\ub97c \ubcd1\uae30\ud55c\ub2e4","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/analytics/cohort":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_cohort_get","parameters":[{"description":"\uad50\ucc28\ud45c \ud589 \ucc28\uc6d0","in":"query","name":"rowDim","required":false,"schema":{"type":"string"}},{"description":"\uad50\ucc28\ud45c \uc5f4 \ucc28\uc6d0","in":"query","name":"colDim","required":false,"schema":{"type":"string"}},{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\ub370\uc774\ud130 \ucd9c\ucc98 real(\uc2e4\ub370\uc774\ud130, \uae30\ubcf8) | all | demo(\uc2dc\uc5f0\u00b7\uc2dc\ud5d8)","in":"query","name":"dataset","required":false,"schema":{"type":"string"}},{"description":"\uc18c\uc9d1\ub2e8 \ubcf4\ud638 \uc784\uacc4(\ub300\uc0c1\uc790 \uc218). \uae30\ubcf8 5 \uc774\uba70 5 \ubbf8\ub9cc\uc73c\ub85c\ub294 \ub0ae\ucd9c \uc218 \uc5c6\ub2e4","in":"query","name":"kThreshold","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc18d\uc131 \uad50\ucc28\ud45c(\ud589 \u00d7 \uc5f4). \uc9d1\ub2e8 \ud06c\uae30\uac00 k \ubbf8\ub9cc\uc778 \uce78\uc740 \uc218\uce58\ub97c \ub0b4\ub824\ubcf4\ub0b4\uc9c0 \uc54a\ub294\ub2e4(\ub300\uc0c1\uc790 \uc218\ub9cc). \uac74\uac15 \uc18d\uc131(heightBand\u00b7weightBand)\uc740 \ucc28\uc6d0 \ubaa9\ub85d\uc5d0\uc11c \uc81c\uc678","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/app-logs":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_app_logs_get","parameters":[{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc571 \uc774\ubca4\ud2b8 \ub85c\uadf8(\ucd5c\uadfc\uc21c)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/audit":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_audit_get","parameters":[{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}},{"description":"\uac10\uc0ac \ub85c\uadf8 \ud589\uc704 \ud544\ud130 (EXPORT_AI_DATASET | EXPORT_ANALYTICS | EXPORT_LEGACY_SESSIONS | EXPORT_LEGACY_FEEDBACKS | ALIAS_SET | ALIAS_CLEAR)","in":"query","name":"action","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc6b4\uc601\uc790 \ud589\uc704 \uc774\ub825 \u2014 \ub0b4\ubcf4\ub0b4\uae30(\uc131\uacf5\u00b7\uac70\ubd80 \ubaa8\ub450)\uc640 \ubcc4\uce6d \ubcc0\uacbd. \ub204\uac00\u00b7\uc5b8\uc81c\u00b7\ubb34\uc5c7\uc744\u00b7\uba87 \uac74","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/beta-codes":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_codes_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ubca0\ud0c0 \ucc38\uc5ec\ucf54\ub4dc \ubaa9\ub85d(\uc0ac\uc6a9\uc790 \ub9e4\ud551)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]},"post":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_issue_codes_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"count":{"maximum":100,"minimum":1,"type":"integer"},"expiresAt":{"format":"date-time","type":"string"},"issuedTo":{"type":"string"},"prefix":{"example":"DW2-BETA","type":"string"}},"required":["count"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ubca0\ud0c0 \ucc38\uc5ec\ucf54\ub4dc \ubc1c\uae09","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/convenience":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_convenience_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\ub370\uc774\ud130 \ucd9c\ucc98 real(\uc2e4\ub370\uc774\ud130, \uae30\ubcf8) | all | demo(\uc2dc\uc5f0\u00b7\uc2dc\ud5d8)","in":"query","name":"dataset","required":false,"schema":{"type":"string"}},{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud3b8\uc758 \uc9c0\ud45c \u2014 \uc571 AI \uc138\uc158(mode AI\u00b7source APP)\ub9cc. \uc138\uc158\ubcc4 \ubb3c\uc74c \uc218(\uc138\uae30\u00b7\ub290\ub08c\u00b7\ud328\ud134 \ub2f5 + NO_ANSWER \ud589, seed\u00b7prefer\u00b7manual* \ub2e8\uacc4\u00b7reuse:same\u00b7reuse:unify\u00b7FELT \uc81c\uc678, \uc88c\uc6b0 \ubb3c\uc74c sense \ud3ec\ud568)\u00b7\ubb34\uc751\ub2f5 \uc218\u00b7\uc124\uc815\uc5d0 \uac78\ub9b0 \uc2dc\uac04(\ubb3c\uc740 \ud589 t_ms \ucd5c\ub313\uac12, \ucd08)\u00b7\uc124\uc815 \ub4a4 \uc190 \uc870\uc791(phase manual \ud589 \uc218\u00b7amp_delta \ud569, \ub2e8\uacc4)\u00b7\uac80\ucd9c(\ub808\uadf8 \uc911 detect_level \uc788\ub294 \uc218)\u00b7\uc644\ub8cc(COMPLETED)\u00b7\uc88c\uc6b0 \ubb3c\uc74c \uc801\uc911(ai_side_samples.hit). \uc751\ub2f5 {summary, daily[], sessions[](\ucd5c\uadfc\uc21c, limit)}. \uae30\uac04\uc740 started_at \uc758 KST \ub2ec\ub825\uc77c(\uae30\ubcf8 \ucd5c\uadfc 30\uc77c), dataset \uc740 \ubd84\uc11d \ud0ed\uacfc \uac19\uc740 \uaddc\uce59(real = \uc138\uc158 data_origin\u00b7\uacc4\uc815 account_kind \ubaa8\ub450 REAL, \ud0c8\ud1f4\uc790\u00b7\uc6b4\uc601\uc790 \uacc4\uc815 \uc81c\uc678)","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/devices":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_devices_get","parameters":[{"description":"1|true \uc774\uba74 \ub4f1\ub85d \ud574\uc81c(RELEASED)\ub41c \uae30\uae30\ub3c4 \ud3ec\ud568(\uae30\ubcf8: \uc81c\uc678)","in":"query","name":"includeReleased","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub514\ubc14\uc774\uc2a4 \ubaa9\ub85d(\ucd5c\uadfc \ubc30\ud130\ub9ac \ud3ec\ud568). inUse = \uc9c4\ud589 \uc911(STARTED) \uc138\uc158\uc758 \ub808\uadf8(session_devices)\uc5d0 \ud3ec\ud568\ub41c \uae30\uae30(\uc88c/\uc6b0 \ub450 \ub808\uadf8 \uac19\uc740 \uae30\uc900), activeSessionId/StartedAt = \uadf8 \uc138\uc158. \ub4f1\ub85d \ud574\uc81c(RELEASED)\ub294 \uae30\ubcf8 \uc81c\uc678 \u2014 includeReleased=1 \uc774\uba74 \ud3ec\ud568","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/export/ai-dataset":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_dataset_zip_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\ub0b4\ubcf4\ub0b4\uae30 \ud615\uc2dd csv | jsonl | both (\uae30\ubcf8 both, zip \uc548\uc5d0 \ub3d9\ubd09)","in":"query","name":"format","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"AI \ud559\uc2b5\uc6a9 \ube44\uc2dd\ubcc4 \ub370\uc774\ud130\uc14b(zip: \ub370\uc774\ud130 \ud30c\uc77c + manifest.json + DATA_DICTIONARY.md) \u2014 BETA_DATA \ucd5c\uc2e0 \ub3d9\uc758 = 1 \uc778 ACTIVE\u00b7USER \ub9cc \ud3ec\ud568(HEALTH \ud544\uc218 \ub3d9\uc758\ub294 2\ucc28 \ud65c\uc6a9 \uadfc\uac70\uac00 \uc544\ub2c8\ub2e4), \uc8fc\uccb4 \uc2dd\ubcc4\uc790\ub294 \ud658\uacbd\ubcc0\uc218 \uc194\ud2b8 HMAC \uac00\uba85\ud654, \ud0a4\u00b7\ubab8\ubb34\uac8c\ub294 \uad6c\uac04\ud654, \uc900\uc2dd\ubcc4\uc790 \uc9d1\ub2e8\uc774 k(5) \ubbf8\ub9cc\uc778 \uc8fc\uccb4\ub294 \ubaa8\ub4e0 \ud30c\uc77c\uc5d0\uc11c \uc81c\uac70. \uc194\ud2b8 \ubbf8\uc124\uc815 409 EXP_001 / \uc804\ub7c9 \uc81c\uac70 409 EXP_409_KANON","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/export/ai-dataset/preview":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_dataset_preview_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"AI \ud559\uc2b5\uc6a9 \ube44\uc2dd\ubcc4 \ub0b4\ubcf4\ub0b4\uae30 \uc0ac\uc804 \uc810\uac80 \u2014 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc9c0 \uc54a\uace0 \ub300\uc0c1 \uc778\uc6d0\u00b7\uc81c\uc678 \uc0ac\uc720\u00b7\uc900\uc2dd\ubcc4\uc790 \uc9d1\ub2e8(k \ud310\uc815)\u00b7\uc5b5\uc81c \uac74\uc218\u00b7\uacbd\uace0\u00b7\uc194\ud2b8 \uc9c0\ubb38\ub9cc \ubc18\ud658\ud55c\ub2e4. \uc6b4\uc601\uc790\uac00 \ubb34\uc5c7\uc774 \ub098\uac00\ub294\uc9c0 \ubcf4\uace0 \ub098\uc11c \ub0b4\ub824\ubc1b\uac8c \ud558\ub294 \uac83\uc774 \ubaa9\uc801","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/export/analytics.csv":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_export_analytics_csv_get","parameters":[{"description":"\uc6b4\uc601\uc6a9 CSV \ubc94\uc704 trend | breakdown | sessions","in":"query","name":"scope","required":false,"schema":{"type":"string"}},{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\uc9d1\uacc4 \ub2e8\uc704 day | week(\uc6d4\uc694\uc77c \uc2dc\uc791) | month (\uae30\ubcf8 day)","in":"query","name":"bucket","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \ubaa8\ub4dc MASSAGE | AUTO | AUTO_CYCLE | AI | APP_ROUTINE (\ucf64\ub9c8\ub85c \ubcf5\uc218)","in":"query","name":"mode","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \ucd9c\ucc98 APP | DEVICE_STANDALONE","in":"query","name":"source","required":false,"schema":{"type":"string"}},{"description":"\uc138\uc158 \uc0c1\ud0dc STARTED | COMPLETED | ABORTED","in":"query","name":"status","required":false,"schema":{"type":"string"}},{"description":"\ub8e8\ud2f4 ID (0 = \ub8e8\ud2f4 \uc5c6\uc74c)","in":"query","name":"routineId","required":false,"schema":{"type":"string"}},{"description":"\uc2dc\uac01 \uc2e0\ub8b0\ub3c4 EXACT | ESTIMATED | UNKNOWN (\uae30\ubcf8: UNKNOWN \uc81c\uc678 \u2014 \uc77c\ubcc4 \ud1b5\uacc4\uc640 \uac19\uc740 \uaddc\uce59)","in":"query","name":"timeConfidence","required":false,"schema":{"type":"string"}},{"description":"\uc5f0\ub839\ub300 20s | 30s | 40s | 50s | 60s+ (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"ageBand","required":false,"schema":{"type":"string"}},{"description":"\uc131\ubcc4 M | F | NONE (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"gender","required":false,"schema":{"type":"string"}},{"description":"\uc9c1\uc5c5 DESK | STANDING | FIELD | HOME | ETC (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"jobType","required":false,"schema":{"type":"string"}},{"description":"\uc88c\uc2dd \uc2dc\uac04 LT4 | 4_8 | GT8 (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"sittingHours","required":false,"schema":{"type":"string"}},{"description":"\uc6b4\ub3d9 \ube48\ub3c4 RARE | W1_2 | W3+ (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"exerciseFreq","required":false,"schema":{"type":"string"}},{"description":"\ubd88\ud3b8 \ubd80\uc704 FATIGUE | SWELLING | CRAMP (\uac1c\uc778 \uc18d\uc131 \u2014 k \uc5b5\uc81c \ub300\uc0c1)","in":"query","name":"concern","required":false,"schema":{"type":"string"}},{"description":"\ub370\uc774\ud130 \ucd9c\ucc98 real(\uc2e4\ub370\uc774\ud130, \uae30\ubcf8) | all | demo(\uc2dc\uc5f0\u00b7\uc2dc\ud5d8)","in":"query","name":"dataset","required":false,"schema":{"type":"string"}},{"description":"all(\uc6b4\uc601 \ud1b5\uacc4, \uae30\ubcf8) | beta(BETA_DATA \ub3d9\uc758\uc790\ub9cc). \ud559\uc2b5\uc6a9 \ub0b4\ubcf4\ub0b4\uae30\ub294 \ud56d\uc0c1 beta \ub85c \uac15\uc81c\ub41c\ub2e4","in":"query","name":"consent","required":false,"schema":{"type":"string"}},{"description":"\uc18c\uc9d1\ub2e8 \ubcf4\ud638 \uc784\uacc4(\ub300\uc0c1\uc790 \uc218). \uae30\ubcf8 5 \uc774\uba70 5 \ubbf8\ub9cc\uc73c\ub85c\ub294 \ub0ae\ucd9c \uc218 \uc5c6\ub2e4","in":"query","name":"kThreshold","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc6b4\uc601\uc6a9(\ube44\ud559\uc2b5) \ubd84\uc11d CSV \ucd94\ucd9c \u2014 \ubd84\uc11d \ud654\uba74\uacfc \uac19\uc740 \ud544\ud130\u00b7\uac19\uc740 k \uac8c\uc774\ud2b8. \ud0a4\u00b7\ubab8\ubb34\uac8c\u00b7BMI\u00b7\ubd88\ud3b8 \ubd80\uc704\u00b7\ubbfc\uac10\ub3c4\u00b7\uc0ac\uc6a9 \ud6c4 \uc0c1\ud0dc \ub4f1 \uac74\uac15 \uc18d\uc131\uc740 \uc5b4\ub5a4 scope \uc5d0\uc11c\ub3c4 \ub098\uac00\uc9c0 \uc54a\ub294\ub2e4(\ud558\ub4dc denylist). \ud559\uc2b5\uc6a9 \ub370\uc774\ud130\uc14b\uacfc\ub294 \ub2e4\ub978 \uacbd\ub85c\u00b7\ub2e4\ub978 \ud30c\uc77c\uba85\u00b7\ub2e4\ub978 \uac10\uc0ac action \uc774\ub2e4","tags":["\uc6b4\uc601(\ubd84\uc11d)"]}},"/admin/export/feedbacks":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"export_feedbacks_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud53c\ub4dc\ubc31\u00b7\uc124\ubb38 CSV \ucd94\ucd9c","tags":["\uc6b4\uc601(\ubc1c\uc8fc\ucc98)"]}},"/admin/export/sessions":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"export_sessions_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc0ac\uc6a9\uc774\ub825 CSV \ucd94\ucd9c","tags":["\uc6b4\uc601(\ubc1c\uc8fc\ucc98)"]}},"/admin/feedbacks":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_feedbacks_get","parameters":[{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"1\ud0ed \ud53c\ub4dc\ubc31 \ubaa9\ub85d(\ucd5c\uadfc\uc21c)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/routines":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_routines_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub8e8\ud2f4 \ub9c8\uc2a4\ud130 \uc804\uccb4(\ube44\ud65c\uc131 \ud3ec\ud568, \ub2e8\uacc4 \ud3ec\ud568)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/sessions":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_sessions_get","parameters":[{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc138\uc158 \ubaa9\ub85d(\ucd5c\uadfc\uc21c). v1.2.0: mode\u00b7source\u00b7timeConfidence\u00b7legCount\u00b7hasAiMetrics \ucd94\uac00(\uae30\uc874 \ud0a4 \uc720\uc9c0). parentSessionId = \uc774 \uae30\uae30 \ub85c\uadf8\uac00 \uc9dd\uc9c0\uc5b4\uc9c4 \uc571 AI \uc138\uc158 id(\uc5c6\uc73c\uba74 null, 2026-09-24)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/sessions/{session_id}":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_session_detail_get","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc138\uc158 \uc0c1\uc138 \u2014 session(3\ud29c\ud50c \ud3ec\ud568)\u00b7legs[](session_devices+BLE \uc2dd\ubcc4\uc790)\u00b7aiMetrics[](ai_session_metrics+rampSteps[])\u00b7feedback\u00b7surveys[]\u00b7events[] (v1.2.0)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/sessions/{session_id}/ai-windows.csv":{"get":{"operationId":"_admin_session_windows_csv_get","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"_admin_session_windows_csv","tags":["\uae30\ud0c0"]}},"/admin/stats/overview":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"admin_overview_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ubca0\ud0c0 \uc6b4\uc601 \ud604\ud669(\uc0ac\uc6a9\uc790\u00b7\uc138\uc158\u00b7\ud53c\ub4dc\ubc31\u00b7WAU)","tags":["\uc6b4\uc601(\ubc1c\uc8fc\ucc98)"]}},"/admin/surveys":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_surveys_get","parameters":[{"description":"\ucd5c\ub300 \uac74\uc218(\uae30\ubcf8 200, \ucd5c\ub300 2000)","in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uac04\uc774 \uc124\ubb38 \uc751\ub2f5 \ubaa9\ub85d(\ucd5c\uadfc\uc21c)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/user-meta":{"get":{"operationId":"_an_user_meta_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"_an_user_meta","tags":["\uae30\ud0c0"]}},"/admin/users":{"get":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_admin_users_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc0ac\uc6a9\uc790 \ubaa9\ub85d(\uc138\uc158 \uc218\u00b7\ucd5c\uadfc \uc138\uc158 \ud3ec\ud568)","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/admin/users/{user_id}/alias":{"patch":{"description":"\uad00\ub9ac\uc790(ADMIN) \ud1a0\ud070 \ud544\uc694.","operationId":"_an_set_alias_patch","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"accountKind":{"description":"\uacc4\uc815 \uc131\uaca9. REAL \uc774 \uc544\ub2c8\uba74 \ud559\uc2b5 \ub370\uc774\ud130\uc14b\uc5d0\uc11c \uc81c\uc678\ub41c\ub2e4","enum":["REAL","TEST","DEMO","INTERNAL"],"type":"string"},"alias":{"description":"\uc6b4\uc601 \ud654\uba74 \ud45c\uae30\uc6a9 \ubcc4\uce6d. null \ub610\ub294 \ube48 \ubb38\uc790\uc5f4\uc774\uba74 \ud574\uc81c. \uc2e4\uba85\u00b7\uc774\uba54\uc77c(@ \ud3ec\ud568)\u00b7\uc804\ud654\ubc88\ud638(\uc22b\uc790 7\uc790\ub9ac \uc774\uc0c1 \uc5f0\uc18d)\u00b7\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \ud615\ud0dc\u00b7URL \uc740 \uac70\ubd80\ud55c\ub2e4. \ubcc4\uce6d\uc740 \uc6b4\uc601 \ud654\uba74\uacfc \uc6b4\uc601 \uba54\ubaa8\uc5d0\ub9cc \uc4f0\uc774\uba70 AI \ud559\uc2b5\uc6a9 \ube44\uc2dd\ubcc4 \ub0b4\ubcf4\ub0b4\uae30\uc5d0\ub294 \ud3ec\ud568\ub418\uc9c0 \uc54a\ub294\ub2e4","example":"\ubca0\ud0c0-01","maxLength":32,"nullable":true,"type":"string"},"excludeFromDataset":{"description":"true \uc774\uba74 \ub3d9\uc758 \uc5ec\ubd80\uc640 \ubb34\uad00\ud558\uac8c \ud559\uc2b5 \ub370\uc774\ud130\uc14b\uc5d0\uc11c \uc81c\uc678","type":"boolean"},"note":{"description":"\uc6b4\uc601 \uba54\ubaa8(\uc120\ud0dd). \ub0b4\ubcf4\ub0b4\uae30\uc5d0 \ud3ec\ud568\ub418\uc9c0 \uc54a\ub294\ub2e4","nullable":true,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud45c\uc2dc\uc6a9 \ubcc4\uce6d \uc218\uc815(\uc6b4\uc601 \ud654\uba74 \ud45c\uae30 \uc804\uc6a9) \u2014 user_id\u00b7email\u00b7users.nickname \uc740 \ubc14\ub00c\uc9c0 \uc54a\ub294\ub2e4. \ubcc4\uce6d\u00b7\uba54\ubaa8\ub294 \uc5b4\ub5a4 \ub0b4\ubcf4\ub0b4\uae30\uc5d0\ub3c4 \ud3ec\ud568\ub418\uc9c0 \uc54a\ub294\ub2e4. \ubcc0\uacbd \ub0b4\uc5ed\uc740 \uac10\uc0ac \ub85c\uadf8\uc5d0 \ub0a8\ub294\ub2e4","tags":["\uc6b4\uc601(\ud655\uc7a5)"]}},"/auth/login":{"post":{"operationId":"login_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"}},"summary":"\ub85c\uadf8\uc778, Access/Refresh \ud1a0\ud070 \ubc1c\uae09 (\uc131\uacf5 201)","tags":["\uc778\uc99d"]}},"/auth/logout":{"post":{"operationId":"logout_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud1a0\ud070 \ud3d0\uae30(\ub85c\uadf8\uc544\uc6c3)","tags":["\uc778\uc99d"]}},"/auth/refresh":{"post":{"operationId":"refresh_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"}},"summary":"\ud1a0\ud070 \uc7ac\ubc1c\uae09(\ub9ac\ud504\ub808\uc2dc \ud1a0\ud070) (\uc131\uacf5 201)","tags":["\uc778\uc99d"]}},"/auth/register":{"post":{"operationId":"register_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"betaCode":{"example":"DW2-BETA-0001","type":"string"},"email":{"type":"string"},"nickname":{"type":"string"},"password":{"minLength":8,"type":"string"}},"required":["email","password","betaCode","nickname"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"}},"summary":"\ubca0\ud0c0 \ucc38\uc5ec\ucf54\ub4dc \uac80\uc99d \ubc0f \ud68c\uc6d0\uac00\uc785 (\uc131\uacf5 201; \uc774\uba54\uc77c \uc911\ubcf5 409 AUTH_003 \uc744 \ucf54\ub4dc \uc624\ub958 AUTH_001/002 \ubcf4\ub2e4 \uba3c\uc800 \ud310\uc815)","tags":["\uc778\uc99d"]}},"/devices":{"get":{"operationId":"list_devices_get","parameters":[{"description":"1|true \uc774\uba74 \ub4f1\ub85d \ud574\uc81c(RELEASED)\ub41c \uae30\uae30\ub3c4 \ud3ec\ud568(\uae30\ubcf8: \uc81c\uc678)","in":"query","name":"includeReleased","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub0b4 \ub514\ubc14\uc774\uc2a4 \ubaa9\ub85d \uc870\ud68c. \ub4f1\ub85d \ud574\uc81c(RELEASED)\ub41c \uae30\uae30\ub294 \uae30\ubcf8 \uc81c\uc678 \u2014 includeReleased=1 \uc774\uba74 \ud3ec\ud568(2026-09-24 \ub300\ud45c \uc9c0\uc2dc)","tags":["\ub514\ubc14\uc774\uc2a4"]},"post":{"operationId":"register_device_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"bleIdentifier":{"example":"DW2-0A3F","type":"string"},"fwVersion":{"example":"0.8","type":"string"},"hwId":{"description":"\uae30\uae30 \ud558\ub4dc\uc6e8\uc5b4 \uc2dd\ubcc4\uc790(devices.hw_id) \u2014 \uad11\uace0\uba85 \ub4a4 4\uc790\ub9ac, Android \ub294 '@MAC' \uc811\ubbf8(iOS \ub294 4\uc790\ub9ac\ub9cc). \uc120\ud0dd. \ube48 \ubb38\uc790\uc5f4/null \uc774\uba74 \uae30\uc874 \uac12 \uc720\uc9c0. \uc751\ub2f5 device.hwId \ub85c \ud655\uc778","example":"0A3F@A4:CF:12:AB:0A:3F","type":"string"},"model":{"example":"DW2","type":"string"}},"required":["bleIdentifier"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub514\ubc14\uc774\uc2a4 \ub4f1\ub85d\u00b7\uc7ac\uc5f0\uacb0 upsert(BLE \uc2dd\ubcc4\uc790\u00b7\ubaa8\ub378\u00b7\ud38c\uc6e8\uc5b4 \ubc84\uc804\u00b7hwId). \uac19\uc740 \uc0ac\uc6a9\uc790+bleIdentifier \uba74 \uae30\uc874 \ud589 \uac31\uc2e0(201). hwId(\uc120\ud0dd)\ub294 \uc800\uc7a5\u00b7\uac31\uc2e0\ub418\uba70 \ube48 \uac12\uc774\uba74 \uae30\uc874 \uac12 \uc720\uc9c0. \uc751\ub2f5 device \uac1d\uccb4\uc5d0 hwId(=hw_id) \ud3ec\ud568","tags":["\ub514\ubc14\uc774\uc2a4"]}},"/devices/{device_id}":{"delete":{"operationId":"release_device_delete","parameters":[{"in":"path","name":"device_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub514\ubc14\uc774\uc2a4 \ub4f1\ub85d \ud574\uc81c(\ubb3c\ub9ac \uc0ad\uc81c \uc544\ub2d8 \u2014 status=RELEASED \ud45c\uc2dd. hw_id\u00b7\ub85c\uadf8 \ubcf4\uc874, \uc7ac\ub4f1\ub85d POST /devices \ub85c CONNECTED \ubcf5\uadc0)","tags":["\ub514\ubc14\uc774\uc2a4"]}},"/devices/{device_id}/logs":{"post":{"operationId":"device_log_post","parameters":[{"in":"path","name":"device_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"batteryPct":{"maximum":100,"minimum":0,"type":"integer"},"connState":{"enum":["CONNECTED","DISCONNECTED","RECONNECTED"],"type":"string"}},"required":["connState"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc5f0\uacb0 \uc0c1\ud0dc\u00b7\ubc30\ud130\ub9ac \ub85c\uadf8 \uc218\uc9d1","tags":["\ub514\ubc14\uc774\uc2a4"]}},"/health":{"get":{"operationId":"health_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"schemaVersion":{"example":5,"type":"integer"},"status":{"example":"ok","type":"string"},"time":{"format":"date-time","type":"string"},"users":{"type":"integer"},"version":{"example":"1.2.0","type":"string"}},"type":"object"},"success":{"example":true,"type":"boolean"}},"type":"object"}}},"description":"\uc131\uacf5 \u2014 { success: true, data: { status, time, users, version, schemaVersion } }"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc11c\ubc84 \uc624\ub958 \u2014 { success: false, error: { code: \"SRV_500\", message } }"}},"summary":"\uc11c\ubc84 \uc0c1\ud0dc \ud655\uc778 \u2014 version(API \ubc84\uc804)\u00b7schemaVersion(DB \uc2a4\ud0a4\ub9c8 \ubc84\uc804)\u00b7users(\uac00\uc785\uc790 \uc218)\u00b7time(UTC). \uc778\uc99d \ubd88\ud544\uc694","tags":["\uc6b4\uc601(\ubc1c\uc8fc\ucc98)"]},"servers":[{"description":"\ub8e8\ud2b8(\uc6b4\uc601 \uc5d4\ub4dc\ud3ec\uc778\ud2b8)","url":"/"}]},"/logs/events":{"post":{"operationId":"app_events_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"events":{"items":{"properties":{"eventName":{"example":"screen_view","type":"string"},"occurredAt":{"format":"date-time","type":"string"},"params":{"type":"object"},"screenId":{"example":"HOM-01","type":"string"}},"required":["eventName","occurredAt"],"type":"object"},"type":"array"}},"required":["events"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc571 \uc774\uc6a9 \uc774\ubca4\ud2b8 \ub85c\uadf8 \ubc30\uce58 \uc218\uc9d1","tags":["\ub85c\uadf8"]}},"/notifications":{"get":{"operationId":"list_notis_get","parameters":[{"description":"true \uc774\uba74 \ubbf8\ud655\uc778\ub9cc","in":"query","name":"unread","required":false,"schema":{"type":"string"}},{"description":"\ud398\uc774\uc9c0(1\ubd80\ud130)","in":"query","name":"page","required":false,"schema":{"type":"string"}},{"description":"\ud398\uc774\uc9c0 \ud06c\uae30(\uae30\ubcf8: /sessions 20, /notifications 50, \ucd5c\ub300 200)","in":"query","name":"size","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc54c\ub9bc\ud568 \uc870\ud68c(\ubbf8\ud655\uc778 \ud544\ud130\u00b7\ud398\uc774\uc9c0). \uc751\ub2f5 { items[], unreadCount, meta{totalCount,page,size} }, sentAt/readAt \uc740 ISO 8601 'Z'","tags":["\uc54c\ub9bc"]},"post":{"operationId":"create_noti_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"body":{"type":"string"},"deepLink":{"example":"dw2://routine/1/prepare","type":"string"},"title":{"type":"string"},"type":{"enum":["ROUTINE","REMIND","WEEKLY_REPORT","NOTICE"],"type":"string"}},"required":["type","title"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc54c\ub9bc \ubc1c\uc1a1 \uc774\ub825 \uae30\ub85d(\uc571 \ub85c\uceec \uc54c\ub9bc \ubc1c\uc1a1 \uc2dc \ud638\ucd9c)","tags":["\uc54c\ub9bc"]}},"/notifications/{noti_id}/read":{"patch":{"operationId":"read_noti_patch","parameters":[{"in":"path","name":"noti_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc54c\ub9bc \uc5f4\ub78c \ucc98\ub9ac","tags":["\uc54c\ub9bc"]}},"/recommendations/today":{"get":{"operationId":"rec_today_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc624\ub298\uc758 \uad8c\uc7a5 \ub8e8\ud2f4 \uc870\ud68c(\ucd94\ucc9c \uaddc\uce59 \ubc84\uc804\u00b7\uadfc\uac70 \ud3ec\ud568)","tags":["\ucd94\ucc9c"]}},"/reports/daily":{"get":{"operationId":"report_daily_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc77c\ubcc4 \uc0ac\uc6a9 \ud1b5\uacc4(\ube48 \ub0a0\uc9dc 0 \ucc44\uc6c0)","tags":["\ub9ac\ud3ec\ud2b8"]}},"/reports/routines":{"get":{"operationId":"report_routines_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub8e8\ud2f4\ubcc4 \uc0ac\uc6a9 \uc9d1\uacc4 + \ud53c\ub4dc\ubc31 \ubd84\ud3ec","tags":["\ub9ac\ud3ec\ud2b8"]}},"/reports/summary":{"get":{"operationId":"report_summary_get","parameters":[{"description":"weekly | monthly (\uae30\ubcf8 weekly)","in":"query","name":"period","required":false,"schema":{"type":"string"}},{"description":"\uae30\uc900\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc, \uae30\ubcf8 \uc624\ub298)","in":"query","name":"date","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uae30\uac04 \uc694\uc57d(\ud69f\uc218\u00b7\uc2dc\uac04\u00b7\uc804\uae30\uac04 \ub300\ube44\u00b7\ub2ec\uc131\ub960)","tags":["\ub9ac\ud3ec\ud2b8"]}},"/routines":{"get":{"operationId":"list_routines_get","parameters":[{"description":"\ubaa9\uc801 \ucf54\ub4dc (RECOVERY|WARMUP|COOLDOWN|SWELLING|EXERCISE|OFFICE)","in":"query","name":"purpose","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub8e8\ud2f4 \ubaa9\ub85d \uc870\ud68c(\ubaa9\uc801 \ud544\ud130, \ud65c\uc131 \ub8e8\ud2f4\ub9cc)","tags":["\ub8e8\ud2f4"]}},"/routines/{routine_id}":{"get":{"operationId":"routine_detail_get","parameters":[{"in":"path","name":"routine_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub8e8\ud2f4 \uc0c1\uc138(\ub2e8\uacc4 \uad6c\uc131 \ud3ec\ud568) \uc870\ud68c","tags":["\ub8e8\ud2f4"]}},"/sessions":{"get":{"operationId":"list_sessions_get","parameters":[{"description":"\uc2dc\uc791\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"\uc885\ub8cc\uc77c (YYYY-MM-DD, KST \ub2ec\ub825 \ub0a0\uc9dc)","in":"query","name":"to","required":false,"schema":{"type":"string"}},{"description":"\ud398\uc774\uc9c0(1\ubd80\ud130)","in":"query","name":"page","required":false,"schema":{"type":"string"}},{"description":"\ud398\uc774\uc9c0 \ud06c\uae30(\uae30\ubcf8: /sessions 20, /notifications 50, \ucd5c\ub300 200)","in":"query","name":"size","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc0ac\uc6a9 \uc774\ub825 \ubaa9\ub85d \uc870\ud68c(\uae30\uac04 \ud544\ud130\u00b7\ud398\uc774\uc9c0\ub124\uc774\uc158)","tags":["\uc0ac\uc6a9\uc774\ub825"]},"post":{"operationId":"start_session_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"clientSessionUuid":{"format":"uuid","type":"string"},"deviceId":{"description":"\ub808\uac70\uc2dc \ub2e8\uc77c \uae30\uae30(primary leg). devices[] \uac00 \uc788\uc73c\uba74 leg 0 \uc758 deviceId \uac00 \uc6b0\uc120","type":"integer"},"devices":{"description":"v1.2.0: \uae30\uae30 \ub808\uadf8(\ucd5c\ub300 2). \uc5c6\uc73c\uba74 deviceId \ub85c leg 0 \uc0dd\uc131","items":{"properties":{"bodySite":{"enum":["LEFT","RIGHT","UNKNOWN"],"type":"string"},"deviceId":{"type":"integer"},"legIndex":{"maximum":1,"minimum":0,"type":"integer"}},"type":"object"},"maxItems":2,"type":"array"},"mode":{"default":"APP_ROUTINE","enum":["MASSAGE","AUTO","AUTO_CYCLE","AI","APP_ROUTINE"],"type":"string"},"routineId":{"type":"integer"},"source":{"default":"APP","enum":["APP","DEVICE_STANDALONE"],"type":"string"},"startLevel":{"description":"\uc2dc\uc791 \uac15\ub3c4 level 1~10 (\ubc94\uc704 \uc678 VALID_003)","maximum":10,"minimum":1,"type":"integer"},"startedAt":{"description":"UTC ISO 8601 (\uc608 2026-09-05T03:28:44Z)","format":"date-time","type":"string"},"timeConfidence":{"default":"EXACT","enum":["EXACT","ESTIMATED","UNKNOWN"],"type":"string"}},"required":["routineId","clientSessionUuid"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub8e8\ud2f4 \uc138\uc158 \uc2dc\uc791 \uae30\ub85d \uc0dd\uc131(clientSessionUuid \ub85c \uc911\ubcf5 \ubc29\uc9c0). \uc751\ub2f5\uc5d0 startLevel(\uc2dc\uc791 \uac15\ub3c4)\u00b7avgLevel(\uc885\ub8cc \uc804 null) \ud3ec\ud568. v1.2.0: \uc120\ud0dd \ud544\ub4dc devices[](2\uae30\uae30 \ub808\uadf8)\u00b7mode\u00b7source\u00b7timeConfidence, \uc751\ub2f5\uc5d0 devices/mode/source/timeConfidence \ucd94\uac00","tags":["\uc0ac\uc6a9\uc774\ub825"]}},"/sessions/import":{"post":{"operationId":"import_sessions_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"sessions":{"items":{"properties":{"abortReason":{"description":"0 \uc815\uc0c1 1 \uc2dc\uac04\uc0c1\ud55c 2 \uc0ac\uc6a9\uc790STOP 3 \ucda9\uc804 4 \uc800\uc804\uc555 5 \uc13c\uc11c\uace0\uc7a5 6 \uc2e0\ud638\uc18c\uc2e4 7 \uc6cc\uce58\ub3c5 8 \ubaa8\ub4dc\uc804\ud658","maximum":8,"minimum":0,"type":"integer"},"battEnd":{"maximum":100,"minimum":0,"type":"integer"},"battStart":{"maximum":100,"minimum":0,"type":"integer"},"bodySite":{"enum":["LEFT","RIGHT","UNKNOWN"],"nullable":true,"type":"string"},"bootEpochId":{"type":"integer"},"clientSessionUuid":{"description":"UUIDv5(ns 7d570000-9d9d-4f24-8b3e-5c0f5b0e2026, '<deviceHwId>:<bootId>:<seq>')","format":"uuid","type":"string"},"detectCycles":{"type":"integer"},"detectOk":{"type":"boolean"},"deviceHwId":{"type":"string"},"deviceId":{"nullable":true,"type":"integer"},"durationSec":{"type":"integer"},"endLevel":{"maximum":10,"minimum":0,"type":"integer"},"foundLevel":{"maximum":10,"minimum":0,"nullable":true,"type":"integer"},"mode":{"default":"AI","enum":["MASSAGE","AUTO","AUTO_CYCLE","AI"],"type":"string"},"paramRevision":{"type":"integer"},"rampSteps":{"type":"integer"},"routineId":{"description":"\uc120\ud0dd(\uae30\ubcf8 0 = \ub8e8\ud2f4 \uc5c6\uc74c)","type":"integer"},"sessionSeq":{"type":"integer"},"startLevel":{"maximum":10,"minimum":0,"type":"integer"},"startedAt":{"description":"\uc5c6\uc73c\uba74 timeConfidence UNKNOWN","format":"date-time","nullable":true,"type":"string"},"timeConfidence":{"enum":["EXACT","ESTIMATED","UNKNOWN"],"type":"string"}},"required":["clientSessionUuid","durationSec"],"type":"object"},"maxItems":512,"type":"array"}},"required":["sessions"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uae30\uae30 \ub2e8\ub3c5 \uc138\uc158(SPIFFS \ub85c\uadf8) \ubc30\uc5f4 \uc77c\uad04 \uc5c5\ub85c\ub4dc \u2014 \uc644\ub8cc \uc0c1\ud0dc\ub85c \uc0dd\uc131, clientSessionUuid(UUIDv5)\u00b7\uae30\uae30 3\ud29c\ud50c \uba71\ub4f1. \uc751\ub2f5 results[]{clientSessionUuid, status created|duplicate, sessionId, linkedTo?}. daily_stats \ub294 timeConfidence\u2260UNKNOWN \ub9cc \ubc18\uc601 (v1.2.0). AI \ub85c\uadf8\uac00 \uac19\uc740 \uae30\uae30\u00b7\uacb9\uce58\ub294 \uc2dc\uac01(\u00b160\ucd08)\uc758 \uc571 AI \uc138\uc158\uacfc \uc9dd\uc774\uba74 linkedTo=\uc571 \uc138\uc158 id(\ud589\uc740 \ub9cc\ub4e4\ub418 \ud559\uc2b5\u00b7\ud1b5\uacc4 \uc81c\uc678, 2026-09-24)","tags":["\uc0ac\uc6a9\uc774\ub825"]}},"/sessions/{session_id}":{"patch":{"operationId":"end_session_patch","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"avgLevel":{"description":"\ud3c9\uade0 \uac15\ub3c4 1.0~10.0 (\ubc94\uc704 \uc678 VALID_003)","maximum":10,"minimum":1,"type":"number"},"durationSec":{"type":"integer"},"endedAt":{"description":"UTC ISO 8601. \uc77c\ubcc4 \ud1b5\uacc4 \ub0a0\uc9dc\ub294 \uc774 \uac12\uc758 KST \ub2ec\ub825 \ub0a0\uc9dc","format":"date-time","type":"string"},"status":{"enum":["COMPLETED","ABORTED"],"type":"string"}},"required":["status","endedAt","durationSec"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc138\uc158 \uc885\ub8cc\u00b7\uc218\ud589 \uacb0\uacfc \uc800\uc7a5(\uc644\ub8cc/\uc911\ub2e8), \uc8fc\uac04 \ub2ec\uc131 \ud604\ud669 \ubc18\ud658. \uacbd\ub85c\uc758 session_id \ub85c \uc2dd\ubcc4\ud558\uba70 \ubcf8\ubb38\uc5d0 clientSessionUuid \ub294 \uc5c6\uc74c","tags":["\uc0ac\uc6a9\uc774\ub825"]}},"/sessions/{session_id}/ai-feel":{"post":{"operationId":"add_ai_feel_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"add_ai_feel","tags":["\uae30\ud0c0"]}},"/sessions/{session_id}/ai-metrics":{"post":{"operationId":"add_ai_metrics_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"abortReason":{"nullable":true,"type":"string"},"baselineLevel":{"maximum":10,"minimum":0,"type":"integer"},"detectConfidence":{"maximum":1,"minimum":0,"nullable":true,"type":"number"},"detectLatencyMs":{"nullable":true,"type":"integer"},"detectLevel":{"maximum":10,"minimum":0,"nullable":true,"type":"integer"},"detectMethod":{"description":"\uac80\ucd9c \ubc29\uc2dd. \uc571 AI \uc138\uc158\uacfc \uae30\uae30 \ub2e8\ub3c5 \uc138\uc158(/sessions/import \uc790\ub3d9 \uc0dd\uc131) \ubaa8\ub450 DEVICE_ACCEL(ICM-20600 \uac00\uc18d\ub3c4 \ud504\ub85c\ube0c)","enum":["DEVICE_ACCEL"],"type":"string"},"finalLevel":{"maximum":10,"minimum":0,"type":"integer"},"legIndex":{"default":0,"maximum":1,"minimum":0,"type":"integer"},"maxLevelReached":{"maximum":10,"minimum":0,"type":"integer"},"paramRevision":{"type":"integer"},"proposedFeedback":{"enum":["TOO_LOW","OK","TOO_HIGH"],"nullable":true,"type":"string"},"proposedLevel":{"maximum":10,"minimum":0,"nullable":true,"type":"integer"},"proposedSource":{"enum":["DEVICE","SERVER","RULE"],"type":"string"},"rampStartLevel":{"maximum":10,"minimum":0,"type":"integer"},"rampSteps":{"items":{"properties":{"accelPeak":{"type":"number"},"accelRms":{"type":"number"},"detected":{"type":"boolean"},"dwellMs":{"type":"integer"},"level":{"maximum":10,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"},"satisfaction":{"maximum":5,"minimum":1,"nullable":true,"type":"integer"},"uptitrationCount":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub808\uadf8\ubcc4 AI \uc9c0\ud45c(\uac80\ucd9c \uac15\ub3c4\u00b7\uc81c\uc548 \uac15\ub3c4\u00b7\ud53c\ub4dc\ubc31\u00b7\ub9cc\uc871\ub3c4) + \ub7a8\ud504\uc5c5 \uacc4\ub2e8 \uc694\uc57d \uc800\uc7a5 \u2192 (user, bodySite) \ud559\uc2b5 \uc7ac\uacc4\uc0b0 (v1.2.0)","tags":["AI \uac1c\uc778\ud654"]}},"/sessions/{session_id}/ai-side":{"post":{"operationId":"add_ai_side_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"add_ai_side","tags":["\uae30\ud0c0"]}},"/sessions/{session_id}/ai-windows":{"post":{"operationId":"add_ai_windows_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"add_ai_windows","tags":["\uae30\ud0c0"]}},"/sessions/{session_id}/events":{"post":{"operationId":"session_events_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"events":{"items":{"properties":{"eventType":{"enum":["LEVEL_CHANGE","PAUSE","RESUME","STEP_CHANGE"],"type":"string"},"level":{"description":"level 0~10 (0 = \uc815\uc9c0)","maximum":10,"minimum":0,"type":"integer"},"occurredAt":{"format":"date-time","type":"string"}},"required":["eventType","occurredAt"],"type":"object"},"type":"array"}},"required":["events"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc138\uc158 \uc774\ubca4\ud2b8(\uac15\ub3c4\ubcc0\uacbd\u00b7\uc77c\uc2dc\uc815\uc9c0 \ub4f1) \uc77c\uad04 \uc800\uc7a5","tags":["\uc0ac\uc6a9\uc774\ub825"]}},"/sessions/{session_id}/feedback":{"post":{"operationId":"add_feedback_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"afterState":{"enum":["REFRESHED","SAME","STIFF"],"type":"string"},"comfort":{"enum":["COMFORT","NEUTRAL","UNCOMFORT"],"type":"string"},"feedbackLatencySec":{"minimum":0,"type":"integer"},"feedbackSource":{"enum":["APP_PROMPT","APP_POST","RETRO","NONE"],"type":"string"},"intensity":{"enum":["WEAK","GOOD","STRONG"],"type":"string"},"legFeedback":{"items":{"properties":{"intensity":{"enum":["WEAK","GOOD","STRONG"],"type":"string"},"legIndex":{"maximum":1,"minimum":0,"type":"integer"}},"required":["intensity"],"type":"object"},"type":"array"},"proposedFeedback":{"description":"v1.2.0: \ucd08\uae30 \ucd94\ucc9c \uac15\ub3c4 \ud53c\ub4dc\ubc31","enum":["TOO_LOW","OK","TOO_HIGH"],"type":"string"}},"required":["intensity","comfort"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"1\ud0ed \ud53c\ub4dc\ubc31 \uc800\uc7a5(\uc138\uc158\ub2f9 1\ud68c), \ub2e4\uc74c \uac15\ub3c4 \ud78c\ud2b8 \ubc18\ud658. v1.2.0 \uc120\ud0dd: proposedFeedback\u00b7feedbackLatencySec\u00b7feedbackSource\u00b7legFeedback[]","tags":["\ud53c\ub4dc\ubc31"]}},"/sessions/{session_id}/site":{"patch":{"operationId":"patch_session_site_patch","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"bodySite":{"enum":["LEFT","RIGHT","UNKNOWN"],"type":"string"},"legIndex":{"default":0,"maximum":1,"minimum":0,"type":"integer"},"siteSource":{"default":"USER","enum":["USER","AUTO","UNSET"],"type":"string"}},"required":["bodySite"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub808\uadf8 \uc88c\uc6b0(bodySite) \uc0ac\ud6c4 \uc815\uc815 \u2014 \uc11c\ubc84\ub294 \ud310\uc815\ud558\uc9c0 \uc54a\uace0 \uae30\ub85d\ub9cc (v1.2.0)","tags":["\uc0ac\uc6a9\uc774\ub825"]}},"/sessions/{session_id}/survey":{"post":{"operationId":"add_survey_post","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"freeText":{"type":"string"},"proposedLevelFeedback":{"description":"v1.2.0: question_code AI_PROPOSED_LEVEL_FEEDBACK","enum":["TOO_LOW","OK","TOO_HIGH"],"type":"string"},"satisfaction":{"maximum":5,"minimum":1,"type":"integer"},"stateChange":{"enum":["BETTER","SAME","WORSE"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uac04\uc774 \uc124\ubb38 \uc751\ub2f5 \uc800\uc7a5(\ub9cc\uc871\ub3c4\u00b7\uc0c1\ud0dc\ubcc0\ud654\u00b7\uc790\uc720\uc758\uacac). v1.2.0 \uc120\ud0dd: proposedLevelFeedback(AI_PROPOSED_LEVEL_FEEDBACK)","tags":["\ud53c\ub4dc\ubc31"]}},"/users/me":{"delete":{"operationId":"withdraw_delete","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud68c\uc6d0 \ud0c8\ud1f4(\uac1c\uc778\uc815\ubcf4 \ud30c\uae30\u00b7\ub85c\uadf8\uc778 \ucc28\ub2e8)","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]},"get":{"operationId":"me_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub0b4 \uc815\ubcf4\u00b7\uc628\ubcf4\ub529 \uc644\ub8cc \uc5ec\ubd80 \uc870\ud68c","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]},"patch":{"operationId":"patch_me_patch","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"nickname":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ub2c9\ub124\uc784 \ub4f1 \uae30\ubcf8 \uc815\ubcf4 \uc218\uc815","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]}},"/users/me/ai-params":{"get":{"operationId":"get_ai_params_get","parameters":[{"description":"\ubd80\uc704 LEFT | RIGHT | UNKNOWN (\uae30\ubcf8 UNKNOWN = \uc0ac\uc6a9\uc790 \ub2e8\uc704 \ud480\ub9c1)","in":"query","name":"bodySite","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\ud604\ud589 \uac1c\uc778\ud654 \ud30c\ub77c\ubbf8\ud130(gos-ai-1.0) + \uae30\uae30\uc5d0 \uadf8\ub300\ub85c \uc4f8 48B DwAiParams \ube14\ub86d(blobBase64\u00b7blobCrc16). \uc774\ub825 \uc5c6\uc73c\uba74 \ucf5c\ub4dc\uc2a4\ud0c0\ud2b8 revision \uc989\uc2dc \uc0dd\uc131. autoRamp \ub294 S1 \uc5d0\uc11c \ud56d\uc0c1 false (v1.2.0). stim = \ud559\uc2b5 \uc790\uadf9(freqIdx\u00b7pwIdx\u00b7pattern\u00b7patterns, \uc5c6\uc73c\uba74 null) + picks[{pattern, freqIdx, pwIdx, dwellSec}] = \uc9c0\ub09c\ubc88 \uace0\ub978 \uc790\uadf9 \ubaa9\ub85d\u00b7\uc11e\uae30 \uc2dc\uac04 60/120/180\ucd08(LIKE \uc774\ub825 \uc5c6\uc73c\uba74 \ud0a4 \uc5c6\uc74c, 2026-09-29). pwIdx = \ud384\uc2a4\ud3ed \ubd80\ud638 0\u00b71\u00b72(500\u00b7300\u00b7200 \u00b5s) \ub610\ub294 10~60 \uc758 5 \ubc30\uc218(\u00d7 10 \u00b5s, 2026-09-30 fw 0.14 \u2014 \uadf8 \ubc16\uc740 0)","tags":["AI \uac1c\uc778\ud654"]}},"/users/me/ai-params/ack":{"post":{"operationId":"ack_ai_params_post","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"deviceId":{"type":"integer"},"fwVersion":{"example":"0.8","type":"string"},"paramRevision":{"minimum":1,"type":"integer"},"result":{"description":"0 ok / 1 crc \ubd88\uc77c\uce58 / 2 schema\u00b7magic \uac70\ubd80 / 3 ok-\ud074\ub7a8\ud504\ub428","maximum":3,"minimum":0,"type":"integer"}},"required":["deviceId","paramRevision"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc0dd\uc131 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uae30\uae30 PARAM_ACK \uacb0\uacfc \uae30\ub85d(result 0 ok/1 crc/2 schema \uac70\ubd80/3 ok-\ud074\ub7a8\ud504). ack \uc788\ub294 revision \uc758 \uc138\uc158\ub9cc \ud559\uc2b5 \uc785\ub825 (v1.2.0)","tags":["AI \uac1c\uc778\ud654"]}},"/users/me/consents":{"put":{"operationId":"put_consents_put","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"consents":{"items":{"properties":{"agreed":{"type":"boolean"},"consentType":{"enum":["TOS","PRIVACY","HEALTH","MARKETING","BETA_DATA"],"type":"string"},"termsVersion":{"example":"v1.0","type":"string"}},"required":["consentType","agreed"],"type":"object"},"type":"array"}},"required":["consents"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc57d\uad00 \ub3d9\uc758 \ub0b4\uc5ed \uc800\uc7a5(\uc57d\uad00 \ubc84\uc804 \ud3ec\ud568)","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]}},"/users/me/notification-settings":{"get":{"operationId":"get_noti_setting_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc54c\ub9bc \uc124\uc815 \uc870\ud68c","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]},"put":{"operationId":"put_noti_setting_put","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"alarmTime":{"example":"20:00","type":"string"},"days":{"items":{"enum":["MON","TUE","WED","THU","FRI","SAT","SUN"],"type":"string"},"type":"array"},"marketingOn":{"type":"boolean"},"remindOn":{"type":"boolean"},"routineAlarmOn":{"type":"boolean"},"weeklyGoal":{"maximum":7,"minimum":1,"type":"integer"},"weeklyReportOn":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc54c\ub9bc \uc124\uc815 \uc800\uc7a5","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]}},"/users/me/profile":{"put":{"operationId":"put_profile_put","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ageBand":{"enum":["20s","30s","40s","50s","60s+"],"type":"string"},"concerns":{"example":["FATIGUE","SWELLING"],"items":{"type":"string"},"type":"array"},"exerciseFreq":{"enum":["RARE","W1_2","W3+"],"type":"string"},"gender":{"enum":["M","F","NONE"],"type":"string"},"height":{"maximum":230,"minimum":100,"type":"integer"},"jobType":{"enum":["DESK","STANDING","FIELD","HOME","ETC"],"type":"string"},"onboardingStep":{"description":"6 \uc774\uba74 \uc628\ubcf4\ub529 \uc644\ub8cc \ucc98\ub9ac","maximum":6,"minimum":0,"type":"integer"},"purposes":{"example":["RECOVERY"],"items":{"type":"string"},"type":"array"},"sensitivityLevel":{"description":"\uc790\uadf9 \ubbfc\uac10\ub3c4/\ucd08\uae30 \uac15\ub3c4 (\uc571 level 1~10)","maximum":10,"minimum":1,"type":"integer"},"sittingHours":{"enum":["LT4","4_8","GT8"],"type":"string"},"weight":{"maximum":250,"minimum":25,"type":"integer"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ok"}}},"description":"\uc131\uacf5 \u2014 { success: true, data }"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc694\uccad \uc624\ub958 \u2014 { success: false, error: { code, message } }"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Err"}}},"description":"\uc778\uc99d \uc2e4\ud328/\uad8c\ud55c \uc5c6\uc74c(AUTH_401, AUTH_403)"}},"security":[{"bearerAuth":[]}],"summary":"\uc628\ubcf4\ub529 \ud504\ub85c\ud544 \uc800\uc7a5(\ub2e8\uacc4\ubcc4 \ubd80\ubd84 \uc800\uc7a5 \uc9c0\uc6d0)","tags":["\uc0ac\uc6a9\uc790/\ud504\ub85c\ud544"]}}},"servers":[{"description":"\ud604\uc7ac \uc11c\ubc84","url":"/api/v1"}]}
