User API
인증 Header
| name | 설명 |
|---|---|
|
API를 사용하기 위한 인증 키 |
회원가입
HTTP Request
POST /api/users HTTP/1.1
Content-Type: application/json
Host: localhost
Content-Length: 226
{
"email" : "test@example.com",
"password" : "password123!",
"displayName" : "테스트유저",
"city" : "서울시",
"detailAddress" : "강남구 역삼동",
"realName" : "홍길동",
"phone" : "010-1234-5678"
}
Request Headers
| Name | Description |
|---|---|
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
이메일 |
|
|
|
비밀번호 |
|
|
|
닉네임 |
|
|
|
실명 |
|
|
|
도시 |
|
|
|
상세주소 |
|
|
|
전화번호 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 141
{
"data" : {
"userId" : 1,
"normalCartId" : 1,
"subscriptionCartId" : 2
},
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
Request Parameters
Parameter |
Type |
Description |
Required |
username |
String |
사용자 이름 |
true |
password |
String |
비밀번호 |
true |
String |
이메일 |
true |
|
phone |
String |
전화번호 |
false |
Response Fields
Path |
Type |
Description |
|
String |
사용자 ID |
|
String |
접근 토큰 |
|
String |
갱신 토큰 |
OAuth 추가정보 입력
HTTP Request
POST /api/users/more-info HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Content-Type: application/json
Host: localhost
Content-Length: 160
{
"email" : "test@test.com",
"displayName" : "OAuth유저",
"city" : "서울시",
"detailAddress" : "강남구 역삼동",
"phone" : "010-9876-5432"
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
이메일 |
|
|
|
닉네임 |
|
|
|
도시 |
|
|
|
상세주소 |
|
|
|
전화번호 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Refresh: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzczODY3LCJpYXQiOjE3NTY3NDg2Njd9.i0crrl_Wo1w4qKK03Ls40lmeb2PUXrlJk_fdI2bnUgQ
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:27 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 141
{
"data" : {
"userId" : 1,
"normalCartId" : 3,
"subscriptionCartId" : 4
},
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
Request Fields
Parameter |
Type |
Description |
Required |
name |
String |
사용자 이름 |
true |
phone |
String |
전화번호 |
true |
termsAgreed |
Boolean |
약관 동의 여부 |
true |
Response Fields
Path |
Type |
Description |
|
String |
사용자 ID |
|
String |
회원가입 상태 (COMPLETED/ADDITIONAL_INFO_REQUIRED) |
|
String |
접근 토큰 (추가정보 입력 완료 시 제공) |
사용자 정보 수정
HTTP Request
PATCH /api/users/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3QyQHRlc3QuY29tIiwic3ViIjoidGVzdDJAdGVzdC5jb20iLCJleHAiOjE3NTY3NTA0NjcsImlhdCI6MTc1Njc0ODY2N30.yyNaOFfY9fD613LpNkhQsyXBF23U4LZVbG3QsVVPngM
Content-Type: application/json
Host: localhost
Content-Length: 220
{
"email" : "test2@test.com",
"password" : "newpassword123!",
"displayName" : "수정된이름",
"city" : "부산시",
"detailAddress" : "해운대구",
"realName" : "김철수",
"phone" : "010-5555-5555"
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Path Parameters
| Parameter | Description |
|---|---|
|
사용자 ID |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
이메일 |
|
|
|
O |
비밀번호 |
|
|
닉네임 |
|
|
|
도시 |
|
|
|
상세주소 |
|
|
|
실명 |
|
|
|
전화번호 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:27 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 394
{
"data" : {
"email" : "test2@test.com",
"displayName" : "수정된이름",
"city" : "부산시",
"detailAddress" : "해운대구",
"realName" : "김철수",
"phone" : "010-5555-5555",
"social" : false,
"updatedAt" : "2025-09-02T02:44:27.868299+09:00",
"createAt" : "2025-09-02T02:44:27.782028+09:00"
},
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
사용자 정보 조회
HTTP Request
GET /api/users/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3QzQHRlc3QuY29tIiwic3ViIjoidGVzdDNAdGVzdC5jb20iLCJleHAiOjE3NTY3NTA0NjcsImlhdCI6MTc1Njc0ODY2N30.eROrrhmBvdNQ7CULCgS2c5_23Vd_krp1pdQK_oLpawc
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
사용자 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:27 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 376
{
"data" : {
"email" : "test3@test.com",
"displayName" : "test3",
"city" : "서울",
"detailAddress" : "압구정동",
"realName" : "name",
"phone" : "010-2222-2222",
"social" : false,
"updatedAt" : "2025-09-02T02:44:27.594047+09:00",
"createAt" : "2025-09-02T02:44:27.594046+09:00"
},
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
로그아웃
HTTP Request
POST /api/users/logout HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 86
{
"data" : "로그아웃 완료",
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
회원탈퇴
HTTP Request
DELETE /api/users/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3Q4QHRlc3QuY29tIiwic3ViIjoidGVzdDhAdGVzdC5jb20iLCJleHAiOjE3NTY3NTA0NjcsImlhdCI6MTc1Njc0ODY2N30.F2eYscxkfdFrJqOlaZvedvh7iBqgNnj3MeZpCl9DldQ
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
사용자 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:27 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
{
"data" : "USER_WITHDRAWAL",
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
Cart API
Header
| name | 설명 |
|---|---|
|
API를 사용하기 위한 인증 키 |
참고
| id | number |
|---|---|
일반 장바구니 |
홀수 번호 ex) 1,3,5 |
구독 장바구니 |
짝수 번호 ex)2,4,6 |
HTTP Request
GET /api/carts/normal/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
일반 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 773
{
"data" : {
"cartId" : 1,
"cartItems" : [ {
"quantity" : 1,
"period" : 0,
"subscription" : false,
"item" : {
"itemId" : 1,
"enterprise" : "饔Զ滄䝭努齌",
"thumbnail" : "㰵绰ﺅ蚛夨ᕜ玖ܻ浬寺ㄝ⍴භ⭊΅Ⴊ빅颻랤弁",
"product" : "㐄⏚䔮땒㻩ᛞ䞝䶥触蕵좿㚍댽ꖣ↓蜓쭥ﲢ堢⒢殺ชꟷቝ辌崮蝘Ꝣ䨪鉮礜",
"originPrice" : 11000,
"realPrice" : 0,
"discountRate" : 10.0,
"discountPrice" : 1000
},
"createdAt" : null,
"updatedAt" : null
} ],
"totalItemCount" : 1,
"totalPrice" : 10000,
"totalDiscountPrice" : 1000,
"expectPrice" : 9000
},
"createTime" : "2025‑09‑02T02:44:25+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
일반 장바구니 ID |
|
|
|
상품 수량 |
|
|
|
상품 ID |
|
|
|
정상 가격 |
|
|
|
할인 가격 |
|
|
|
총 상품 개수 |
|
|
|
총 결제 금액 |
|
|
|
총 할인 금액 |
|
|
|
최종 결제 금액 |
|
|
|
생성 시간 |
|
|
|
주기 |
|
|
|
구독 여부 |
|
|
|
판매 업체 |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
생성 시간 |
|
|
|
수정 시간 |
일반 상품 장바구니 추가
HTTP Request
POST /api/carts/normal/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost
itemId=2&quantity=1
Request Parameters
| Request Parameter | Description |
|---|---|
|
상품 수량 |
|
상품 ID |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 66
{
"data" : 2,
"createTime" : "2025‑09‑02T02:44:25+09:00"
}
일반 상품 장바구니 삭제
HTTP Request
DELETE /api/carts/normal/1?itemId=1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
일반 장바구니 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
삭제할 상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
일반 상품 장바구니 수정
HTTP Request
PATCH /api/carts/normal/1?itemId=1&quantity=2 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
일반 장바구니 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
변경할 수량 |
|
상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
구독 상품 장바구니 조회
HTTP Request
GET /api/carts/subscription/2 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
구독 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 810
{
"data" : {
"cartId" : 2,
"cartItems" : [ {
"quantity" : 1,
"period" : 30,
"subscription" : true,
"item" : {
"itemId" : 1,
"enterprise" : "㫆䥅끋߆䲑쁽ཙл北9줒ṣ㝞罖蚇謓줻墾얜쎤嘯",
"thumbnail" : "曩淲葺켛蕜⩗뉩썵猖䬤땪춍鲱⚎㊲祾맋缄ꐸ墋ራ컃挌ナ핦镚",
"product" : "뇯桤ಉ媘좍᪺㛎㾑㖶쫎뻌땮놉퇌⯬霤麱끧检玠なﻨ弡♌",
"originPrice" : 11000,
"realPrice" : 0,
"discountRate" : 10.0,
"discountPrice" : 1000
},
"createdAt" : null,
"updatedAt" : null
} ],
"totalItemCount" : 1,
"totalPrice" : 10000,
"totalDiscountPrice" : 1000,
"expectPrice" : 9000
},
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
구독 장바구니 ID |
|
|
|
상품 수량 |
|
|
|
상품 ID |
|
|
|
정상 가격 |
|
|
|
할인 가격 |
|
|
|
총 상품 개수 |
|
|
|
총 결제 금액 |
|
|
|
총 할인 금액 |
|
|
|
최종 결제 금액 |
|
|
|
생성 시간 |
|
|
|
구독 주기 |
|
|
|
구독 여부 |
|
|
|
판매 업체 |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
생성 시간 |
|
|
|
수정 시간 |
구독 상품 장바구니 추가
HTTP Request
POST /api/carts/subscription/2 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Content-Type: application/json
Host: localhost
Content-Length: 78
{
"itemId" : 2,
"period" : 30,
"quantity" : 1,
"subscription" : true
}
Path Parameters
| Parameter | Description |
|---|---|
|
구독 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
상품 ID |
|
|
|
구독 주기 |
|
|
|
상품 수량 |
|
|
|
구독 여부 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 66
{
"data" : 2,
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
구독 상품 장바구니 삭제
HTTP Request
DELETE /api/carts/subscription/2?itemId=1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
구독 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
삭제할 상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
구독 상품 장바구니 수량 변경
HTTP Request
PATCH /api/carts/subscription/2/quantity?itemId=1&quantity=2 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
구독 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
변경할 수량 |
|
상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
구독 상품 장바구니 주기 변경
HTTP Request
PATCH /api/carts/subscription/2/period?itemId=1&period=60 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
구독 장바구니 ID |
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
변경할 구독 주기 |
|
상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Order API
주문 생성
HTTP Request
POST /api/orders HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Content-Type: application/json
Host: localhost
Content-Length: 317
{
"userId" : 1,
"subscription" : false,
"orderedAtCart" : true,
"city" : "서울시",
"detailAddress" : "강남구 역삼동",
"realName" : "홍길동",
"phoneNumber" : "010-1234-5678",
"orderPostDtoList" : [ {
"itemId" : 1,
"quantity" : 2,
"period" : 0,
"subscription" : false
} ]
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
사용자 ID |
|
|
|
구독 여부 |
|
|
|
장바구니에서 주문 여부 |
|
|
|
도시 |
|
|
|
상세 주소 |
|
|
|
수령인 이름 |
|
|
|
연락처 |
|
|
|
주문 상품 목록 |
|
|
|
상품 ID |
|
|
|
수량 |
|
|
|
O |
구독 주기 |
|
|
구독 여부 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1050
{
"data" : {
"orderId" : 3,
"totalItems" : 1,
"totalPrice" : 18000,
"totalDiscountPrice" : 2000,
"expectPrice" : 18000,
"subscription" : false,
"itemOrders" : [ {
"orderItemId" : 3,
"quantity" : 2,
"period" : 0,
"subscription" : false,
"nextPaymentDay" : null,
"item" : {
"itemId" : 1,
"enterprise" : "테스트 업체",
"thumbnail" : "http://example.com/thumbnail.jpg",
"product" : "테스트 상품",
"originPrice" : 10000,
"realPrice" : 0,
"discountRate" : 0.1,
"discountPrice" : 1000
}
} ],
"orderStatus" : "REQUEST",
"createdAt" : "2025-09-02T02:44:26.029453+09:00",
"updatedAt" : "2025-09-02T02:44:26.029454+09:00",
"totalQuantity" : 2,
"receiver" : {
"realName" : "홍길동",
"phone" : "010-1234-5678",
"address" : {
"city" : "서울시",
"detailAddress" : "강남구 역삼동"
}
}
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
응답 데이터 |
|
|
|
응답 생성 시간 |
구독 상품 수량 변경
HTTP Request
PATCH /api/orders/subscriptions/1?orderItemId=1&quantity=3 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
주문 상품 ID |
|
변경할 수량 |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
주문 목록 조회
HTTP Request
GET /api/orders?userId=1&page=1&size=10&sort=DESC HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
사용자 ID |
|
페이지 번호 |
|
페이지 크기 |
|
정렬 방향 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 165
{
"time" : "2025-09-02T02:44:26.225701+09:00",
"data" : [ ],
"pageInfo" : {
"page" : 1,
"size" : 0,
"totalElements" : 0,
"totalPages" : 1
}
}
구독 주문 목록 조회
HTTP Request
GET /api/orders/subscriptions?userId=1&page=1&size=10&sort=DESC HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
사용자 ID |
|
페이지 번호 |
|
페이지 크기 |
|
정렬 방향 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 165
{
"time" : "2025-09-02T02:44:25.917815+09:00",
"data" : [ ],
"pageInfo" : {
"page" : 1,
"size" : 0,
"totalElements" : 0,
"totalPages" : 1
}
}
주문 상세 조회
HTTP Request
GET /api/orders/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY1LCJpYXQiOjE3NTY3NDg2NjV9.QKL8--8vmrXc9aQNem4imjZhS-TA_oldpvkgZe5BFok
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 847
{
"data" : {
"orderId" : 1,
"totalItems" : 1,
"totalPrice" : 18000,
"totalDiscountPrice" : 2000,
"expectPrice" : 16000,
"orderStatus" : "REQUEST",
"createdAt" : "2025-09-02T02:44:25.811922+09:00",
"updatedAt" : "2025-09-02T02:44:25.811926+09:00",
"receiver" : {
"realName" : "홍길동",
"phone" : "010-1234-5678",
"address" : {
"city" : "서울시",
"detailAddress" : "강남구 역삼동"
}
},
"totalQuantity" : 2,
"orderItems" : [ {
"orderItemId" : 1,
"quantity" : 2,
"itemId" : 1,
"enterprise" : "테스트 업체",
"product" : "테스트 상품",
"originPrice" : 10000,
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000
} ]
},
"createTime" : "2025‑09‑02T02:44:25+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
응답 데이터 |
|
|
|
응답 생성 시간 |
Payment API
결제 요청
HTTP Request
POST /api/payments/1 HTTP/1.1
Authorization: Bearer token
Host: localhost:8080
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
HTTP Response
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 192
{
"data" : {
"tid" : "test_tid",
"next_redirect_pc_url" : "http://test.url",
"createdAt" : "2025‑09‑02T02:44:26+09:00"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
결제 고유 번호 |
|
|
|
PC 결제 페이지 URL |
|
|
|
생성 시간 |
|
|
|
응답 생성 시간 |
최초 구독 결제 요청
HTTP Request
POST /api/payments/subscriptionsFirst/2 HTTP/1.1
Authorization: Bearer token
Host: localhost:8080
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
구독 주문 ID |
HTTP Response
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 208
{
"data" : {
"tid" : "subscription_tid",
"next_redirect_pc_url" : "http://subscription.url",
"createdAt" : "2025‑09‑02T02:44:26+09:00"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
결제 고유 번호 |
|
|
|
PC 결제 페이지 URL |
|
|
|
생성 시간 |
|
|
|
응답 생성 시간 |
결제 승인
HTTP Request
GET /api/payments/approve/1?pg_token=test_pg_token HTTP/1.1
Host: localhost:8080
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
PG사 승인 토큰 |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 385
{
"data" : {
"item_name" : "test_item_name",
"item_code" : "test_item_code",
"created_at" : "2021-01-01T00:00:00",
"approved_at" : "2021-01-01T00:00:00",
"payload" : "test_payload",
"amount" : {
"total" : 10000,
"tax_free" : 0,
"vat" : 0,
"discount" : 0
},
"quantity" : 0
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
O |
상품명 |
|
|
O |
상품 코드 |
|
|
생성 시간 |
|
|
|
승인 시간 |
|
|
|
O |
추가 데이터 |
|
|
총 결제 금액 |
|
|
|
비과세 금액 |
|
|
|
부가세 금액 |
|
|
|
할인 금액 |
|
|
|
수량 |
|
|
|
응답 생성 시간 |
첫 구독 결제 승인
HTTP Request
GET /api/payments/approve/subscriptionsFirst/2?pg_token=subscription_token HTTP/1.1
Host: localhost:8080
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
PG사 승인 토큰 |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 385
{
"data" : {
"item_name" : "test_item_name",
"item_code" : "test_item_code",
"created_at" : "2021-01-01T00:00:00",
"approved_at" : "2021-01-01T00:00:00",
"payload" : "test_payload",
"amount" : {
"total" : 10000,
"tax_free" : 0,
"vat" : 0,
"discount" : 0
},
"quantity" : 0
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
O |
상품명 |
|
|
O |
상품 코드 |
|
|
생성 시간 |
|
|
|
승인 시간 |
|
|
|
O |
추가 데이터 |
|
|
총 결제 금액 |
|
|
|
비과세 금액 |
|
|
|
부가세 금액 |
|
|
|
할인 금액 |
|
|
|
수량 |
|
|
|
응답 생성 시간 |
구독 정기 결제 승인
HTTP Request
POST /api/payments/approve/subscriptions/3 HTTP/1.1
Host: localhost:8080
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 385
{
"data" : {
"item_name" : "test_item_name",
"item_code" : "test_item_code",
"created_at" : "2021-01-01T00:00:00",
"approved_at" : "2021-01-01T00:00:00",
"payload" : "test_payload",
"amount" : {
"total" : 10000,
"tax_free" : 0,
"vat" : 0,
"discount" : 0
},
"quantity" : 0
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
O |
상품명 |
|
|
O |
상품 코드 |
|
|
생성 시간 |
|
|
|
승인 시간 |
|
|
|
O |
추가 데이터 |
|
|
총 결제 금액 |
|
|
|
비과세 금액 |
|
|
|
부가세 금액 |
|
|
|
할인 금액 |
|
|
|
수량 |
|
|
|
응답 생성 시간 |
결제 환불
HTTP Request
POST /api/payments/refund/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Authorization: Bearer token
Content-Length: 84
Host: localhost:8080
{
"cancelAmount" : 0,
"cancelTaxFreeAmount" : 0,
"cancelAvailableAmount" : 0
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
환불 금액 |
|
|
|
면세 값 |
|
|
|
환불 가능 금액 |
HTTP Response
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 75
{
"data" : "complete",
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
반품 요청 완료 |
|
|
|
응답 생성 시간 |
구독 취소
HTTP Request
DELETE /api/subscriptions?itemOrderId=1 HTTP/1.1
Authorization: Bearer token
Host: localhost:8080
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
주문 상품 ID |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 69
{
"data" : null,
"createTime" : "2025‑09‑02T02:44:27+09:00"
}
Item API
Header
| name | 설명 |
|---|---|
|
API를 사용하기 위한 인증 키 |
메인 페이지 상품 조회
HTTP Request
GET /api/items/main HTTP/1.1
Host: localhost
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1751
{
"data" : {
"discountRateItem" : [ {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"productName" : "16종혼합유산균 디에스",
"enterprise" : "(주)씨티씨바이오",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"reviewSize" : 0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
} ],
"saleItem" : [ {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"productName" : "16종혼합유산균 디에스",
"enterprise" : "(주)씨티씨바이오",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"reviewSize" : 0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
} ]
},
"createTime" : "2025‑09‑02T02:44:25+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
제조사 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
리뷰 수 |
|
|
|
카테고리 목록 |
|
|
|
생성 시간 |
|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
제조사 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
리뷰 수 |
|
|
|
카테고리 목록 |
상품 상세 조회
HTTP Request
GET /api/items/1 HTTP/1.1
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
상품 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1714
{
"data" : {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"descriptionImage" : "descriptionImage",
"enterprise" : "(주)씨티씨바이오",
"productName" : "16종혼합유산균 디에스",
"statementNumber" : "20040017059225",
"registeredDate" : "20220225",
"distributionPeriod" : "제조일로부터 24개월까지",
"sungsang" : "고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말",
"servingUse" : "건강기능식품 원료로 사용",
"preservePeriod" : "냉장보관(10℃이하)",
"intake" : "- 질환이 있거나 의약품 복용 시 전문가와 상담할 것\n- 알레르기 체질 등은 개인에 따라 과민반응을 나타낼 수 있음\n- 어린이가 함부로 섭취하지 않도록 일일섭취량 방법을 지도할 것\n- 이상사례 발생 시 섭취를 중단하고 전문가와 상담할 것\n- 원료로 사용 시 개봉 후 오염 우려가 있으니 신속하게 사용하고 남은 것은 밀봉 후 냉장보관할 것",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"originPrice" : 10000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
},
"createTime" : "2025‑09‑02T02:44:25+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품 상세 이미지 |
|
|
|
제조사 |
|
|
|
상품명 |
|
|
|
품목제조번호 |
|
|
|
등록일 |
|
|
|
유통기한 |
|
|
|
성상 |
|
|
|
용법용량 |
|
|
|
보관방법 |
|
|
|
섭취방법 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
실제 가격 |
|
|
|
원가 |
|
|
|
할인율 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
카테고리 목록 |
|
|
|
생성 시간 |
할인 상품 조회
HTTP Request
GET /api/items/on-sale HTTP/1.1
Content-Type: application/json
Host: localhost
Content-Length: 81
{
"page" : 1,
"size" : 10,
"sortOption" : "SALES",
"direction" : "DESC"
}
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
페이지 번호 |
|
|
|
페이지 크기 |
|
|
|
정렬 옵션 (SALES, PRICE, DISCOUNT_RATE) |
|
|
|
정렬 방향 (ASC, DESC) |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 948
{
"time" : "2025-09-02T02:44:25.236899+09:00",
"data" : [ {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"productName" : "16종혼합유산균 디에스",
"enterprise" : "(주)씨티씨바이오",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"reviewSize" : 0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
} ],
"pageInfo" : {
"page" : 1,
"size" : 8,
"totalElements" : 1,
"totalPages" : 1
}
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
응답 시간 |
|
|
|
제조사 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
리뷰 수 |
|
|
|
카테고리 목록 |
|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
현재 페이지 |
|
|
|
페이지 크기 |
|
|
|
전체 상품 수 |
|
|
|
전체 페이지 수 |
카테고리별 상품 조회
HTTP Request
GET /api/items/categories?categoryName=INTESTINE HTTP/1.1
Content-Type: application/json
Host: localhost
Content-Length: 81
{
"page" : 1,
"size" : 10,
"sortOption" : "SALES",
"direction" : "DESC"
}
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
페이지 번호 |
|
|
|
페이지 크기 |
|
|
|
정렬 옵션 (SALES, PRICE, DISCOUNT_RATE) |
|
|
|
정렬 방향 (ASC, DESC) |
Request Parameters
| Request Parameter | Description |
|---|---|
|
카테고리명 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 948
{
"time" : "2025-09-02T02:44:25.210549+09:00",
"data" : [ {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"productName" : "16종혼합유산균 디에스",
"enterprise" : "(주)씨티씨바이오",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"reviewSize" : 0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
} ],
"pageInfo" : {
"page" : 1,
"size" : 8,
"totalElements" : 1,
"totalPages" : 1
}
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
응답 시간 |
|
|
|
제조사 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
리뷰 수 |
|
|
|
카테고리 목록 |
|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
현재 페이지 |
|
|
|
페이지 크기 |
|
|
|
전체 상품 수 |
|
|
|
전체 페이지 수 |
상품 검색
HTTP Request
GET /api/items/search?keyword=%EB%94%94%EC%97%90%EC%8A%A4 HTTP/1.1
Host: localhost
Request Parameters
| Request Parameter | Description |
|---|---|
|
검색어 |
|
최소 가격 |
|
최대 가격 |
|
정렬 기준 (PRICE_L, PRICE_H, DISCOUNT_RATE_L, DISCOUNT_RATE_H) |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 947
{
"time" : "2025-09-02T02:44:25.16963+09:00",
"data" : [ {
"itemId" : 1,
"thumbnail" : "thumbnailUrl",
"productName" : "16종혼합유산균 디에스",
"enterprise" : "(주)씨티씨바이오",
"mainFunction" : "[프로바이오틱스] 유산균 증식 및 유해균 억제・배변활동 원활・장 건강에 도움을 줄 수 있음",
"baseStandard" : "1. 성상 : 고유의 향미가 있고 이미, 이취가 없는 흰노란색의 분말\n2. 프로바이오틱스 수 : 200,000,000,000(2000억) CFU/g 이상\n3. 대장균군 : 음성\n4. 납(mg/kg) : 1.0 이하\n5. 카드뮴(mg/kg) : 0.3 이하",
"realPrice" : 9000,
"discountRate" : 0.1,
"discountPrice" : 1000,
"sales" : 0,
"starAvg" : 0.0,
"reviewSize" : 0,
"categories" : {
"categoryNameSet" : [ "INTESTINE" ]
}
} ],
"pageInfo" : {
"page" : 1,
"size" : 8,
"totalElements" : 1,
"totalPages" : 1
}
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
응답 시간 |
|
|
|
상품 ID |
|
|
|
상품 썸네일 |
|
|
|
상품명 |
|
|
|
제조사 |
|
|
|
주요기능 |
|
|
|
기준규격 |
|
|
|
실제 가격 |
|
|
|
할인율 |
|
|
|
할인 금액 |
|
|
|
판매량 |
|
|
|
평균 별점 |
|
|
|
리뷰 수 |
|
|
|
카테고리 목록 |
|
|
|
현재 페이지 |
|
|
|
페이지 크기 |
|
|
|
전체 상품 수 |
|
|
|
전체 페이지 수 |
Profile API
프로필 조회
HTTP Request
GET /profile HTTP/1.1
Host: localhost
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: text/plain;charset=UTF-8
Content-Length: 4
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
test
헬스 체크
HTTP Request
GET /health HTTP/1.1
Host: localhost
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: text/plain;charset=UTF-8
Content-Length: 2
Date: Mon, 01 Sep 2025 17:44:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive
OK
Review API
리뷰 작성
HTTP Request
POST /api/reviews HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Content-Type: application/json
Host: localhost
Content-Length: 134
{
"userId" : 1,
"itemId" : 1,
"orderId" : 1,
"displayName" : "test",
"content" : "좋은 상품입니다.",
"star" : 4.5
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
사용자 ID |
|
|
|
상품 ID |
|
|
|
주문 ID |
|
|
|
사용자 닉네임 |
|
|
|
리뷰 내용 |
|
|
|
별점 |
HTTP Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 304
{
"data" : {
"reviewId" : 2,
"displayName" : "test",
"userId" : 1,
"content" : "좋은 상품입니다.",
"star" : 4.5,
"createdAt" : "2025-09-02T02:44:26.661921+09:00",
"updatedAt" : "2025-09-02T02:44:26.661921+09:00"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
리뷰 수정
HTTP Request
PATCH /api/reviews HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Content-Type: application/json
Host: localhost
Content-Length: 119
{
"userId" : 1,
"itemId" : 1,
"reviewId" : 1,
"content" : "수정된 리뷰 내용입니다.",
"star" : 5.0
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
Request Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
사용자 ID |
|
|
|
상품 ID |
|
|
|
리뷰 ID |
|
|
|
수정할 리뷰 내용 |
|
|
|
수정할 별점 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 314
{
"data" : {
"reviewId" : 1,
"displayName" : "test",
"userId" : 1,
"content" : "수정된 리뷰 내용입니다.",
"star" : 5.0,
"createdAt" : "2025-09-02T02:44:26.523237+09:00",
"updatedAt" : "2025-09-02T02:44:26.533177+09:00"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
리뷰 삭제
HTTP Request
DELETE /api/reviews HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY2LCJpYXQiOjE3NTY3NDg2NjZ9.Yh7x4jcC0JN8On5W_Vre_Dsj9mXp-_xn0SZ-ykzvJkE
Content-Type: application/json
Host: localhost
Content-Length: 52
{
"reviewId" : 1,
"itemId" : 1,
"userId" : 1
}
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
|
요청 컨텐츠 타입 |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
리뷰 상세 조회
HTTP Request
GET /api/reviews/1 HTTP/1.1
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
리뷰 ID |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 364
{
"data" : {
"reviewId" : 1,
"itemId" : 1,
"userId" : 1,
"content" : "좋은 상품입니다.",
"displayName" : "테스트유저",
"star" : 4.5,
"createdAt" : "2025-09-02T02:44:26.802234+09:00",
"updatedAt" : "2025-09-02T02:44:26.802234+09:00",
"reviewStatus" : "ACTIVE"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
상품별 리뷰 목록 조회
HTTP Request
GET /api/reviews/items/1?page=1&size=8&sort=NEWEST HTTP/1.1
Host: localhost
Path Parameters
| Parameter | Description |
|---|---|
|
상품 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
페이지 번호 |
|
페이지 크기 |
|
정렬 방식 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 464
{
"time" : "2025-09-02T02:44:26.56028+09:00",
"data" : [ {
"reviewId" : 1,
"itemId" : 1,
"userId" : 1,
"content" : "좋은 상품입니다.",
"displayName" : "테스트유저",
"star" : 4.5,
"createdAt" : "2025-09-02T02:44:26.551316+09:00",
"updatedAt" : "2025-09-02T02:44:26.551317+09:00",
"reviewStatus" : "ACTIVE"
} ],
"pageInfo" : {
"page" : 1,
"size" : 8,
"totalElements" : 1,
"totalPages" : 1
}
}
사용자별 리뷰 목록 조회
HTTP Request
GET /api/reviews/users/1?page=1&size=8&sort=NEWEST HTTP/1.1
Host: localhost
Request Parameters
| Request Parameter | Description |
|---|---|
|
페이지 번호 |
|
페이지 크기 |
|
정렬 방식 |
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 464
{
"time" : "2025-09-02T02:44:26.68508+09:00",
"data" : [ {
"reviewId" : 1,
"itemId" : 1,
"userId" : 1,
"content" : "좋은 상품입니다.",
"displayName" : "테스트유저",
"star" : 4.5,
"createdAt" : "2025-09-02T02:44:26.678575+09:00",
"updatedAt" : "2025-09-02T02:44:26.678577+09:00",
"reviewStatus" : "ACTIVE"
} ],
"pageInfo" : {
"page" : 1,
"size" : 8,
"totalElements" : 1,
"totalPages" : 1
}
}
Subscription API
첫 구독 결제 요청
HTTP Request
POST /api/payments/subscriptionsFirst/2 HTTP/1.1
Authorization: Bearer token
Host: localhost:8080
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Path Parameters
| Parameter | Description |
|---|---|
|
구독 주문 ID |
HTTP Response
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 208
{
"data" : {
"tid" : "subscription_tid",
"next_redirect_pc_url" : "http://subscription.url",
"createdAt" : "2025‑09‑02T02:44:26+09:00"
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
결제 고유 번호 |
|
|
|
PC 결제 페이지 URL |
|
|
|
생성 시간 |
|
|
|
응답 생성 시간 |
첫 구독 결제 승인
HTTP Request
GET /api/payments/approve/subscriptionsFirst/2?pg_token=subscription_token HTTP/1.1
Host: localhost:8080
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
Request Parameters
| Request Parameter | Description |
|---|---|
|
PG사 승인 토큰 |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 385
{
"data" : {
"item_name" : "test_item_name",
"item_code" : "test_item_code",
"created_at" : "2021-01-01T00:00:00",
"approved_at" : "2021-01-01T00:00:00",
"payload" : "test_payload",
"amount" : {
"total" : 10000,
"tax_free" : 0,
"vat" : 0,
"discount" : 0
},
"quantity" : 0
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
O |
상품명 |
|
|
O |
상품 코드 |
|
|
생성 시간 |
|
|
|
승인 시간 |
|
|
|
O |
추가 데이터 |
|
|
총 결제 금액 |
|
|
|
비과세 금액 |
|
|
|
부가세 금액 |
|
|
|
할인 금액 |
|
|
|
수량 |
|
|
|
응답 생성 시간 |
정기 구독 결제 승인
HTTP Request
POST /api/payments/approve/subscriptions/3 HTTP/1.1
Host: localhost:8080
Path Parameters
| Parameter | Description |
|---|---|
|
주문 ID |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 385
{
"data" : {
"item_name" : "test_item_name",
"item_code" : "test_item_code",
"created_at" : "2021-01-01T00:00:00",
"approved_at" : "2021-01-01T00:00:00",
"payload" : "test_payload",
"amount" : {
"total" : 10000,
"tax_free" : 0,
"vat" : 0,
"discount" : 0
},
"quantity" : 0
},
"createTime" : "2025‑09‑02T02:44:26+09:00"
}
Response Fields
| Path | Type | Optional | Description |
|---|---|---|---|
|
|
O |
상품명 |
|
|
O |
상품 코드 |
|
|
생성 시간 |
|
|
|
승인 시간 |
|
|
|
O |
추가 데이터 |
|
|
총 결제 금액 |
|
|
|
비과세 금액 |
|
|
|
부가세 금액 |
|
|
|
할인 금액 |
|
|
|
수량 |
|
|
|
응답 생성 시간 |
구독 주기 변경
HTTP Request
PATCH /api/carts/subscription/2/period?itemId=1&period=60 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6IlVTRVIiLCJ1c2VybmFtZSI6InRlc3RAdGVzdC5jb20iLCJzdWIiOiJ0ZXN0QHRlc3QuY29tIiwiZXhwIjoxNzU2NzUwNDY3LCJpYXQiOjE3NTY3NDg2Njd9.6aOqqT9raShFsgCi4EHIzXs7oCzeAlb1iyJ_9uGt76E
Host: localhost
Request Headers
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
변경할 구독 주기 |
|
상품 ID |
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Date: Mon, 01 Sep 2025 17:44:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
구독 취소
HTTP Request
DELETE /api/subscriptions?itemOrderId=1 HTTP/1.1
Authorization: Bearer token
Host: localhost:8080
| Name | Description |
|---|---|
|
Bearer 인증 토큰 |
Request Parameters
| Request Parameter | Description |
|---|---|
|
주문 상품 ID |
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 69
{
"data" : null,
"createTime" : "2025‑09‑02T02:44:27+09:00"
}