Bazaarvoice Questions API

The Questions API from Bazaarvoice — 4 operation(s) for questions.

OpenAPI Specification

bazaarvoice-questions-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Bazaarvoice Content Search Answers Questions 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: Questions
paths:
  /questions/{legacyInternalId}:
    get:
      tags:
      - Questions
      summary: Get question
      operationId: getQuestionById
      parameters:
      - name: clientId
        in: header
        description: Question Client ID
        required: true
        schema:
          type: string
      - name: from
        in: header
        description: Offset for answers
        required: false
        schema:
          type: integer
      - name: size
        in: header
        description: Number of answers to return
        required: false
        schema:
          type: integer
      - name: legacyInternalId
        in: path
        description: Question's legacy internal id
        required: true
        schema:
          type: string
      - name: questionClientId
        in: query
        description: client that owns the question, when not the client specified by the clientId header
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SingleQuestionDocument'
        '400':
          description: Missing clientId header
        '404':
          description: Question not found
        '500':
          description: Unexpected internal error
  /{clientId}/questions/{legacyInternalId}:
    get:
      tags:
      - Questions
      summary: Get question
      operationId: getQuestionByIdAndClientId
      parameters:
      - name: clientId
        in: path
        description: Client ID
        required: true
        schema:
          type: string
      - name: legacyInternalId
        in: path
        description: Question's legacy internal id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SingleQuestionDocument'
        '404':
          description: Question not found
        '500':
          description: Unexpected internal error
  /questions:
    post:
      tags:
      - Questions
      summary: searchQuestions
      operationId: searchQuestionsUsingPOST
      parameters:
      - name: clientId
        in: header
        description: Client ID
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuestionQuery'
        description: Page, Filter & Sort
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QuestionQueryResponse'
        '400':
          description: Invalid request body, or missing clientId header
        '500':
          description: Unexpected internal error
  /{clientId}/questions:
    post:
      tags:
      - Questions
      summary: searchQuestions
      operationId: searchQuestionsUsingPOSTAndClientId
      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/QuestionQuery'
        description: Page, Filter & Sort
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/QuestionQueryResponse'
        '400':
          description: Invalid request body
        '500':
          description: Unexpected internal error
components:
  schemas:
    QuestionQuery:
      type: object
      properties:
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/QuestionSort'
        fields:
          type: array
          items:
            type: string
        filters:
          $ref: '#/components/schemas/QuestionFilters'
    PrrUpdate:
      type: object
      properties:
        hash:
          type: string
        timestamp:
          type: string
    Answer:
      type: object
      properties:
        id:
          type: string
        version:
          type: integer
          format: int32
        firstUpdateAt:
          type: string
        lastUpdateAt:
          type: string
        lastMutateAt:
          type: string
        client:
          type: string
        legacyInternalId:
          type: integer
          format: int32
        moderationContentID:
          type: string
        moderationVersionID:
          type: string
        featured:
          type: boolean
        contributorNickname:
          type: string
        sendEmailAlertWhenPublished:
          type: boolean
        displayAsAnonymous:
          type: boolean
        text:
          type: string
        campaignId:
          type: string
        contentOriginId:
          type: string
        submissionTime:
          type: string
        firstPublishTime:
          type: string
        lastPublishTime:
          type: string
        displayLocale:
          type: string
        status:
          type: string
        contentCodes:
          type: array
          items:
            type: string
        submissionId:
          type: string
        externalAnswerId:
          type: string
        externalProductId:
          type: string
        cdvOrder:
          type: array
          items:
            type: string
        tagOrder:
          type: array
          items:
            type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/Photo'
        videos:
          type: array
          items:
            $ref: '#/components/schemas/Video'
        cdvProperties:
          type: object
          additionalProperties:
            type: string
        productReferences:
          type: array
          items:
            $ref: '#/components/schemas/Coordinate'
        tagProperties:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        customProperties:
          type: object
          additionalProperties:
            type: string
        contributor:
          $ref: '#/components/schemas/Coordinate'
        question:
          $ref: '#/components/schemas/Coordinate'
        submissionInstant:
          type: integer
          format: int32
        statusGroup:
          type: string
    TimeRange:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
    QuestionContributor:
      type: object
      properties:
        id:
          type: string
        table:
          type: string
        version:
          type: integer
          format: int32
        sourceVersion:
          type: integer
          format: int32
        deleted:
          type: boolean
        signature:
          type: string
        firstUpdateAt:
          type: string
        lastUpdateAt:
          type: string
        lastMutateAt:
          type: string
        type:
          type: string
        legacyInternalId:
          type: integer
          format: int32
        clearTextExternalId:
          type: string
        anonymous:
          type: boolean
        rank:
          type: string
        merit:
          type: string
        affiliation:
          type: string
        contributorBadgeEnabled:
          type: boolean
        contributorLocation:
          type: string
        campaignId:
          type: string
        contentOriginId:
          type: string
        submissionTime:
          type: string
        firstPublishTime:
          type: string
        lastPublishTime:
          type: string
        displayCode:
          type: string
        displayLocale:
          type: string
        status:
          type: string
        contentCodes:
          type: array
          items:
            type: string
        submissionId:
          type: string
        displayName:
          type: string
        sourceName:
          type: string
        agreedToTermsAndConditions:
          type: boolean
        cdvOrder:
          type: array
          items:
            type: string
        ratingOrder:
          type: array
          items:
            type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/Photo'
        avatarPhoto:
          $ref: '#/components/schemas/Photo'
        productReferences:
          type: array
          items:
            $ref: '#/components/schemas/Coordinate'
        videos:
          type: array
          items:
            $ref: '#/components/schemas/Video'
        displayLastUpdate:
          $ref: '#/components/schemas/PrrUpdate'
        customProperties:
          type: object
          additionalProperties:
            type: string
        cdvProperties:
          type: object
          additionalProperties:
            type: string
        ratingProperties:
          type: object
          additionalProperties:
            type: string
        externalId:
          type: string
    AllAnswers:
      type: object
      properties:
        answer:
          $ref: '#/components/schemas/Answer'
        contributor:
          $ref: '#/components/schemas/QuestionContributor'
        statistics:
          $ref: '#/components/schemas/Statistics'
    QuestionFilters:
      type: object
      properties:
        questionId:
          type: array
          items:
            type: string
        submissionTime:
          $ref: '#/components/schemas/TimeRange'
        moderationTime:
          $ref: '#/components/schemas/TimeRange'
        brandId:
          type: array
          items:
            type: string
        categoryId:
          type: array
          items:
            type: string
        productId:
          type: array
          items:
            type: string
        activeProduct:
          type: boolean
        displayLocale:
          type: array
          items:
            type: string
        contentCodes:
          type: array
          items:
            type: string
        questionModerationStatusGroup:
          type: array
          items:
            type: string
        questionModerationStatus:
          type: array
          items:
            type: string
        answerModerationStatusGroup:
          type: array
          items:
            type: string
        answerModerationStatus:
          type: array
          items:
            type: string
        globalSearch:
          type: string
        contributorExternalId:
          type: array
          items:
            type: string
        contributorDisplayName:
          type: array
          items:
            type: string
        contributorRank:
          type: array
          items:
            type: string
        answerLegacyInternalId:
          type: array
          items:
            type: string
        answerContentCodes:
          type: array
          items:
            type: string
        answerContributorExternalId:
          type: array
          items:
            type: string
        answerContributorNickname:
          type: array
          items:
            type: string
        answerCampaignSource:
          type: array
          items:
            type: string
        withApprovedAnswers:
          type: boolean
        withRejectedAnswers:
          type: boolean
        withPendingAnswers:
          type: boolean
        withExpiredAnswers:
          type: boolean
        questionHasPhotos:
          type: boolean
        questionHasVideos:
          type: boolean
        answerHasPhotos:
          type: boolean
        answerHasVideos:
          type: boolean
        withAnswers:
          type: boolean
    SingleQuestionDocument:
      type: object
      properties:
        question:
          $ref: '#/components/schemas/Question'
        contributor:
          $ref: '#/components/schemas/QuestionContributor'
        product:
          $ref: '#/components/schemas/Product'
        statistics:
          $ref: '#/components/schemas/Statistics'
        answers:
          type: array
          items:
            $ref: '#/components/schemas/AllAnswers'
        totalQueriedAnswers:
          type: integer
          format: int32
    QuestionSort:
      type: object
      properties:
        field:
          type: string
        direction:
          type: string
    Question:
      type: object
      properties:
        id:
          type: string
        version:
          type: integer
          format: int32
        firstUpdateAt:
          type: string
        lastUpdateAt:
          type: string
        lastMutateAt:
          type: string
        client:
          type: string
        legacyInternalId:
          type: integer
          format: int32
        moderationContentID:
          type: string
        moderationVersionID:
          type: string
        featured:
          type: boolean
        contributorNickname:
          type: string
        sendEmailAlertWhenPublished:
          type: boolean
        sendEmailAlertWhenAnswered:
          type: boolean
        contributorLocation:
          type: string
        displayAsAnonymous:
          type: boolean
        questionSummary:
          type: string
        questionDetails:
          type: string
        campaignId:
          type: string
        contentOriginId:
          type: string
        submissionTime:
          type: string
        firstPublishTime:
          type: string
        lastPublishTime:
          type: string
        displayLocale:
          type: string
        status:
          type: string
        contentCodes:
          type: array
          items:
            type: string
        submissionId:
          type: string
        externalQuestionId:
          type: string
        externalProductId:
          type: string
        photos:
          type: array
          items:
            $ref: '#/components/schemas/Photo'
        avatarPhoto:
          $ref: '#/components/schemas/Photo'
        videos:
          type: array
          items:
            $ref: '#/components/schemas/Video'
        cdvOrder:
          type: array
          items:
            type: string
        cdvProperties:
          type: object
          additionalProperties:
            type: string
        tagOrder:
          type: array
          items:
            type: string
        tagProperties:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        customProperties:
          type: object
          additionalProperties:
            type: string
        productReferences:
          type: array
          items:
            $ref: '#/components/schemas/Coordinate'
        bestAnswer:
          $ref: '#/components/schemas/Coordinate'
        displayLastUpdate:
          $ref: '#/components/schemas/PrrUpdate'
        contributor:
          $ref: '#/components/schemas/Coordinate'
        about:
          $ref: '#/components/schemas/Coordinate'
        statusGroup:
          type: string
    Coordinate:
      type: object
      properties:
        table:
          type: string
        id:
          type: string
    QuestionQueryResponse:
      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/Question'
    Statistics:
      type: object
      properties:
        positiveFeedbackCount:
          type: integer
          format: int32
        negativeFeedbackCount:
          type: integer
          format: int32
        helpfulnessScore:
          type: integer
          format: int32
        characterCount:
          type: integer
          format: int32
        productReferenceCount:
          type: integer
          format: int32
        inappropriateFeedbackCount:
          type: integer
          format: int32
        numPhotos:
          type: integer
          format: int32
        numVideos:
          type: integer
          format: int32
        hasPhotos:
          type: boolean
        hasVideos:
          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
    Photo:
      type: object
      properties:
        caption:
          type: string
        mediumImageId:
          type: string
        thumbnailImageId:
          type: string
        url:
          type: string
        thumbnailUrl:
          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
  securitySchemes:
    Bv-Passkey:
      type: apiKey
      in: header
      name: Bv-Passkey
      description: GEO API key for authentication