Bazaarvoice Reviews API

Search for reviews

OpenAPI Specification

bazaarvoice-reviews-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Bazaarvoice Content Search Answers Reviews API
  description: Bazaarvoice Developer Space V2.0 Content Search API. Provides programmatic search and retrieval of user-generated content (UGC) - Reviews, Questions, Answers, Contributor profiles - plus product catalog lookahead search and structured data (JSON-LD/Microdata) for products. Assembled by API Evangelist from the per-operation OpenAPI definitions published on developers.bazaarvoice.com reference pages.
  version: '2.0'
  contact:
    name: Bazaarvoice Developer Support
    url: https://developers.bazaarvoice.com/support
servers:
- url: https://content-search.eu-west-1a.bosun.qa.bazaarvoice.com/
  description: QA | Content Search
- url: https://seo-stg.bazaarvoice.com/structured-data/v1
  description: Staging Server
- url: https://seo.bazaarvoice.com/structured-data/v1
  description: Production Server
tags:
- name: Reviews
  description: Search for reviews
paths:
  /reviews/{legacyInternalId}:
    get:
      tags:
      - Reviews
      summary: Get review
      operationId: getReviewById
      parameters:
      - name: clientId
        in: header
        description: Client ID
        required: true
        schema:
          type: string
      - name: X-Correlation-ID
        in: header
        description: Correlation ID
        required: false
        schema:
          type: string
      - name: legacyInternalId
        in: path
        description: Review's legacy internal id
        required: true
        schema:
          type: string
      - name: reviewClientId
        in: query
        description: client that owns the review, when not the client specified by the clientId header
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Review'
        '400':
          description: Missing clientId header
        '404':
          description: Review not found
        '500':
          description: Unexpected internal error
  /{clientId}/reviews/{legacyInternalId}:
    get:
      tags:
      - Reviews
      summary: Get review
      operationId: getReviewByIdAndClientId
      parameters:
      - name: clientId
        in: path
        description: Client ID
        required: true
        schema:
          type: string
      - name: X-Correlation-ID
        in: header
        description: Correlation ID
        required: false
        schema:
          type: string
      - name: legacyInternalId
        in: path
        description: Review's legacy internal id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Review'
        '404':
          description: Review not found
        '500':
          description: Unexpected internal error
  /reviews:
    post:
      tags:
      - Reviews
      summary: searchReviews
      operationId: searchReviewsUsingPOST
      parameters:
      - name: clientId
        in: header
        description: Client ID
        required: true
        schema:
          type: string
      - name: X-Correlation-ID
        in: header
        description: Correlation ID
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReviewQuery'
        description: Page, Filter & Sort
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ReviewQueryResponse'
        '400':
          description: Invalid request body, or missing clientId header
        '500':
          description: Unexpected internal error
  /{clientId}/reviews:
    post:
      tags:
      - Reviews
      summary: searchReviews
      operationId: searchReviewsUsingPOSTAndClientId
      parameters:
      - name: clientId
        in: path
        description: Client ID
        required: true
        schema:
          type: string
      - name: X-Correlation-ID
        in: header
        description: Correlation ID
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReviewQuery'
        description: Page, Filter & Sort
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ReviewQueryResponse'
        '400':
          description: Invalid request body
        '500':
          description: Unexpected internal error
components:
  schemas:
    ReviewQuery:
      type: object
      properties:
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/ReviewSort'
        fields:
          type: array
          items:
            type: string
        filters:
          $ref: '#/components/schemas/ReviewFilters'
    CommentStats:
      type: object
      properties:
        positiveFeedbackCount:
          type: integer
          format: int32
        negativeFeedbackCount:
          type: integer
          format: int32
    TimeRange:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
    ReviewSort:
      type: object
      properties:
        field:
          type: string
        direction:
          type: string
      example:
      - field: moderationTime
        direction: desc
      - field: submissionTime
        direction: desc
      - field: rating
        direction: desc
      - field: legacyInternalId
        direction: desc
    Stats:
      type: object
      properties:
        characterCount:
          type: integer
          format: int32
        commentsApprovedCount:
          type: integer
          format: int32
        commentsPendingCount:
          type: integer
          format: int32
        commentsRejectedCount:
          type: integer
          format: int32
        commentsExpiredCount:
          type: integer
          format: int32
        hasApprovedComment:
          type: boolean
        hasPendingComment:
          type: boolean
        hasRejectedComment:
          type: boolean
        hasExpiredComment:
          type: boolean
        inappropriateFeedbackCount:
          type: integer
          format: int32
        negativeFeedbackCount:
          type: integer
          format: int32
        photoCount:
          type: integer
          format: int32
        positiveFeedbackCount:
          type: integer
          format: int32
        productReferenceCount:
          type: integer
          format: int32
        videoCount:
          type: integer
          format: int32
        responseCount:
          type: integer
          format: int32
        hasResponses:
          type: boolean
    Product:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        active:
          type: boolean
        description:
          type: string
        imageUrl:
          type: string
        brandId:
          type: string
        brandName:
          type: string
        categoryId:
          type: string
        categoryName:
          type: string
        productPageUrl:
          type: string
    ReviewCdvs:
      type: object
      properties:
        order:
          type: array
          items:
            type: string
        attributes:
          type: object
          additionalProperties:
            type: string
    ReviewFilters:
      type: object
      properties:
        brandId:
          type: array
          items:
            type: string
        categoryId:
          type: array
          items:
            type: string
        contentCodes:
          type: array
          items:
            type: string
        displayLocale:
          type: array
          items:
            type: string
        legacyInternalId:
          type: array
          items:
            type: string
        moderationStatusGroup:
          type: array
          items:
            type: string
        moderationStatus:
          type: array
          items:
            type: string
        productId:
          type: array
          items:
            type: string
        activeProduct:
          type: boolean
        productName:
          type: array
          items:
            type: string
        rating:
          type: array
          items:
            type: integer
            format: int32
        ratingsOnly:
          type: boolean
        productAttributes:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        globalSearch:
          type: string
        submissionTime:
          $ref: '#/components/schemas/TimeRange'
        moderationTime:
          $ref: '#/components/schemas/TimeRange'
        withClientResponse:
          type: boolean
        hasPhoto:
          type: boolean
        hasVideo:
          type: boolean
        includeNetwork:
          type: boolean
        featured:
          type: boolean
        campaignId:
          type: array
          items:
            type: string
        contributorExternalId:
          type: array
          items:
            type: string
    Review:
      type: object
      properties:
        id:
          type: string
        legacyInternalId:
          type: string
        title:
          type: string
        text:
          type: string
        rating:
          type: integer
          format: int32
        ratingsOnly:
          type: boolean
        submissionTime:
          type: string
        submissionId:
          type: string
        moderationTime:
          type: string
        product:
          $ref: '#/components/schemas/Product'
        videos:
          type: array
          items:
            $ref: '#/components/schemas/Video'
        photos:
          type: array
          items:
            $ref: '#/components/schemas/Photo'
        stats:
          $ref: '#/components/schemas/Stats'
        responses:
          type: array
          items:
            $ref: '#/components/schemas/Response'
        recommend:
          type: boolean
        contributor:
          $ref: '#/components/schemas/ReviewContributor'
        contributorLocation:
          type: string
        contributorNickname:
          type: string
        displayLocale:
          type: string
        displayCode:
          type: string
        client:
          type: string
        cdvs:
          $ref: '#/components/schemas/ReviewCdvs'
        secondaryRatings:
          $ref: '#/components/schemas/SecondaryRatings'
        moderationStatus:
          type: string
        contentCodes:
          type: array
          items:
            type: string
        campaignId:
          type: string
        moderationContentID:
          type: string
        moderationVersionID:
          type: string
        featured:
          type: boolean
        customProperties:
          type: object
          additionalProperties:
            type: string
        moderationStatusGroup:
          type: string
        tagOrder:
          type: array
          items:
            type: string
        tagProperties:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        comments:
          type: array
          items:
            $ref: '#/components/schemas/Comment'
    Response:
      type: object
      properties:
        id:
          type: string
        legacyInternalId:
          type: string
        text:
          type: string
        department:
          type: string
        source:
          type: string
        name:
          type: string
        submissionTime:
          type: string
        type:
          type: string
        responderClient:
          type: string
    Photo:
      type: object
      properties:
        caption:
          type: string
        mediumImageId:
          type: string
        thumbnailImageId:
          type: string
        url:
          type: string
        thumbnailUrl:
          type: string
    SecondaryRatings:
      type: object
      properties:
        order:
          type: array
          items:
            type: string
        attributes:
          type: object
          additionalProperties:
            type: string
    ReviewContributor:
      type: object
      properties:
        clearTextExternalId:
          type: string
        displayName:
          type: string
        merit:
          type: string
        rank:
          type: string
        affiliation:
          type: string
        location:
          type: string
        externalId:
          type: string
    Video:
      type: object
      properties:
        legacyInternalId:
          type: string
        rawUrlInput:
          type: string
        caption:
          type: string
        videoHost:
          type: string
        videoId:
          type: string
        uploadStatus:
          type: string
        thumbnailUrl:
          type: string
    ReviewQueryResponse:
      type: object
      properties:
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
        totalResults:
          type: integer
          format: int32
        results:
          type: array
          items:
            $ref: '#/components/schemas/Review'
    Comment:
      type: object
      properties:
        legacyInternalId:
          type: string
        text:
          type: string
        submissionTime:
          type: string
        moderationTime:
          type: string
        contributor:
          $ref: '#/components/schemas/ReviewContributor'
        moderationStatus:
          type: string
        stats:
          $ref: '#/components/schemas/CommentStats'
        contentCodes:
          type: array
          items:
            type: string
        moderationContentID:
          type: string
        moderationVersionID:
          type: string
        moderationStatusGroup:
          type: string
  securitySchemes:
    Bv-Passkey:
      type: apiKey
      in: header
      name: Bv-Passkey
      description: GEO API key for authentication