Open mtak0235 opened 2 months ago
URL: POST /api/users
Request Body:
json Copy { "username": "string", "email": "string", "password": "string", "userType": "BUYER | KEEPER" }
Response: 201 Created
json Copy { "id": "long", "username": "string", "email": "string", "userType": "BUYER | KEEPER" }
URL: POST /api/auth/login
json Copy { "email": "string", "password": "string" }
Response: 200 OK
json Copy { "token": "string", "userId": "long" }
URL: POST /api/storage-spaces
Headers: Authorization: Bearer {token}
json Copy { "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "capacity": "int", "photos": ["string"], "maxDeposit": "decimal", "tags": ["string"], "dailyRate": "decimal" }
json Copy { "id": "long", "ownerId": "long", "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "capacity": "int", "photos": ["string"], "maxDeposit": "decimal", "tags": ["string"], "dailyRate": "decimal" }
URL: GET /api/storage-spaces
Query Parameters:
json Copy { "content": [ { "id": "long", "ownerId": "long", "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "capacity": "int", "photos": ["string"], "maxDeposit": "decimal", "tags": ["string"], "dailyRate": "decimal" } ], "pageable": { "pageNumber": "int", "pageSize": "int", "sort": ["string"] }, "totalElements": "long", "totalPages": "int" }
URL: POST /api/storage-requests
json Copy { "itemDescription": "string", "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "requiredCapacity": "int", "startDate": "date", "endDate": "date" }
json Copy { "id": "long", "requesterId": "long", "itemDescription": "string", "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "requiredCapacity": "int", "startDate": "date", "endDate": "date", "status": "PENDING" }
URL: PUT /api/storage-requests/{requestId}/accept
json Copy { "id": "long", "requesterId": "long", "keeperId": "long", "itemDescription": "string", "spaceType": "REFRIGERATOR | FREEZER | ROOM_TEMPERATURE", "requiredCapacity": "int", "startDate": "date", "endDate": "date", "status": "ACCEPTED" }
URL: POST /api/payments
json Copy { "storageRequestId": "long", "amount": "decimal" }
json Copy { "id": "long", "storageRequestId": "long", "payerId": "long", "receiverId": "long", "amount": "decimal", "status": "PENDING" }
URL: POST /api/deposits
json Copy { "id": "long", "storageRequestId": "long", "userId": "long", "amount": "decimal", "status": "HELD" }
모든 API는 오류 발생 시 다음과 같은 형식으로 응답합니다:
Response: 4xx/5xx Status Code
json Copy { "timestamp": "ISO-8601 format", "status": "int", "error": "string", "message": "string", "path": "string" }
TODO: Spring RestDocs로 관리
REST API 명세
1. 사용자 관리 API
1.1 회원가입
URL: POST /api/users
Request Body:
Response: 201 Created
1.2 로그인
URL: POST /api/auth/login
Request Body:
Response: 200 OK
2. 보관 공간 API
2.1 보관 공간 등록
URL: POST /api/storage-spaces
Headers: Authorization: Bearer {token}
Request Body:
Response: 201 Created
2.2 보관 공간 검색
URL: GET /api/storage-spaces
Query Parameters:
Response: 200 OK
3. 보관 요청 API
3.1 보관 요청 생성
URL: POST /api/storage-requests
Headers: Authorization: Bearer {token}
Request Body:
Response: 201 Created
3.2 보관 요청 수락
URL: PUT /api/storage-requests/{requestId}/accept
Headers: Authorization: Bearer {token}
Response: 200 OK
4. 결제 및 보증금 API
4.1 결제 생성
URL: POST /api/payments
Headers: Authorization: Bearer {token}
Request Body:
Response: 201 Created
4.2 보증금 설정
URL: POST /api/deposits
Headers: Authorization: Bearer {token}
Request Body:
Response: 201 Created
공통 에러 응답 형식
모든 API는 오류 발생 시 다음과 같은 형식으로 응답합니다:
Response: 4xx/5xx Status Code
주요 에러 코드
API별 주요 예외 사항
1. 사용자 관리 API
1.1 회원가입
1.2 로그인
2. 보관 공간 API
2.1 보관 공간 등록
2.2 보관 공간 검색
3. 보관 요청 API
3.1 보관 요청 생성
3.2 보관 요청 수락
4. 결제 및 보증금 API
4.1 결제 생성
4.2 보증금 설정