시흥시 소상공인 상생 마감할인 플랫폼 · 시루가치 팀
https://api.deuktem-siru.com/api/v1Authorization: Bearer {accessToken} — memberId는 JWT에서 추출, URL 노출 금지{ "code": 200, "message": "...", "data": { ... } }
Content-Type: application/json| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 카카오 액세스 토큰 | kakaoAccessToken | ✓ | String | 카카오에서 발급받은 토큰 |
| 가입 유형 | role | ✓ | String | CONSUMER / SELLER |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 기존 회원 로그인 성공 |
| Success | 201 | 신규 회원가입 후 로그인 |
| Error | 400 | 유효하지 않은 카카오 토큰 |
| Error | 500 | 서버 내부 오류 |
Content-Type: application/json| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 리프레시 토큰 | refreshToken | ✓ | String | 발급받은 리프레시 토큰 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 토큰 갱신 성공 |
| Error | 401 | 리프레시 토큰 만료 또는 유효하지 않음 |
Authorization: Bearer {accessToken}JWT 필요| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 로그아웃 성공 |
| Error | 401 | 인증 실패 |
Authorization: Bearer {accessToken}JWT 필요| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 401 | 인증 실패 |
| Error | 500 | 서버 내부 오류 |
Authorization: Bearer {accessToken}JWT 필요| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 401 | 인증 실패 |
latitude, longitude, radius, category, sort, page, size| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 현재 위도 | latitude | ✓ | Double | 현재 위도 |
| 현재 경도 | longitude | ✓ | Double | 현재 경도 |
| 검색 반경 | radius | - | Integer | 반경(m), 기본값 1000 |
| 카테고리 | category | - | String | BAKERY / RESTAURANT / CAFE / GROCERY / OTHER |
| 정렬 기준 | sort | - | String | distance (기본) / discount_rate |
| 페이지 번호 | page | - | Integer | 기본값 0 |
| 페이지 크기 | size | - | Integer | 기본값 20 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 400 | 위도/경도 누락 |
storeId (Long) — 가게 ID| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 404 | 가게를 찾을 수 없음 |
Authorization: Bearer {accessToken}SELLER Content-Type: multipart/form-data| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 가게명 | name | ✓ | String | 최대 100자 |
| 가게 소개 | description | - | String | 가게 설명 |
| 주소 | address | ✓ | String | 최대 255자 |
| 위도 | latitude | ✓ | Double | 가게 위도 |
| 경도 | longitude | ✓ | Double | 가게 경도 |
| 전화번호 | phone | - | String | 가게 전화번호 |
| 카테고리 | categories | ✓ | List | BAKERY / RESTAURANT / CAFE / GROCERY / OTHER |
| 대표 이미지 | thumbnail | ✓ | File | 썸네일 이미지 1장 |
| 소개 이미지 | images | - | List<File> | 최대 5장 |
| 시루 가맹점 ID | siruStoreId | - | String | 시루 연동 확정 후 업데이트TBD |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 201 | 가게 등록 성공 |
| Error | 400 | 입력값 오류 |
| Error | 403 | 판매자 권한 없음 |
Authorization: Bearer {accessToken}SELLER| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 401 | 인증 실패 |
| Error | 404 | 등록된 가게 없음 |
latitude, longitude, radius, category, sort, page, size| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 현재 위도 | latitude | ✓ | Double | 현재 위도 |
| 현재 경도 | longitude | ✓ | Double | 현재 경도 |
| 검색 반경 | radius | - | Integer | 반경(m), 기본값 1000 |
| 카테고리 | category | - | String | 카테고리 필터 |
| 정렬 기준 | sort | - | String | distance / discount_rate / pickup_end |
| 페이지 번호 | page | - | Integer | 기본값 0 |
| 페이지 크기 | size | - | Integer | 기본값 20 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 400 | 위도/경도 누락 |
Authorization: Bearer {accessToken}SELLER Content-Type: multipart/form-datastoreId (Long) — 가게 ID| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 상품명 | name | ✓ | String | 상품명 |
| 상품 설명 | description | - | String | 상품 설명 |
| 정가 | originalPrice | ✓ | Integer | 정가 (원) |
| 할인가 | discountPrice | ✓ | Integer | 할인가 (원) |
| 총 수량 | quantityTotal | ✓ | Integer | 판매 수량 |
| 픽업 시작 | pickupStart | ✓ | String | 픽업 시작 시간 (HH:mm) |
| 픽업 마감 | pickupEnd | ✓ | String | 픽업 마감 시간 (HH:mm) |
| 판매 날짜 | availableDate | ✓ | String | 판매 날짜 (yyyy-MM-dd) |
| 상품 이미지 | images | ✓ | List<File> | 최소 1장 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 201 | 상품 등록 성공 |
| Error | 400 | 입력값 오류 |
| Error | 403 | 판매자 권한 없음 |
| Error | 404 | 가게를 찾을 수 없음 |
storeId (Long) — 가게 IDpage, size| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 404 | 가게를 찾을 수 없음 |
Authorization: Bearer {accessToken}CONSUMER Content-Type: application/json| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 상품 ID | items[].productId | ✓ | Long | 주문할 상품 ID |
| 주문 수량 | items[].quantity | ✓ | Integer | 주문 수량 |
| 결제 수단 | paymentMethod | ✓ | String | SIRU / CARD / CASH시루 TBD |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 201 | 주문 성공 |
| Error | 400 | 입력값 오류 |
| Error | 409 | 수량 초과 또는 품절 |
| Error | 500 | 서버 내부 오류 |
Authorization: Bearer {accessToken}CONSUMERstatus, page, size| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 주문 상태 | status | - | String | PENDING / CONFIRMED / PICKED_UP / CANCELLED |
| 페이지 번호 | page | - | Integer | 기본값 0 |
| 페이지 크기 | size | - | Integer | 기본값 20 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 401 | 인증 실패 |
Authorization: Bearer {accessToken}CONSUMERorderId (Long) — 주문 ID| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 취소 성공 |
| Error | 400 | 취소 불가 상태 |
| Error | 403 | 권한 없음 |
| Error | 404 | 주문을 찾을 수 없음 |
Authorization: Bearer {accessToken}SELLER Content-Type: application/jsonorderId (Long) — 주문 ID| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 픽업 코드 | pickupCode | ✓ | String | 소비자 픽업 확인 코드방식 TBD |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 픽업 완료 처리 성공 |
| Error | 400 | 픽업 코드 불일치 |
| Error | 403 | 권한 없음 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 웹훅 수신 성공 |
| Error | 400 | 유효하지 않은 요청 |
Authorization: Bearer {accessToken}CONSUMER Content-Type: application/json| 요청 종류 | 필드 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|---|
| 가게 ID | storeId | ✓ | Long | 리뷰 대상 가게 ID |
| 주문 ID | orderId | ✓ | Long | PICKED_UP 상태여야 함 |
| 별점 | rating | ✓ | Integer | 1~5 |
| 리뷰 내용 | content | - | String | 리뷰 텍스트 |
| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 201 | 리뷰 작성 성공 |
| Error | 400 | 픽업 미완료 주문 |
| Error | 409 | 이미 작성된 리뷰 |
| Error | 500 | 서버 내부 오류 |
storeId (Long) — 가게 IDpage, size| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 조회 성공 |
| Error | 404 | 가게를 찾을 수 없음 |
Authorization: Bearer {accessToken}JWT 필요reviewId (Long) — 리뷰 ID| 성공 여부 | 응답 코드 | 설명 |
|---|---|---|
| Success | 200 | 삭제 성공 |
| Error | 403 | 권한 없음 (본인 리뷰 아님) |
| Error | 404 | 리뷰를 찾을 수 없음 |