Skip to content

API ๋ช…์„ธ

ChanYoung Jo edited this page Jul 27, 2022 · 281 revisions

Index

  1. ๊ณตํ†ต์‚ฌํ•ญ
๋Œ€๋ถ„๋ฅ˜ ๊ธฐ๋Šฅ method URI
์„œ๋ฒ„ ์ƒํƒœ ์ฒดํฌ ์„œ๋ฒ„ ์ƒํƒœ ์ฒดํฌ GET /api/health, /chat/health
์ธ์ฆ ๊ด€๋ จ ๋กœ๊ทธ์ธ POST /api/auth/login
๋กœ๊ทธ์•„์›ƒ POST /api/auth/logout
์œ ์ € ๊ด€๋ จ ํšŒ์›๊ฐ€์ž… POST /api/users/join
ํšŒ์›์ •๋ณด ์กฐํšŒ(์ž๊ธฐ ์ž์‹  ์ •๋ณด ์กฐํšŒ) GET /api/users
ํšŒ์›์ •๋ณด ์กฐํšŒ GET /api/users/{user-id}
ํšŒ์›์ •๋ณด ์ˆ˜์ • PUT /api/users
๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ GET /api/users/nickname
๋งค๋„ˆํ‰๊ฐ€ ๊ด€๋ จ ๋งค๋„ˆํ‰๊ฐ€ ํ•˜๊ธฐ POST /api/users/manner
๋งค๋„ˆํ‰๊ฐ€ ์กฐํšŒ GET /api/users/manner/{user-id}
์นดํ…Œ๊ณ ๋ฆฌ ๊ด€๋ จ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ GET /api/categories
์นดํ…Œ๊ณ ๋ฆฌ ํ•œ ๊ฑด ์กฐํšŒ GET /api/categories/{category-id}
๋ฌผํ’ˆ ๊ด€๋ จ ๋ฌผํ’ˆ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ(ํšŒ์› ์ „์šฉ) GET /api/products
๋ฌผํ’ˆ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ GET /api/products/{product-id}
๋ฌผํ’ˆ ๋“ฑ๋ก POST /api/products
๋ฌผํ’ˆ ์ˆ˜์ • PUT /api/products/{product-id}
๋ฌผํ’ˆ ์‚ญ์ œ DELETE /api/products/{product-id}
๋ฌผํ’ˆ ์ƒํƒœ ๋ณ€๊ฒฝ PUT /api/products/state/{product-id}
๋ฌผํ’ˆ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ PUT /api/products/refreshment/{product-id}
๋ฌผํ’ˆ ํŒ๋งค ๋‚ด์—ญ ์กฐํšŒ GET /api/products/sales-history
๋ฌผํ’ˆ ๊ตฌ๋งค ๋‚ด์—ญ ์กฐํšŒ GET /api/products/purchase-history
์ฐœํ•˜๊ธฐ ๊ด€๋ จ ์ฐœํ•œ ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ GET /api/favorite-products
์ฐœํ•˜๊ธฐ ๋“ฑ๋ก POST /api/favorite-products
์ฐœํ•˜๊ธฐ ์‚ญ์ œ DELETE /api/favorite-products/{favorite-id}
์ฐœํ•˜๊ธฐ ์‚ญ์ œ(๋ฌผํ’ˆ ID๋กœ) DELETE /api/favorite-products/products/{product-id}
๊ฑฐ๋ž˜ ํ›„๊ธฐ ๊ด€๋ จ ์ „์ฒด ํ›„๊ธฐ ์กฐํšŒ GET /api/sale-reviews/user/{user-id}
ํŒ๋งค์ž ํ›„๊ธฐ ์กฐํšŒ GET /api/sale-reviews/seller/{user-id}
ํŒ๋งค์ž ํ›„๊ธฐ ๋“ฑ๋ก POST /api/sale-reviews/seller
ํŒ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ • PUT /api/sale-reviews/seller/{sale-review-id}
ํŒ๋งค์ž ํ›„๊ธฐ ์‚ญ์ œ DELETE /api/sale-reviews/seller/{sale-review-id}
๊ตฌ๋งค์ž ํ›„๊ธฐ ์กฐํšŒ GET /api/sale-reviews/buyer/{user-id}
๊ตฌ๋งค์ž ํ›„๊ธฐ ๋“ฑ๋ก POST /api/sale-reviews/buyer
๊ตฌ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ • PUT /api/sale-reviews/buyer/{sale-review-id}
๊ตฌ๋งค์ž ํ›„๊ธฐ ์‚ญ์ œ DELETE /api/sale-reviews/buyer/{sale-review-id}
๋ฐ›์€ ํ›„๊ธฐ ์ˆจ๊ธฐ๊ธฐ PUT /api/sale-reviews/hide/{sale-review-id}
์•Œ๋ฆผ ๊ด€๋ จ ์•Œ๋ฆผ ๋ชฉ๋ก ์กฐํšŒ GET /api/notifications
์•Œ๋ฆผ ์ฝ์Œ ์ฒ˜๋ฆฌ PUT /api/notifications/{notification-id}
์•Œ๋ฆผ ์‚ญ์ œ ์ฒ˜๋ฆฌ DELETE /api/notifications/{notification-id}
์ฑ„ํŒ… ๊ด€๋ จ ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ POST /api/chat-rooms
์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ GET /api/chat-rooms
์ฑ„ํŒ…๋ฐฉ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ GET /api/chat-rooms/{chat-room-id}
ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ฑ„ํŒ…๋ฐฉ ์ฐธ์—ฌ์ž ๋ชฉ๋ก ์กฐํšŒ GET /api/chat-rooms/product/{product-id}
์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€ํ•˜๊ธฐ PUT /chat/chat-rooms/invitation/{chat-room-id}
์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ PUT /chat/chat-rooms/exit/{chat-room-id}
์ฑ„ํŒ…์ด๋ฏธ์ง€ ์ƒ์„ฑ POST /chat/messages/images
์ฑ„ํŒ…๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ POST /chat/messages
์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก ์กฐํšŒ GET /chat/messages
์ฝ์€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜ ๊ฐฑ์‹  PUT /chat/messages/read-size

๊ณตํ†ต์‚ฌํ•ญ

API ์‚ฌ์šฉ์‹œ ์œ ์˜์ 

  • request ์‹œ application/json ์‚ฌ์šฉ
  • response ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ content-type ์„ application/json ์œผ๋กœ ์‘๋‹ตํ•จ

Request header ํ˜•์‹

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•œ API์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•ด์•ผํ•จ(๋น„ํšŒ์› ์ œ์™ธ)

    key type value
    api_key string Bearer {jwt}
  • api_key value์˜ ์˜ˆ์‹œ

    Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJuaWNrTmFtZSI6ImtldmluX3N1Z28iLCJyb2xlcyI6WyJST0xFX1VTRVIiXSwiaXNzIjoiYWxnb3JpdGhtX3F1aXpfY3VyYXRvciIsImV4cCI6MTYyNzE5ODQwNSwiaWF0IjoxNjI3MTk0ODA1LCJ1c2VySWQiOiJ6b3JvXzI4MjUiLCJ1c2VyS2V5IjoyOH0.Ahl9IuevGfDTxxVlowf9RWAPPFcXKAsJuGLpXNTGYFxTlmWCBGl0Otgjn3LKslEynv8wo6yxuOZ1vvrJCWo-kw
    

Response body ํ˜•์‹

  • ๋ฐ์ดํ„ฐ ํ˜•์‹
    key type value
    success boolean ์‘๋‹ต์„ฑ๊ณต์‹œ true, ์‹คํŒจ์‹œ false
    response Object ์š”์ฒญ์— ๋Œ€์‘ํ•˜๋Š” ๊ฒฐ๊ณผ / ์‘๋‹ต์‹คํŒจ์‹œ null
    error Object ์‘๋‹ต์‹คํŒจ์‹œ ์‹คํŒจ์›์ธ ๋ฐ HTTP์—๋Ÿฌ์ฝ”๋“œ์™€ ์ž˜๋ชป๋œ ์š”์ฒญ ํ•„๋“œ ๋ฆฌ์ŠคํŠธ / ์‘๋‹ต์„ฑ๊ณต์‹œ null
  • ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ (์„ฑ๊ณต ์‘๋‹ต)
    {
        "success": true,
        "response": {
            "์‘๋‹ต ๋‚ด์šฉ(์ŠคํŠธ๋ง์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด)"
        },
        "error": null
    }
    • ์‹ค์ œ ์š”์ฒญํ–ˆ๋˜ ๋‚ด์šฉ์ด response ์˜ ๋‚ด์šฉ์•ˆ์— ๋“ค์–ด์žˆ๊ฒŒ ๋จ
  • ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ (์‹คํŒจ ์‘๋‹ต)
    {
        "success": false,
        "response": null,
        "error": {
            "message": "์—๋Ÿฌ ๋‚ด์šฉ",
            "status": 500,
            "invalid_fields": null
        }
    }
    • error.status ๋Š” HTTP status code ์ด๊ณ  ํ•ญ์ƒ 500์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—๋Ÿฌ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ

๊ณตํ†ต ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • API ๋ช…์„ธ์™€ ๊ด€๋ จ์—†๋Š” ๊ณตํ†ต๋œ ์‚ฌํ•ญ๋“ค์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ parameter๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ(400)

  • Request ๋ช…์„ธ์—์„œ required๊ฐ€ true์ธ ํ•„๋“œ(request body๋‚˜ request param)๋ฅผ ๋„ฃ์ง€ ์•Š์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ 400 ์‘๋‹ต์œผ๋กœ ๋‚ด๋ ค์ค๋‹ˆ๋‹ค.
    • ์œ ํšจํ•˜์ง€ ์•Š์€ ์กฐ๊ฑด์ธ request body ํ•„๋“œ๋Š” invalid_fields์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • API ๋ช…์„ธ์—์„œ '์š”์ฒญ parameter๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ'๋Š” ๋ณ„๋„์˜ ์‹คํŒจ ์ผ€์ด์Šค๋กœ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
"error": {
    "message": "Bad request exception occurred",
    "status": 400,
    "invalid_fields": {
        "nickname": "nickname ๊ฐ’์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
        "location": "location ๊ฐ’์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค."
    }
}

"error": {
    "message": "Required request parameter 'state' for method parameter type int is not present",
    "status": 400,
    "invalid_fields": null
}

์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ(404)

  • ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ 404 ์‘๋‹ต์œผ๋กœ ๋‚ด๋ ค์ค๋‹ˆ๋‹ค.
  • API ๋ช…์„ธ์—์„œ '์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ'๋Š” ๋ณ„๋„์˜ ์‹คํŒจ ์ผ€์ด์Šค๋กœ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
"error": {
    "message": "Could not found 'User' with query values (userId = 10)",
    "status": 404,
    "invalid_fields": null
}

"error": {
    "message": "Could not found 'ProductQueryDto' with query values (productId = 100)",
    "status": 404,
    "invalid_fields": null
}

ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ

  • ํŽ˜์ด์ง• ์˜ต์…˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ page, size๋ฅผ ์ถ”๊ฐ€ Query paramter๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • API ๋ช…์„ธ์— ๋ณ„๋„์˜ ์˜ต์…˜์ด ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ ํŽ˜์ด์ง• ์‚ฌ์ด์ฆˆ๋Š” 20, ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๊ธฐ์ค€์€ id(PK) ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

Request ์˜ˆ์‹œ

  • /api/products?page=2&size=2

์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

  • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋Š” pre-signed URL์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฌผํ’ˆ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

  • ๋ฌผํ’ˆ ๋“ฑ๋ก ์š”์ฒญ ์‹œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋ช…์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌผํ’ˆ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” pre-signed URL์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
  • pre-signed URL์„ ์‚ฌ์šฉํ•ด์„œ S3์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ์—ญํ• ์€ Client์˜ ๋ชซ
  • pre-signed URL์„ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„๋Š” DB์— ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•ด๋†“๋Š”๋‹ค.
  • ์ดํ›„์— ์ƒ์„ธ์กฐํšŒ, thumb-nail ์กฐํšŒ ๋“ฑ ์ด๋ฏธ์ง€ ์กฐํšŒ ์‹œ pre-signed URL์— ์‹ค์ œ ํŒŒ์ผ์ด ๋“ฑ๋ก๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ 404 ์‘๋‹ต์ด ๋‚˜๊ฐ„๋‹ค (S3 ์ŠคํŽ™)

์ค‘์š”์‚ฌํ•ญ

  • ์•„๋ž˜ API ๋ฌธ์„œ์—์„œ ํ‘œํ˜„ํ•  Response์˜ '์„ฑ๊ณต' ํ•ญ๋ชฉ์€ ์‹ค์ œ ์‘๋‹ต์˜ response ๋ถ€๋ถ„๋งŒ์„ ํ‘œ๊ธฐํ•œ๋‹ค. (success, error๋Š” ํ‘œ๊ธฐํ•˜์ง€ ์•Š์Œ)
  • ์•„๋ž˜ API ๋ฌธ์„œ์—์„œ ํ‘œํ˜„ํ•  Response์˜ '์‹คํŒจ' ํ•ญ๋ชฉ์€ ์‹ค์ œ ์‘๋‹ต์˜ error ๋ถ€๋ถ„๋งŒ์„ ํ‘œ๊ธฐํ•œ๋‹ค. (success, response๋Š” ํ‘œ๊ธฐํ•˜์ง€ ์•Š์Œ)
  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API๋Š” ๋ณ„๋„๋กœ ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API๋ผ๊ณ  ๊ธฐ์ž…ํ•œ๋‹ค.
    • API ๋ช…์„ธ์— 'ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API'๋ผ๋Š” ๋‚ด์šฉ์ด ์—†๋‹ค๋ฉด ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•œ API๋กœ Request Header์— Jwt ์ถ”๊ฐ€ ํ•„์š”.

์„œ๋ฒ„ ์ƒํƒœ ์ฒดํฌ

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API
  • ์„œ๋ฒ„ ์ƒํƒœ ์ฒดํฌ API

URL

  • API ์„œ๋ฒ„: GET /api/health
  • CHAT ์„œ๋ฒ„: GET /chat/health

Request

Request ์˜ˆ์‹œ

Response

  • ์„ฑ๊ณต(200)
    • ํ˜„์žฌ timestamp๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
{
    "response": 1650430789815
}

Login

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API
  • ํšŒ์›๊ฐ€์ž…์„ ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์˜์‚ฌํ•ญ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ ๊ฐ€์ž… ํ›„ ํšŒ์›์ •๋ณด ์ˆ˜์ • API๋ฅผ ํ†ตํ•ด ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ presigned-url์ด ๋ฐœ๊ธ‰๋œ๋‹ค.
      • ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผ์‹œ 404 ๋ฆฌํ„ด(AWS ์ŠคํŽ™)

URL

  • POST /api/auth/login

Request

param type required description
access_token body true ์นด์นด์˜ค ๋กœ๊ทธ์ธ API access_token

Request ์˜ˆ์‹œ

{
    "access_token": "yz6123kepyF2qasdfkar1234dGvQ321HrSasdfx0I2341PDZYigqe_04E40w"
}

Response

  • ์„ฑ๊ณต(200)

์ตœ์ดˆ ๋กœ๊ทธ์ธ ์‹œ

{
    "api_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJvYXV0aElkIjoyMTcyNjMxOTY1LCJyb2xlcyI6WyJST0xFX1VTRVIiXSwiaXNzIjoiZGFhbmduLXNlcnZlciIsImlkIjo2LCJtYW5uZXIiOjM2LjUsImV4cCI6MTY1NTQ2MjM1MCwiaWF0IjoxNjU1NDU1MTUwfQ.1Vo1JK6vCVvxQDHGtVq7_pRK69MrsiKIF4wUrpK5wiYRE95kPu9zGbzxkr1utNR_-hSER-AV8bJ7v37RIPt2xw",
    "nickname": null,
    "location": null,
    "profile_url": null,
    "manner": 36.5
}

ํšŒ์› ์ •๋ณด ์ˆ˜์ • ํ›„ ๋กœ๊ทธ์ธ ์‹œ

{
    "api_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJvYXV0aElkIjoyMTcyNjMxOTY1LCJyb2xlcyI6WyJST0xFX1VTRVIiXSwiaXNzIjoiZGFhbmduLXNlcnZlciIsIm5pY2tuYW1lIjoi7YWM7Iqk7Yq4IOuLieuEpOyehCIsImxvY2F0aW9uIjoi7ISc7Jq47IucIOqwleuPmeq1rCIsImlkIjoxLCJtYW5uZXIiOjM2LjUsImV4cCI6MTY1ODQ3NDI5OCwiaWF0IjoxNjU4NDY3MDk4fQ.C66bFI6MpcUSpyIAShWcUQTyVCnW0exxSMZyZ9viGlZlQk4yQnVOqJxEEuEly_uFBzQ4RDOCrqvUDcARnesAIA",
    "nickname": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„",
    "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
    "profile_url": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/profile-image/1/profile_image.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220722T051818Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220722%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=d7e7247053ba7b6fb0a92f35e62b983beba6839679609c269ac0e0d16b2841f3",
    "manner": 36.5
}

Logout

  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์•„์›ƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/auth/logout

Request

param type required description
access_token body true ์นด์นด์˜ค ๋กœ๊ทธ์ธ API access_token

Request ์˜ˆ์‹œ

{
    "access_token": "yz6123kepyF2qasdfkar1234dGvQ321HrSasdfx0I2341PDZYigqe_04E40w"
}

Response

  • ์„ฑ๊ณต(200)
{
}

User

ํšŒ์›๊ฐ€์ž…

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API
  • ์‚ฌ์šฉ์ž๋Š” ํšŒ์›๊ฐ€์ž…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์นด์นด์˜ค ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด presigned-url์ด ์•„๋‹Œ original-url์„ ๋ฆฌํ„ดํ•œ๋‹ค.
    • API ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋กœ profile_url์„ ๋ฐ›๊ณ  ํšŒ์›์ •๋ณด ์ˆ˜์ • API ํ˜ธ์ถœ์„ ํ†ตํ•ด ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋“ฑ๋ก์„ ์œ„ํ•œ presigned-url์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•œ๋‹ค.

URL

  • POST /api/users/join

Request

param type required description
access_token body true ์นด์นด์˜ค ๋กœ๊ทธ์ธ API access_token

Request ์˜ˆ์‹œ

{
    "access_token": "yz6123kepyF2qasdfkar1234dGvQ321HrSasdfx0I2341PDZYigqe_04E40w"
}

Response

  • ์„ฑ๊ณต(200)
{
    "id": 1,
    "oauth_id": 2172631965,
    "profile_url": "http://k.kakaocdn.net/dn/64fac/btryDjlyt8p/QFcrbqBCShUTP5e7KQ6Pf1/img_640x640.jpg"
}
  • ์‹คํŒจ(401)
    • ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ์œผ๋กœ ์š”์ฒญ ์‹œ
{
    "message": "401 Unauthorized: \"{\"msg\":\"this access token does not exist\",\"code\":-401}\"",
    "status": 401,
    "invalid_fields": null
}

ํšŒ์›์ •๋ณด ์กฐํšŒ(์ž๊ธฐ ์ž์‹  ์ •๋ณด ์กฐํšŒ)

  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋Š” ์ž๊ธฐ ์ž์‹ ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์˜์‚ฌํ•ญ
    • ์กฐํšŒ ๋Œ€์ƒ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ ๊ฐ€์ž… ํ›„ ํšŒ์›์ •๋ณด ์ˆ˜์ • API๋ฅผ ํ†ตํ•ด ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ presigned-url์ด ๋ฐœ๊ธ‰๋œ๋‹ค.
      • ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผ์‹œ 404 ๋ฆฌํ„ด(AWS ์ŠคํŽ™)

URL

  • GET /api/users

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
    "id": 6,
    "oauth_id": 2172631965,
    "nickname": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„",
    "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
    "profile_url": "https://BUCKET.com/profile-image/92a0d23d-6f1e-427c-8e7e-82629d3d08c7img_110x110.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220617T084453Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220617%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=6c9a5ad2a9472b3d8beb6b953f42fe4546a2032a6e74354d402255b147d84faa",
    "manner": 36.5
}

ํšŒ์›์ •๋ณด ์กฐํšŒ

  • ํšŒ์› ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์˜์‚ฌํ•ญ
    • ์กฐํšŒ ๋Œ€์ƒ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ ๊ฐ€์ž… ํ›„ ํšŒ์›์ •๋ณด ์ˆ˜์ • API๋ฅผ ํ†ตํ•ด ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ presigned-url์ด ๋ฐœ๊ธ‰๋œ๋‹ค.
      • ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผ์‹œ 404 ๋ฆฌํ„ด(AWS ์ŠคํŽ™)

URL

  • GET /api/users/{user-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
    "id": 6,
    "oauth_id": 2172631965,
    "nickname": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„",
    "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
    "profile_url": "https://BUCKET.com/profile-image/92a0d23d-6f1e-427c-8e7e-82629d3d08c7img_110x110.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220617T084453Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220617%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=6c9a5ad2a9472b3d8beb6b953f42fe4546a2032a6e74354d402255b147d84faa",
    "manner": 36.5
}

ํšŒ์›์ •๋ณด ์ˆ˜์ •

  • ์‚ฌ์šฉ์ž๋Š” ํšŒ์›์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/users

Request

param type required description
nickname body true ๋‹‰๋„ค์ž„
location body true ์ง€์—ญ ์ •๋ณด
profile_url body true ํ”„๋กœํ•„ ์ด๋ฏธ์ง€("profile_image.jpg" ๋ฌธ์ž์—ด ๊ณ ์ •์œผ๋กœ .png, .jpeg, .jpg ํ™•์žฅ์ž๋งŒ ๊ฐ€๋Šฅ)

Request ์˜ˆ์‹œ

{
    "nickname": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„",
    "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
    "profile_url": "profile_image.jpg"
}

Response

  • ์„ฑ๊ณต(200)
{
    "id": 1,
    "profile_url": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/profile-image/1/profile_image.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220722T051703Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220722%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=7972a45e169c474e4f918b7fc01e68f4f4760aa8fb118cad80987f1312a13c3d"
}

๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ

  • ์‚ฌ์šฉ์ค‘์ธ ๋‹‰๋„ค์ž„ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/users/nickname

Request

param type required description
name query string true ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋‹‰๋„ค์ž„

Request ์˜ˆ์‹œ

  • GET /api/users/nickname?name=ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1
  • GET /api/users/nickname?name=helloworld

Response

  • ์„ฑ๊ณต(200)
    • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋‹‰๋„ค์ž„์ธ ๊ฒฝ์šฐ
{
    "result": true
}
  • ์„ฑ๊ณต(200)
    • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋‹‰๋„ค์ž„์ธ ๊ฒฝ์šฐ
{
    "result": false
}

๋งค๋„ˆํ‰๊ฐ€ ํ•˜๊ธฐ

URL

  • POST /api/users/manner

Request

param type required description
user_id body true ์œ ์ € id
score body true ๋งค๋„ˆ์ ์ˆ˜ (-5~5 ์‚ฌ์ด์˜ ์ •์ˆ˜)

Request ์˜ˆ์‹œ

{
    "user_id": 1,
    "score": 5
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ์ž๊ธฐ ์ž์‹ ์€ ๋งค๋„ˆํ‰๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๋งค๋„ˆํ‰๊ฐ€ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž์˜ ๋งค๋„ˆํ‰๊ฐ€ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋งค๋„ˆํ‰๊ฐ€ ์ ์ˆ˜ -5์  ~ 5์  ์ค‘์— ํ‰๊ฐ€๊ฐ€ 1๊ฑด์ด์ƒ ์กด์žฌํ•˜๋Š” ์ ์ˆ˜๋งŒ ์‘๋‹ต์„ ์ค€๋‹ค.

URL

  • GET /api/users/manner/{user-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
    {
        "score": -5,
        "score_count": 2
    },
    {
        "score": -4,
        "score_count": 1
    },
    {
        "score": -3,
        "score_count": 1
    },
    {
        "score": -2,
        "score_count": 1
    },
    {
        "score": -1,
        "score_count": 1
    },
    {
        "score": 1,
        "score_count": 1
    },
    {
        "score": 2,
        "score_count": 1
    },
    {
        "score": 3,
        "score_count": 1
    },
    {
        "score": 4,
        "score_count": 1
    },
    {
        "score": 5,
        "score_count": 2
    }
}
  • ์„ฑ๊ณต(200)
    • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋งค๋„ˆํ‰๊ฐ€๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ
{
    "score": 0,
    "score_count": 0
}

Category

์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API
  • ์‚ฌ์šฉ์ž๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/categories

Request

  • None

Response

  • ์„ฑ๊ณต(200)
[
    {
        "id": 1,
        "name": "๋””์ง€ํ„ธ๊ธฐ๊ธฐ"
    },
    {
        "id": 2,
        "name": "์ƒํ™œ๊ฐ€์ „"
    },
    {
        "id": 3,
        "name": "๊ฐ€๊ตฌ/์ธํ…Œ๋ฆฌ์–ด"
    },
    {
        "id": 4,
        "name": "์œ ์•„๋™"
    },
    {
        "id": 5,
        "name": "์ƒํ™œ/๊ฐ€๊ณต์‹ํ’ˆ"
    },
    {
        "id": 6,
        "name": "์œ ์•„๋„์„œ"
    },
    {
        "id": 7,
        "name": "์Šคํฌ์ธ /๋ ˆ์ €"
    },
    {
        "id": 8,
        "name": "์—ฌ์„ฑ์žกํ™”"
    },
    {
        "id": 9,
        "name": "์—ฌ์„ฑ์˜๋ฅ˜"
    },
    {
        "id": 10,
        "name": "๋‚จ์„ฑํŒจ์…˜/์žกํ™”"
    },
    {
        "id": 11,
        "name": "๊ฒŒ์ž„/์ทจ๋ฏธ"
    },
    {
        "id": 12,
        "name": "๋ทฐํ‹ฐ/๋ฏธ์šฉ"
    },
    {
        "id": 13,
        "name": "๋ฐ˜๋ ค๋™๋ฌผ์šฉํ’ˆ"
    },
    {
        "id": 14,
        "name": "๋„์„œ/ํ‹ฐ์ผ“/์Œ๋ฐ˜"
    },
    {
        "id": 15,
        "name": "์‹๋ฌผ"
    },
    {
        "id": 16,
        "name": "๊ธฐํƒ€ ์ค‘๊ณ ๋ฌผํ’ˆ"
    }
]

์นดํ…Œ๊ณ ๋ฆฌ ํ•œ ๊ฑด ์กฐํšŒ

  • ํšŒ์› ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ API
  • ์‚ฌ์šฉ์ž๋Š” id์— ํ•ด๋‹นํ•˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/categories/{category-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
    "id": 2,
    "name": "์ƒํ™œ๊ฐ€์ „"
}

Product

๋ฌผํ’ˆ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ(ํšŒ์› ์ „์šฉ)

  • ์‚ฌ์šฉ์ž๋Š” ๋ฌผํ’ˆ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํšŒ์›์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌผํ’ˆ ๋ชฉ๋ก๋งŒ ์ตœ์‹  ๋“ฑ๋ก์ˆœ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.
  • ํŽ˜์ด์ง• ์‚ฌ์ด์ฆˆ: 5

URL

  • GET /api/products
  • GET /api/products?title=๋งฅ๋ถ
  • GET /api/products?category=3
  • GET /api/products?category=1,2,3
  • GET /api/products?title=๋งฅ๋ถ&category=5
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5
  • GET /api/products?min-price=120000
  • GET /api/products?min-price=120000&max-price=null
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&min-price=120000
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&min-price=120000&max-price=null
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&max-price=150000
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&min-price=null&max-price=150000
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&min-price=null&max-price=null
  • GET /api/products?title=๋งฅ๋ถ&category=1,2,5&min-price=120000&max-price=160000

Request

param type required description
title query string false ํŒ๋งค๊ธ€ ์ œ๋ชฉ
category query string false ์นดํ…Œ๊ณ ๋ฆฌ id(ex.1,2,3,4,5)
e.g. ์นดํ…Œ๊ณ ๋ฆฌ 1๊ฑด ์กฐํšŒ ์‹œ - category=1
e.g. ์นดํ…Œ๊ณ ๋ฆฌ 2๊ฑด ์ด์ƒ ์กฐํšŒ ์‹œ - category=1,2,3,4,5
min-price query string false ์ตœ์†Œ ๊ฐ€๊ฒฉ
max-price query string false ์ตœ๋Œ€ ๊ฐ€๊ฒฉ

Response

  • ์„ฑ๊ณต(200)
[
    {
        "id": 14,
        "title": "๊ทธ๋žจ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": null,
        "favorite_count": 3,
        "chatting_count": 2,
        "created_at": "2022-06-05T00:56:13.273674"
    },
    {
        "id": 13,
        "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/7f10531b-bff3-4ac0-b185-4e89f820c764test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155616Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=c9ead73ed5a3b41cb536148ff0f3a5f048ab68298368c2a43c7edd75ba0e887d",
        "favorite_count": 0,
        "chatting_count": 0,
        "created_at": "2022-06-05T00:49:31.365339"
    }
]
  • ์‹คํŒจ(400)
    • ์œ„์น˜ ์ •๋ณด ๋ฏธ๋“ฑ๋ก ์‹œ
{
    "message": "๋ฌผํ’ˆ ์กฐํšŒ ์‹œ ์œ„์น˜ ์ •๋ณด ๋“ฑ๋ก์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}

๋ฌผํ’ˆ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ๋ฌผํ’ˆ ํ•œ ๊ฑด์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/products/{product-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
    • productImage๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
{
    "id": 1,
    "seller": {
        "id": 1,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„2"
    },
    "buyer": null,
    "category_id": 1,
    "name": "mockProduct1",
    "price": 10000,
    "title": "mockProduct ํŒ๋‹ˆ๋‹ค1",
    "description": "mockProduct1 description",
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "product_state": "ํŒ๋งค์ค‘",
    "view_count": 5,
    "thumb_nail_image": null,
    "product_images": [],
    "favorite_count": 4,
    "chatting_count": 5,
    "is_favorite": true,
    "created_at": "2022-06-11T07:09:40.744419"
}
{
    "id": 1,
    "seller": {
        "id": 1,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„2"
    },
    "buyer": {
        "id": 3,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„4"
    },
    "category_id": 1,
    "name": "mockProduct1",
    "price": 10000,
    "title": "mockProduct ํŒ๋‹ˆ๋‹ค1",
    "description": "mockProduct1 description",
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "product_state": "ํŒ๋งค์ค‘",
    "view_count": 5,
    "thumb_nail_image": null,
    "product_images": [],
    "favorite_count": 4,
    "chatting_count": 5,
    "is_favorite": true,
    "created_at": "2022-06-11T07:09:40.744419"
}
  • ์„ฑ๊ณต(200)
    • productImage๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
{
    "id": 13,
    "seller": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„",
    "seller_id": 6,
    "buyer": null,
    "category_id": 1,
    "name": "๋งฅ๋ถ",
    "price": 9999,
    "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
    "description": "๋ฏธ์ค‘๊ณ  ๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
    "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
    "product_state": "ํŒ๋งค์ค‘",
    "view_count": 5,
    "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/7f10531b-bff3-4ac0-b185-4e89f820c764test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155911Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=3fa60b260e7b6696b48ad2688a04b9fbbd44682d8f15a530df34be817446178f",
    "product_images": [
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/7f10531b-bff3-4ac0-b185-4e89f820c764test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155911Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=3fa60b260e7b6696b48ad2688a04b9fbbd44682d8f15a530df34be817446178f",
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/5363b1ea-b4da-40bc-aa39-482d65f48cc4test002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155911Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=316ccd7b305bf609e2bace758e9d16a25205c081dc0bf7ecd831a879483fd9a9",
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/4022b8fc-cf2a-49d0-8e8d-83a1f0181474test003.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155911Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=57fbf0e52e407d4b4725983df350db6f4887815058404db98390fd2d24f85789"
    ],
    "favorite_count": 0,
    "chatting_count": 0,
    "is_favorite": true,
    "created_at": "2022-06-11T07:09:40.796542"
}

๋ฌผํ’ˆ ๋“ฑ๋ก

  • ์‚ฌ์šฉ์ž๋Š” ๋ฌผํ’ˆ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/products

Request

param type required description
category_id body true ์นดํ…Œ๊ณ ๋ฆฌ id(ex.1,2,3,4,5)
title body true ํŒ๋งค๊ธ€ ์ œ๋ชฉ
price body true ๊ฐ€๊ฒฉ
description body true ๋ฌผํ’ˆ ์„ค๋ช…
product_images body false ์—…๋กœ๋“œ ํ•˜๊ณ ์ž ํ•˜๋Š” ํŒŒ์ผ๋ช…(ํ™•์žฅ์ž๋Š” png, jpeg, jpg๋งŒ ๊ฐ€๋Šฅ, ์ตœ๋Œ€ ์—…๋กœ๋“œ ๊ฐฏ์ˆ˜๋Š” 10๊ฐœ)

Request ์˜ˆ์‹œ

  • ์ด๋ฏธ์ง€ ์—†์ด ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ
{
    "category_id": 1,
    "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
    "price": 9999,
    "description": "๋ฏธ์ค‘๊ณ  ๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค"
}
  • ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ
{
    "category_id": 1,
    "title": "๊ทธ๋žจ ํŒ๋‹ˆ๋‹ค",
    "price": 9999,
    "description": "๋ฏธ์ค‘๊ณ  ๊ทธ๋žจ ํŒ๋‹ˆ๋‹ค",
    "product_images": ["test001.jpg","test001.png","test003.jpeg"]
}

Response

  • ์„ฑ๊ณต(200)

์ด๋ฏธ์ง€ ์—†์ด ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ

{
    "product_id": 13,
    "product_images": []
}

์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ

{
    "product_id": 13,
    "product_images": [
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/e01f24b1-553f-4bc9-961d-15eb7401c5bctest001.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T152514Z&X-Amz-SignedHeaders=host%3Bx-amz-acl&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=4e4b7b3842e77e1be1fbee295d667585062ffac5ccbabf4ae9f2eee9b6c494aa",
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/00baf529-caf1-452d-b4a8-e1b74d1b92fftest002.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T152514Z&X-Amz-SignedHeaders=host%3Bx-amz-acl&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=53ff5c401770ae502b81e40ae86546709f14488ec29b4d36b19eb3a3c5c79ff1",
        "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/9362e993-f1fb-4e3f-b2dc-3630bc521b8dtest003.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T152514Z&X-Amz-SignedHeaders=host%3Bx-amz-acl&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=b16df75d1313d13398652cce6e84db2ee804a24028764b76cabe3d2e3a3f19f5"
    ]
}
  • ์‹คํŒจ(400)
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์œ„์น˜์™€ ๋‹‰๋„ค์ž„์„ ๋“ฑ๋กํ•˜์ง€ ์•Š๊ณ  ๋ฌผํ’ˆ์„ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ
{
    "message": "ํŒ๋งค์ž์˜ ์ฃผ์†Œ์™€ ๋‹‰๋„ค์ž„ ์ •๋ณด๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}

๋ฌผํ’ˆ ์ˆ˜์ •

  • ํŒ๋งค์ž๋Š” ๋ฌผํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/products/{product-id}

Request

param type required description
category_id body true ์นดํ…Œ๊ณ ๋ฆฌ id(ex.1,2,3,4,5)
title body true ํŒ๋งค๊ธ€ ์ œ๋ชฉ
price body true ๊ฐ€๊ฒฉ
description body true ๋ฌผํ’ˆ ์„ค๋ช…

Request ์˜ˆ์‹œ

{
    "category_id": 1,
    "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
    "price": 9999,
    "description": "๋ฏธ์ค‘๊ณ  ๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค"
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
    • ํŒ๋งค์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌผํ’ˆ ์ˆ˜์ •์„ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ๋ฌผํ’ˆ ์ˆ˜์ •์€ ํŒ๋งค์ž๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๋ฌผํ’ˆ ์‚ญ์ œ

  • ํŒ๋งค์ž๋Š” ๋ฌผํ’ˆ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/products/{product-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ๋ฌผํ’ˆ ์‚ญ์ œ๋Š” ํŒ๋งค์ž๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๋ฌผํ’ˆ ์ƒํƒœ ๋ณ€๊ฒฝ

  • ํŒ๋งค์ž๋Š” ๋ฌผํ’ˆ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/products/state/{product-id}

Request

param type required description
state body true ๋ฌผํ’ˆ์ƒํƒœ (ex.0-์ˆจ๊ธฐ๊ธฐ,1-ํŒ๋งค์ค‘,2-๊ฑฐ๋ž˜์™„๋ฃŒ,3-์˜ˆ์•ฝ์ค‘)
buyer_id body false ๊ตฌ๋งค์ž user_id

Request ์˜ˆ์‹œ

  • ๋ฌผํ’ˆ์ƒํƒœ๋ฅผ '์ˆจ๊ธฐ๊ธฐ', 'ํŒ๋งค์ค‘' ๋˜๋Š” '์˜ˆ์•ฝ์ค‘'์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ
{
    "state": 3
}
  • ๋ฌผํ’ˆ์ƒํƒœ๋ฅผ '๊ฑฐ๋ž˜์™„๋ฃŒ'๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ
{
    "state": 2,
    "buyer_id": 1
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(400)
    • ๋ฌผํ’ˆ์ƒํƒœ๋ฅผ '๊ฑฐ๋ž˜์™„๋ฃŒ'๋กœ ๋ฐ”๊ฟ€ ๋•Œ buyerId๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
{
    "message": "buyerId ๊ฐ’์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ๋ฌผํ’ˆ ์ƒํƒœ ๋ณ€๊ฒฝ์€ ํŒ๋งค์ž๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๋ฌผํ’ˆ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ

  • ํŒ๋งค์ž๋Š” ๋ฌผํ’ˆ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • 5ํšŒ๊นŒ์ง€ ์‚ฌ์šฉ๊ฐ€๋Šฅ

URL

  • PUT /api/products/refreshment/{product-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(400)
    • 5ํšŒ ์ด์ƒ ๋ฌผํ’ˆ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "์ƒˆ๋กœ ๊ณ ์นจ์€ 5ํšŒ์ด์ƒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ๋ฌผํ’ˆ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋Š” ํŒ๋งค์ž๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๋ฌผํ’ˆ ํŒ๋งค ๋‚ด์—ญ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ํŒ๋งค ๋‚ด์—ญ ๋ฌผํ’ˆ์„ ์ƒํƒœ๋ณ„๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/products/sales-history?state=0
  • GET /api/products/sales-history?state=1
  • GET /api/products/sales-history?state=2

Request

param type required description
state query string true ๋ฌผํ’ˆ์ƒํƒœ(0-์ˆจ๊ธฐ๊ธฐ, 1-ํŒ๋งค์ค‘,2-๊ฑฐ๋ž˜์™„๋ฃŒ)

Response

  • ์„ฑ๊ณต(200)
    • ๋ฌผํ’ˆ์ƒํƒœ ์กฐํšŒ ์กฐ๊ฑด์ด '๊ฑฐ๋ž˜์™„๋ฃŒ'์ธ ๊ฒฝ์šฐ has_review๊ฐ€ true์ผ ์ˆ˜ ์žˆ๋‹ค.
    • '๊ฑฐ๋ž˜์™„๋ฃŒ' ์™ธ์˜ ๋ฌผํ’ˆ ์ƒํƒœ ์กฐํšŒ ์กฐ๊ฑด์€ has_review๊ฐ€ ๋ฌด์กฐ๊ฑด false ์ด๋‹ค.
[
    {
        "id": 14,
        "title": "๊ทธ๋žจ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": null,
        "favorite_count": 3,
        "chatting_count": 2,
        "has_review": true,
        "created_at": "2022-06-05T00:56:13.273674"
    },
    {
        "id": 13,
        "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/7f10531b-bff3-4ac0-b185-4e89f820c764test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155616Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=c9ead73ed5a3b41cb536148ff0f3a5f048ab68298368c2a43c7edd75ba0e887d",
        "favorite_count": 0,
        "chatting_count": 0,
        "has_review": true,
        "created_at": "2022-06-05T00:49:31.365339"
    }
]

๋ฌผํ’ˆ ๊ตฌ๋งค ๋‚ด์—ญ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ตฌ๋งค ๋‚ด์—ญ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/products/purchase-history

Request

  • None

Response

  • ์„ฑ๊ณต(200)
[
    {
        "id": 14,
        "seller_id": 2,
        "title": "๊ทธ๋žจ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": null,
        "favorite_count": 3,
        "chatting_count": 2,
        "has_review": true,
        "created_at": "2022-06-05T00:56:13.273674"
    },
    {
        "id": 13,
        "seller_id": 2,
        "title": "๋งฅ๋ถ ํŒ๋‹ˆ๋‹ค",
        "location": "์„œ์šธ์‹œ ๊ฐ•๋™๊ตฌ",
        "price": 9999,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/7f10531b-bff3-4ac0-b185-4e89f820c764test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220604T155616Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220604%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=c9ead73ed5a3b41cb536148ff0f3a5f048ab68298368c2a43c7edd75ba0e887d",
        "favorite_count": 0,
        "chatting_count": 0,
        "has_review": false,
        "created_at": "2022-06-05T00:49:31.365339"
    }
]

FavoriteProduct

์ฐœํ•œ ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ฐœํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/favorite-products

Request

  • None

Response

  • ์„ฑ๊ณต(200)
[
    {
        "id": 3,
        "title": "WH-1000XM4 ํŒ๋‹ˆ๋‹ค.",
        "location": "์„œ์šธํŠน๋ณ„์‹œ ๊ตฌ๋กœ๊ตฌ ๊ตฌ๋กœ๋™",
        "price": 350000,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/c488cb78-fbc7-4527-b964-1594afa5e2e7WH_1.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220727T164512Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220727%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=966220682fd28eb16f6e09a5df5a6456f035ece11e20cd4819351aec778f3a13",
        "favorite_count": 1,
        "chatting_count": 0,
        "created_at": "2022-07-27T17:08:57"
    },
    {
        "id": 2,
        "title": "์—์„ผํ—ˆ๋ธŒ ํ‹ฐํŠธ๋ฆฌ ์•„ํฌ๋„ค ๋ฐ์ผ๋ฆฌ ์›Œ์‹œ ํŒ”์•„์š”.",
        "location": "์„œ์šธํŠน๋ณ„์‹œ ๊ตฌ๋กœ๊ตฌ ๊ตฌ๋กœ๋™",
        "price": 12000,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/a23ea5cf-bf7a-4282-b426-38ca313ae59a%E1%84%8B%E1%85%A6%E1%84%89%E1%85%A6%E1%86%AB%E1%84%89%E1%85%A7%E1%86%AF%E1%84%92%E1%85%A5%E1%84%87%E1%85%B3_1.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220727T164512Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220727%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=847c0131b37502fbd77f939be41bd99d9b763ee5e3be83c5e060c4998d4512a8",
        "favorite_count": 2,
        "chatting_count": 0,
        "created_at": "2022-07-27T16:56:09"
    },
    {
        "id": 4,
        "title": "๋‰ด ํด๋ฆฐ์Šค์™‘ ์—์ด ์ฒ˜๋ถ„ํ•ฉ๋‹ˆ๋‹ค~",
        "location": "์„œ์šธํŠน๋ณ„์‹œ ๊ตฌ๋กœ๊ตฌ ๊ตฌ๋กœ๋™",
        "price": 24000,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/d9463672-abd6-4a92-8853-d283947d9761clean-swap_1.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220727T164512Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220727%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=342e57291ff30511c129cf029affe5b573d0e37181fd4e4ae2882730ddf74a74",
        "favorite_count": 1,
        "chatting_count": 0,
        "created_at": "2022-07-27T17:13:14"
    },
    {
        "id": 7,
        "title": "์—์–ด์ปจ",
        "location": "์„œ์šธํŠน๋ณ„์‹œ ๊ตฌ๋กœ๊ตฌ ๊ตฌ๋กœ๋™",
        "price": 50000,
        "thumb_nail_image": "https://BUCKET_NAME.s3.ap-northeast-2.amazonaws.com/product-image/c69c0660-b44f-43db-ab13-33376383ee48%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-07-27%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.20.59.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220727T164512Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220727%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=fdc1ee9bc49307632faaf90b220d9e5b7f8d00f2c6799cf390b15701f893c1b8",
        "favorite_count": 1,
        "chatting_count": 1,
        "created_at": "2022-07-27T17:21:42"
    }
]

์ฐœํ•˜๊ธฐ ๋“ฑ๋ก

  • ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ๋ฌผํ’ˆ์„ ์ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/favorite-products

Request

param type required description
product_id body true ๋ฌผํ’ˆ id

Request ์˜ˆ์‹œ

{
    "product_id": 1
}

Response

  • ์„ฑ๊ณต(200)
{
    "favorite_id": 8
}

์ฐœํ•˜๊ธฐ ์‚ญ์ œ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ฐœํ•œ ๋ฌผํ’ˆ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/favorite-products/{favorite-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ์ฐœํ•˜๊ธฐ๋ฅผ ๋ˆ„๋ฅธ ๋ณธ์ธ๋งŒ ์ฐœํ•˜๊ธฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

์ฐœํ•˜๊ธฐ ์‚ญ์ œ(๋ฌผํ’ˆ ID๋กœ)

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ฐœํ•œ ๋ฌผํ’ˆ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/favorite-products/products/{product-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)

SaleReview

์ „์ฒด ํ›„๊ธฐ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›์€ ์ „์ฒด ํ›„๊ธฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/sale-reviews/user/{user-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
param type description
review_type Integer ๋ฆฌ๋ทฐ ํƒ€์ž… (0: ํŒ๋งค์ž ํ›„๊ธฐ, 1: ๊ตฌ๋งค ํ›„๊ธฐ)
{
    "id": 4,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ4",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.481689"
},
{
    "id": 3,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ3",
    "review_type": 1,
    "created_at": "2022-06-17T14:29:35.478303"
},
{
    "id": 2,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ2",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.475205"
},
{
    "id": 1,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ1",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.469625"
}

ํŒ๋งค์ž ํ›„๊ธฐ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›์€ ํŒ๋งค์ž ํ›„๊ธฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/sale-reviews/seller/{user-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
param type description
review_type Integer ๋ฆฌ๋ทฐ ํƒ€์ž… (0: ํŒ๋งค์ž ํ›„๊ธฐ, 1: ๊ตฌ๋งค ํ›„๊ธฐ)
{
    "id": 4,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ4",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.481689"
},
{
    "id": 3,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ3",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.478303"
},
{
    "id": 2,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ2",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.475205"
},
{
    "id": 1,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ1",
    "review_type": 0,
    "created_at": "2022-06-17T14:29:35.469625"
}

ํŒ๋งค์ž ํ›„๊ธฐ ๋“ฑ๋ก

  • ๊ฑฐ๋ž˜ ์™„๋ฃŒํ•œ ๊ตฌ๋งค์ž์— ๋Œ€ํ•œ ํŒ๋งค์ž ํ›„๊ธฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/sale-reviews/seller

Request

param type required description
product_id body true ๋ฌผํ’ˆ ID
buyer_id body true ๊ตฌ๋งค์ž ID
content body true ํ›„๊ธฐ ๋‚ด์šฉ

Request ์˜ˆ์‹œ

{
    "product_id": 13,
    "buyer_id": 1,
    "content": "ํŒ๋งค์ž ํ›„๊ธฐ์ž…๋‹ˆ๋‹ค."
}

Response

  • ์„ฑ๊ณต(200)
{
    "sale_review_id": 1
}
  • ์‹คํŒจ(400)
{
    "message": "๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๋Š” ์‚ฌ์šฉ์ž๋Š” ์ฃผ์†Œ์™€ ๋‹‰๋„ค์ž„์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ์˜ฌ๋ฐ”๋ฅธ ์š”์ฒญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ ํŒ๋งค์ž์™€ ๊ตฌ๋งค์ž๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

ํŒ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ •

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํŒ๋งค์ž ํ›„๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/sale-reviews/seller/{sale-review-id}

Request

param type required description
content body true ํ›„๊ธฐ ๋‚ด์šฉ

Request ์˜ˆ์‹œ

{
    "content": "ํŒ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค."
}

Response

  • ์„ฑ๊ณต(200)

ํŒ๋งค์ž ํ›„๊ธฐ ์‚ญ์ œ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํŒ๋งค์ž ํ›„๊ธฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/sale-reviews/seller/{sale-review-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)

๊ตฌ๋งค์ž ํ›„๊ธฐ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›์€ ๊ตฌ๋งค์ž ํ›„๊ธฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/sale-reviews/buyer/{user-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
param type description
review_type Integer ๋ฆฌ๋ทฐ ํƒ€์ž… (0: ํŒ๋งค์ž ํ›„๊ธฐ, 1: ๊ตฌ๋งค ํ›„๊ธฐ)
{
    "id": 4,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ4",
    "review_type": 1,
    "created_at": "2022-06-17T14:29:35.481689"
},
{
    "id": 3,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ3",
    "review_type": 1,
    "created_at": "2022-06-17T14:29:35.478303"
},
{
    "id": 2,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ2",
    "review_type": 1,
    "created_at": "2022-06-17T14:29:35.475205"
},
{
    "id": 1,
    "reviewer_id": 1,
    "reviewer": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "profile_url": null,
    "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
    "content": "ํ…Œ์ŠคํŠธ ๋ฆฌ๋ทฐ1",
    "review_type": 1,
    "created_at": "2022-06-17T14:29:35.469625"
}

๊ตฌ๋งค์ž ํ›„๊ธฐ ๋“ฑ๋ก

  • ๊ฑฐ๋ž˜ ์™„๋ฃŒํ•œ ํŒ๋งค์ž์— ๋Œ€ํ•œ ๊ตฌ๋งค์ž ํ›„๊ธฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/sale-reviews/buyer

Request

param type required description
product_id body true ๋ฌผํ’ˆ ID
seller_id body true ํŒ๋งค์ž ID
content body true ํ›„๊ธฐ ๋‚ด์šฉ

Request ์˜ˆ์‹œ

{
  "product_id": 3,
  "seller_id": 1,
  "content": "๊ตฌ๋งค์ž ํ›„๊ธฐ"
}

Response

  • ์„ฑ๊ณต(200)
{
    "sale_review_id": 5
}
  • ์‹คํŒจ(400)
{
    "message": "๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๋Š” ์‚ฌ์šฉ์ž๋Š” ์ฃผ์†Œ์™€ ๋‹‰๋„ค์ž„์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ์˜ฌ๋ฐ”๋ฅธ ์š”์ฒญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ ํŒ๋งค์ž์™€ ๊ตฌ๋งค์ž๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

๊ตฌ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ •

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ž‘์„ฑํ•œ ๊ตฌ๋งค์ž ํ›„๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/sale-reviews/buyer/{sale-review-id}

Request

param type required description
content body true ํ›„๊ธฐ ๋‚ด์šฉ

Request ์˜ˆ์‹œ

{
  "content": "๊ตฌ๋งค์ž ํ›„๊ธฐ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค."
}

Response

  • ์„ฑ๊ณต(200)

๊ตฌ๋งค์ž ํ›„๊ธฐ ์‚ญ์ œ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ž‘์„ฑํ•œ ๊ตฌ๋งค์ž ํ›„๊ธฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/sale-reviews/buyer/{sale-review-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)

๋ฐ›์€ ํ›„๊ธฐ ์ˆจ๊ธฐ๊ธฐ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ๋ฐ›์€ ๋ฆฌ๋ทฐ๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/sale-reviews/hide/{sale-review-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
  • ์‹คํŒจ(403)
{
    "message": "Authority error (cause: ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ๋งŒ ๋ฐ›์€ ๋ฆฌ๋ทฐ๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

Notification

์•Œ๋ฆผ ๋ชฉ๋ก ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์—๊ฒŒ ์˜จ ์•Œ๋ฆผ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/notifications

Request

  • None

Response

  • ์„ฑ๊ณต(200)

Response ํ•„๋“œ ์„ค๋ช…

  • ๋ฌผํ’ˆ ๊ด€๋ จ ํ•ญ๋ชฉ์ธ product_id, price, title, thumb_nail_image๊ณผ ๋ฆฌ๋ทฐ ๋‚จ๊ธด ์‚ฌ์šฉ์ž ํ•ญ๋ชฉ์ธ reviewer_id, nickname, profile_url์€ ๋™์‹œ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ•œ ์ชฝ ํ•„๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ํ•„๋“œ๋Š” null
    • ์•Œ๋ฆผ ์œ ํ˜•์ด 0์ธ ๊ฒฝ์šฐ, price, reviewer_id, nickname, profile_url์ด null
    • ์•Œ๋ฆผ ์œ ํ˜•์ด 1์ธ ๊ฒฝ์šฐ, reviewer_id, nickname, profile_url์ด null
    • ์•Œ๋ฆผ ์œ ํ˜•์ด 2์ธ ๊ฒฝ์šฐ, price๊ฐ€ null
    • ์•Œ๋ฆผ ์œ ํ˜•์ด 3์ธ ๊ฒฝ์šฐ, product_id, price, title, thumb_nail_image๋Š” null
  • ์ถ”๊ฐ€๋กœ ์•Œ๋ฆผ ์œ ํ˜• 0,1,2 ์ค‘์— ์•Œ๋ฆผ ์œ ํ˜• 2์—์„œ๋งŒ price ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•œ๋‹ค.
field_name description
id ์•Œ๋ฆผ ID
noti_code ์•Œ๋ฆผ ์œ ํ˜•์— ํ•ด๋‹นํ•˜๋Š” int ์ฝ”๋“œ(0-์ฐœํ•œ ์ƒํ’ˆ์ด ๊ฑฐ๋ž˜ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ, 1-์ฐœํ•œ ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์ด ๋‚ฎ์•„์ง„ ๊ฒฝ์šฐ, 2-ํŒ๋งค์ž๊ฐ€ ํŒ๋งค์™„๋ฃŒ๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ, 3-๊ตฌ๋งค์ž๊ฐ€ ๊ตฌ๋งคํ›„๊ธฐ๋ฅผ ๋‚จ๊ธด ๊ฒฝ์šฐ)
noti_type ์œ„์˜ ์•Œ๋ฆผ ์œ ํ˜• ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” String
product_id ๋ฌผํ’ˆ id (์•Œ๋ฆผ ์œ ํ˜• 0,1,2์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
price ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ (์•Œ๋ฆผ ์œ ํ˜• 1์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.)
title ๋ฌผํ’ˆ ํŒ๋งค๊ธ€ ์ œ๋ชฉ (์•Œ๋ฆผ ์œ ํ˜• 0,1,2์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
thumb_nail_image ๋ฌผํ’ˆ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ URL (์•Œ๋ฆผ ์œ ํ˜• 0,1,2์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
reviewer_id ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธด ์‚ฌ์šฉ์ž ID (์•Œ๋ฆผ ์œ ํ˜• 2, 3์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
nickname ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธด ์‚ฌ์šฉ์ž์˜ ๋‹‰๋„ค์ž„ (์•Œ๋ฆผ ์œ ํ˜• 2, 3์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
profile_url ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€ URL (์•Œ๋ฆผ ์œ ํ˜• 2, 3์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)
created_at ์•Œ๋ฆผ์ƒ์„ฑ ์ผ์‹œ
view ํ•ด๋‹น ์•Œ๋ฆผ ์กฐํšŒ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
[
   {
        "id": 5,
        "noti_code": 3,
        "noti_type": "๊ตฌ๋งคํ›„๊ธฐ๋ฅผ ๋‚จ๊ธด ๊ฒฝ์šฐ",
        "product_id": null,
        "price": null,
        "title": null,
        "thumb_nail_image": null,
        "reviewer_id": 2,
        "nickname": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„1",
        "profile_url": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/profile-image/test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220628T075436Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220628%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=cdb5b5d42ad3e2323efe94bb1b336932c06e2583cb38165a49a5c342521a1215",
        "created_at": "2022-06-28T16:51:56.748767",
        "view": true
    },
    {
        "id": 6,
        "noti_code": 2,
        "noti_type": "ํŒ๋งค์ž๊ฐ€ ํŒ๋งค์™„๋ฃŒ๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ",
        "product_id": 4,
        "price": null,
        "title": "mockProduct ํŒ๋‹ˆ๋‹ค3",
        "thumb_nail_image": null,
        "reviewer_id": 2,
        "nickname": "์ด์žฌํ›ˆ",
        "profile_url": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/profile-image/1c50fadb-76db-4892-8d71-6ef517a1dd71img_110x110.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220725T154513Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220725%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=e4b041b043445e14937e8a7715fbc532859644ae11800f83a1fa1e233c5498dc",
        "created_at": "2022-07-25T10:21:54",
        "view": false
    },
    {
        "id": 2,
        "noti_code": 0,
        "noti_type": "์ฐœํ•œ ์ƒํ’ˆ์ด ๊ฑฐ๋ž˜ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ",
        "product_id": 1,
        "price": null,
        "title": "mockProduct ํŒ๋‹ˆ๋‹ค3",
        "thumb_nail_image": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/product-image/82c55a67-400f-4bef-8066-ecb65cd86582test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220628T075436Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220628%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=33dccbbc28f390025049ee10b697b28b11b8489f46154c52579d1a348f1fd312",
        "reviewer_id": null,
        "nickname": null,
        "profile_url": null,
        "created_at": "2022-06-28T16:50:44.333321",
        "view": false
    },
    {
        "id": 1,
        "noti_code": 1,
        "noti_type": "์ฐœํ•œ ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์ด ๋‚ฎ์•„์ง„ ๊ฒฝ์šฐ",
        "product_id": 1,
        "price": 20000,
        "title": "mockProduct ํŒ๋‹ˆ๋‹ค3",
        "thumb_nail_image": "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/product-image/82c55a67-400f-4bef-8066-ecb65cd86582test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220628T075436Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220628%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=33dccbbc28f390025049ee10b697b28b11b8489f46154c52579d1a348f1fd312",
        "reviewer_id": null,
        "nickname": null,
        "profile_url": null,
        "created_at": "2022-06-28T16:49:52.600271",
        "view": false
    }
]

์•Œ๋ฆผ ์ฝ์Œ ์ฒ˜๋ฆฌ

  • ์‚ฌ์šฉ์ž๋Š” '์ฝ์ง€ ์•Š์Œ' ์ƒํƒœ์˜€๋˜ ์•Œ๋ฆผ์„ '์ฝ์Œ' ์ƒํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /api/notifications/{notification-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ๋ฐ›์€ ์•Œ๋ฆผ์ด ์•„๋‹Œ๋ฐ ์ฝ์Œ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ๋„ํ•œ ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ๋ณธ์ธ์ด ๋ฐ›์€ ์•Œ๋ฆผ๋งŒ ์ฝ์Œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

์•Œ๋ฆผ ์‚ญ์ œ ์ฒ˜๋ฆฌ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ๋ฐ›์€ ์•Œ๋ฆผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • DELETE /api/notifications/{notification-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ๋ฐ›์€ ์•Œ๋ฆผ์ด ์•„๋‹Œ๋ฐ ์‚ญ์ œ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ๋„ํ•œ ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ๋ณธ์ธ์ด ๋ฐ›์€ ์•Œ๋ฆผ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

Chat

์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ

  • ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ๋ฌผํ’ˆ์— ๋Œ€ํ•ด ์ฑ„ํŒ…๋ฐฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /api/chat-rooms

Request

param type required description
product_id body true ๋ฌผํ’ˆ id
other_user_id body true ์ƒ๋Œ€๋ฐฉ ID

Request ์˜ˆ์‹œ

{
    "product_id": 5,
    "other_user_id": 1
}

Response

  • ์„ฑ๊ณต(200)
{
    "room_id": "62a992369d47a67cf5aaca76"
}

์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์ฐธ์—ฌ์ค‘์ธ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŽ˜์ด์ง• ๊ฐ€๋Šฅ / ์ตœ๋Œ€ 10๊ฐœ๊นŒ์ง€ ์กฐํšŒ

URL

  • GET /api/chat-rooms

Request

  • None

Response

  • ์„ฑ๊ณต(200)

Response ํ•„๋“œ ์„ค๋ช…

field_name description
chat_room_id ์ฑ„ํŒ…๋ฃธ ID
participant ์ฑ„ํŒ… ์ƒ๋Œ€๋ฐฉ ๋‹‰๋„ค์ž„
participant_image ์ฑ„ํŒ… ์ƒ๋Œ€๋ฐฉ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ URL (์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ null)
location ์ฑ„ํŒ… ์ƒ๋Œ€๋ฐฉ์ด ์‚ฌ๋Š” ์ฃผ์†Œ
product_image ๋ฌผํ’ˆ ์ด๋ฏธ์ง€ URL (์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ null)
last_chat ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์— ์žˆ๋Š” ๊ฐ€์žฅ ์ตœ์‹  ๋ฉ”์‹œ์ง€
not_read_chat_count ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜
page_offset '์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก ์กฐํšŒ API' ์‚ฌ์šฉ ์‹œ ํŽ˜์ด์ง• ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜. ์œ„๋กœ ์Šคํฌ๋กค ํ•  ๋•Œ ๋งˆ๋‹ค page_offset - page_size๋กœ offset์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ ์žฌ์š”์ฒญํ•˜๋ฉด ๋œ๋‹ค.
page_size ํ•œ ๋ฒˆ์— ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฐฏ์ˆ˜
updated_at ์ฑ„ํŒ…๋ฐฉ ์ˆ˜์ • ์ผ์‹œ
[
    {
        "chat_room_id": "62a992369d47a67cf5aaca76",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": null,
        "last_chat": null,
        "not_read_chat_count": 0,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T17:03:02.402"
    },
    {
        "chat_room_id": "62a980ec794e3f5281741e82",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„5",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": null,
        "last_chat": "๋ฉ”์‹œ์ง€ + 9",
        "not_read_chat_count": 10,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T15:49:16.074"
    },
    {
        "chat_room_id": "62a980ec794e3f5281741e7f",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„4",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": null,
        "last_chat": null,
        "not_read_chat_count": 0,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T15:49:16.041"
    },
    {
        "chat_room_id": "62a980ec794e3f5281741e7c",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„3",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/product-image/5d329b04-ca13-4f0c-bdc9-4af74c457d55test001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220615T105303Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220615%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=8705ef1e02d6326eb5dbaf57ea1a2b78e3f94158838b5a8b670a5cbe3c77d719",
        "last_chat": null,
        "not_read_chat_count": 0,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T15:49:16.008"
    },
    {
        "chat_room_id": "62a980eb794e3f5281741e79",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„2",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": null,
        "last_chat": null,
        "not_read_chat_count": 0,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T15:49:15.977"
    },
    {
        "chat_room_id": "62a980eb794e3f5281741e76",
        "participant": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
        "participant_image": null,
        "location": "๋…ธ์›๊ตฌ ์ƒ๊ณ„๋™",
        "product_image": null,
        "last_chat": null,
        "not_read_chat_count": 0,
        "page_offset": 0,
        "page_size": 10,
        "updated_at": "2022-06-15T15:49:15.904"
    }
]

์ฑ„ํŒ…๋ฐฉ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๋Š” ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/chat-rooms/{chat-room-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)

Response ํ•„๋“œ ์„ค๋ช…

field_name description
chat_room_id ์ฑ„ํŒ…๋ฃธ ID
participant_id ์ฑ„ํŒ… ์ƒ๋Œ€๋ฐฉ(์ดํ•˜ ์ƒ๋Œ€๋ฐฉ) ID
participant_nickname ์ƒ๋Œ€๋ฐฉ ๋‹‰๋„ค์ž„
participant_manner ์ƒ๋Œ€๋ฐฉ ๋งค๋„ˆ์˜จ๋„
participant_image ์ƒ๋Œ€๋ฐฉ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ URL (์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ null)
out ์ƒ๋Œ€๋ฐฉ์ด ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์„ ๋‚˜๊ฐ”๋Š”์ง€ ์—ฌ๋ถ€
product_id ๋ฌผํ’ˆ ID
product_image ๋ฌผํ’ˆ ์ด๋ฏธ์ง€ URL (์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ null)
product_price ๋ฌผํ’ˆ ๊ฐ€๊ฒฉ
product_title ๋ฌผํ’ˆ ์ œ๋ชฉ
product_name ๋ฌผํ’ˆ ์ด๋ฆ„
product_state ๋ฌผํ’ˆ ์ƒํƒœ
{
    "chat_room_id": "62a980eb794e3f5281741e76",
    "participant_id": 1,
    "participant_nickname": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„1",
    "participant_manner": 36.5,
    "participant_image": null,
    "out": false,
    "product_id": 1,
    "product_image": null,
    "product_price": 10000,
    "product_title": "mockProduct ํŒ๋‹ˆ๋‹ค1",
    "product_name": "mockProduct1",
    "product_state": "ํŒ๋งค์ค‘"
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ฑ„ํŒ…๋ฐฉ์„ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ์ฑ„ํŒ…๋ฐฉ ์ฐธ์—ฌ์ž๋งŒ ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ฑ„ํŒ…๋ฐฉ ์ฐธ์—ฌ์ž ๋ชฉ๋ก ์กฐํšŒ

  • ์ž์‹ ์ด ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์— ๋Œ€ํ•ด ์ฑ„ํŒ…๋ฐฉ์— ์ฐธ์—ฌ์ค‘์ธ ๊ตฌ๋งค์ž ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • GET /api/chat-rooms/product/{product-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
[
    {
        "id": 1,
        "name": "ํ…Œ์ŠคํŠธ ๋‹‰๋„ค์ž„1"
    },
    {
        "id": 2,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„2"
    },
    {
        "id": 3,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„4"
    },
    {
        "id": 4,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„3"
    },
    {
        "id": 5,
        "name": "ํ…Œ์ŠคํŠธ๋‹‰๋„ค์ž„5"
    }
]
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์ด ์•„๋‹Œ product์— ๋Œ€ํ•ด ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ๋ฌผํ’ˆ ํŒ๋งค์ž๋งŒ ๊ตฌ๋งค์ž ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€ํ•˜๊ธฐ

  • ์ฑ„ํŒ…๋ฐฉ์„ ๋‚˜๊ฐ„ ์ƒ๋Œ€๋ฐฉ์„ ๋‹ค์‹œ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /chat/chat-rooms/invitation/{chat-room-id}

Request

param type required description
user_id body true ์ดˆ๋Œ€ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž ID

Request ์˜ˆ์‹œ

{
    "user_id": 1
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(400)
{
    "message": "์ž๊ธฐ ์ž์‹ ์€ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ฑ„ํŒ…๋ฐฉ์— ๋Œ€ํ•ด API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
    • ์ฑ„ํŒ…๋ฐฉ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์ง€ ์•Š๋˜ ์ƒ๋Œ€๋ฐฉ์„ ์ดˆ๋Œ€ํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ์ฑ„ํŒ…๋ฐฉ ์ฐธ์—ฌ์ž๋งŒ ์ฑ„ํŒ…๋ฐฉ์— ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ

  • ์ฑ„ํŒ…๋ฐฉ์„ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

URL

  • PUT /chat/chat-rooms/exit/{chat-room-id}

Request

  • None

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ฑ„ํŒ…๋ฐฉ์— ๋Œ€ํ•ด API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ์ฑ„ํŒ…๋ฐฉ ์ฐธ์—ฌ์ž๋งŒ ์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}

์ฑ„ํŒ…์ด๋ฏธ์ง€ ์ƒ์„ฑ

  • ์ฑ„ํŒ…๋ฐฉ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ presigned-url์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /chat/messages/images

Request

param type required description
img_files body true ๋“ฑ๋กํ•˜๊ณ ์ž ํ•˜๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ๋ช… ๋ฐฐ์—ด. ์ตœ๋Œ€ 10๊ฐœ๋งŒ ๊ฐ€๋Šฅ .png, .jpeg, .jpg๋กœ ๋๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€๋Šฅ

Request ์˜ˆ์‹œ

{
    "img_files": ["test1.jpg", "test2.png", "test3.jpg", "ํ•˜์ด.jpg", "๋ฐ”์ด.png"]
}

Response

field_name description
origin_name request body๋กœ ๋ณด๋ƒˆ๋˜ ํŒŒ์ผ๋ช…์— ํ•ด๋‹นํ•œ๋‹ค.
image_name presigned_url์„ ์จ์„œ ์ฑ„ํŒ… ์ด๋ฏธ์ง€ ์ƒ์„ฑ์ดํ›„, ์ด๋ฏธ์ง€๋ฅผ ์ฑ„ํŒ…๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ API๋ฅผ ์จ์„œ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€๋กœ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
image_name ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ message_type์€ 3, message์— image_name์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
presigned_url ๋ฐœ๊ธ‰๋ฐ›์€ ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ๋ฒ„ํ‚ท ์ €์žฅ์†Œ์— ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค.
  • ์„ฑ๊ณต(200)
{
    "origin_name": "test1.jpg",
    "image_name": "15785614-e0e9-4d4f-97aa-9a09abb05a6dtest1.jpg",
    "presigned_url": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/15785614-e0e9-4d4f-97aa-9a09abb05a6dtest1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220626T084527Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220626%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=20efb322e9ae20ccc939afd1f9e18352266b1d449d7b123b1c16ad84f5f0c924"
},
{
    "origin_name": "test2.png",
    "image_name": "9bda2650-8928-4ea1-bf8f-7e17e6412f64test2.png",
    "presigned_url": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/9bda2650-8928-4ea1-bf8f-7e17e6412f64test2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220626T084527Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220626%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=93ed08a46193cd5b79aab72d130bf14795b4774145136bb2ceb20f01817f0925"
},
{
    "origin_name": "test3.jpg",
    "image_name": "9ccf6567-f491-433f-97e4-69cb0a5f5a8atest3.jpg",
    "presigned_url": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/9ccf6567-f491-433f-97e4-69cb0a5f5a8atest3.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220626T084527Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220626%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=ffb57aa75280c04e78d3ca0006e2e16cda7babfc00a2ca143506b52cacd342fb"
},
{
    "origin_name": "ํ•˜์ด.jpg",
    "image_name": "fa23c269-d12f-46dc-9832-aed32bd88b0eํ•˜์ด.jpg",
    "presigned_url": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/fa23c269-d12f-46dc-9832-aed32bd88b0e%ED%95%98%EC%9D%B4.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220626T084527Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220626%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=ae9d5c9f449d52d79c9b1bbfec49440e463bd24b141be316cd650753fc2fd41d"
},
{
    "origin_name": "๋ฐ”์ด.png",
    "image_name": "6d9c09b1-5feb-4d91-ab70-d41ac63c2383๋ฐ”์ด.png",
    "presigned_url": "https://project-club-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/6d9c09b1-5feb-4d91-ab70-d41ac63c2383%EB%B0%94%EC%9D%B4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220626T084527Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA45U7IOW6L%2F20220626%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=7e989666ef6c07ca086b121fdda7aaa34435ddc0b3d773a3ac8ae419ff913d04"
}
  • ์‹คํŒจ(400)
    • ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ํ˜•์‹ (์ขŒํ‘œ,์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)

์ฑ„ํŒ…๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ

  • ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

URL

  • POST /chat/messages

Request

param type required description
room_id body true ์ฑ„ํŒ…๋ฃธ ID
sender_id body true ์†ก์‹ ์ž ID
receiver_id body true ์ˆ˜์‹ ์ž ID
message_type body true ๋ฉ”์‹œ์ง€ ํƒ€์ž…(1.์ผ๋ฐ˜๋ฉ”์‹œ์ง€, 2.์ขŒํ‘œ ๋ฉ”์‹œ์ง€, 3.์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€
message body false ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ(๋ฉ”์‹œ์ง€ ํƒ€์ž… 1,2์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ)
img_files body(ARRAY) false ์ „์†กํ•  ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ(๋ฉ”์‹œ์ง€ ํƒ€์ž… 3์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ)
  • message_type ๋ณด์ถฉ ์„ค๋ช…
    • ์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€: null, ๊ณต๋ฐฑ๋ฌธ์ž, ๋นˆ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋‹ค๋ฅธ ์ œ์•ฝ ์‚ฌํ•ญ X
    • ์ขŒํ‘œ ๋ฉ”์‹œ์ง€: "X,Y" ํ˜•ํƒœ๋กœ comma ํ•˜๋‚˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๊ฐœ์˜ ์ขŒํ‘œ ๊ฐ’์ด ๋“ค์–ด์™€์•ผ ํ–”๋‹ค.
    • ์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€: .png, .jpeg, .jpg๋กœ ๋๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€๋Šฅ. ์ด์ „์— ์ฑ„ํŒ…์ด๋ฏธ์ง€ ์ƒ์„ฑ API๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ presignedUrl์— ๋“ฑ๋กํ•˜๊ณ  image_name์œผ๋กœ ๋ฐ›์€ ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.
  • message, img_files ๋ณด์ถฉ ์„ค๋ช…
    • message, img_files ๋‘ ํ•„๋“œ๋Š” ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋ฉ”์‹œ์ง€ ํƒ€์ž…์— ๋งž๋Š” ํ•œ ํ•„๋“œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Request ์˜ˆ์‹œ

  • ์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€์ธ ๊ฒฝ์šฐ
    • message_type: 1
{
    "room_id": "62aa118d9de1944f4671f808",
    "sender_id":6,
    "receiver_id": 1,
    "message_type":1,
    "message":"ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ์ž…๋‹ˆ๋‹ค"
}
  • ์ขŒํ‘œ ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ (X,Y)
    • message_type: 2
{
    "room_id": "62b8266645dc3e3c3c4d9c31",
    "sender_id":6,
    "receiver_id": 1,
    "message_type": 2,
    "message":"1123,2123"
}
  • ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ
    • message_type: 3
{
    "room_id": "62b96d2844b3907e8fb28a2d",
    "sender_id":6,
    "receiver_id": 1,
    "message_type":3,
    "img_files": ["c16de0a7-0c8c-44fb-a87e-8a7afe4fbb27test1.jpg","fc0a2cf6-2c88-4fae-bf1b-0f96481606dftest2.png","6b06d600-52a8-40f1-a328-4f6cb3df615dtest3.jpg","3d6e58d2-ff68-40e0-81f0-c5df4c2aeb37ํ•˜์ด.jpg","21debba4-d5a5-4f4a-a9a9-4c17bbab4ce5๋ฐ”์ด.png"]
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(400)
    • ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ํ˜•์‹ (์ขŒํ‘œ,์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)
{
    "message": "java.lang.IllegalArgumentException: ์˜ฌ๋ฐ”๋ฅธ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}

{
    "message": "java.lang.IllegalArgumentException: ์˜ฌ๋ฐ”๋ฅธ ์ขŒํ‘œ ๋ฉ”์‹œ์ง€ ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค.",
    "status": 400,
    "invalid_fields": null
}

์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก ์กฐํšŒ

  • ํŠน์ • ์ฑ„ํŒ…๋ฐฉ ๋‚ด ๋ฉ”์‹œ์ง€๋“ค์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฑ„ํŒ…๋ฐฉ ๋‚ด ๋ฉ”์‹œ์ง€๋“ค์€ DB์— ์ €์žฅ๋œ index๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์กฐํšŒ
  • ํŽ˜์ด์ง• ์‚ฌ์ด์ฆˆ: 10(๋ฉ”์‹œ์ง€๋Š” 10๊ฐœ์”ฉ ๊ฐ€์ ธ์˜ด)
  • ํŽ˜์ด์ง• ์ตœ์†Ÿ๊ฐ’์€ 0(๊ฐ€์žฅ ์˜ˆ์ „๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ)

URL

  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=50
  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=40
  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=30
  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=20
  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=10
  • GET /chat/messages?room_id=62a040c660c94648d2115371&page=0

Request

param type required description
room_id query string true ์ฑ„ํŒ…๋ฐฉ ID
page query string true ์ฑ„ํŒ…๋ฐฉ ๋‚ด ์ตœ์‹  ๋ฉ”์‹œ์ง€๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ offset. '์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ' API ๊ฒฐ๊ณผ์ค‘์— page_offset๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

Response

Response ํ•„๋“œ ์„ค๋ช…

field_name description
sender_id ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์œ ์ € ID
message_type ์ฑ„ํŒ…๋ฉ”์‹œ์ง€ ํƒ€์ž…. ์ฑ„ํŒ…๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ API์— ์ •์˜ํ•œ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•œ๋‹ค.
message ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€ ํƒ€์ž…1,2(์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€, ์ขŒํ‘œ ๋ฉ”์‹œ์ง€)์ธ ๊ฒฝ์šฐ์—๋งŒ ๋“ค์–ด์žˆ๋Š” ํ•„๋“œ. ์ด๋ฏธ์ง€ ํƒ€์ž…์ผ ๋•Œ null์„ ๋ฐ˜ํ™˜
img_urls ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€ ํƒ€์ž…3(์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€)์ธ ๊ฒฝ์šฐ์—๋งŒ ๋“ค์–ด์žˆ๋Š” ํ•„๋“œ. ๋ฐฐ์—ด๋กœ ๋“ค์–ด์žˆ๊ณ , ๋‹ค๋ฅธ ํƒ€์ž…์ผ ๋•Œ null์„ ๋ฐ˜ํ™˜
created_at ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ์ผ์‹œ
  • ์„ฑ๊ณต(200)
[
    {
        "sender_id": 6,
        "message_type": 2,
        "message": "123, 456",
        "img_urls": null,
        "created_at": "2022-06-27T18:17:13.608"
    },
    {
        "sender_id": 6,
        "message_type": 2,
        "message": "123,456",
        "img_urls": null,
        "created_at": "2022-06-27T18:17:11.112"
    },
    {
        "sender_id": 6,
        "message_type": 1,
        "message": "normal message normal message normal message normal message normal message",
        "img_urls": null,
        "created_at": "2022-06-27T18:09:41.338"
    },
    {
        "sender_id": 6,
        "message_type": 3,
        "message": null,
        "img_urls": [
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/c16de0a7-0c8c-44fb-a87e-8a7afe4fbb27test1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2f747a45f9746911dd6c4a5d89357b1e5eea89567fe00d06eb3b5af998cf9402",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/fc0a2cf6-2c88-4fae-bf1b-0f96481606dftest2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=ea45266547947eccefc1189891db66f4f5ba1a5e706f061b8eec11e2fc0321cc",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/6b06d600-52a8-40f1-a328-4f6cb3df615dtest3.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=011c1768a8a38df485be5af76ea59f5f672202040392fde31df27fb7fbefa024",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/3d6e58d2-ff68-40e0-81f0-c5df4c2aeb37%ED%95%98%EC%9D%B4.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2bc9a4bd7188ac34ab1a6960b26763f5398c88533f45d8666607c97152c52b9a",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/21debba4-d5a5-4f4a-a9a9-4c17bbab4ce5%EB%B0%94%EC%9D%B4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=e81f87f87383f29af6f51d69ffd951d93c76d9ee12e429a1871b71c65f21ad01"
        ],
        "created_at": "2022-06-27T18:01:31.25"
    },
    {
        "sender_id": 6,
        "message_type": 3,
        "message": null,
        "img_urls": [
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/c16de0a7-0c8c-44fb-a87e-8a7afe4fbb27test1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2f747a45f9746911dd6c4a5d89357b1e5eea89567fe00d06eb3b5af998cf9402",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/fc0a2cf6-2c88-4fae-bf1b-0f96481606dftest2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=ea45266547947eccefc1189891db66f4f5ba1a5e706f061b8eec11e2fc0321cc",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/6b06d600-52a8-40f1-a328-4f6cb3df615dtest3.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=011c1768a8a38df485be5af76ea59f5f672202040392fde31df27fb7fbefa024",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/3d6e58d2-ff68-40e0-81f0-c5df4c2aeb37%ED%95%98%EC%9D%B4.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2bc9a4bd7188ac34ab1a6960b26763f5398c88533f45d8666607c97152c52b9a",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/21debba4-d5a5-4f4a-a9a9-4c17bbab4ce5%EB%B0%94%EC%9D%B4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=e81f87f87383f29af6f51d69ffd951d93c76d9ee12e429a1871b71c65f21ad01"
        ],
        "created_at": "2022-06-27T18:00:54.63"
    },
    {
        "sender_id": 6,
        "message_type": 3,
        "message": null,
        "img_urls": [
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/c16de0a7-0c8c-44fb-a87e-8a7afe4fbb27test1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2f747a45f9746911dd6c4a5d89357b1e5eea89567fe00d06eb3b5af998cf9402",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/fc0a2cf6-2c88-4fae-bf1b-0f96481606dftest2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=ea45266547947eccefc1189891db66f4f5ba1a5e706f061b8eec11e2fc0321cc",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/6b06d600-52a8-40f1-a328-4f6cb3df615dtest3.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=011c1768a8a38df485be5af76ea59f5f672202040392fde31df27fb7fbefa024",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/3d6e58d2-ff68-40e0-81f0-c5df4c2aeb37%ED%95%98%EC%9D%B4.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2bc9a4bd7188ac34ab1a6960b26763f5398c88533f45d8666607c97152c52b9a",
            "https://cotchan-test-bucket.s3.ap-northeast-2.amazonaws.com/chat-image/21debba4-d5a5-4f4a-a9a9-4c17bbab4ce5%EB%B0%94%EC%9D%B4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220627T091750Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=AKIA4EAIYFA4UNFHSYQQ%2F20220627%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=e81f87f87383f29af6f51d69ffd951d93c76d9ee12e429a1871b71c65f21ad01"
        ],
        "created_at": "2022-06-27T17:47:11.641"
    },
    {
        "sender_id": 6,
        "message_type": 1,
        "message": "ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ์ž…๋‹ˆ๋‹ค",
        "img_urls": null,
        "created_at": "2022-06-27T17:43:40.243"
    }
]

์ฝ์€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜ ๊ฐฑ์‹ 

  • ์‚ฌ์šฉ์ž๋Š” ์ฑ„ํŒ…๋ฐฉ ๋‚ด์—์„œ ์ž์‹ ์ด ์ฝ์€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ex. ์ฑ„ํŒ…๋ฐฉ ํ™”๋ฉด์„ ๋„๋Š” ๊ฒฝ์šฐ ์ž์‹ ์ด ์ฝ์€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜ ๊ฐฑ์‹ 

URL

  • PUT /chat/messages/read-size

Request

param type required description
room_id body true ์ฑ„ํŒ…๋ฃธID

Request ์˜ˆ์‹œ

{
    "room_id": "62a980eb794e3f5281741e76"
}

Response

  • ์„ฑ๊ณต(200)
{
}
  • ์‹คํŒจ(403)
    • ์ž์‹ ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ฑ„ํŒ…๋ฐฉ์— ๋Œ€ํ•ด API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
{
    "message": "Authority error (cause: ์ž์‹ ์ด ์ฐธ์—ฌ์ค‘์ธ ์ฑ„ํŒ…๋ฐฉ์ด ์•„๋‹™๋‹ˆ๋‹ค.)",
    "status": 403,
    "invalid_fields": null
}
Clone this wiki locally