openapi: 3.2.0 info: title: SmartCustomer (Sitejabber) Business Review Comments API version: v1 summary: Business review, product review, review request, messaging and privacy API for SmartCustomer (formerly Sitejabber). description: 'Transcribed by API Evangelist from SmartCustomer''s own published API reference at https://api.sitejabber.com/ (Slate source: https://github.com/smartcustomer-reviews/business-api-docs). SmartCustomer does not publish an OpenAPI definition; every path, parameter, default, enum and schema field below is copied from the provider''s published reference tables. Where the reference names an object but publishes no field table (ProductCategory, ProductAttribute) the schema is left open rather than invented. Response wrappers are modelled from the published example payloads and the documented status/success envelope. Authentication is two-part: a client_token (API key) passed as a query parameter on every call, plus a user_token request header obtained from POST /login.' contact: name: SmartCustomer API Support email: support@smartcustomer.com url: https://api.sitejabber.com/ termsOfService: https://www.smartcustomer.com/terms x-transcribed-by: API Evangelist enrichment pipeline x-transcription-source: https://api.sitejabber.com/ servers: - url: https://api.smartcustomer.com/v1 description: Production. The same reference is also served from https://api.sitejabber.com/ under the pre-rebrand Sitejabber name. security: - client_token: [] user_token: [] tags: - name: Review Comments paths: /businesses/{business}/review/comments: get: operationId: getReviewComments summary: Get review comments tags: - Review Comments responses: '200': description: Successful response content: application/json: schema: allOf: - $ref: '#/components/schemas/ResponseEnvelope' - $ref: '#/components/schemas/CommentListWrapper' '429': $ref: '#/components/responses/TooManyRequests' parameters: - $ref: '#/components/parameters/business' - name: review_no in: query description: number of review to fetch comments from required: false schema: type: integer - name: start in: query description: starting offset required: false schema: type: integer default: 0 - name: count in: query description: number of comments to be included (max 100) required: false schema: type: integer default: 10 - name: date_from in: query description: start date in format (yyyy-mm-dd hh:mm:ss) [hh:mm:ss] is optional required: false schema: type: string - name: date_to in: query description: end date in format (yyyy-mm-dd hh:mm:ss) [hh:mm:ss] is optional required: false schema: type: string - name: updated in: query description: returns only updated comments (0 or 1) required: false schema: type: string default: 'false' - name: deleted in: query description: returns only deleted comments (0 or 1) required: false schema: type: string default: 'false' - name: datasources in: query description: include comments from specified comma separated data sources (check the data sources section) required: false schema: type: string default: 'false' /businesses/{business}/review/comments/add: post: operationId: addReviewComment summary: Add comment to review tags: - Review Comments responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ResponseEnvelope' '429': $ref: '#/components/responses/TooManyRequests' parameters: - $ref: '#/components/parameters/business' requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: review_no: type: integer description: number of review to which comment will be added text: type: string description: text of the comment required: - review_no - text components: schemas: Comment: type: object title: Comment Object properties: reviewNo: type: integer description: Review number, identifier content: type: string description: Content of the comment num_votes: type: integer description: Number of votes received activated: type: boolean description: 0 - not activated, 1 - activated created: type: string description: DateTime the comment was created createdRFC: type: string description: Same as created but in format RFC 3339 modified: type: string description: DateTime the comment was modified modifiedRFC: type: string description: Same as modified but in format RFC 3339 published: type: string description: DateTime the comment was published publishedRFC: type: string description: Same as published but in format RFC 3339 datasource: type: string description: Indicates the 3rd party data source (check the data sources section) author: allOf: - $ref: '#/components/schemas/User' description: Author of the comment User: type: object title: User Object required: - username - firstName - lastName - thumbnail - profilePage - numReviews - numHelpfulVotes properties: username: type: string description: Username of the user firstName: type: string description: First name of the user lastName: type: string description: First letter of last name of the user thumbnail: type: string description: Relative path of the user's thumbnail image profilePage: type: string description: Url of the user's profile page numReviews: type: integer description: Number of reviews written by the user numHelpfulVotes: type: integer description: Number of helpful votes received email: type: string description: Only available for solicited reviews and when the email of the user was provided by the business CommentListWrapper: type: object properties: comments: type: array items: $ref: '#/components/schemas/Comment' ResponseEnvelope: type: object description: Every response carries a success flag and a status key. When success is false and status is ERROR, errorCode and errorReason are present. properties: status: type: string description: OK if everything went good, ERROR if there was an error processing the request success: type: boolean description: true or false errorCode: type: integer description: Error code, only present when status is ERROR errorReason: type: string description: Error message, only present when status is ERROR parameters: business: name: business in: path required: true description: The business's display address (domain without scheme), e.g. yourdomain.com schema: type: string example: yourdomain.com responses: TooManyRequests: description: Too many requests. 1000 calls per hour per unique user token; no more than 10 calls in a 10 second window. content: application/json: schema: $ref: '#/components/schemas/ResponseEnvelope' securitySchemes: client_token: type: apiKey in: query name: client_token description: API key issued to the business, passed as a query parameter on every request. user_token: type: apiKey in: header name: user_token description: User session token returned by POST /login. Typically expires after 6 months; calling login invalidates any previous token. externalDocs: description: SmartCustomer API reference url: https://api.sitejabber.com/