Skip to content

API 명세서

제이미 edited this page Oct 19, 2023 · 4 revisions

restdocs 문서를 통해 확인하기

응답

응답 형식

요청 성공 시

  • HTTP 상태 코드 및 API 별 성공에 대한 응답 내용 반환
  • 이후 API 명세 참고

요청 실패 시

  • HTTP 상태 코드 및 JSON 형식의 에러 메시지 반환

    {
    	message: String
    }

HTTP 상태 코드

상태 코드 상태 설명
200 OK 성공 요청을 성공적으로 수행
201 Created 성공 리소스 생성
400 Bad Request 실패 잘못된 요청
401 Unauthorized 실패 비인증 상태
403 Forbidden 실패 권한 거부
404 Not Found 실패 존재하지 않는 리소스에 대한 요청
500 Internal Server Error 실패 서버 에러

인증 & 인가 API

로그인

request

POST /oauth2/login/{oauth2Type}

POST /oauth2/login/kakao HTTP/1.1
Content-Type: application/json

{
	"accessToken" : "kakaoAccessToken",
  "deviceToken" : "deviceToken"
}
  • 본문

    이름 타입 설명 필수
    accessToken String 소셜 로그인 AccessToken O
    deviceToken String 기기 디바이스 토큰 O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "accessToken" : "Bearer accessToken",
  "refreshToken" : "Bearer refreshToken",
  "isSignUpUser" : false
}
  • 본문

    이름 타입 설명 필수
    accessToken String Access Token O
    refreshToken String Refresh Token O
    isSignUpUser Boolean 최초 로그인 여부(회원가입) O

AccessToken 재발급

request

POST /oauth2/refresh-token

POST /oauth2/refresh-token HTTP/1.1
Content-Type: application/json

{
  "refreshToken" : "Bearer refreshToken"
}
  • 본문

    이름 타입 설명 필수
    refreshToken String Refresh Token O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "accessToken" : "Bearer accessToken",
  "refreshToken" : "Bearer refreshToken"
}
  • 본문

    이름 타입 설명 필수
    accessToken String 재발급한 Access Token O
    refreshToken String 기존 Refresh Token O

AccessToken 유효성 검사

request

GET /oauth2/validate-token

GET /oauth2/validate-token HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "validated" : true
}
  • 본문

    이름 타입 설명 필수
    validated Boolean Access Token이 유효한지 여부 O

로그아웃

request

POST /oauth2/logout

POST /oauth2/logout HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "refreshToken" : "Bearer refreshToken"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    refreshToken String Refresh Token O

response

HTTP/1.1 204 No Content

탈퇴

request

DELETE /oauth2/withdrawal

POST /oauth2/withdrawal HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "refreshToken" : "Bearer refreshToken"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    refreshToken String Refresh Token O

response

HTTP/1.1 204 No Content

사용자 정보 API

사용자 정보 조회

request

GET /users

GET /users HTTP/1.1
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "name" : "사용자",
  "profileImage" : "http://localhost:8080/users/images/1",
  "reliability" : 4.6
}
  • 본문

    이름 타입 설명 필수
    name String 사용자 닉네임 O
    profileImage String 사용자 프로필 이미지 URL O
    reliability Number 사용자 신뢰도 O

사용자 정보 수정

request

PATHCH /users

PATCH /users HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer accessToken

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=images; filename=image.png
Content-Type: image/png

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request; filename=request
Content-Type: application/json

{
	"name": "새로운 이름"
}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    image Multipart 수정할 프로필 이미지 파일 (1장) X
    request Multipart 요청 데이터 X
    • request 필드

      이름 타입 설명 필수
      name String 수정할 닉네임 O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "name" : "updateName",
  "profileImage" : "http://localhost:8080/users/images/1",
  "reliability" : 4.6
}
  • 본문

    이름 타입 설명 필수
    name String 사용자 닉네임 O
    profileImage String 사용자 프로필 이미지 URL O
    reliability Number 사용자 신뢰도 O

디바이스 토큰 API

디바이스 토큰 갱신

request

PATCH /device-token

PATCH /device-token HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "deviceToken" : "newDeviceToken"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    deviceToken String 디바이스 토큰 O

response

HTTP/1.1 200 OK

카테고리 API

메인 카테고리 조회

request

GET /categories

GET /categories HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 1,
	  "name" : "main1"
	},
	{
	  "id" : 2,
	  "name" : "main2"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 모든 메인 카테고리 목록
    존재하지 않는다면 빈 배열 반환
    O
    [].id Number 메인 카테고리 ID O
    [].name String 메인 카테고리 이름 O

서브 카테고리 조회

request

GET /categories/{mainId}

GET /categories/1 HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 2,
	  "name" : "sub1"
	},
	{
	  "id" : 3,
	  "name" : "sub2"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 메인 카테고리에 해당하는 모든 서브 카테고리 목록
    존재하지 않는다면 빈 배열 반환
    O
    [].id Number 서브 카테고리 ID O
    [].name String 서브 카테고리 이름 O

직거래 지역 API

첫 번째 직거래 지역 조회

request

GET /regions

GET /regions HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 1,
	  "name" : "서울특별시"
	}, {
	  "id" : 2,
	  "name" : "부산광역시"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 모든 첫 번째 직거래 지역 목록
    존재하지 않는다면 빈 배열 반환
    O
    [].id Number 첫 번째 직거래 지역 ID O
    [].name String 첫 번째 직거래 지역 이름 O

두 번째 직거래 지역 조회

request

GET /regions/{firstId}

GET /regions/1 HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 4,
	  "name" : "강남구"
	},
	{
	  "id" : 5,
	  "name" : "강동구"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 첫 번째 지역에 해당하는 모든 두 번째 직거래 지역
    존재하지 않는다면 빈 배열 반환
    O
    [].id Number 두 번째 직거래 지역 ID O
    [].name String 두 번째 직거래 지역 이름 O

세 번째 직거래 지역 조회

request

GET /regions/{firstId}/{secondId}

GET /regions/1/4 HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 7,
	  "name" : "개포1동"
	},
	{
	  "id" : 8,
	  "name" : "개포2동"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 두 번째 지역에 해당하는 모든 세 번째 직거래 지역
    존재하지 않는다면 빈 배열 반환
    O
    [].id Number 세 번째 직거래 지역 ID O
    [].name String 세 번째 직거래 지역 이름 O

경매 API

경매 등록

request

POST /auctions

POST /auctions HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer accessToken

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=images; filename=image.png
Content-Type: image/png

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request; filename=request
Content-Type: application/json

{"title":"제목","description":"내용","bidUnit":1000,"startPrice":1000,"closingTime":"2023-10-18T21:12:06.450773","subCategoryId":2,"thirdRegionIds":[3]}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    image Multipart 이미지 파일(Array, 최대 10장) X
    request Multipart 요청 데이터 X
    • request 필드

      이름 타입 설명 필수
      title String 경매 글 제목 O
      description String 경매 글 본문 O
      bidUnit Number 입찰 단위 O
      startPrice Number 시작가 O
      closingTime String 마감 시간 O
      subCategoryId Number 서브 카테고리 아이디 O
      thirdRegionIds Array 세 번째 직거래 지역 목록 O
      thirdRegionIds.[] Number 세 번째 직거래 지역 아이디 O

response

HTTP/1.1 201 Created
Location: /auctions/1
Content-Type: application/json

{
  "id" : 1,
  "title" : "제목",
  "image" : "http://localhost:8080/auctions/images/1",
  "auctionPrice" : 1000,
  "status" : "UNBIDDEN",
  "auctioneerCount" : 0
}
  • 본문

    이름 타입 설명 필수
    id Number 경매 ID O
    title String 경매 글 제목 O
    image String 경매 대표 이미지 URL O
    auctionPrice Number 시작가 O
    status String 경매 상태 O
    auctioneerCount Number 경매 참여자 수 O

경매 목록 조회

request

GET /auctions?size={size}&page={pageNumber}&sortType={sortType}?lastAuctionId={lastAuctionId}

GET /auctions?size=10 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "auctions" : [ 
		{
	    "id" : 2,
	    "title" : "경매 상품 1",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  },
		{
	    "id" : 1,
	    "title" : "경매 상품 1",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  } 
	],
  "isLast" : true
}
  • 본문

    이름 타입 설명 필수
    auctions Array 조회한 경매 목록 O
    auctions.[] Array 조회한 단일 경매 정보 O
    auctions.[].id Number 경매 ID O
    auctions.[].title String 경매 글 제목 O
    auctions.[].image String 경매 대표 이미지 URL O
    auctions.[].auctionPrice Number 경매가(시작가, 현재가, 낙찰가 중 하나) O
    auctions.[].status String 경매 상태 O
    auctions.[].auctioneerCount Number 경매 참여자 수 O
    isLast Boolean 마지막 페이지 여부 O

자신이 등록한 경매 목록 조회

request

GET /users/auctions/mine?size={size}&page={pageNumber}

GET /users/auctions/mine?size=10&page=1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "auctions" : [
	{
	    "id" : 2,
	    "title" : "경매 상품 2",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  },
		{
	    "id" : 1,
	    "title" : "경매 상품 1",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  }
	],
  "isLast" : true
}
  • 본문

    이름 타입 설명 필수
    auctions Array 조회한 경매 목록 O
    auctions.[] Array 조회한 단일 경매 정보 O
    auctions.[].id Number 경매 ID O
    auctions.[].title String 경매 글 제목 O
    auctions.[].image String 경매 대표 이미지 URL O
    auctions.[].auctionPrice Number 경매가(시작가, 현재가, 낙찰가 중 하나) O
    auctions.[].status String 경매 상태 O
    auctions.[].auctioneerCount Number 경매 참여자 수 O
    isLast Boolean 마지막 페이지 여부 O

자신이 참여한 경매 목록 조회

request

GET /users/auctions/bids?size={size}&page={pageNum}

GET /users/auctions/bids?size=10&page=1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "auctions" : [
	{
	    "id" : 2,
	    "title" : "경매 상품 2",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  },
		{
	    "id" : 1,
	    "title" : "경매 상품 1",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "auctionPrice" : 1000,
	    "status" : "UNBIDDEN",
	    "auctioneerCount" : 2
	  }
	],
  "isLast" : true
}
  • 본문

    이름 타입 설명 필수
    auctions Array 조회한 경매 목록 O
    auctions.[] Array 조회한 단일 경매 정보 O
    auctions.[].id Number 경매 ID O
    auctions.[].title String 경매 글 제목 O
    auctions.[].image String 경매 대표 이미지 URL O
    auctions.[].auctionPrice Number 경매가(시작가, 현재가, 낙찰가 중 하나) O
    auctions.[].status String 경매 상태 O
    auctions.[].auctioneerCount Number 경매 참여자 수 O
    isLast Boolean 마지막 페이지 여부 O

경매 상세 조회

request

GET /auctions/{id}

GET /auctions/1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "auction" : {
    "id" : 1,
    "images" : [ "http://localhost:8080/auctions/images/1" ],
    "title" : "경매 상품 1",
    "category" : {
      "main" : "main",
      "sub" : "sub"
    },
    "description" : "이것은 경매 상품 1 입니다.",
    "startPrice" : 1000,
    "lastBidPrice" : null,
    "status" : "UNBIDDEN",
    "bidUnit" : 1000,
    "registerTime" : "2023-10-15T21:12:06",
    "closingTime" : "2023-10-15T21:12:06",
    "directRegions" : [ {
      "first" : "서울특별시",
      "second" : "강서구",
      "third" : "역삼동"
    } ],
    "auctioneerCount" : 2
  },
  "seller" : {
    "id" : 1,
    "image" : "http://localhost:8080/users/images/1",
    "nickname" : "판매자",
    "reliability" : 3.5
  },
  "chat" : {
    "id" : 1,
    "isChatParticipant" : true
  },
  "isOwner" : true,
  "isLastBidder" : false
}
  • 본문

    이름 타입 설명 필수
    auction.id Number 경매 글 ID O
    auction.images Array 경매 이미지 O
    auction.title String 경매 글 제목 O
    auction.category Object 경매 카테고리 O
    auction.category.main String 상위 카테고리 O
    auction.category.sub String 하위 카테고리 O
    auction.description String 경매 본문 O
    auction.startPrice Number 시작가 O
    auction.lastBidPrice Null 마지막 입찰가 O
    auction.status String 경매 상태 O
    auction.bidUnit Number 입찰 단위 O
    auction.registerTime String 경매 등록시간 O
    auction.closingTime String 경매 마감시간 O
    auction.directRegions Array 모든 직거래 지역 O
    auction.directRegions.[] Array 단일 직거래 지역 O
    auction.directRegions.[].first String 첫 번째 직거래 지역 O
    auction.directRegions.[].second String 두 번째 직거래 지역 O
    auction.directRegions.[].third String 세 번째 직거래 지역 O
    auction.auctioneerCount Number 경매 참여자 수 O
    seller Object 판매자 정보 O
    seller.id Number 판매자 ID O
    seller.image String 판매자 프로필 이미지 주소 O
    seller.nickname String 판매자 닉네임 O
    seller.reliability Number 판매자 신뢰도 O
    chat.id Number 채팅방 ID X
    chat.isChatParticipant Boolean 로그인한 사용자가 채팅방 생성이 가능한 사용자인지에 대한 여부 O
    isOwner Boolean 로그인한 사용자가 해당 경매 글을 작성한 사용자인지에 대한 여부 O
    isLastBidder Boolean 로그인한 사용자가 해당 경매의 최고 입찰자인지에 대한 여부 O

경매 삭제

request

DELETE /auctions/{id}

DELETE /auctions/1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 204 No Content

Q&A API

질문 등록

request

POST /questions

POST /questions HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "content" : "궁금한 점이 있습니다."
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 질문할 경매 ID O
    content String 질문 내용 O

response

HTTP/1.1 201 Created
Location: /auctions/1

질문 삭제

request

delete /questions/{quesionId}

DELETE /questions/1 HTTP/1.1
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 204 No Content

답변 등록

request

POST /questions/{quesionId}/answers

POST /questions/1/answers HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "content" : "답변 드립니다."
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 답변할 질문의 경매 ID O
    content String 답변 내용 O

response

HTTP/1.1 201 Created
Location: /auctions/1

답변 삭제

request

delete /questions/answers/{answerId}

DELETE /questions/answers/1 HTTP/1.1
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 204 No Content

경매에 따른 Q&A 목록 조회

request

GET /auctions/{auctionId}/questions

GET /auctions/1/questions HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "qnas" : [ {
    "question" : {
      "id" : 1,
      "writer" : {
        "id" : 1,
        "name" : "질문자",
        "image" : "http://localhost:8080/users/images/1"
      },
      "createdTime" : "2023-10-15T21:12:06",
      "content" : "질문1",
      "isQuestioner" : false
    },
    "answer" : {
      "id" : 1,
      "writer" : {
        "id" : 2,
        "name" : "판매자",
        "image" : "http://localhost:8080/users/images/2"
      },
      "createdTime" : "2023-10-15T21:12:06",
      "content" : "답변1"
    }
  }, {
    "question" : {
      "id" : 2,
      "writer" : {
        "id" : 1,
        "name" : "질문자",
        "image" : "http://localhost:8080/users/images/1"
      },
      "createdTime" : "2023-10-15T21:12:06",
      "content" : "질문2",
      "isQuestioner" : false
    },
    "answer" : {
      "id" : 2,
      "writer" : {
        "id" : 2,
        "name" : "판매자",
        "image" : "http://localhost:8080/users/images/2"
      },
      "createdTime" : "2023-10-15T21:12:06",
      "content" : "답변1"
    }
  } ]
}
  • 본문

    이름 타입 설명 필수
    qnas.[] Array 모든 경매 질문과 답변 목록
    값이 없다면 빈 배열 반환
    O
    qnas.[].question Object 질문 정보 JSON X
    qnas.[].question.id Number 경매 질문 글 ID O
    qnas.[].question.writer Object 질문자 정보 JSON O
    qnas.[].question.writer.id Number 질문자의 ID O
    qnas.[].question.writer.name String 질문자의 이름 O
    qnas.[].question.writer.image String 질문자의 프로필 이미지 URL O
    qnas.[].question.createdTime String 질문 등록 시간 O
    qnas.[].question.content String 질문 내용 O
    qnas.[].question.isQuestioner Boolean 질문 작성자 여부 확인 O
    qnas.[].answer Object 답변 정보 JSON X
    qnas.[].answer.id Number 경매 답변 글 ID O
    qnas.[].answer.writer Object 답변자 정보 JSON O
    qnas.[].answer.writer.id Number 답변자의 ID O
    qnas.[].answer.writer.name String 답변자의 이름 O
    qnas.[].answer.writer.image String 답변자의 프로필 이미지 URL O
    qnas.[].answer.createdTime String 답변 등록 시간 O
    qnas.[].answer.content String 답변 내용 O

입찰 API

입찰 등록

request

POST /bids

POST /bids HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "bidPrice" : 10000
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 입찰할 경매 ID O
    bidPrice Number 입찰 금액 O

response

HTTP/1.1 201 Created
Location: /auctions/1

경매에 따른 입찰 목록 조회

request

GET /bids/{auctionId}

GET /bids/1 HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "name" : "사용자1",
	  "profileImage" : "http://localhost:8080/users/images/1",
	  "price" : 10000,
	  "bidTime" : "2023-10-15T21:12:13"
	}, {
	  "name" : "사용자2",
	  "profileImage" : "http://localhost:8080/users/images/2",
	  "price" : 12000,
	  "bidTime" : "2023-10-15T21:12:13"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 특정 경매의 모든 입찰 목록
    없다면 빈 배열을 반환한다
    O
    [].name String 입찰한 사용자의 닉네임 O
    [].profileImage String 입찰한 사용자의 프로필 이미지 URL O
    [].price Number 입찰한 금액 O
    [].bidTime String 입찰한 시간 O

채팅 API

채팅방 등록

request

POST /chattings

POST /chattings HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 연관된 경매 ID O

response

HTTP/1.1 201 Created
Location: /chattings/1
Content-Type: application/json

{
  "chatRoomId" : 1
}
  • 본문

    이름 타입 설명 필수
    chatRoomId Number 생성된 채팅방 ID O

채팅방 목록 조회

request

GET /chattings

GET /chattings HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청 O

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 1,
	  "chatPartner" : {
	    "id" : 2,
	    "name" : "구매자1",
	    "profileImage" : "http://localhost:8080/users/images/2"
	  },
	  "auction" : {
	    "id" : 1,
	    "title" : "경매1",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "price" : 10000
	  },
	  "lastMessage" : {
	    "createdAt" : "2023-10-15T21:12:16",
	    "contents" : "메시지1"
	  },
	  "isChatAvailable" : true
	}, {
	  "id" : 2,
	  "chatPartner" : {
	    "id" : 3,
	    "name" : "구매자2",
	    "profileImage" : "http://localhost:8080/users/images/3"
	  },
	  "auction" : {
	    "id" : 2,
	    "title" : "경매2",
	    "image" : "http://localhost:8080/auctions/images/1",
	    "price" : 20000
	  },
	  "lastMessage" : {
	    "createdAt" : "2023-10-15T21:12:16",
	    "contents" : "메시지2"
	  },
	  "isChatAvailable" : true
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 자신이 참여한 채팅방 목록 O
    [].id Number 채팅방 ID O
    [].chatPartner Object 채팅 상대방 O
    [].chatPartner.id Number 채팅 상대방 ID O
    [].chatPartner.name String 채팅 상대방 이름 O
    [].chatPartner.profileImage String 채팅 상대방 프로필 사진 O
    [].auction Object 채팅방과 연관된 경매 O
    [].auction.id Number 경매 ID O
    [].auction.title String 경매 제목 O
    [].auction.image String 경매 대표 사진 O
    [].auction.price Number 낙찰가 O
    [].lastMessage Object 마지막으로 전송된 메시지 O
    [].lastMessage.createdAt String 메시지를 보낸 시간 O
    [].lastMessage.contents String 메시지 내용 O
    [].isChatAvailable Boolean 채팅 가능 여부 O

채팅방 상세 조회

request

GET /chattings/{chatRoomId}

GET /chattings/1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id" : 1,
  "chatPartner" : {
    "id" : 1,
    "name" : "판매자",
    "profileImage" : "http://localhost:8080/users/images/1"
  },
  "auction" : {
    "id" : 1,
    "title" : "경매1",
    "image" : "http://localhost:8080/auctions/images/1",
    "price" : 10000
  },
  "isChatAvailable" : true
}
  • 본문

    이름 타입 설명 필수
    id Number 채팅방 ID O
    auction Object 채팅방과 연관된 경매 O
    auction.id Number 경매 ID O
    auction.title String 경매 제목 O
    auction.image String 경매 대표 사진 URL O
    auction.price Number 낙찰가 O
    chatPartner Object 채팅 상대방 O
    chatPartner.id Number 채팅 상대방 ID O
    chatPartner.name String 채팅 상대방 이름 O
    chatPartner.profileImage String 채팅 상대방 프로필 사진 URL O
    isChatAvailable Boolean 채팅 가능 여부 O

메시지 전송

request

POST /chattings/{chatRoomId}/messages

POST /chattings/1/messages HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "receiverId" : 1,
  "contents" : "메시지 내용"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    receiverId Number 메시지 수신자 ID O
    contents String 메시지 내용 O

response

HTTP/1.1 201 Created
Location: /chattings/1
Content-Type: application/json

{
  "id" : 1
}
  • 본문

    이름 타입 설명 필수
    id Number 메시지 보내진 채팅방 ID O

메시지 목록 조회

request

GET /chattings/{chatRoomId}/messages?lastMessageId={id}

GET /chattings/1/messages?lastMessageId=1 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 1,
	  "createdAt" : "2023-10-15T21:12:16",
	  "isMyMessage" : true,
	  "contents" : "메시지내용"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 하나의 채팅방 내의 메시지 목록 (lastMessageId가 포함되어 있다면 lastMessageId 이후의 메시지 목록
    없다면 빈 배열이 반환된다
    O
    [].id Number 메시지 ID O
    [].createdAt String 메시지를 보낸 시간 O
    [].isMyMessage Boolean 조회를 요청한 사람이 보낸 메시지인지 여부 O
    [].contents String 메시지 내용 O

유저 상호 평가 API

사용자 평가 등록

request

POST /reviews

POST /reviews HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "targetId" : 2,
  "content" : "친절하다.",
  "score" : 5.0
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 거래한 경매 ID O
    targetId Number 평가 대상 ID O
    score Number 평가 점수 O
    content String 평가 내용 O

response

HTTP/1.1 201 Created
Location: /reviews/1

지정한 평가 아이디에 해당하는 평가 조회

request

GET /auctions/{auctionId}/reviews

GET /reviews/2 HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "score" : 5.0,
  "content" : "친절하다."
}
  • 본문

    이름 타입 설명 필수
    score Number 평가 점수 O
    content String 평가 내용 O

지정한 사용자가 받은 평가 목록 조회

request

GET /reviews?userId={targetId}

GET /reviews/users/3 HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
	  "id" : 3,
	  "writer" : {
	    "id" : 2,
	    "name" : "판매자2",
	    "profileImage" : "http://localhost:8080/users/images/2"
	  },
	  "content" : "친절하다.",
	  "score" : 5.0,
	  "createdTime" : "2023-10-15T21:12:29"
	}, {
	  "id" : 2,
	  "writer" : {
	    "id" : 1,
	    "name" : "판매자1",
	    "profileImage" : "http://localhost:8080/users/images/1"
	  },
	  "content" : "친절하다.",
	  "score" : 5.0,
	  "createdTime" : "2023-10-15T21:12:29"
	}
]
  • 본문

    이름 타입 설명 필수
    [] Array 조회 대상 사용자가 받은 모든 평가 목록
    없다면 빈 배열 반환
    O
    [].id Number 사용자 평가 ID O
    [].writer.id Number 평가를 작성한 사용자의 ID O
    [].writer.name String 평가를 작성한 사용자의 이름 O
    [].writer.profileImage String 평가를 작성한 사용자의 프로필 이미지 url O
    [].content String 평가 내용 O
    [].score Number 평가 점수 O
    [].createdTime String 평가 작성 시간 O

사용자가 경매 거래 상대에게 작성한 평가를 조회한다

request

GET /auctions/1/reviews HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "score" : 5.0,
  "content" : "친절하다."
}
  • 본문

    이름 타입 설명 필수
    score Number 평가 점수 O
    content String 평가 내용 O

신고 API

경매 신고 등록

request

POST /reports/auctions

POST /reports/auctions HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "description" : "신고합니다"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 신고할 경매 ID O
    description String 신고 내용 O

response

HTTP/1.1 201 Created
Location: /auctions/1

경매 신고 조회

request

GET /reports/auctions

GET /reports/auctions HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "reports" : [ {
    "id" : 1,
    "reporter" : {
      "id" : 2,
      "name" : "회원1"
    },
    "createdTime" : "2023-10-15T21:12:26",
    "auction" : {
      "id" : 1,
      "title" : "제목"
    },
    "description" : "신고합니다."
  }, {
    "id" : 2,
    "reporter" : {
      "id" : 3,
      "name" : "회원2"
    },
    "createdTime" : "2023-10-15T21:12:26",
    "auction" : {
      "id" : 1,
      "title" : "제목"
    },
    "description" : "신고합니다."
  }, {
    "id" : 3,
    "reporter" : {
      "id" : 4,
      "name" : "회원3"
    },
    "createdTime" : "2023-10-15T21:12:26",
    "auction" : {
      "id" : 1,
      "title" : "제목"
    },
    "description" : "신고합니다."
  } ]
}
  • 본문

    이름 타입 설명 필수
    reports.[] Array 모든 경매 신고 목록 O
    reports.[].id Number 경매 신고 글 ID O
    reports.[].reporter.id Number 경매 신고한 사용자의 ID O
    reports.[].reporter.name String 경매 신고한 사용자의 이름 O
    reports.[].createdTime String 경매 신고 시간 O
    reports.[].auction.id Number 신고한 경매 ID O
    reports.[].auction.title String 신고한 경매 제목 O
    reports.[].description String 신고 내용 O

채팅방 신고 등록

request

POST /reports/chat-rooms

POST /reports/chat-rooms HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "chatRoomId" : 1,
  "description" : "신고합니다"
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    chatRoomId Number 신고할 채팅방 ID O
    description String 신고 내용 O

response

HTTP/1.1 201 Created
Location: /chattings/1

채팅방 신고 조회

request

GET /reports/chat-rooms

GET /reports/chat-rooms HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "reports" : [ {
    "id" : 1,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "chatRoom" : {
      "id" : 1
    },
    "description" : "신고합니다."
  }, {
    "id" : 2,
    "reporter" : {
      "id" : 3,
      "name" : "구매자2"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "chatRoom" : {
      "id" : 1
    },
    "description" : "신고합니다."
  }, {
    "id" : 3,
    "reporter" : {
      "id" : 3,
      "name" : "구매자2"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "chatRoom" : {
      "id" : 1
    },
    "description" : "신고합니다."
  } ]
}
  • 본문

    이름 타입 설명 필수
    reports.[] Array 모든 채팅방 신고 목록 O
    reports.[].id Number 채팅방 신고 글 ID O
    reports.[].reporter.id Number 채팅방을 신고한 사용자의 ID O
    reports.[].reporter.name String 채팅방을 신고한 사용자의 이름 O
    reports.[].createdTime String 채팅방 신고 시간 O
    reports.[].chatRoom.id Number 신고한 채팅방 ID O
    reports.[].description String 신고 내용 O

질문 신고 등록

request

POST /reports/questions

POST /reports/questions HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "questionId" : 1,
  "description" : "신고합니다."
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 질문의 경매 ID O
    questionId Number 신고할 질문 ID O
    description String 신고 내용 O

response

HTTP/1.1 201 Created
Location: /auctions/1/questions

질문 신고 조회

request

GET /reports/questions

GET /reports/questions HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "reports" : [ {
    "id" : 1,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "question" : {
      "id" : 1
    },
    "description" : "신고합니다."
  }, {
    "id" : 2,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "question" : {
      "id" : 2
    },
    "description" : "신고합니다."
  }, {
    "id" : 3,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "question" : {
      "id" : 3
    },
    "description" : "신고합니다."
  } ]
}
  • 본문

    이름 타입 설명 필수
    reports.[] Array 모든 질문 신고 목록 O
    reports.[].id Number 질문 신고 글 ID O
    reports.[].reporter.id Number 질문을 신고한 사용자의 ID O
    reports.[].reporter.name String 질문을 신고한 사용자의 이름 O
    reports.[].createdTime String 질문 신고 시간 O
    reports.[].question.id Number 신고한 질문 ID O
    reports.[].description String 신고 내용 O

답변 신고 등록

request

POST /reports/answers

POST /reports/answers HTTP/1.1
Content-Type: application/json
Authorization: Bearer accessToken

{
  "auctionId" : 1,
  "answerId" : 1,
  "description" : "신고합니다."
}
  • 헤더

    이름 설명 필수
    Authorization 회원 Bearer 인증 정보
    액세스 토큰으로 인증 요청
    O
  • 본문

    이름 타입 설명 필수
    auctionId Number 질문의 경매 ID O
    answerId Number 신고할 답변 ID O
    description String 신고 내용 O

response

HTTP/1.1 201 Created
Location: /auctions/1/questions

답변 신고 조회

request

GET /reports/answers

GET /reports/answers HTTP/1.1
Content-Type: application/json

response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "reports" : [ {
    "id" : 1,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "answer" : {
      "id" : 1
    },
    "description" : "신고합니다."
  }, {
    "id" : 2,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "answer" : {
      "id" : 2
    },
    "description" : "신고합니다."
  }, {
    "id" : 3,
    "reporter" : {
      "id" : 2,
      "name" : "구매자1"
    },
    "createdTime" : "2023-10-15T21:12:27",
    "answer" : {
      "id" : 3
    },
    "description" : "신고합니다."
  } ]
}
  • 본문

    이름 타입 설명 필수
    reports.[] Array 모든 답변 신고 목록 O
    reports.[].id Number 답변 신고 글 ID O
    reports.[].reporter.id Number 답변을 신고한 사용자의 ID O
    reports.[].reporter.name String 답변을 신고한 사용자의 이름 O
    reports.[].createdTime String 답변 신고 시간 O
    reports.[].answer.id Number 신고한 답변 ID O
    reports.[].description String 신고 내용 O
Clone this wiki locally