openapi: 3.2.0 info: title: SmartCustomer (Sitejabber) Business Business Questions 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: Business Questions paths: /businesses/{business}/questions: get: operationId: getBusinessQuestions summary: Get questions tags: - Business Questions responses: '200': description: Successful response content: application/json: schema: allOf: - $ref: '#/components/schemas/ResponseEnvelope' - $ref: '#/components/schemas/QuestionListWrapper' '429': $ref: '#/components/responses/TooManyRequests' parameters: - $ref: '#/components/parameters/business' - name: start in: query description: starting offset required: false schema: type: integer default: 0 - name: count in: query description: number of questions to be included (max 100) required: false schema: type: integer default: 10 - name: order in: query description: ASC/DESC order of the questions, ascending or descending on the creation date required: false schema: type: string default: DESC components: schemas: Question: type: object title: Question Object properties: id: type: integer description: Internal question ID business: type: string description: Url belonging to the question content: type: string description: Content of the question created: type: string description: Creation date of the question createdRFC: type: string description: Same as created but in format RFC 3339 num_answers: type: integer description: Number of answers slug: type: string description: Slug to access the question sum_votes: type: integer description: Number of votes answers: type: array description: Array of answer objects items: $ref: '#/components/schemas/Answer' author: allOf: - $ref: '#/components/schemas/User' description: Author of the question 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 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 QuestionListWrapper: type: object properties: questions: type: array items: $ref: '#/components/schemas/Question' Answer: type: object title: Answer Object properties: id: type: integer description: Internal answer ID content: type: string description: Content of the answer created: type: string description: Creation date of the answer createdRFC: type: string description: Same as created but in format RFC 3339 num_votes: type: integer description: Number of votes author: allOf: - $ref: '#/components/schemas/User' description: Author of the answer 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/