openapi: 3.0.0 info: title: Quizzes description: '' version: '1.0' contact: {} servers: - url: https://quizzes.cnstrc.com tags: [] paths: /v1/quizzes/{id}/next: get: operationId: v1-quizzes-get-next-question summary: Next question description: Retrieve the next question given a list of answers. If no answers are specified, it will return the first question. Use a `version_id` to retrieve the next question for a specific version of the quiz. security: [] parameters: - name: id required: true in: path description: The id of the quiz schema: type: string - name: key required: true in: query description: Index key for the customer's product catalog schema: type: string - name: section required: false in: query description: The section of the index to use. Defaults to `products`. schema: type: string - name: quiz_session_id required: false in: query description: Specific quiz session id for the quiz. Session id will be automatically assigned if it is not specified. schema: type: string - name: quiz_version_id required: false in: query description: Specific version id for the quiz. schema: type: string - name: version_id required: false in: query description: Specific version id for the quiz. Deprecated, please use `quiz_version_id` instead. schema: type: string - name: a required: false in: query description: A list of answers in the format ?a=,&a= where multiple options for a single answer are supplied in the same answer parameter (separated by ",") and options for the next question are supplied in the next answer parameter. schema: type: array items: type: string responses: '200': description: OK - Everything worked as expected. content: application/json: schema: $ref: '#/components/schemas/NextQuestion' '400': description: Bad Request - The request was unacceptable, often due to missing a required parameter. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '404': description: Not Found - The resource you are looking for cannot be found. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '500': description: Internal Server Error - Something went wrong on Constructor's end (these are rare). content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string tags: - Results /v1/quizzes/{id}/results: get: operationId: v1-quizzes-get-quiz-results summary: Get results description: Retrieve AI optimized quiz results for products (or optionally other sections). security: [] parameters: - name: id required: true in: path description: The id of the quiz schema: type: string - name: key required: true in: query description: Index key for the customer's product catalog schema: type: string - name: section required: false in: query description: The section of the index to use. Defaults to `products`. schema: type: string - name: quiz_session_id required: false in: query description: Specific quiz session id for the quiz. Session id will be automatically assigned if it is not specified. schema: type: string - name: quiz_version_id required: false in: query description: Specific version id for the quiz. schema: type: string - name: version_id required: false in: query description: Specific version id for the quiz. Deprecated, please use `quiz_version_id` instead. schema: type: string - name: filters[] required: false in: query description: 'Any number of criteria by which you''d like to narrow the result set. This might be by color, size, or category (group) an item belongs to. Facets can be used as filters. Filters with the same key are ''OR''ed together, while filters with different keys are ''AND''ed together by default. If value has the form ''-'', it''s interpreted as a range (e.g: ''filters[Price]=100-200'' will match all items with ''Price'' from ''100'' to ''200'').' schema: type: string - name: num_results_per_page required: false in: query description: Specifies the number of results returned in each request. Defaults to 20 if not specified. schema: type: string - name: page required: false in: query description: Specifies the page number of the result to be fetched. Defaults to 1 if not specified. schema: type: string - name: a required: true in: query description: A list of answers in the format ?a=,&a= where multiple options for a single answer are supplied in the same answer parameter (separated by ",") and options for the next question are supplied in the next answer parameter. schema: type: array items: type: string responses: '200': description: OK - Everything worked as expected. content: application/json: schema: $ref: '#/components/schemas/Results' '400': description: Bad Request - The request was unacceptable, often due to missing a required parameter. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '404': description: Not Found - The resource you are looking for cannot be found. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '500': description: Internal Server Error - Something went wrong on Constructor's end (these are rare). content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string tags: - Results /v1/quizzes/{id}/results_config: get: operationId: v1-quizzes-get-quiz-results-config summary: Get results page config description: Retrieve results page configuration security: [] parameters: - name: id required: true in: path description: The id of the quiz schema: type: string - name: key required: true in: query description: Index key for the customer's product catalog schema: type: string - name: section required: false in: query description: The section of the index to use. Defaults to `products`. schema: type: string - name: quiz_version_id required: false in: query description: Specific version id for the quiz. schema: type: string responses: '200': description: OK - Everything worked as expected. content: application/json: schema: $ref: '#/components/schemas/ResultsConfigResponse' '400': description: Bad Request - The request was unacceptable, often due to missing a required parameter. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '404': description: Not Found - The resource you are looking for cannot be found. content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string '500': description: Internal Server Error - Something went wrong on Constructor's end (these are rare). content: application/json: schema: type: object properties: error: description: Error code for easier categorization. type: string message: description: Human-readable error message describing the issue. type: string tags: - Results components: schemas: Images: type: object properties: primary_url: type: string nullable: true example: PRIMARY_ASSET_URL primary_alt: type: string description: Alt string used for the primary url asset. nullable: true example: PRIMARY_ASSET_ALT secondary_url: type: string nullable: true example: SECONDARY_ASSET_URL secondary_alt: type: string description: Alt string used for the secondary url asset. nullable: true example: SECONDARY_ASSET_ALT Option: type: object properties: id: type: number value: type: string example: OPTION_VALUE attribute: type: object description: Attribute filter expression associated with this option. nullable: true example: name: TEST_FILTER_NAME value: TEST_FILTER_VALUE images: type: object description: Image fields required for rendering the images at the option level on the front-end. nullable: true allOf: - $ref: '#/components/schemas/Images' key: type: string description: Unique immutable key to identify the option MultipleSelectQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: type: object nullable: true allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true option: type: array items: $ref: '#/components/schemas/Option' type: type: string enum: - multiple SingleSelectQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: type: object nullable: true allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true option: type: array items: $ref: '#/components/schemas/Option' type: type: string enum: - single OpenTextQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: type: object nullable: true allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true type: type: string enum: - open input_placeholder: type: string nullable: true CoverPageQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: type: object nullable: true allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true type: type: string enum: - cover MultipleFilterSelectQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: type: object nullable: true allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true option: type: array items: $ref: '#/components/schemas/Option' filter_name: type: array items: type: string type: type: string enum: - multiple_filter_values SingleFilterSelectQuestion: type: object properties: id: type: number title: type: string example: TITLE description: type: string example: DESCRIPTION nullable: true images: nullable: true type: object allOf: - $ref: '#/components/schemas/Images' cta_text: type: string nullable: true key: type: string is_skippable: type: boolean priority: type: number nullable: true bucket_id: type: string nullable: true option: type: array items: $ref: '#/components/schemas/Option' filter_name: type: array items: type: string type: type: string enum: - single_filter_value NextQuestion: type: object properties: next_question: type: object description: Next question oneOf: - $ref: '#/components/schemas/MultipleSelectQuestion' - $ref: '#/components/schemas/SingleSelectQuestion' - $ref: '#/components/schemas/OpenTextQuestion' - $ref: '#/components/schemas/CoverPageQuestion' - $ref: '#/components/schemas/MultipleFilterSelectQuestion' - $ref: '#/components/schemas/SingleFilterSelectQuestion' nullable: true total_questions: type: number description: Gives the total number of questions in the quiz version_id: type: string description: Version id of this quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 quiz_version_id: type: string description: Version id of this quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 quiz_id: type: string description: id of quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 quiz_session_id: type: string description: Session id of this quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 Results: type: object properties: filter_expression: type: object description: Resulting filter expression generated from the various attributes selected after answering a quiz. nullable: true example: or: - and: - name: TEST_FILTER_NAME value: TEST_FILTER_VALUE - not: name: TEST_FILTER_NAME_2 value: TEST_FILTER_VALUE_2 - name: TEST_FILTER_NAME_3 value: TEST_FILTER_VALUE_3 results: description: Final results nullable: true type: array items: type: object ResultsConfigResponse: type: object properties: results_config: type: object description: Config for the results page example: desktop: title: text: TITLE is_active: true description: text: DESCRIPTION is_active: false response_summary: text: SUMMARY is_active: true items_separator: ',' last_separator: AND quiz_version_id: type: string description: Version id of this quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 quiz_id: type: string description: id of quiz example: 11db5ac7-67e1-4000-9000-414d8425cab3 metadata: type: object description: Metadata for the quiz example: null x-readme: explorer-enabled: false