소개
API 문서입니다.
상태 코드
상태 코드 |
의미 |
설명 |
200 |
OK |
요청이 성공적으로 처리됨 |
401 |
Unauthorized |
인증 실패 (잘못된 토큰 등) |
404 |
Not Found |
리소스를 찾을 수 없음 |
409 |
Conflict |
리소스 충돌 (중복 등) |
500 |
Internal Server Error |
서버 내부 오류 |
Authorization
-
Authorization: Bearer 액세스 토큰 (필수) -
형식:
Bearer {token} -
인증이 필요한 API 호출 시 반드시 포함
Auth API
1. 회원가입 인증번호 전송 07/13 수정
요청(Request)
POST /api/auth/create/send HTTP/1.1
Content-Type: application/json
Content-Length: 62
Host: api.roomgenie.team9.com
{
"phoneNumber" : "82",
"countryCode" : "01012345678"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
국가 코드 |
|
|
휴대폰 번호 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68
{
"status" : 200,
"data" : {
"message" : "성공"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
성공 메시지 |
1-1 회원가입 인증번호 전송 (이미 가입된 번호) 07/13 수정
응답(Response)
HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 127
{
"status" : 409,
"data" : {
"errorCode" : "USER_3",
"message" : "이미 가입된 사용자입니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
409 |
|
|
USER_3 |
|
|
이미 가입된 사용자입니다. - 계정이 이미 생성되었음으로 로그인으로 유도 해야함 |
2. 회원가입을 위한 휴대폰 인증 번호 확인 08/05 수정
요청(Request)
POST /api/auth/create/verify HTTP/1.1
Content-Type: application/json
Content-Length: 205
Host: api.roomgenie.team9.com
{
"userName" : "testName",
"phoneNumber" : "01012345678",
"countryCode" : "82",
"verificationCode" : "123",
"deviceId" : "testDeviceId",
"provider" : "ios",
"appToken" : "testToken"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
휴대폰 번호 |
|
|
국가 코드 |
|
|
인증번호 |
|
|
디바이스 아이디(디바이스 식별을 위한 정보) |
|
|
플랫폼(ios, android) |
|
|
앱 토큰(푸시 토큰) |
|
|
사용자 이름 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 115
{
"status" : 200,
"data" : {
"accessToken" : "accessToken",
"refreshToken" : "refreshToken"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
액세스 토큰 |
|
|
리프레시 토큰 |
2-1 회원가입을 위한 휴대폰 인증 번호 확인 (이미 가입된 번호) 08/05 수정
응답(Response)
HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 127
{
"status" : 409,
"data" : {
"errorCode" : "USER_3",
"message" : "이미 가입된 사용자입니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
409 |
|
|
USER_3 |
|
|
이미 가입된 사용자입니다. - 계정이 이미 생성되었으므로 로그인으로 유도 해야함. 다만, 전화번호 인증 요청시 이미 검증이 되었는데 발생한 잘못된 접근 임. |
2-2 회원가입을 위한 휴대폰 인증 번호 확인 (인증번호 불일치) 08/05 수정
응답(Response)
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 124
{
"status" : 401,
"data" : {
"errorCode" : "AUTH_1",
"message" : "인증 번호가 틀렸습니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
401 |
|
|
AUTH_1 |
|
|
인증 번호가 틀렸습니다. - 휴대폰 인증번호가 잘못되었음 - 재인증 요청으로 유도해야함 |
2-3 회원가입을 위한 휴대폰 인증 번호 확인 (인증번호 만료) 08/05 수정
응답(Response)
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 130
{
"status" : 401,
"data" : {
"errorCode" : "AUTH_2",
"message" : "인증 번호가 만료되었습니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
401 |
|
|
AUTH_2 |
|
|
인증 번호가 만료되었습니다. - 휴대폰 인증번호가 만료됨 - 재인증 요청으로 유도해야함 |
3. 비밀번호 생성 08/05 수정
요청(Request)
POST /api/auth/create/password HTTP/1.1
Content-Type: application/json
Authorization: Bearer access-token
Content-Length: 100
Host: api.roomgenie.team9.com
{
"email" : "yhkim052556@naver.com",
"birth" : "2001-05-25",
"password" : "testPassword"
}
요청헤더(Request Headers)
| Name | Description |
|---|---|
|
Bearer 액세스 토큰 |
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
생성할 비밀번호 |
|
|
생년월일 (yyyy-MM-dd 형식) |
|
|
이메일 |
응답(Response)
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 75
{
"status" : 201,
"data" : {
"message" : "생성 완료"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
성공 메시지 |
4. 로그인 08/05 수정
요청(Request)
POST /api/auth/login HTTP/1.1
Content-Type: application/json
Content-Length: 150
Host: api.roomgenie.team9.com
{
"email" : "test@naver.com",
"password" : "testPassword",
"deviceId" : "testDeviceId",
"provider" : "ios",
"appToken" : "testToken"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
아이디 |
|
|
비밀번호 |
|
|
디바이스 아이디(디바이스 식별을 위한 정보) |
|
|
플랫폼(ios, android) |
|
|
앱 토큰(푸시 토큰) |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 115
{
"status" : 200,
"data" : {
"accessToken" : "accessToken",
"refreshToken" : "refreshToken"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
액세스 토큰 |
|
|
리프레시 토큰 |
4-1 로그인 (비밀번호 불일치) 08/05 수정
응답(Response)
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 123
{
"status" : 401,
"data" : {
"errorCode" : "AUTH_9",
"message" : "비밀번호가 틀렸습니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
401 |
|
|
AUTH_9 |
|
|
비밀번호가 틀렸습니다. - 비밀번호가 잘못되었음 - 새로운 인증 번호 요청으로 유도해야함 |
4-2 로그인 (존재하지 않는 사용자) 08/05 수정
응답(Response)
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 119
{
"status" : 404,
"data" : {
"errorCode" : "USER_1",
"message" : "회원을 찾을 수 없음."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
404 |
|
|
USER_1 |
|
|
회원을 찾을 수 없음. - 계정이 존재하지 않음으로 회원가입을 유도해야함 - 로그인시 휴대폰 인증 할때 이미 존재 유무를 검증하는데 이때 오류 발생시 잘못된 접근 |
Mission API
1. 오늘의 미션 추천
요청(Request)
GET /api/today-mission/recommend HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 116
{
"status" : 200,
"data" : {
"missionId" : "123",
"content" : "오늘의 미션: 방 청소"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
오늘의 미션 ID |
|
|
오늘의 미션 내용 |
1-1. 오늘의 미션 추천 - 실패 (미션 없음)
요청(Request)
GET /api/today-mission/recommend HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
응답(Response)
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 130
{
"status" : 404,
"data" : {
"errorCode" : "MISSION_1",
"message" : "미션이 존재하지 않습니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
404 |
|
|
MISSION_1 |
|
|
미션이 존재하지 않습니다. - 미션이 존재하지 않는 경우 - 등록된 미션이 하나도 없을 때 |
2. 오늘의 미션 직접 생성 - 성공
요청(Request)
POST /api/today-mission HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Content-Length: 45
Host: localhost:8080
{"mission":"나만의 미션: 빨래 개기"}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
사용자가 입력한 커스텀 미션 내용 |
응답(Response)
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 49
{"status":201,"data":{"message":"생성 완료"}}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
성공 메시지 |
2-1. 오늘의 미션 직접 생성 - 실패 (미션 초과)
요청(Request)
POST /api/today-mission HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Content-Length: 33
Host: localhost:8080
{"mission":"청소기 돌리기"}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
사용자가 입력한 오늘의 미션 |
응답(Response)
HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 125
{"status":409,"data":{"errorCode":"MISSION_2","message":"오늘의 미션은 최대 3개까지 등록할 수 있습니다."}}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
409 |
|
|
MISSION_2 |
|
|
오늘의 미션은 최대 3개까지 등록할 수 있습니다. - 오늘의 미션 개수가 3개를 초과한 경우 |
3. 추천 미션 수락 - 성공
요청(Request)
POST /api/today-mission/accept HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json
Content-Length: 34
Host: api.roomgenie.team9.com
{
"missionId" : "mission123"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
수락할 추천 미션 ID |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 68
{
"status" : 200,
"data" : {
"message" : "성공"
}
}
4. 오늘의 미션 목록 조회
요청(Request)
GET /api/today-mission/ HTTP/1.1
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Host: api.roomgenie.team9.com
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 309
{
"status" : 200,
"data" : [ {
"missionId" : "m1",
"content" : "방 청소",
"targetDate" : "2025-08-18 10:30:00",
"status" : "ONGOING"
}, {
"missionId" : "m2",
"content" : "빨래 개기",
"targetDate" : "2025-08-18 12:00:00",
"status" : "COMPLETED"
} ]
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
오늘의 미션 ID |
|
|
미션 내용 |
|
|
목표 날짜/시간(yyyy-MM-dd HH:mm:ss) |
|
|
미션 상태 (ONGOING/COMPLETED 등) |
5. 오늘의 미션 단건 조회
요청(Request)
GET /api/today-mission/m1/ HTTP/1.1
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Host: api.roomgenie.team9.com
경로 변수(Path Parameters)
| Parameter | Description |
|---|---|
|
오늘의 미션 ID |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 167
{
"status" : 200,
"data" : {
"missionId" : "m1",
"content" : "방 청소",
"targetDate" : "2025-08-18 10:30:00",
"status" : "ONGOING"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
오늘의 미션 ID |
|
|
미션 내용 |
|
|
목표 날짜/시간(yyyy-MM-dd HH:mm:ss) |
|
|
미션 상태 |
Friend API
1. 친구 추가
요청(Request)
POST /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com
{
"targetId" : "targetUserId"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
친구 추가할 대상 사용자 ID |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68
{
"status" : 200,
"data" : {
"message" : "성공"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
성공 메시지 |
1-1. 친구 추가 - 실패 (이미 친구)
요청(Request)
POST /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com
{
"targetId" : "targetUserId"
}
응답(Response)
HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 126
{
"status" : 409,
"data" : {
"errorCode" : "FRIEND_2",
"message" : "이미 추가된 친구입니다."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
409 |
|
|
FRIEND_2 |
|
|
이미 추가된 친구입니다. - 이미 친구인 사용자에게 다시 요청한 경우 |
2. 친구 삭제
요청(Request)
DELETE /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com
{
"targetId" : "targetUserId"
}
요청 필드 설명(Request Fields)
| Path | Type | Description |
|---|---|---|
|
|
친구 삭제할 대상 사용자 ID |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68
{
"status" : 200,
"data" : {
"message" : "성공"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
성공 메시지 |
3. 친구 목록 조회
요청(Request)
GET /api/friend/list HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 229
{
"status" : 200,
"data" : {
"friends" : [ {
"friendId" : "friendId1",
"name" : "친구1",
"email" : "friend@test.com",
"status" : "friend",
"birthday" : "2000-01-01"
} ]
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
친구 목록 |
|
|
친구 사용자 ID |
|
|
친구 이름 |
|
|
친구 이메일 |
|
|
친구 상태 (friend, normal) |
|
|
친구 생년월일 |
Post API
1. 게시글 생성
요청(Request)
POST /api/post HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=test.png
Content-Type: image/png
�PNG
IHDR �wS? IDATx^c``` ҭ? IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
요청 파트(Request Parts)
| Part | Description |
|---|---|
|
업로드할 이미지 파일 (복수 가능) |
응답(Response)
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 70
{
"status" : 201,
"data" : {
"postId" : "newPostId"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
생성된 게시글 ID |
2. 게시글 목록 조회
요청(Request)
GET /api/post?friendIds=friend1 HTTP/1.1
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
요청 파라미터(Query Parameters)
| Parameter | Description |
|---|---|
|
조회할 친구 ID 목록 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 423
{
"status" : 200,
"data" : {
"posts" : [ {
"postId" : "post1",
"uploadTime" : "2026-04-01 10:00:00",
"title" : "청소 기록",
"content" : "거실 청소!",
"postDetails" : [ ],
"comments" : [ {
"userId" : "commenter1",
"postId" : "post1",
"content" : "잘했어요!",
"uploadTime" : "2026-04-01 11:00:00"
} ]
} ]
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
게시글 목록 |
|
|
게시글 ID |
|
|
업로드 시간 (yyyy-MM-dd HH:mm:ss) |
|
|
게시글 제목 |
|
|
게시글 내용 |
|
|
첨부 파일 목록 |
|
|
댓글 목록 |
|
|
댓글 작성자 ID |
|
|
댓글 대상 게시글 ID |
|
|
댓글 내용 |
|
|
댓글 작성 시간 |
User API
1. 사용자 검색
요청(Request)
GET /api/users/search?name=%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9C%A0%EC%A0%80 HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com
요청 파라미터(Query Parameters)
| Parameter | Description |
|---|---|
|
검색할 사용자 이름 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 109
{
"status" : 200,
"data" : {
"userId" : "foundUserId",
"userName" : "테스트유저"
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
상태 코드 |
|
|
검색된 사용자 ID |
|
|
검색된 사용자 이름 |
1-1. 사용자 검색 - 실패 (존재하지 않는 사용자)
요청(Request)
GET /api/users/search?name=%EC%97%86%EB%8A%94%EC%9C%A0%EC%A0%80 HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com
응답(Response)
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 119
{
"status" : 404,
"data" : {
"errorCode" : "USER_1",
"message" : "회원을 찾을 수 없음."
}
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
404 |
|
|
USER_1 |
|
|
회원을 찾을 수 없음. - 해당 이름의 사용자가 존재하지 않는 경우 |
AI API
1. 이미지 분석
요청(Request)
POST /ai/image/analysis HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=room.png
Content-Type: image/png
�PNG
IHDR �wS? IDATx^c``` ҭ? IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
요청 파트(Request Parts)
| Part | Description |
|---|---|
|
분석할 방 이미지 파일 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 148
{
"choices" : [ {
"index" : 0,
"message" : {
"role" : "assistant",
"content" : "방이 깨끗합니다."
}
} ]
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
AI 응답 목록 |
|
|
응답 인덱스 |
|
|
메시지 역할 (assistant) |
|
|
AI 분석 결과 텍스트 |
2. 미션 이미지 비교 검증
요청(Request)
POST /ai/image/mission-verify/mission123 HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=beforeImage; filename=before.png
Content-Type: image/png
�PNG
IHDR �wS? IDATx^c``` ҭ? IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=afterImage; filename=after.png
Content-Type: image/png
�PNG
IHDR �wS? IDATx^c``` ҭ? IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
요청 파트(Request Parts)
| Part | Description |
|---|---|
|
미션 수행 전 이미지 |
|
미션 수행 후 이미지 |
경로 변수(Path Parameters)
| Parameter | Description |
|---|---|
|
검증할 오늘의 미션 ID |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 59
"미션 완료! 방이 깨끗하게 정리되었습니다."
3. 방 이미지 정리 생성
요청(Request)
POST /ai/image/generate HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=messy-room.png
Content-Type: image/png
�PNG
IHDR �wS? IDATx^c``` ҭ? IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
요청 파트(Request Parts)
| Part | Description |
|---|---|
|
정리할 방 이미지 파일 |
응답(Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"choices" : [ {
"index" : 0,
"message" : {
"role" : "assistant",
"content" : "https://s3.example.com/cleaned-room.jpg\n\nGPT Analysis:\n방이 깔끔하게 정리되었습니다. 침대 정리와 바닥 청소가 완료되었습니다."
}
} ]
}
응답 필드 설명(Response Fields)
| Path | Type | Description |
|---|---|---|
|
|
AI 응답 목록 |
|
|
응답 인덱스 |
|
|
메시지 역할 (assistant) |
|
|
정리된 이미지 URL + AI 분석 텍스트 |