OpenAPI Specification
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