sayren Docs
상품

상품 리뷰 목록 조회

판매 중 상품의 공개 리뷰다(블라인드 제외, 작성자 마스킹). `rating`·`hasImage`·`variantId`로 거르고 함께 주면 모두 만족하는 리뷰만 온다. `variantId`는 상품 상세 `variants[].variantId`이고 리뷰 항목의 `variantId`와 같은 값이다 — 「레드 / M」 리뷰만 보이는 옵션별 필터에 쓴다. `summary`(평균 평점·전체 수·평점 분포)는 필터와 무관하게 상품 전체 기준이다.

GET
/storefront/v1/products/{productId}/reviews

판매 중 상품의 공개 리뷰다(블라인드 제외, 작성자 마스킹). rating·hasImage·variantId로 거르고 함께 주면 모두 만족하는 리뷰만 온다. variantId는 상품 상세 variants[].variantId이고 리뷰 항목의 variantId와 같은 값이다 — 「레드 / M」 리뷰만 보이는 옵션별 필터에 쓴다. summary(평균 평점·전체 수·평점 분포)는 필터와 무관하게 상품 전체 기준이다.

Authorization

headerAuthorizationBearer <token>

회원 accessToken

Path Parameters

productId*string

Query Parameters

rating?string

이 평점(1~5)의 리뷰만

hasImage?string

true면 사진이 있는 리뷰만

variantId?string

이 옵션(조합)으로 산 리뷰만(이슈 #91). 상품 상세 variants[].variantId이고 리뷰 응답의 variantId와 같은 값이다. 다른 필터와 함께 쓰면 모두 만족하는 리뷰만 온다

sort?string

정렬. latest(기본, 최신 순)·ratingDesc(평점 높은 순)·ratingAsc(평점 낮은 순)·helpful(랭킹순 — 사진 있는 리뷰 먼저, 그다음 평점 높은 순, 같으면 최신 순. 도움돼요 수는 반영하지 않는다)

page?string

페이지 번호 (1부터)

size?string

페이지 크기

Response Body

성공

application/json
  1. response
meta*
data*
error*|null
curl -X GET 'https://api.sayren.io/storefront/v1/products/string/reviews'
{  "meta": {    "status": 200,    "code": "OK",    "message": "OK",    "isSuccess": true  },  "data": {    "page": 0,    "size": 0,    "totalElements": 0,    "totalPages": 0,    "contents": [      {        "reviewId": "string",        "rating": 1,        "content": "string",        "images": [          "http://example.com"        ],        "optionName": "string",        "variantId": "string",        "writerMaskedName": "string",        "sellerReply": {          "content": "string",          "repliedAt": "string"        },        "createdAt": "string"      }    ],    "summary": {      "averageRating": 0,      "totalCount": 0,      "distribution": {        "property1": 0,        "property2": 0      }    }  },  "error": null}