1. Auction Service
1.1. Auction Bid
1.1.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/auctions/10/bid' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer token' \
-d '{
"biddingPrice" : 120000
}'
POST /api/v1/auctions/10/bid HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer token
Content-Length: 29
Host: localhost:8080
{
"biddingPrice" : 120000
}
1.1.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.1.3. 요청 파라미터
경로 파라미터
| Path Parameter | Description |
|---|---|
|
입찰할 경매 ID |
1.1.4. 요청 본문
필드 설명
| Path | Type | Description |
|---|---|---|
|
|
사용자가 제시하는 입찰 금액 |
예시
{
"biddingPrice" : 120000
}
1.1.5. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
응답 데이터 (없음) |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 86
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
1.2. Category Get All
1.2.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/categories' -i -X GET \
-H 'Accept: application/json'
GET /api/v1/categories HTTP/1.1
Accept: application/json
Host: localhost:8080
1.2.2. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
전체 카테고리 목록 |
Required |
|
|
카테고리 ID |
Required |
|
|
대분류 카테고리 명 |
Required |
|
|
소분류 카테고리 명 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : [ {
"categoryId" : 1,
"bigCategory" : "전자제품",
"smallCategory" : "노트북"
}, {
"categoryId" : 2,
"bigCategory" : "전자제품",
"smallCategory" : "태블릿"
}, {
"categoryId" : 3,
"bigCategory" : "패션",
"smallCategory" : "여성 의류"
}, {
"categoryId" : 4,
"bigCategory" : "패션",
"smallCategory" : "남성 의류"
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 476
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : [ {
"categoryId" : 1,
"bigCategory" : "전자제품",
"smallCategory" : "노트북"
}, {
"categoryId" : 2,
"bigCategory" : "전자제품",
"smallCategory" : "태블릿"
}, {
"categoryId" : 3,
"bigCategory" : "패션",
"smallCategory" : "여성 의류"
}, {
"categoryId" : 4,
"bigCategory" : "패션",
"smallCategory" : "남성 의류"
} ]
}
1.3. Product Get Bidding Products
1.3.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/bidding/me' -i -X GET \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json'
GET /api/v1/products/bidding/me HTTP/1.1
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
1.3.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.3.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
현재 페이지 번호 |
Required |
|
|
페이지 크기 |
Required |
|
|
총 페이지 수 |
Required |
|
|
총 요소 수 |
Required |
|
|
상품 목록 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이름 |
Required |
|
|
상품 이미지 URL |
Required |
|
|
마감 일시 (ISO-8601) |
Required |
|
|
현재 입찰가 |
Required |
|
|
입찰 가격 |
Required |
본문 예시
{
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"endAt" : "2025-12-16T02:09:07.903173129",
"currentBid" : 1000,
"bidPrice" : 1100
}, {
"id" : 2,
"name" : "상품2",
"image" : "image2.jpg",
"endAt" : "2025-12-17T02:09:07.903229302",
"currentBid" : 2000,
"bidPrice" : 2100
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 427
{
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"endAt" : "2025-12-16T02:09:07.903173129",
"currentBid" : 1000,
"bidPrice" : 1100
}, {
"id" : 2,
"name" : "상품2",
"image" : "image2.jpg",
"endAt" : "2025-12-17T02:09:07.903229302",
"currentBid" : 2000,
"bidPrice" : 2100
} ]
}
1.4. Product Get Product Info
1.4.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/1' -i -X GET \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json'
GET /api/v1/products/1 HTTP/1.1
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
1.4.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.4.3. 요청 파라미터
경로 파라미터
| Path Parameter | Description |
|---|---|
|
상품 ID |
1.4.4. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이름 |
Required |
|
|
상품 설명 |
Required |
|
|
조회수 |
Required |
|
|
등록 일시 (ISO-8601) |
Required |
|
|
상품 이미지 URL |
Required |
|
|
카테고리 이름 |
Required |
|
|
최소 가격 |
Required |
|
|
현재 입찰가 |
Optional |
|
|
마감 일시 (ISO-8601) |
Required |
|
|
판매자 이름 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"id" : 1,
"name" : "테스트 상품",
"description" : "상품 설명",
"viewCount" : 10,
"registeredAt" : "2025-12-15T02:09:07.645261159",
"image" : "image.jpg",
"categoryName" : "전자제품",
"minPrice" : 1000,
"currentBid" : 1500,
"endAt" : "2025-12-22T02:09:07.645362268",
"sellerName" : "sellerName"
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 438
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"id" : 1,
"name" : "테스트 상품",
"description" : "상품 설명",
"viewCount" : 10,
"registeredAt" : "2025-12-15T02:09:07.645261159",
"image" : "image.jpg",
"categoryName" : "전자제품",
"minPrice" : 1000,
"currentBid" : 1500,
"endAt" : "2025-12-22T02:09:07.645362268",
"sellerName" : "sellerName"
}
}
1.5. Product Get Product Simple Info
1.5.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/1/simple-info' -i -X GET \
-H 'Accept: application/json'
GET /api/v1/products/1/simple-info HTTP/1.1
Accept: application/json
Host: localhost:8080
1.5.2. 요청 파라미터
경로 파라미터
| Path Parameter | Description |
|---|---|
|
상품 ID |
1.5.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
상품 이름 |
Required |
|
|
상품 이미지 URL |
Required |
|
|
최소 입찰가 |
Required |
|
|
현재 입찰가 |
Optional |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"name" : "테스트 상품",
"image" : "image.jpg",
"minBidPrice" : 1000,
"currentBidPrice" : 1500
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 202
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"name" : "테스트 상품",
"image" : "image.jpg",
"minBidPrice" : 1000,
"currentBidPrice" : 1500
}
}
1.6. Product Get Purchased Products
1.6.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/purchased/me' -i -X GET \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json'
GET /api/v1/products/purchased/me HTTP/1.1
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
1.6.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.6.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
현재 페이지 번호 |
Required |
|
|
페이지 크기 |
Required |
|
|
총 페이지 수 |
Required |
|
|
총 요소 수 |
Required |
|
|
구매 완료 상품 목록 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이름 |
Required |
|
|
상품 이미지 URL |
Required |
|
|
최종 구매 가격 |
Required |
|
|
구매 일시 (ISO-8601) |
Required |
본문 예시
{
"page" : 0,
"size" : 20,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"finalPrice" : 10000,
"buyAt" : "2025-12-15T02:09:07.538434483"
}, {
"id" : 2,
"name" : "상품2",
"image" : "image2.jpg",
"finalPrice" : 15000,
"buyAt" : "2025-12-15T02:09:07.538484327"
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 383
{
"page" : 0,
"size" : 20,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"finalPrice" : 10000,
"buyAt" : "2025-12-15T02:09:07.538434483"
}, {
"id" : 2,
"name" : "상품2",
"image" : "image2.jpg",
"finalPrice" : 15000,
"buyAt" : "2025-12-15T02:09:07.538484327"
} ]
}
1.7. Product Get Selling Products
1.7.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/selling/me' -i -X GET \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json'
GET /api/v1/products/selling/me HTTP/1.1
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
1.7.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.7.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
현재 페이지 번호 |
Required |
|
|
페이지 크기 |
Required |
|
|
총 페이지 수 |
Required |
|
|
총 요소 수 |
Required |
|
|
상품 목록 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이름 |
Required |
|
|
상품 이미지 URL |
Required |
|
|
마감 일시 (ISO-8601) |
Required |
|
|
현재 입찰가 |
Required |
|
|
경매 ID |
Required |
본문 예시
{
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"endAt" : "2025-12-16T02:09:07.104222782",
"currentBid" : 1000,
"auctionId" : 1
}, {
"id" : 1,
"name" : "상품2",
"image" : "image2.jpg",
"endAt" : "2025-12-17T02:09:07.104277608",
"currentBid" : 2000,
"auctionId" : 2
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 423
{
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"image" : "image1.jpg",
"endAt" : "2025-12-16T02:09:07.104222782",
"currentBid" : 1000,
"auctionId" : 1
}, {
"id" : 1,
"name" : "상품2",
"image" : "image2.jpg",
"endAt" : "2025-12-17T02:09:07.104277608",
"currentBid" : 2000,
"auctionId" : 2
} ]
}
1.8. Product Get Sold Products
1.8.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/sold/me' -i -X GET \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json'
GET /api/v1/products/sold/me HTTP/1.1
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
1.8.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.8.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
현재 페이지 번호 |
Required |
|
|
페이지 크기 |
Required |
|
|
총 페이지 수 |
Required |
|
|
총 요소 수 |
Required |
|
|
판매 완료 상품 목록 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이름 |
Required |
|
|
상품 설명 |
Required |
|
|
상품 이미지 URL |
Required |
|
|
최종 낙찰가 가격 |
Required |
|
|
구매 일시 (ISO-8601) |
Required |
본문 예시
{
"page" : 0,
"size" : 20,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"description" : "상품 설명1",
"image" : "image1.jpg",
"finalPrice" : 30000,
"soldAt" : "2025-12-15T02:09:07.75970221"
}, {
"id" : 2,
"name" : "상품2",
"description" : "상품 설명2",
"image" : "image2.jpg",
"finalPrice" : 45000,
"soldAt" : "2025-12-15T02:09:07.759741459"
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 460
{
"page" : 0,
"size" : 20,
"totalPages" : 1,
"totalElements" : 2,
"contents" : [ {
"id" : 1,
"name" : "상품1",
"description" : "상품 설명1",
"image" : "image1.jpg",
"finalPrice" : 30000,
"soldAt" : "2025-12-15T02:09:07.75970221"
}, {
"id" : 2,
"name" : "상품2",
"description" : "상품 설명2",
"image" : "image2.jpg",
"finalPrice" : 45000,
"soldAt" : "2025-12-15T02:09:07.759741459"
} ]
}
1.9. Product Register Product
1.9.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products' -i -X POST \
-H 'Content-Type: multipart/form-data;charset=UTF-8' \
-H 'Authorization: Bearer token' \
-H 'Accept: application/json' \
-F 'product=@product;type=application/json' \
-F 'image=@image.jpg;type=image/jpeg'
POST /api/v1/products HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer token
Accept: application/json
Host: localhost:8080
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=product; filename=product
Content-Type: application/json
{"name":"테스트 상품","description":"상품 설명","categoryId":1,"startBid":1000,"endAt":"2025-12-22T02:09:05.181038321"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=image.jpg
Content-Type: image/jpeg
dummy-image-content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
1.9.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 액세스 토큰 (Bearer {token}) |
1.9.3. 요청 파트
| Part | Description |
|---|---|
|
상품 등록 요청 JSON |
|
상품 대표 이미지 파일 |
PRODUCT 파트
필드 설명
| Path | Type | Description |
|---|---|---|
|
|
상품 이름 |
|
|
상품 설명 |
|
|
카테고리 ID |
|
|
시작 입찰가 |
|
|
마감 일시 (ISO-8601) |
1.9.4. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
응답 데이터 (여기서는 null) |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 86
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
1.10. Product Search
1.10.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/products/search' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"keyword" : "phone",
"categoryId" : 2,
"onlyNotSold" : true,
"page" : 0,
"size" : 10,
"sortBy" : "REGISTERED_AT_DESC",
"endAtFrom" : "2025-12-31"
}'
POST /api/v1/products/search HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 163
Host: localhost:8080
{
"keyword" : "phone",
"categoryId" : 2,
"onlyNotSold" : true,
"page" : 0,
"size" : 10,
"sortBy" : "REGISTERED_AT_DESC",
"endAtFrom" : "2025-12-31"
}
1.10.2. 요청 본문
필드 설명
| Path | Type | Description |
|---|---|---|
|
|
검색 키워드 (공백으로 구분된 다중 키워드 가능) |
|
|
카테고리 ID |
|
|
판매중인 상품만 조회할지 여부 |
|
|
정렬 기준 (예: endAt, registeredAt) |
|
|
페이지 번호 (0부터) |
|
|
페이지 사이즈 |
|
|
마감일 필터 (yyyy-MM-dd 형식) |
예시
{
"keyword" : "phone",
"categoryId" : 2,
"onlyNotSold" : true,
"page" : 0,
"size" : 10,
"sortBy" : "REGISTERED_AT_DESC",
"endAtFrom" : "2025-12-31"
}
1.10.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
응답 페이지 번호 |
Required |
|
|
응답 페이지 사이즈 |
Required |
|
|
총 페이지 수 |
Required |
|
|
총 요소 수 |
Required |
|
|
상품 ID |
Required |
|
|
상품 이미지 경로 |
Required |
|
|
상품명 |
Required |
|
|
등록일시 |
Required |
|
|
종료일시 |
Required |
|
|
현재 입찰가 (없으면 null) |
Required |
|
|
최소 입찰가 |
Required |
|
|
판매 여부 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 1,
"contents" : [ {
"id" : 1,
"image" : "/images/phone.jpg",
"name" : "Smart Phone",
"registeredAt" : "2025-01-01T10:00:00",
"endAt" : "2025-12-31T23:59:59",
"currentBidPrice" : 50000,
"minBidPrice" : 10000,
"sold" : false
} ]
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 447
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"page" : 0,
"size" : 10,
"totalPages" : 1,
"totalElements" : 1,
"contents" : [ {
"id" : 1,
"image" : "/images/phone.jpg",
"name" : "Smart Phone",
"registeredAt" : "2025-01-01T10:00:00",
"endAt" : "2025-12-31T23:59:59",
"currentBidPrice" : 50000,
"minBidPrice" : 10000,
"sold" : false
} ]
}
}
2. Main Service
2.1. Auth Login
2.1.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/members/login' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"email" : "test@email.com",
"password" : "Password123!"
}'
POST /api/v1/members/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 63
Host: localhost:8080
{
"email" : "test@email.com",
"password" : "Password123!"
}
2.1.2. 요청 본문
필드 설명
| Path | Type | Description |
|---|---|---|
|
|
로그인할 이메일 |
|
|
비밀번호 |
예시
{
"email" : "test@email.com",
"password" : "Password123!"
}
2.1.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
발급된 JWT 액세스 토큰 (Bearer 포함) |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"accessToken" : "Bearer eyJhbGciOiJIUzI1Ni..."
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 138
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"accessToken" : "Bearer eyJhbGciOiJIUzI1Ni..."
}
}
2.2. Auth Signup
2.2.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/members/signup' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"email" : "newuser@email.com",
"nickname" : "새로운유저",
"password" : "Password123!"
}'
POST /api/v1/members/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 100
Host: localhost:8080
{
"email" : "newuser@email.com",
"nickname" : "새로운유저",
"password" : "Password123!"
}
2.2.2. 요청 본문
필드 설명
| Path | Type | Description |
|---|---|---|
|
|
가입할 이메일 주소 |
|
|
사용할 닉네임 |
|
|
사용할 비밀번호 |
예시
{
"email" : "newuser@email.com",
"nickname" : "새로운유저",
"password" : "Password123!"
}
2.2.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
반환 데이터 (없음) |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 86
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : null
}
2.3. Member ChargeCredit
2.3.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/members/me/credit/charge' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"amount" : 10000
}'
POST /api/v1/members/me/credit/charge HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 22
Host: localhost:8080
{
"amount" : 10000
}
2.3.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
충전 후 현재 보유 크레딧 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"currentCredit" : 20000
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 115
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"currentCredit" : 20000
}
}
2.4. Member GetCredit
2.4.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/members/me/credit' -i -X GET \
-H 'Accept: application/json'
GET /api/v1/members/me/credit HTTP/1.1
Accept: application/json
Host: localhost:8080
2.4.2. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
현재 보유 크레딧 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"currentCredit" : 20000
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 115
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"currentCredit" : 20000
}
}
2.5. Notifications Get Unread Notifications
2.5.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/notifications/me' -i -X GET \
-H 'Authorization: Bearer valid-token'
GET /api/v1/notifications/me HTTP/1.1
Authorization: Bearer valid-token
Host: localhost:8080
2.5.2. 요청 헤더
| Name | Description |
|---|---|
|
JWT 인증 토큰 (Bearer 토큰) |
2.5.3. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
API 요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
알림 타입 (예: BID) |
Required |
|
|
알림 제목 |
Required |
|
|
알림 내용 |
Required |
|
|
알림 생성 시간 (ISO 8601 형식) |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"notifications" : [ {
"type" : "BID",
"title" : "입찰 성공",
"message" : "입찰에 성공했습니다.",
"notifiedAt" : "2025-12-15T02:09:38.238457356"
} ]
}
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 280
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : {
"notifications" : [ {
"type" : "BID",
"title" : "입찰 성공",
"message" : "입찰에 성공했습니다.",
"notifiedAt" : "2025-12-15T02:09:38.238457356"
} ]
}
}
2.6. Ranking GetHotKeywords
2.6.1. 요청 예시
$ curl 'http://localhost:8080/api/v1/rankings/search-keywords' -i -X GET \
-H 'Accept: application/json'
GET /api/v1/rankings/search-keywords HTTP/1.1
Accept: application/json
Host: localhost:8080
2.6.2. 응답
필드 설명
| Path | Type | Description | Notes |
|---|---|---|---|
|
|
요청 성공 여부 |
Required |
|
|
응답 메시지 |
Required |
|
|
검색어 |
Required |
|
|
순위 |
Required |
본문 예시
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : [ {
"keyword" : "유영관",
"rankNo" : 1
}, {
"keyword" : "정직한",
"rankNo" : 2
}, {
"keyword" : "김석준",
"rankNo" : 3
}, {
"keyword" : "백도현",
"rankNo" : 4
}, {
"keyword" : "박수현",
"rankNo" : 5
} ]
}
HTTP 응답
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 349
{
"success" : true,
"message" : "요청에 성공했습니다.",
"data" : [ {
"keyword" : "유영관",
"rankNo" : 1
}, {
"keyword" : "정직한",
"rankNo" : 2
}, {
"keyword" : "김석준",
"rankNo" : 3
}, {
"keyword" : "백도현",
"rankNo" : 4
}, {
"keyword" : "박수현",
"rankNo" : 5
} ]
}