-
Notifications
You must be signed in to change notification settings - Fork 0
trade
LeeSangHoon edited this page Apr 24, 2023
·
2 revisions
API | Description |
---|---|
GET /api/trade | 교환글 목록 조회 |
POST /api/trade | 교환글 등록 |
GET /api/trade/:tradeId | 교환글 상세 조회 |
PUT /api/trade/:tradeId | 교환글 수정 |
DELETE /api/trade/:tradeId | 교환글 삭제 |
GET /api/trade/:tradeId/exchange | 교환 가능한 소유권 조회 |
POST /api/trade/:tradeId/exchange | 교환 |
GET /api/trade
- 해당 검색 필터에 해당하는 소유권 목록 정보를 조회합니다.
Parameter | Target | Type | Description |
---|---|---|---|
pageParam | query | number | 페이지 번호 |
filter | query | Object | 검색 필터 |
filter.groupId | query | number | 조회할 교환글이 등록된 대상 그룹 ID |
filter.memberId | query | number | 조회할 교환글이 등록된 대상 멤버 ID |
filter.userId | query | number | 교환글 등록자 회원 PK |
filter.excludeUserId | query | number | 조회에서 제외할 교환글 등록자 회원 PK |
filter.state | query | "all" or "trading" or "traded" | 조회할 소유권 상태 |
{
"_status": 200,
"message": "거래글 목록을 조회했습니다.",
"trades": [
{
"tradeId": 9,
"state": "trading",
"amount": 2,
"writtenTime": "2023-04-21T17:18:04.000Z",
"tradedTime": null,
"voucher": {
"voucherId": 23,
"photocardId": 207,
"name": "SIGNAL",
"imageName": "207_1681899933197.png",
"groupData": {
"groupId": 2,
"name": "TWICE"
},
"memberData": {
"memberId": 9,
"name": "정연"
}
},
"author": {
"userId": 4,
"username": "user1",
"nickname": "교환매니아",
"imageName": "4_1681972498621.png"
},
"wantcards": [
{
"photocardId": 3,
"name": "BE",
"imageName": "3_1681736475429.png",
"memberData": {
"memberId": 1,
"name": "진"
},
"groupData": {
"groupId": 1,
"name": "BTS"
}
},
{
"photocardId": 5,
"name": "BUTTER",
"imageName": "5_1681736475431.png",
"memberData": {
"memberId": 1,
"name": "진"
},
"groupData": {
"groupId": 1,
"name": "BTS"
}
}
]
}
],
"paging": {
"pageParam": 0,
"hasNextPage": false
}
}
POST /api/trade
- 교환글을 등록합니다.
Parameter | Target | Type | Description |
---|---|---|---|
voucherId | body | number | 교환에 등록할 소유권 ID |
wantPhotocardIds | body | number[] | 받으려는 포토카드 ID 목록 |
amount | body | number | 교환의 대가로 받으려는 포토카드 갯수 |
{
"_status": 200,
"message": "교환글을 작성했어요."
}
{
"_status": 400,
"message": "사용하려는 소유권이 이용 가능한 상태가 아니에요."
}
{
"_status": 400,
"message": "사용하려는 소유권이 당신의 것이 아니에요."
}
{
"_status": 400,
"message": "받을 포토카드는 등록할 소유권과 같은 종류일 수 없어요."
}
{
"_status": 404,
"message": "받을 포토카드의 정보가 올바르지 않아요."
}
{
"_status": 404,
"message": "로그인한 사용자의 정보가 올바르지 않아요."
}
{
"_status": 404,
"message": "사용하려는 소유권이 존재하지 않아요."
}
GET /api/trade/:tradeId
- 특정 교환글의 상세 정보를 조회합니다.
Parameter | Target | Type | Description |
---|---|---|---|
tradeId | param | number | 교환글 ID |
{
"_status": 200,
"message": "교환글을 조회했어요.",
"tradeId": 10,
"userId": 4,
"state": "trading",
"amount": 1,
"writtenTime": "2023-04-21T17:24:49.000Z",
"tradedTime": null,
"voucher": {
"voucherId": 24,
"photocardId": 30,
"name": "BE",
"imageName": "30_1681837915650.png",
"groupData": {
"groupId": 1,
"name": "BTS"
},
"memberData": {
"memberId": 2,
"name": "슈가"
}
},
"wantcards": [
{
"photocardId": 11,
"name": "LOVE YOURSELF_ HER",
"imageName": "11_1681736475532.png",
"memberData": {
"memberId": 1,
"name": "진"
},
"groupData": {
"groupId": 1,
"name": "BTS"
}
}
],
"author": {
"userId": 4,
"username": "user1",
"nickname": "교환매니아",
"imageName": "4_1681972498621.png",
"role": "user"
}
}
{
"_status": 404,
"message": "조회하려는 교환글이 존재하지 않아요."
}
{
"_status": 404,
"message": "작성자 정보가 존재하지 않아요."
}
PUT /api/trade/:tradeId
- 교환글을 수정합니다.
Parameter | Target | Type | Description |
---|---|---|---|
tradeId | param | number | 교환글 ID |
wantPhotocardIds | body | number[] | 받으려는 포토카드 ID 목록 |
amount | body | number | 교환의 대가로 받으려는 포토카드 갯수 |
{
"_status": 200,
"message": "교환글을 수정했어요."
}
{
"_status": 400,
"message": "이미 교환이 완료된 교환글은 삭제할 수 없어요."
}
{
"_status": 400,
"message": "받을 포토카드는 등록할 소유권과 같은 종류일 수 없어요."
}
{
"_status": 404,
"message": "수정하려는 교환글이 존재하지 않아요."
}
{
"_status": 404,
"message": "로그인한 사용자의 정보가 올바르지 않아요."
}
{
"_status": 404,
"message": "받을 포토카드의 정보가 올바르지 않아요."
}
DELETE /api/trade/:tradeId
- 교환글을 삭제합니다.
Parameter | Target | Type | Description |
---|---|---|---|
tradeId | param | number | 교환글 ID |
{
"_status": 200,
"message": "교환글을 삭제했어요."
}
{
"_status": 400,
"message": "이미 교환이 완료된 교환글은 삭제할 수 없어요."
}
{
"_status": 404,
"message": "삭제하려는 교환글이 존재하지 않아요."
}
GET /api/trade/:tradeId/exchange
- 로그인 된 사용자가 해당 교환글이 원하는 소유권 중에서 자신이 가진 소유권을 조회합니다.
Parameter | Target | Type | Description |
---|---|---|---|
tradeId | param | number | 교환글 ID |
{
"_status": 200,
"message": "교환 가능한 소유권을 조회했어요.",
"vouchers": [
{
"voucherId": 26,
"state": "available",
"createdTime": "2023-04-21T17:28:39.000Z",
"photo": {
"photocardId": 23,
"name": "MAP OF THE SOUL_ 7",
"imageName": "23_1681837800724.png",
"groupData": {
"groupId": 1,
"name": "BTS"
},
"memberData": {
"memberId": 1,
"name": "진"
}
},
"owner": {
"userId": 5,
"username": "wannav",
"nickname": "와나비",
"imageName": "5_1681972320438.jpg"
}
},
{
"voucherId": 25,
"state": "available",
"createdTime": "2023-04-21T17:28:39.000Z",
"photo": {
"photocardId": 25,
"name": "MAP OF THE SOUL_ 7",
"imageName": "25_1681837800744.png",
"groupData": {
"groupId": 1,
"name": "BTS"
},
"memberData": {
"memberId": 1,
"name": "진"
}
},
"owner": {
"userId": 5,
"username": "wannav",
"nickname": "와나비",
"imageName": "5_1681972320438.jpg"
}
}
]
}
{
"_status": 400,
"message": "이미 교환이 완료된 교환글이에요."
}
{
"_status": 400,
"message": "보유하고 있는 조건에 맞는 소유권이 부족해요."
}
{
"_status": 403,
"message": "자신이 작성한 교환글이에요."
}
{
"_status": 404,
"message": "해당 교환글이 존재하지 않아요."
}
POST /api/trade/:tradeId/exchange
- 사용자가 자신의 소유권을 사용해서 특정 교환글을 등록한 작성자의 소유권과 교환합니다.
Parameter | Target | Type | Description |
---|---|---|---|
tradeId | param | number | 교환글 ID |
voucherIds | body | number[] | 사용할 소유권 ID 목록 |
{
"_status": 200,
"message": "교환이 완료되었어요."
}
{
"_status": 400,
"message": "이미 교환이 완료된 교환글이에요."
}
{
"_status": 400,
"message": "교환글의 작성자가 소유권의 실 소유주가 아니에요."
}
{
"_status": 400,
"message": "사용하려는 소유권이 교환 가능한 상태가 아니에요."
}
{
"_status": 403,
"message": "자신이 작성한 교환글을 대상으로는 교환을 시도할 수 없어요."
}
{
"_status": 403,
"message": "사용할 소유권을 ${amount}개 선택해주세요."
}
{
"_status": 403,
"message": "사용하려는 소유권이 당신의 것이 아니에요."
}
{
"_status": 404,
"message": "해당 교환글이 존재하지 않아요."
}
{
"_status": 404,
"message": "교환글의 소유권이 존재하지 않아요."
}
{
"_status": 404,
"message": "사용하려는 소유권이 존재하지 않아요."
}