- Base URL:
http://localhost:8008/api/v1 - 인증 방식:
- REST API:
Authorization: Bearer <token> - Socket.IO: 연결 시
auth.token
- REST API:
- 주요 포트:
- Frontend
3008 - Backend
8008
- Frontend
- 업로드 제한:
- PLY 최대
100MB - GLB 최대
50MB
- PLY 최대
사용자 등록.
{
"email": "user@example.com",
"password": "securepassword123",
"full_name": "홍길동"
}OAuth2 form login.
username=user@example.com
password=securepassword123
응답:
{
"access_token": "jwt",
"token_type": "bearer"
}현재 로그인 사용자 조회.
내 프로젝트 목록 조회.
프로젝트 생성.
{
"name": "내 방",
"description": "침실 레이아웃",
"room_width": 5.0,
"room_height": 3.0,
"room_depth": 4.0,
"build_mode": "template",
"room_structure": null
}프로젝트 상세 조회. 내부 파일 시스템 경로는 노출하지 않고, 필요 시 download_url만 제공합니다.
응답 예시:
{
"id": 1,
"owner_id": 1,
"name": "내 방",
"room_width": 5.0,
"room_height": 3.0,
"room_depth": 4.0,
"has_3d_file": true,
"file_type": "glb",
"download_url": "/api/v1/files-3d/download-3d/1",
"file_size": 123456,
"has_ply_file": false,
"ply_file_size": null,
"build_mode": "free_build",
"room_structure": {
"mode": "free_build"
},
"is_shared": false,
"current_layout": {
"furnitures": []
}
}프로젝트 메타데이터 수정.
공유 상태 토글.
프로젝트와 연결된 레이아웃/업로드 파일 삭제.
새 버전 저장.
현재 레이아웃 조회.
버전 목록 조회.
이전 버전 복원.
저장 없이 충돌/경계 검사.
POST /files/upload-ply/{project_id}GET /files/ply/{project_id}GET /files/ply-info/{project_id}GET /files/download-ply/{project_id}DELETE /files/ply/{project_id}
GET /files/ply/{project_id} 응답은 내부 경로 대신 download_url을 반환합니다.
POST /files-3d/upload-3d/{project_id}GET /files-3d/3d-file/{project_id}GET /files-3d/download-3d/{project_id}DELETE /files-3d/3d-file/{project_id}
POST /room-builder/upload-glb/{project_id}POST /room-builder/generate-textureGET /room-builder/dimensions/{project_id}
upload-glb 응답도 내부 파일 경로 대신 download_url을 반환합니다.
GET /catalogGET /catalog/{item_id}GET /catalog/glb/{item_id}
ADMIN_EMAILS에 포함된 사용자만 호출 가능:
POST /catalog/syncGET /catalog/list-glbPUT /catalog/{item_id}DELETE /catalog/{item_id}POST /catalog/glb/{item_id}
클라이언트는 Socket.IO 연결 시 JWT를 auth.token으로 전달해야 합니다.
- Client → Server
join_projectfurniture_movefurniture_addfurniture_deletevalidate_furniturerequest_lockrelease_lockupdate_presence
- Server → Client
current_usersuser_joineduser_leftfurniture_updatedfurniture_addedfurniture_deletedvalidation_resultcollision_detectedobject_lockedobject_unlockedlock_rejectedpresence_updatedjoin_error
서버는 클라이언트가 보낸 user_id를 신뢰하지 않고, 토큰 기준 사용자/권한으로 room join 을 검증합니다.