{
  "components": {
    "schemas": {
      "AccountOverview": {
        "additionalProperties": false,
        "properties": {
          "data_start": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data Start"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/OverviewPoint"
            },
            "title": "Series",
            "type": "array"
          },
          "totals": {
            "$ref": "#/components/schemas/OverviewTotals"
          }
        },
        "required": [
          "range",
          "filters",
          "freshness",
          "series",
          "totals",
          "data_start"
        ],
        "title": "AccountOverview",
        "type": "object"
      },
      "AnalyticsAnswers": {
        "additionalProperties": false,
        "properties": {
          "answered": {
            "title": "Answered",
            "type": "integer"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/AnswerBucketRow"
            },
            "title": "Buckets",
            "type": "array"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/AnswerOptionRow"
            },
            "title": "Options",
            "type": "array"
          },
          "question": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AnswersQuestion"
              },
              {
                "type": "null"
              }
            ]
          },
          "questions": {
            "items": {
              "$ref": "#/components/schemas/AnswersQuestion"
            },
            "title": "Questions",
            "type": "array"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "summary": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AnswerNumericSummary"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "quiz_id",
          "range",
          "filters",
          "freshness",
          "currency",
          "questions",
          "question",
          "answered",
          "options",
          "buckets",
          "summary"
        ],
        "title": "AnalyticsAnswers",
        "type": "object"
      },
      "AnalyticsBreakdown": {
        "additionalProperties": false,
        "properties": {
          "by": {
            "enum": [
              "channel",
              "device",
              "new_returning",
              "country"
            ],
            "title": "By",
            "type": "string"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Id"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/BreakdownRow"
            },
            "title": "Rows",
            "type": "array"
          }
        },
        "required": [
          "quiz_id",
          "by",
          "range",
          "filters",
          "freshness",
          "rows"
        ],
        "title": "AnalyticsBreakdown",
        "type": "object"
      },
      "AnalyticsFilters": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channel"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "device": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device"
          },
          "new_returning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "New Returning"
          }
        },
        "required": [
          "channel",
          "device",
          "new_returning",
          "country"
        ],
        "title": "AnalyticsFilters",
        "type": "object"
      },
      "AnalyticsFunnel": {
        "additionalProperties": false,
        "properties": {
          "completions": {
            "description": "Cohort sessions that finished the quiz, even past the range end.",
            "title": "Completions",
            "type": "integer"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "in_progress": {
            "description": "Cohort sessions that have neither completed nor ended yet.",
            "title": "In Progress",
            "type": "integer"
          },
          "not_started": {
            "description": "views minus starts: sessions that viewed the quiz but had not answered by the end of the range.",
            "title": "Not Started",
            "type": "integer"
          },
          "pages": {
            "items": {
              "$ref": "#/components/schemas/FunnelPage"
            },
            "title": "Pages",
            "type": "array"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "starts": {
            "description": "The cohort: sessions that answered their first question inside the range, each followed to its end. starts == completions + sum(sessions_dropped) + in_progress.",
            "title": "Starts",
            "type": "integer"
          },
          "views": {
            "description": "Sessions that opened the quiz inside the range, plus the cohort itself.",
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "quiz_id",
          "range",
          "filters",
          "freshness",
          "views",
          "not_started",
          "starts",
          "completions",
          "in_progress",
          "pages"
        ],
        "title": "AnalyticsFunnel",
        "type": "object"
      },
      "AnalyticsPaths": {
        "additionalProperties": false,
        "properties": {
          "cohort": {
            "enum": [
              "all",
              "finished",
              "left"
            ],
            "title": "Cohort",
            "type": "string"
          },
          "data_start": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data Start"
          },
          "edges": {
            "items": {
              "$ref": "#/components/schemas/PathEdge"
            },
            "title": "Edges",
            "type": "array"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/PathNode"
            },
            "title": "Nodes",
            "type": "array"
          },
          "other_paths": {
            "$ref": "#/components/schemas/OtherPaths"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/PathRule"
            },
            "title": "Rules",
            "type": "array"
          },
          "sessions": {
            "title": "Sessions",
            "type": "integer"
          },
          "visibility_skips": {
            "items": {
              "$ref": "#/components/schemas/PathVisibilitySkip"
            },
            "title": "Visibility Skips",
            "type": "array"
          }
        },
        "required": [
          "quiz_id",
          "range",
          "filters",
          "cohort",
          "freshness",
          "sessions",
          "data_start",
          "nodes",
          "edges",
          "other_paths",
          "rules",
          "visibility_skips"
        ],
        "title": "AnalyticsPaths",
        "type": "object"
      },
      "AnalyticsProducts": {
        "additionalProperties": false,
        "properties": {
          "bucket": {
            "anyOf": [
              {
                "enum": [
                  "added_from_quiz",
                  "shown_bought_later",
                  "bought_not_shown"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bucket"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "line_revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "orders_matched_by_email": {
            "title": "Orders Matched By Email",
            "type": "integer"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Id"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/ProductRow"
            },
            "title": "Rows",
            "type": "array"
          },
          "sort": {
            "enum": [
              "revenue",
              "units",
              "orders"
            ],
            "title": "Sort",
            "type": "string"
          },
          "total_products": {
            "title": "Total Products",
            "type": "integer"
          },
          "totals_by_bucket": {
            "$ref": "#/components/schemas/ProductBucketMoney"
          }
        },
        "required": [
          "quiz_id",
          "range",
          "freshness",
          "bucket",
          "sort",
          "total_products",
          "line_revenue",
          "totals_by_bucket",
          "orders_matched_by_email",
          "rows"
        ],
        "title": "AnalyticsProducts",
        "type": "object"
      },
      "AnalyticsQuizzes": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/QuizRow"
            },
            "title": "Data",
            "type": "array"
          },
          "dir": {
            "enum": [
              "asc",
              "desc"
            ],
            "title": "Dir",
            "type": "string"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "sort": {
            "enum": [
              "name",
              "views",
              "starts",
              "completion_rate",
              "opt_ins",
              "orders",
              "revenue",
              "share"
            ],
            "title": "Sort",
            "type": "string"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "range",
          "freshness",
          "data",
          "has_more",
          "total",
          "limit",
          "offset",
          "sort",
          "dir"
        ],
        "title": "AnalyticsQuizzes",
        "type": "object"
      },
      "AnalyticsRange": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "title": "Days",
            "type": "integer"
          },
          "end": {
            "format": "date",
            "title": "End",
            "type": "string"
          },
          "start": {
            "format": "date",
            "title": "Start",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end",
          "days",
          "timezone"
        ],
        "title": "AnalyticsRange",
        "type": "object"
      },
      "AnalyticsSummary": {
        "additionalProperties": false,
        "properties": {
          "completions": {
            "$ref": "#/components/schemas/SummaryCount"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "opt_ins": {
            "$ref": "#/components/schemas/SummaryCount"
          },
          "orders": {
            "$ref": "#/components/schemas/SummaryCount"
          },
          "period": {
            "enum": [
              "7d",
              "30d"
            ],
            "title": "Period",
            "type": "string"
          },
          "previous_range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "revenue": {
            "$ref": "#/components/schemas/SummaryMoney"
          },
          "starts": {
            "$ref": "#/components/schemas/SummaryCount"
          },
          "views": {
            "$ref": "#/components/schemas/SummaryCount"
          }
        },
        "required": [
          "period",
          "range",
          "previous_range",
          "freshness",
          "views",
          "starts",
          "completions",
          "opt_ins",
          "orders",
          "revenue"
        ],
        "title": "AnalyticsSummary",
        "type": "object"
      },
      "AnalyticsTraffic": {
        "additionalProperties": false,
        "properties": {
          "by": {
            "enum": [
              "referrer_host",
              "utm_source",
              "utm_medium",
              "utm_campaign"
            ],
            "title": "By",
            "type": "string"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "other": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TrafficRow"
              },
              {
                "type": "null"
              }
            ]
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Id"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/TrafficRow"
            },
            "title": "Rows",
            "type": "array"
          }
        },
        "required": [
          "quiz_id",
          "by",
          "range",
          "filters",
          "freshness",
          "rows",
          "other"
        ],
        "title": "AnalyticsTraffic",
        "type": "object"
      },
      "AnswerBucketRow": {
        "additionalProperties": false,
        "properties": {
          "answer_orders": {
            "title": "Answer Orders",
            "type": "integer"
          },
          "answer_revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "answered": {
            "title": "Answered",
            "type": "integer"
          },
          "answered_share": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Answered Share"
          },
          "buyer_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Buyer Rate"
          },
          "buyers": {
            "title": "Buyers",
            "type": "integer"
          },
          "completed": {
            "title": "Completed",
            "type": "integer"
          },
          "completion_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Rate"
          },
          "high": {
            "title": "High",
            "type": "number"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "low": {
            "title": "Low",
            "type": "number"
          },
          "opt_in_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Opt In Rate"
          },
          "opted_in": {
            "title": "Opted In",
            "type": "integer"
          }
        },
        "required": [
          "label",
          "low",
          "high",
          "answered",
          "answered_share",
          "completed",
          "completion_rate",
          "opted_in",
          "opt_in_rate",
          "buyers",
          "buyer_rate",
          "answer_orders",
          "answer_revenue"
        ],
        "title": "AnswerBucketRow",
        "type": "object"
      },
      "AnswerNumericSummary": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "max": {
            "title": "Max",
            "type": "number"
          },
          "mean": {
            "title": "Mean",
            "type": "number"
          },
          "median": {
            "title": "Median",
            "type": "number"
          },
          "min": {
            "title": "Min",
            "type": "number"
          }
        },
        "required": [
          "count",
          "min",
          "max",
          "mean",
          "median"
        ],
        "title": "AnswerNumericSummary",
        "type": "object"
      },
      "AnswerOptionRow": {
        "additionalProperties": false,
        "properties": {
          "answer_orders": {
            "title": "Answer Orders",
            "type": "integer"
          },
          "answer_revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "buyer_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Buyer Rate"
          },
          "buyers": {
            "title": "Buyers",
            "type": "integer"
          },
          "chose": {
            "title": "Chose",
            "type": "integer"
          },
          "chose_share": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chose Share"
          },
          "completed": {
            "title": "Completed",
            "type": "integer"
          },
          "completion_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Rate"
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url"
          },
          "kind": {
            "enum": [
              "choice",
              "image"
            ],
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "opt_in_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Opt In Rate"
          },
          "opted_in": {
            "title": "Opted In",
            "type": "integer"
          },
          "option_id": {
            "title": "Option Id",
            "type": "string"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          }
        },
        "required": [
          "option_id",
          "label",
          "kind",
          "image_url",
          "removed",
          "chose",
          "chose_share",
          "completed",
          "completion_rate",
          "opted_in",
          "opt_in_rate",
          "buyers",
          "buyer_rate",
          "answer_orders",
          "answer_revenue"
        ],
        "title": "AnswerOptionRow",
        "type": "object"
      },
      "AnswersQuestion": {
        "additionalProperties": false,
        "properties": {
          "component_key": {
            "title": "Component Key",
            "type": "string"
          },
          "kind": {
            "enum": [
              "choice",
              "number"
            ],
            "title": "Kind",
            "type": "string"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "page_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Title"
          },
          "question": {
            "title": "Question",
            "type": "string"
          }
        },
        "required": [
          "page_key",
          "page_title",
          "component_key",
          "question",
          "kind"
        ],
        "title": "AnswersQuestion",
        "type": "object"
      },
      "AppStatus": {
        "description": "Publish-lifecycle status for an app.\nDRAFT: editable; not served to the storefront embed.\nPUBLISHED: a version is live; the embed serves the published snapshot.\nDELETED: soft-deleted; hidden from the dashboard list and the embed, but the\nrow (pages, versions) is retained for recoverability. The column is a plain\nVARCHAR (native_enum=False), so this value needs no migration.",
        "enum": [
          "draft",
          "published",
          "deleted"
        ],
        "title": "AppStatus",
        "type": "string"
      },
      "BreakdownRow": {
        "additionalProperties": false,
        "properties": {
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "email_opt_ins": {
            "title": "Email Opt Ins",
            "type": "integer"
          },
          "phone_opt_ins": {
            "title": "Phone Opt Ins",
            "type": "integer"
          },
          "starts": {
            "title": "Starts",
            "type": "integer"
          },
          "unique_viewers_approx": {
            "title": "Unique Viewers Approx",
            "type": "integer"
          },
          "value": {
            "title": "Value",
            "type": "string"
          },
          "views": {
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "value",
          "views",
          "starts",
          "completions",
          "email_opt_ins",
          "phone_opt_ins",
          "unique_viewers_approx"
        ],
        "title": "BreakdownRow",
        "type": "object"
      },
      "DeliveryList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DeliverySummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "DeliveryList",
        "type": "object"
      },
      "DeliveryPayload": {
        "additionalProperties": false,
        "properties": {
          "api_version": {
            "const": "v1",
            "title": "Api Version",
            "type": "string"
          },
          "created": {
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "data": {
            "additionalProperties": true,
            "title": "Data",
            "type": "object"
          },
          "id": {
            "examples": [
              "evt_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^evt_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created",
          "api_version",
          "data"
        ],
        "title": "DeliveryPayload",
        "type": "object"
      },
      "DeliverySummary": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "title": "Attempts",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "delivered_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivered At"
          },
          "endpoint_id": {
            "examples": [
              "whe_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^whe_[0-9a-f]{32}$",
            "title": "Endpoint Id",
            "type": "string"
          },
          "event_id": {
            "examples": [
              "evt_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^evt_[0-9a-f]{32}$",
            "title": "Event Id",
            "type": "string"
          },
          "id": {
            "examples": [
              "whd_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^whd_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error"
          },
          "last_response": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Response"
          },
          "last_status_code": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Status Code"
          },
          "next_attempt_at": {
            "format": "date-time",
            "title": "Next Attempt At",
            "type": "string"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DeliveryPayload"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "enum": [
              "pending",
              "retrying",
              "delivering",
              "delivered",
              "dead"
            ],
            "title": "Status",
            "type": "string"
          },
          "topic": {
            "title": "Topic",
            "type": "string"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "topic",
          "status",
          "attempts",
          "next_attempt_at",
          "last_status_code",
          "last_response",
          "last_error",
          "created_at",
          "delivered_at",
          "payload"
        ],
        "title": "DeliverySummary",
        "type": "object"
      },
      "EventList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/EventSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "EventList",
        "type": "object"
      },
      "EventSummary": {
        "additionalProperties": false,
        "properties": {
          "created": {
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "endpoint_id": {
            "examples": [
              "whe_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^whe_[0-9a-f]{32}$",
            "title": "Endpoint Id",
            "type": "string"
          },
          "id": {
            "examples": [
              "evt_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^evt_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "topic": {
            "enum": [
              "quiz.started",
              "quiz.finished",
              "quiz.abandoned",
              "identity.captured",
              "quiz.published",
              "profile.created",
              "profile.updated",
              "export.completed",
              "webhook.endpoint.disabled"
            ],
            "title": "Topic",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "topic",
          "endpoint_id",
          "created"
        ],
        "title": "EventSummary",
        "type": "object"
      },
      "ExportCreate": {
        "additionalProperties": false,
        "properties": {
          "dataset": {
            "description": "profiles or responses need profiles:read; quiz_analytics needs analytics:read",
            "enum": [
              "profiles",
              "responses",
              "quiz_analytics"
            ],
            "title": "Dataset",
            "type": "string"
          },
          "format": {
            "default": "csv",
            "description": "csv: one row per line behind a UTF-8 byte-order mark; json: one object {dataset, filters, generated_at, items} whose items are the rows as the API returns them",
            "enum": [
              "csv",
              "json"
            ],
            "title": "Format",
            "type": "string"
          },
          "from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "First day, inclusive, UTC",
            "title": "From"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Only this quiz (profiles and responses)",
            "title": "Quiz Id"
          },
          "search": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileSearch"
              },
              {
                "type": "null"
              }
            ],
            "description": "profiles only: the answer filter of POST /v1/profiles/search (its groups, match and has_* fields); the file's quiz and days are the export's own quiz_id, from and to"
          },
          "to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last day, inclusive, UTC",
            "title": "To"
          },
          "tz": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "quiz_analytics only: the timezone the days are counted in",
            "title": "Tz"
          }
        },
        "required": [
          "dataset"
        ],
        "title": "ExportCreate",
        "type": "object"
      },
      "ExportFilters": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "First day, inclusive, UTC",
            "title": "From"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Only this quiz (profiles and responses)",
            "title": "Quiz Id"
          },
          "search": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileSearch"
              },
              {
                "type": "null"
              }
            ],
            "description": "profiles only: the answer filter of POST /v1/profiles/search (its groups, match and has_* fields); the file's quiz and days are the export's own quiz_id, from and to"
          },
          "to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last day, inclusive, UTC",
            "title": "To"
          },
          "tz": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "quiz_analytics only: the timezone the days are counted in",
            "title": "Tz"
          }
        },
        "title": "ExportFilters",
        "type": "object"
      },
      "ExportList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ExportSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "ExportList",
        "type": "object"
      },
      "ExportSummary": {
        "additionalProperties": false,
        "properties": {
          "bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bytes"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "dataset": {
            "enum": [
              "profiles",
              "responses",
              "quiz_analytics"
            ],
            "title": "Dataset",
            "type": "string"
          },
          "download_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set on GET /v1/exports/{export_id} while completed; valid 15 minutes",
            "title": "Download Url"
          },
          "download_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Url Expires At"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "filters": {
            "$ref": "#/components/schemas/ExportFilters"
          },
          "format": {
            "enum": [
              "csv",
              "json"
            ],
            "title": "Format",
            "type": "string"
          },
          "id": {
            "examples": [
              "exp_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^exp_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "requested_at": {
            "format": "date-time",
            "title": "Requested At",
            "type": "string"
          },
          "row_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Row Count"
          },
          "source": {
            "enum": [
              "api",
              "dashboard"
            ],
            "title": "Source",
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "enum": [
              "pending",
              "running",
              "completed",
              "failed",
              "expired"
            ],
            "title": "Status",
            "type": "string"
          },
          "urls": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Urls",
            "type": "object"
          }
        },
        "required": [
          "id",
          "dataset",
          "format",
          "source",
          "status",
          "filters",
          "row_count",
          "bytes",
          "error",
          "requested_at",
          "started_at",
          "completed_at",
          "expires_at",
          "urls"
        ],
        "title": "ExportSummary",
        "type": "object"
      },
      "FieldError": {
        "additionalProperties": false,
        "properties": {
          "field": {
            "description": "The input that failed, as a dotted path (body.label, query.from)",
            "title": "Field",
            "type": "string"
          },
          "message": {
            "description": "Why it failed",
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "field",
          "message"
        ],
        "title": "FieldError",
        "type": "object"
      },
      "Freshness": {
        "additionalProperties": false,
        "properties": {
          "as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "As Of"
          },
          "closed_days_through": {
            "format": "date",
            "title": "Closed Days Through",
            "type": "string"
          },
          "next_refresh_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Refresh At"
          },
          "pending": {
            "title": "Pending",
            "type": "boolean"
          },
          "stale": {
            "title": "Stale",
            "type": "boolean"
          },
          "today_live": {
            "title": "Today Live",
            "type": "boolean"
          }
        },
        "required": [
          "as_of",
          "next_refresh_at",
          "stale",
          "pending",
          "closed_days_through",
          "today_live"
        ],
        "title": "Freshness",
        "type": "object"
      },
      "FunnelPage": {
        "additionalProperties": false,
        "properties": {
          "avg_time_on_page_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Average time on the page per visit, in milliseconds.",
            "title": "Avg Time On Page Ms"
          },
          "dropped_share_of_starts": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "sessions_dropped as a percentage of the funnel's starts; null while nothing started.",
            "title": "Dropped Share Of Starts"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "sessions_continued": {
            "description": "Sessions that moved on from this page: reached minus dropped minus those still on it.",
            "title": "Sessions Continued",
            "type": "integer"
          },
          "sessions_dropped": {
            "description": "Sessions whose last page was this one and that ended without completing.",
            "title": "Sessions Dropped",
            "type": "integer"
          },
          "sessions_reached": {
            "description": "Sessions that opened this page at least once (one per person).",
            "title": "Sessions Reached",
            "type": "integer"
          },
          "sessions_reached_by_jump": {
            "description": "Sessions whose first arrival on this page was a jump rule.",
            "title": "Sessions Reached By Jump",
            "type": "integer"
          },
          "sessions_skipped": {
            "description": "Sessions that used the skip button on this page. A Back or Skip pressed after a long idle, once the visit was already closed as timed out, is not recorded.",
            "title": "Sessions Skipped",
            "type": "integer"
          },
          "sessions_went_back": {
            "description": "Sessions that went back to the previous page from here. A Back or Skip pressed after a long idle, once the visit was already closed as timed out, is not recorded.",
            "title": "Sessions Went Back",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "page_key",
          "title",
          "removed",
          "sessions_reached",
          "sessions_reached_by_jump",
          "sessions_continued",
          "sessions_went_back",
          "sessions_skipped",
          "sessions_dropped",
          "dropped_share_of_starts",
          "avg_time_on_page_ms"
        ],
        "title": "FunnelPage",
        "type": "object"
      },
      "Limits": {
        "additionalProperties": false,
        "properties": {
          "analytics_soft_ttl_seconds": {
            "description": "Seconds before a cached analytics answer may refresh",
            "title": "Analytics Soft Ttl Seconds",
            "type": "integer"
          },
          "bot_multiplier": {
            "description": "The store-wide bucket is this many times the key bucket",
            "title": "Bot Multiplier",
            "type": "integer"
          },
          "capacity": {
            "description": "Requests a key may burst before its bucket is full",
            "title": "Capacity",
            "type": "integer"
          },
          "export_page_pause_ms": {
            "description": "Milliseconds an export job rests between pages of the store's data",
            "minimum": 1.0,
            "title": "Export Page Pause Ms",
            "type": "integer"
          },
          "leak_per_second": {
            "description": "Sustained requests per second per key",
            "title": "Leak Per Second",
            "type": "number"
          },
          "webhook_endpoints": {
            "description": "Maximum webhook endpoints for the store",
            "minimum": 1.0,
            "title": "Webhook Endpoints",
            "type": "integer"
          },
          "webhook_sends_per_second": {
            "description": "Sustained webhook sends per second per endpoint",
            "minimum": 1.0,
            "title": "Webhook Sends Per Second",
            "type": "integer"
          }
        },
        "required": [
          "capacity",
          "leak_per_second",
          "bot_multiplier",
          "analytics_soft_ttl_seconds",
          "webhook_endpoints",
          "webhook_sends_per_second",
          "export_page_pause_ms"
        ],
        "title": "Limits",
        "type": "object"
      },
      "Money": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "string"
          },
          "currency": {
            "title": "Currency",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "title": "Money",
        "type": "object"
      },
      "OtherPaths": {
        "additionalProperties": false,
        "properties": {
          "moves": {
            "title": "Moves",
            "type": "integer"
          },
          "routes": {
            "title": "Routes",
            "type": "integer"
          }
        },
        "required": [
          "routes",
          "moves"
        ],
        "title": "OtherPaths",
        "type": "object"
      },
      "OverviewPoint": {
        "additionalProperties": false,
        "properties": {
          "avg_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Time To Complete Ms"
          },
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "consent_denied": {
            "title": "Consent Denied",
            "type": "integer"
          },
          "day": {
            "format": "date",
            "title": "Day",
            "type": "string"
          },
          "email_opt_ins": {
            "title": "Email Opt Ins",
            "type": "integer"
          },
          "median_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Time To Complete Ms"
          },
          "orders": {
            "title": "Orders",
            "type": "integer"
          },
          "orders_inside_window": {
            "title": "Orders Inside Window",
            "type": "integer"
          },
          "phone_opt_ins": {
            "title": "Phone Opt Ins",
            "type": "integer"
          },
          "revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "revenue_by_bucket": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductBucketMoney"
              },
              {
                "type": "null"
              }
            ]
          },
          "starts": {
            "title": "Starts",
            "type": "integer"
          },
          "unique_viewers_approx": {
            "title": "Unique Viewers Approx",
            "type": "integer"
          },
          "views": {
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "views",
          "starts",
          "completions",
          "email_opt_ins",
          "phone_opt_ins",
          "consent_denied",
          "unique_viewers_approx",
          "orders",
          "orders_inside_window",
          "revenue",
          "avg_time_to_complete_ms",
          "median_time_to_complete_ms",
          "revenue_by_bucket",
          "day"
        ],
        "title": "OverviewPoint",
        "type": "object"
      },
      "OverviewTotals": {
        "additionalProperties": false,
        "properties": {
          "aov": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "avg_came_back_to_buy_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Came Back To Buy Ms"
          },
          "avg_quiz_to_checkout_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Quiz To Checkout Ms"
          },
          "avg_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Time To Complete Ms"
          },
          "completion_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Rate"
          },
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "consent_denied": {
            "title": "Consent Denied",
            "type": "integer"
          },
          "email_opt_ins": {
            "title": "Email Opt Ins",
            "type": "integer"
          },
          "median_came_back_to_buy_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Came Back To Buy Ms"
          },
          "median_quiz_to_checkout_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Quiz To Checkout Ms"
          },
          "median_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Time To Complete Ms"
          },
          "orders": {
            "title": "Orders",
            "type": "integer"
          },
          "orders_inside_window": {
            "title": "Orders Inside Window",
            "type": "integer"
          },
          "phone_opt_ins": {
            "title": "Phone Opt Ins",
            "type": "integer"
          },
          "revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "revenue_by_bucket": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductBucketMoney"
              },
              {
                "type": "null"
              }
            ]
          },
          "start_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Rate"
          },
          "starts": {
            "title": "Starts",
            "type": "integer"
          },
          "unique_viewers_approx": {
            "title": "Unique Viewers Approx",
            "type": "integer"
          },
          "views": {
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "views",
          "starts",
          "completions",
          "email_opt_ins",
          "phone_opt_ins",
          "consent_denied",
          "unique_viewers_approx",
          "orders",
          "orders_inside_window",
          "revenue",
          "avg_time_to_complete_ms",
          "median_time_to_complete_ms",
          "revenue_by_bucket",
          "start_rate",
          "completion_rate",
          "aov",
          "median_quiz_to_checkout_ms",
          "avg_quiz_to_checkout_ms",
          "median_came_back_to_buy_ms",
          "avg_came_back_to_buy_ms"
        ],
        "title": "OverviewTotals",
        "type": "object"
      },
      "PageRole": {
        "description": "What a page is for, derived from what it holds (App.page_role): a loading visual, products,\nthe first page in order, else a question page.",
        "enum": [
          "start",
          "question",
          "loading",
          "results"
        ],
        "title": "PageRole",
        "type": "string"
      },
      "PathEdge": {
        "additionalProperties": false,
        "properties": {
          "cause": {
            "enum": [
              "sequential",
              "jump",
              "back",
              "restart"
            ],
            "title": "Cause",
            "type": "string"
          },
          "from_page_key": {
            "title": "From Page Key",
            "type": "string"
          },
          "jump_rule_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jump Rule Key"
          },
          "moves": {
            "title": "Moves",
            "type": "integer"
          },
          "sessions_moved": {
            "title": "Sessions Moved",
            "type": "integer"
          },
          "to_page_key": {
            "title": "To Page Key",
            "type": "string"
          }
        },
        "required": [
          "from_page_key",
          "to_page_key",
          "cause",
          "jump_rule_key",
          "moves",
          "sessions_moved"
        ],
        "title": "PathEdge",
        "type": "object"
      },
      "PathNode": {
        "additionalProperties": false,
        "properties": {
          "entries": {
            "title": "Entries",
            "type": "integer"
          },
          "entries_by_jump": {
            "title": "Entries By Jump",
            "type": "integer"
          },
          "exits_closed": {
            "title": "Exits Closed",
            "type": "integer"
          },
          "exits_restarted": {
            "title": "Exits Restarted",
            "type": "integer"
          },
          "exits_timed_out": {
            "title": "Exits Timed Out",
            "type": "integer"
          },
          "finished_here": {
            "title": "Finished Here",
            "type": "integer"
          },
          "median_time_on_page_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Time On Page Ms"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "still_here": {
            "title": "Still Here",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "page_key",
          "title",
          "removed",
          "entries",
          "entries_by_jump",
          "exits_closed",
          "exits_timed_out",
          "exits_restarted",
          "finished_here",
          "still_here",
          "median_time_on_page_ms"
        ],
        "title": "PathNode",
        "type": "object"
      },
      "PathRule": {
        "additionalProperties": false,
        "properties": {
          "fired": {
            "title": "Fired",
            "type": "integer"
          },
          "jump_rule_key": {
            "title": "Jump Rule Key",
            "type": "string"
          },
          "source_entries": {
            "title": "Source Entries",
            "type": "integer"
          },
          "source_page_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Page Key"
          }
        },
        "required": [
          "jump_rule_key",
          "source_page_key",
          "fired",
          "source_entries"
        ],
        "title": "PathRule",
        "type": "object"
      },
      "PathVisibilitySkip": {
        "additionalProperties": false,
        "properties": {
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "times_hidden": {
            "title": "Times Hidden",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "page_key",
          "title",
          "removed",
          "times_hidden"
        ],
        "title": "PathVisibilitySkip",
        "type": "object"
      },
      "Problem": {
        "additionalProperties": false,
        "description": "The body of every non-2xx response.",
        "properties": {
          "detail": {
            "description": "What went wrong, for people",
            "title": "Detail",
            "type": "string"
          },
          "errors": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FieldError"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "validation_error only: one entry per invalid input",
            "title": "Errors"
          },
          "export": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A timed-out profile search only: the url and body of the POST /v1/exports request that builds the same people as a file",
            "title": "Export"
          },
          "request_id": {
            "description": "The same value as the Request-Id header; quote it to support",
            "title": "Request Id",
            "type": "string"
          },
          "required": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "insufficient_scope only: the scopes the route needs",
            "title": "Required"
          },
          "retry_after": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "429 and 503 only: seconds to wait, as in Retry-After",
            "title": "Retry After"
          },
          "status": {
            "description": "The HTTP status of the response",
            "title": "Status",
            "type": "integer"
          },
          "title": {
            "description": "The machine-readable error code",
            "title": "Title",
            "type": "string"
          },
          "type": {
            "description": "A stable URI naming the error, on this API's public host",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "request_id"
        ],
        "title": "Problem",
        "type": "object"
      },
      "ProductBucketMoney": {
        "additionalProperties": false,
        "properties": {
          "added_from_quiz": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "bought_not_shown": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "shown_bought_later": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "added_from_quiz",
          "shown_bought_later",
          "bought_not_shown"
        ],
        "title": "ProductBucketMoney",
        "type": "object"
      },
      "ProductRow": {
        "additionalProperties": false,
        "properties": {
          "had_variants": {
            "title": "Had Variants",
            "type": "boolean"
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url"
          },
          "in_store": {
            "title": "In Store",
            "type": "boolean"
          },
          "line_revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "orders_approx": {
            "title": "Orders Approx",
            "type": "integer"
          },
          "product_id": {
            "examples": [
              "gid://shopify/Product/8692896989320"
            ],
            "title": "Product Id",
            "type": "string"
          },
          "quiz_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Name"
          },
          "revenue_by_bucket": {
            "$ref": "#/components/schemas/ProductBucketMoney"
          },
          "shown_on": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductShownOn"
              },
              {
                "type": "null"
              }
            ]
          },
          "times_shown": {
            "title": "Times Shown",
            "type": "integer"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "units": {
            "title": "Units",
            "type": "integer"
          }
        },
        "required": [
          "product_id",
          "title",
          "image_url",
          "in_store",
          "quiz_name",
          "shown_on",
          "times_shown",
          "orders_approx",
          "units",
          "line_revenue",
          "revenue_by_bucket",
          "had_variants"
        ],
        "title": "ProductRow",
        "type": "object"
      },
      "ProductShownOn": {
        "additionalProperties": false,
        "properties": {
          "block_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Block Key"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "page_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Title"
          }
        },
        "required": [
          "page_key",
          "page_title",
          "block_key"
        ],
        "title": "ProductShownOn",
        "type": "object"
      },
      "ProfileAnswer": {
        "additionalProperties": false,
        "properties": {
          "component_key": {
            "title": "Component Key",
            "type": "string"
          },
          "image_urls": {
            "description": "For an image choice: one entry per label in values, the option's image or null",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "title": "Image Urls",
            "type": "array"
          },
          "kind": {
            "enum": [
              "choice",
              "image",
              "text",
              "email",
              "phone",
              "number",
              "date",
              "other"
            ],
            "title": "Kind",
            "type": "string"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "page_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Title"
          },
          "question": {
            "title": "Question",
            "type": "string"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "value": {
            "title": "Value"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "title": "Values",
            "type": "array"
          }
        },
        "required": [
          "page_key",
          "page_title",
          "component_key",
          "question",
          "kind",
          "values",
          "value",
          "image_urls",
          "removed"
        ],
        "title": "ProfileAnswer",
        "type": "object"
      },
      "ProfileDetail": {
        "additionalProperties": false,
        "properties": {
          "completed_count": {
            "title": "Completed Count",
            "type": "integer"
          },
          "first_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Seen At"
          },
          "id": {
            "examples": [
              "prof_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^prof_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "identities": {
            "items": {
              "$ref": "#/components/schemas/ProfileIdentity"
            },
            "title": "Identities",
            "type": "array"
          },
          "last_order_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Order At"
          },
          "last_seen_at": {
            "format": "date-time",
            "title": "Last Seen At",
            "type": "string"
          },
          "latest_results": {
            "items": {
              "$ref": "#/components/schemas/ProfileResult"
            },
            "title": "Latest Results",
            "type": "array"
          },
          "orders": {
            "items": {
              "$ref": "#/components/schemas/ProfileOrder"
            },
            "title": "Orders",
            "type": "array"
          },
          "orders_count": {
            "title": "Orders Count",
            "type": "integer"
          },
          "quizzes_taken_count": {
            "title": "Quizzes Taken Count",
            "type": "integer"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "removed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Removed At"
          },
          "returning": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Returning"
          },
          "returning_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Returning Count"
          },
          "sessions": {
            "items": {
              "$ref": "#/components/schemas/ProfileSession"
            },
            "title": "Sessions",
            "type": "array"
          },
          "sessions_count": {
            "title": "Sessions Count",
            "type": "integer"
          },
          "spent": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "removed",
          "removed_at",
          "identities",
          "first_seen_at",
          "last_seen_at",
          "sessions_count",
          "completed_count",
          "returning",
          "returning_count",
          "quizzes_taken_count",
          "orders_count",
          "spent",
          "last_order_at",
          "latest_results",
          "sessions",
          "orders"
        ],
        "title": "ProfileDetail",
        "type": "object"
      },
      "ProfileFormula": {
        "additionalProperties": false,
        "properties": {
          "component_key": {
            "title": "Component Key",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "number"
          }
        },
        "required": [
          "page_key",
          "component_key",
          "label",
          "value"
        ],
        "title": "ProfileFormula",
        "type": "object"
      },
      "ProfileIdentity": {
        "additionalProperties": false,
        "properties": {
          "consent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The marketing-consent checkbox beside the field: false when left unticked, null without one",
            "title": "Consent"
          },
          "first_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Seen At"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "value",
          "first_seen_at",
          "last_seen_at",
          "consent"
        ],
        "title": "ProfileIdentity",
        "type": "object"
      },
      "ProfileList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ProfileSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "returning_total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "How many of total came back; null once the total is capped",
            "title": "Returning Total"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          },
          "total_capped": {
            "default": false,
            "description": "A search stops counting at 5,000: total is then that cap, read it as 5,000+",
            "title": "Total Capped",
            "type": "boolean"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor",
          "total",
          "returning_total"
        ],
        "title": "ProfileList",
        "type": "object"
      },
      "ProfileOrder": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "matched_tier": {
            "title": "Matched Tier",
            "type": "string"
          },
          "order_id": {
            "title": "Order Id",
            "type": "string"
          },
          "order_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Order Name"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Id"
          },
          "quiz_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quiz Name"
          },
          "session_id": {
            "anyOf": [
              {
                "examples": [
                  "sess_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^sess_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Id"
          }
        },
        "required": [
          "order_id",
          "order_name",
          "created_at",
          "amount",
          "quiz_id",
          "quiz_name",
          "session_id",
          "matched_tier"
        ],
        "title": "ProfileOrder",
        "type": "object"
      },
      "ProfilePoints": {
        "additionalProperties": false,
        "properties": {
          "dimension_id": {
            "title": "Dimension Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "total": {
            "title": "Total",
            "type": "number"
          }
        },
        "required": [
          "dimension_id",
          "name",
          "total"
        ],
        "title": "ProfilePoints",
        "type": "object"
      },
      "ProfileQuiz": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "ProfileQuiz",
        "type": "object"
      },
      "ProfileResult": {
        "additionalProperties": false,
        "properties": {
          "answers": {
            "items": {
              "$ref": "#/components/schemas/ProfileAnswer"
            },
            "title": "Answers",
            "type": "array"
          },
          "completed_at": {
            "format": "date-time",
            "title": "Completed At",
            "type": "string"
          },
          "formulas": {
            "items": {
              "$ref": "#/components/schemas/ProfileFormula"
            },
            "title": "Formulas",
            "type": "array"
          },
          "points": {
            "items": {
              "$ref": "#/components/schemas/ProfilePoints"
            },
            "title": "Points",
            "type": "array"
          },
          "points_total": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Points Total"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "quiz_name": {
            "title": "Quiz Name",
            "type": "string"
          },
          "result_page": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileResultPage"
              },
              {
                "type": "null"
              }
            ]
          },
          "session_id": {
            "examples": [
              "sess_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^sess_[0-9a-f]{32}$",
            "title": "Session Id",
            "type": "string"
          },
          "started_at": {
            "format": "date-time",
            "title": "Started At",
            "type": "string"
          },
          "version_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Version Number"
          },
          "winner": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfilePoints"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "quiz_id",
          "quiz_name",
          "version_number",
          "session_id",
          "started_at",
          "completed_at",
          "answers",
          "points",
          "winner",
          "points_total",
          "formulas",
          "result_page"
        ],
        "title": "ProfileResult",
        "type": "object"
      },
      "ProfileResultPage": {
        "additionalProperties": false,
        "properties": {
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "shown_products": {
            "items": {
              "$ref": "#/components/schemas/ProfileShownProduct"
            },
            "title": "Shown Products",
            "type": "array"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "page_key",
          "title",
          "position",
          "page_count",
          "shown_products"
        ],
        "title": "ProfileResultPage",
        "type": "object"
      },
      "ProfileSearch": {
        "additionalProperties": false,
        "description": "Who to find: the list filters of GET /v1/profiles except q, plus person facts and an answer filter, an OR of\nAND groups. Send the same body with every page; the cursor is positional only.",
        "properties": {
          "from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last seen on or after this UTC day",
            "title": "From"
          },
          "groups": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ProfileSearchGroup"
                },
                "maxItems": 4,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "OR of AND groups: up to 4 groups of 8 terms",
            "title": "Groups"
          },
          "has_email": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Email"
          },
          "has_marketing_consent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Ticked the marketing-consent checkbox beside their newest email or phone answer",
            "title": "Has Marketing Consent"
          },
          "has_order": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Placed an order we linked to a quiz session",
            "title": "Has Order"
          },
          "has_phone": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Phone"
          },
          "is_returning": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Took a quiz again after we first knew them, on any device",
            "title": "Is Returning"
          },
          "match": {
            "default": "any_session",
            "description": "any_session: any time they took the quiz counts; latest_completed_per_quiz: only their latest completed take of each quiz",
            "enum": [
              "any_session",
              "latest_completed_per_quiz"
            ],
            "title": "Match",
            "type": "string"
          },
          "quiz_id": {
            "anyOf": [
              {
                "examples": [
                  "quiz_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^quiz_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Only people who took this quiz",
            "title": "Quiz Id"
          },
          "to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last seen on or before this UTC day",
            "title": "To"
          }
        },
        "title": "ProfileSearch",
        "type": "object"
      },
      "ProfileSearchAny": {
        "additionalProperties": false,
        "properties": {
          "any": {
            "description": "At least one of these terms must hold; plain terms only",
            "items": {
              "$ref": "#/components/schemas/ProfileSearchTerm"
            },
            "maxItems": 8,
            "minItems": 2,
            "title": "Any",
            "type": "array"
          }
        },
        "required": [
          "any"
        ],
        "title": "ProfileSearchAny",
        "type": "object"
      },
      "ProfileSearchGroup": {
        "additionalProperties": false,
        "properties": {
          "all": {
            "description": "Every slot must hold: a term, or {any: [terms]}",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ProfileSearchTerm"
                },
                {
                  "$ref": "#/components/schemas/ProfileSearchAny"
                }
              ]
            },
            "maxItems": 8,
            "minItems": 1,
            "title": "All",
            "type": "array"
          }
        },
        "required": [
          "all"
        ],
        "title": "ProfileSearchGroup",
        "type": "object"
      },
      "ProfileSearchTerm": {
        "additionalProperties": false,
        "properties": {
          "component_key": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Component Key"
          },
          "dimension_id": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dimension Id"
          },
          "kind": {
            "description": "choice | number | date | text | email | phone: a question of the quiz (page_key + component_key); points: a dimension (dimension_id); formula: a formula component (page_key + component_key); winner: the top dimension (dimension ids in option_ids); session: how the shopper's session ended (value completed | abandoned, page_key the page they left on)",
            "enum": [
              "choice",
              "number",
              "date",
              "text",
              "email",
              "phone",
              "points",
              "formula",
              "winner",
              "session"
            ],
            "title": "Kind",
            "type": "string"
          },
          "max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "between: the high bound",
            "title": "Max"
          },
          "min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "between: the low bound (a number, or a YYYY-MM-DD day)",
            "title": "Min"
          },
          "op": {
            "description": "choice: in | not_in; number, points, formula: eq | lt | gt | between; date: eq | before | after | between; text: contains | equals | matches | answered | not_answered; email, phone: answered | not_answered; winner: in; session: equals. not_in means answered the question and picked none of these; not_answered means took the quiz and left the question unanswered.",
            "enum": [
              "in",
              "not_in",
              "eq",
              "lt",
              "gt",
              "between",
              "before",
              "after",
              "contains",
              "equals",
              "matches",
              "answered",
              "not_answered"
            ],
            "title": "Op",
            "type": "string"
          },
          "option_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Option ids (exact)",
            "title": "Option Ids"
          },
          "option_labels": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Option labels, matched trim- and case-insensitively against every version of the quiz",
            "title": "Option Labels"
          },
          "page_key": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Key"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "eq, lt, gt, before, after, contains, equals: the operand; matches: a case-insensitive regular expression of at most 64 characters with a run of three plain letters or digits, no lookarounds or backreferences; session: completed | abandoned",
            "title": "Value"
          }
        },
        "required": [
          "quiz_id",
          "kind",
          "op"
        ],
        "title": "ProfileSearchTerm",
        "type": "object"
      },
      "ProfileSession": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "title": "Channel",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "device_class": {
            "title": "Device Class",
            "type": "string"
          },
          "ended_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "last_page_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Page Key"
          },
          "last_page_position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Page Position"
          },
          "last_page_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Page Title"
          },
          "order": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileSessionOrder"
              },
              {
                "type": "null"
              }
            ]
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "pages_visited": {
            "title": "Pages Visited",
            "type": "integer"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "quiz_name": {
            "title": "Quiz Name",
            "type": "string"
          },
          "returning": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Returning"
          },
          "session_id": {
            "examples": [
              "sess_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^sess_[0-9a-f]{32}$",
            "title": "Session Id",
            "type": "string"
          },
          "started_at": {
            "format": "date-time",
            "title": "Started At",
            "type": "string"
          },
          "status": {
            "enum": [
              "completed",
              "in_progress",
              "left"
            ],
            "title": "Status",
            "type": "string"
          },
          "version_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Version Number"
          }
        },
        "required": [
          "session_id",
          "quiz_id",
          "quiz_name",
          "version_number",
          "status",
          "returning",
          "started_at",
          "completed_at",
          "ended_at",
          "pages_visited",
          "page_count",
          "last_page_key",
          "last_page_title",
          "last_page_position",
          "device_class",
          "channel",
          "country",
          "order"
        ],
        "title": "ProfileSession",
        "type": "object"
      },
      "ProfileSessionOrder": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "matched_tier": {
            "title": "Matched Tier",
            "type": "string"
          },
          "minutes_after": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minutes After"
          },
          "order_id": {
            "title": "Order Id",
            "type": "string"
          },
          "order_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Order Name"
          }
        },
        "required": [
          "order_id",
          "order_name",
          "created_at",
          "amount",
          "minutes_after",
          "matched_tier"
        ],
        "title": "ProfileSessionOrder",
        "type": "object"
      },
      "ProfileShownProduct": {
        "additionalProperties": false,
        "properties": {
          "block_key": {
            "title": "Block Key",
            "type": "string"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "handle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Handle"
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "product_id": {
            "examples": [
              "gid://shopify/Product/8692896989320"
            ],
            "title": "Product Id",
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "variant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "gid://shopify/ProductVariant/40926435967056"
            ],
            "title": "Variant Id"
          },
          "variant_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Variant Title"
          }
        },
        "required": [
          "product_id",
          "variant_id",
          "block_key",
          "handle",
          "title",
          "variant_title",
          "price",
          "currency",
          "image"
        ],
        "title": "ProfileShownProduct",
        "type": "object"
      },
      "ProfileSummary": {
        "additionalProperties": false,
        "properties": {
          "completed_count": {
            "title": "Completed Count",
            "type": "integer"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "first_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Seen At"
          },
          "id": {
            "examples": [
              "prof_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^prof_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "last_order_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Order At"
          },
          "last_seen_at": {
            "format": "date-time",
            "title": "Last Seen At",
            "type": "string"
          },
          "orders_count": {
            "title": "Orders Count",
            "type": "integer"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "quizzes": {
            "items": {
              "$ref": "#/components/schemas/ProfileQuiz"
            },
            "title": "Quizzes",
            "type": "array"
          },
          "removed": {
            "title": "Removed",
            "type": "boolean"
          },
          "removed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Removed At"
          },
          "returning": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Returning"
          },
          "sessions_count": {
            "title": "Sessions Count",
            "type": "integer"
          },
          "spent": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "removed",
          "removed_at",
          "email",
          "phone",
          "quizzes",
          "first_seen_at",
          "last_seen_at",
          "sessions_count",
          "completed_count",
          "returning",
          "orders_count",
          "spent",
          "last_order_at"
        ],
        "title": "ProfileSummary",
        "type": "object"
      },
      "PublishMarker": {
        "additionalProperties": false,
        "properties": {
          "approximate": {
            "title": "Approximate",
            "type": "boolean"
          },
          "day": {
            "format": "date",
            "title": "Day",
            "type": "string"
          },
          "published_at": {
            "format": "date-time",
            "title": "Published At",
            "type": "string"
          },
          "version_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Version Number"
          }
        },
        "required": [
          "published_at",
          "day",
          "version_number",
          "approximate"
        ],
        "title": "PublishMarker",
        "type": "object"
      },
      "QuizDetail": {
        "additionalProperties": false,
        "properties": {
          "archived": {
            "title": "Archived",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "latest_version": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VersionSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "page_count": {
            "title": "Page Count",
            "type": "integer"
          },
          "published_version": {
            "anyOf": [
              {
                "examples": [
                  "ver_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^ver_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published Version"
          },
          "status": {
            "$ref": "#/components/schemas/AppStatus"
          },
          "structure": {
            "$ref": "#/components/schemas/QuizStructure"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "urls": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Urls",
            "type": "object"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "archived",
          "published_version",
          "page_count",
          "created_at",
          "updated_at",
          "urls",
          "structure"
        ],
        "title": "QuizDetail",
        "type": "object"
      },
      "QuizList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/QuizSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "QuizList",
        "type": "object"
      },
      "QuizOverview": {
        "additionalProperties": false,
        "properties": {
          "data_start": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data Start"
          },
          "filters": {
            "$ref": "#/components/schemas/AnalyticsFilters"
          },
          "freshness": {
            "$ref": "#/components/schemas/Freshness"
          },
          "live_since": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Live Since"
          },
          "live_since_approximate": {
            "title": "Live Since Approximate",
            "type": "boolean"
          },
          "markers": {
            "items": {
              "$ref": "#/components/schemas/PublishMarker"
            },
            "title": "Markers",
            "type": "array"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "range": {
            "$ref": "#/components/schemas/AnalyticsRange"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/OverviewPoint"
            },
            "title": "Series",
            "type": "array"
          },
          "totals": {
            "$ref": "#/components/schemas/OverviewTotals"
          }
        },
        "required": [
          "quiz_id",
          "range",
          "filters",
          "freshness",
          "series",
          "totals",
          "markers",
          "live_since",
          "live_since_approximate",
          "data_start"
        ],
        "title": "QuizOverview",
        "type": "object"
      },
      "QuizRow": {
        "additionalProperties": false,
        "properties": {
          "attributed_share": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attributed Share"
          },
          "avg_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Time To Complete Ms"
          },
          "completion_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Rate"
          },
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "email_opt_ins": {
            "title": "Email Opt Ins",
            "type": "integer"
          },
          "median_time_to_complete_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Median Time To Complete Ms"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "orders": {
            "title": "Orders",
            "type": "integer"
          },
          "phone_opt_ins": {
            "title": "Phone Opt Ins",
            "type": "integer"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          },
          "revenue": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "starts": {
            "title": "Starts",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "views": {
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "quiz_id",
          "name",
          "status",
          "views",
          "starts",
          "completions",
          "completion_rate",
          "email_opt_ins",
          "phone_opt_ins",
          "orders",
          "revenue",
          "attributed_share",
          "avg_time_to_complete_ms",
          "median_time_to_complete_ms"
        ],
        "title": "QuizRow",
        "type": "object"
      },
      "QuizStructure": {
        "additionalProperties": false,
        "properties": {
          "dimensions": {
            "default": [],
            "description": "The scoring dimensions, in declared order",
            "items": {
              "$ref": "#/components/schemas/StructureDimension"
            },
            "title": "Dimensions",
            "type": "array"
          },
          "page_count": {
            "title": "Page Count",
            "type": "integer"
          },
          "pages": {
            "default": [],
            "description": "In quiz order, the first 50",
            "items": {
              "$ref": "#/components/schemas/StructurePage"
            },
            "title": "Pages",
            "type": "array"
          }
        },
        "required": [
          "page_count"
        ],
        "title": "QuizStructure",
        "type": "object"
      },
      "QuizSummary": {
        "additionalProperties": false,
        "properties": {
          "archived": {
            "title": "Archived",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "latest_version": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VersionSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "page_count": {
            "title": "Page Count",
            "type": "integer"
          },
          "published_version": {
            "anyOf": [
              {
                "examples": [
                  "ver_7c9e6679742540de944be07fc1f90ae7"
                ],
                "pattern": "^ver_[0-9a-f]{32}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published Version"
          },
          "status": {
            "$ref": "#/components/schemas/AppStatus"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "urls": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Urls",
            "type": "object"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "archived",
          "published_version",
          "page_count",
          "created_at",
          "updated_at",
          "urls"
        ],
        "title": "QuizSummary",
        "type": "object"
      },
      "StoreCredits": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "anyOf": [
              {
                "title": "Number of credits",
                "type": "integer"
              },
              {
                "const": "unlimited",
                "title": "Unlimited",
                "type": "string"
              }
            ],
            "description": "Monthly credit cap; 'unlimited' when plan is unmetered",
            "title": "Limit"
          },
          "overages_enabled": {
            "description": "Whether overage charges are permitted past the limit",
            "title": "Overages Enabled",
            "type": "boolean"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hard overage cap (null when overages_enabled is false)",
            "title": "Threshold"
          },
          "used": {
            "description": "Credits consumed in the current billing cycle",
            "title": "Used",
            "type": "integer"
          }
        },
        "required": [
          "limit",
          "used",
          "overages_enabled",
          "threshold"
        ],
        "title": "StoreCredits",
        "type": "object"
      },
      "StoreResponse": {
        "additionalProperties": false,
        "properties": {
          "credits": {
            "$ref": "#/components/schemas/StoreCredits"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ISO code of the currency every money amount is in; null until the store's details sync",
            "title": "Currency"
          },
          "limits": {
            "$ref": "#/components/schemas/Limits"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The store's display name, as the dashboard names it",
            "title": "Name"
          },
          "plan_class": {
            "description": "plus or enterprise; picks the limit table",
            "title": "Plan Class",
            "type": "string"
          },
          "scopes": {
            "description": "The scopes this key carries",
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "shop_domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The store's myshopify.com domain; null until its details sync",
            "title": "Shop Domain"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "IANA name of the store's own timezone, the one to read 'last week' in; null until its details sync. Analytics answer in the tz asked for, UTC by default",
            "title": "Timezone"
          }
        },
        "required": [
          "name",
          "shop_domain",
          "currency",
          "timezone",
          "plan_class",
          "limits",
          "scopes",
          "credits"
        ],
        "title": "StoreResponse",
        "type": "object"
      },
      "StructureComponent": {
        "additionalProperties": false,
        "properties": {
          "component_key": {
            "title": "Component Key",
            "type": "string"
          },
          "kind": {
            "description": "What the component means to a reader: choice_single, choice_multi, choice_slider, slider, number, text, email, phone, date, formula, products, copy (a heading or a text block, whose label is its text), other (an image, video, HTML block or any other content)",
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "description": "The authored label or copy without markup, the first 500 characters",
            "title": "Label",
            "type": "string"
          },
          "option_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Choice questions only: how many options the question has",
            "title": "Option Count"
          },
          "options": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/StructureOption"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Choice questions only, every option",
            "title": "Options"
          },
          "product_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Product blocks only: where the products come from",
            "title": "Product Source"
          },
          "range": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StructureRange"
              },
              {
                "type": "null"
              }
            ],
            "description": "Sliders and number inputs: the stored bounds and step"
          },
          "required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Present on a question the shopper cannot leave empty",
            "title": "Required"
          },
          "type": {
            "description": "What a person calls this kind of component",
            "title": "Type",
            "type": "string"
          },
          "visible_if": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The authored rule, as stored",
            "title": "Visible If"
          }
        },
        "required": [
          "component_key",
          "type",
          "kind",
          "label"
        ],
        "title": "StructureComponent",
        "type": "object"
      },
      "StructureDimension": {
        "additionalProperties": false,
        "properties": {
          "dimension_id": {
            "title": "Dimension Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "dimension_id",
          "label"
        ],
        "title": "StructureDimension",
        "type": "object"
      },
      "StructureJump": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Absent on a jump that always applies",
            "title": "Condition"
          },
          "rule_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rule Key"
          },
          "target_page_key": {
            "description": "The stored target page key",
            "title": "Target Page Key"
          }
        },
        "title": "StructureJump",
        "type": "object"
      },
      "StructureOption": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "title": "Label",
            "type": "string"
          },
          "option_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Option Id"
          },
          "scores": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The scoring dimensions this option adds points to",
            "title": "Scores"
          }
        },
        "required": [
          "label"
        ],
        "title": "StructureOption",
        "type": "object"
      },
      "StructurePage": {
        "additionalProperties": false,
        "properties": {
          "component_count": {
            "description": "How many content components the page has",
            "title": "Component Count",
            "type": "integer"
          },
          "components": {
            "default": [],
            "description": "Content components in stored order, the first 40; layout, buttons and links are left out",
            "items": {
              "$ref": "#/components/schemas/StructureComponent"
            },
            "title": "Components",
            "type": "array"
          },
          "jumps": {
            "default": [],
            "description": "The page's jump rules in stored order",
            "items": {
              "$ref": "#/components/schemas/StructureJump"
            },
            "title": "Jumps",
            "type": "array"
          },
          "page_key": {
            "title": "Page Key",
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/PageRole",
            "description": "What the page is for: start (the first page), question, loading (a loading visual), results (it shows products)"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "visible_if": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The authored rule, as stored",
            "title": "Visible If"
          }
        },
        "required": [
          "page_key",
          "role",
          "component_count"
        ],
        "title": "StructurePage",
        "type": "object"
      },
      "StructureRange": {
        "additionalProperties": false,
        "properties": {
          "max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max"
          },
          "min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Min"
          },
          "step": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Step"
          }
        },
        "title": "StructureRange",
        "type": "object"
      },
      "SummaryCount": {
        "additionalProperties": false,
        "properties": {
          "current": {
            "title": "Current",
            "type": "integer"
          },
          "delta_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delta Pct"
          },
          "previous": {
            "title": "Previous",
            "type": "integer"
          },
          "sparkline": {
            "items": {
              "type": "integer"
            },
            "title": "Sparkline",
            "type": "array"
          }
        },
        "required": [
          "current",
          "previous",
          "delta_pct",
          "sparkline"
        ],
        "title": "SummaryCount",
        "type": "object"
      },
      "SummaryMoney": {
        "additionalProperties": false,
        "properties": {
          "current": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "delta_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delta Pct"
          },
          "previous": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "sparkline": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Money"
                },
                {
                  "type": "null"
                }
              ]
            },
            "title": "Sparkline",
            "type": "array"
          }
        },
        "required": [
          "current",
          "previous",
          "delta_pct",
          "sparkline"
        ],
        "title": "SummaryMoney",
        "type": "object"
      },
      "TrafficRow": {
        "additionalProperties": false,
        "properties": {
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "email_opt_ins": {
            "title": "Email Opt Ins",
            "type": "integer"
          },
          "phone_opt_ins": {
            "title": "Phone Opt Ins",
            "type": "integer"
          },
          "starts": {
            "title": "Starts",
            "type": "integer"
          },
          "unique_viewers": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unique Viewers"
          },
          "value": {
            "title": "Value",
            "type": "string"
          },
          "views": {
            "title": "Views",
            "type": "integer"
          }
        },
        "required": [
          "value",
          "views",
          "starts",
          "completions",
          "email_opt_ins",
          "phone_opt_ins",
          "unique_viewers"
        ],
        "title": "TrafficRow",
        "type": "object"
      },
      "VersionCreate": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          }
        },
        "title": "VersionCreate",
        "type": "object"
      },
      "VersionList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/VersionSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "VersionList",
        "type": "object"
      },
      "VersionSummary": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "examples": [
              "ver_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^ver_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "number": {
            "title": "Number",
            "type": "integer"
          },
          "page_count": {
            "title": "Page Count",
            "type": "integer"
          },
          "published": {
            "title": "Published",
            "type": "boolean"
          },
          "quiz_id": {
            "examples": [
              "quiz_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^quiz_[0-9a-f]{32}$",
            "title": "Quiz Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "quiz_id",
          "number",
          "label",
          "page_count",
          "published",
          "created_at"
        ],
        "title": "VersionSummary",
        "type": "object"
      },
      "WebhookCreate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "include_pii": {
            "default": false,
            "title": "Include Pii",
            "type": "boolean"
          },
          "topics": {
            "items": {
              "enum": [
                "quiz.started",
                "quiz.finished",
                "quiz.abandoned",
                "identity.captured",
                "quiz.published",
                "profile.created",
                "profile.updated",
                "export.completed",
                "webhook.endpoint.disabled"
              ],
              "type": "string"
            },
            "minItems": 1,
            "title": "Topics",
            "type": "array"
          },
          "url": {
            "maxLength": 2048,
            "minLength": 1,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url",
          "topics"
        ],
        "title": "WebhookCreate",
        "type": "object"
      },
      "WebhookCreated": {
        "additionalProperties": false,
        "properties": {
          "endpoint": {
            "$ref": "#/components/schemas/WebhookSummary"
          },
          "secret": {
            "title": "Secret",
            "type": "string"
          }
        },
        "required": [
          "endpoint",
          "secret"
        ],
        "title": "WebhookCreated",
        "type": "object"
      },
      "WebhookList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookSummary"
            },
            "title": "Data",
            "type": "array"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_cursor"
        ],
        "title": "WebhookList",
        "type": "object"
      },
      "WebhookRedeliverFailed": {
        "additionalProperties": false,
        "properties": {
          "since": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Redeliver the failed events created since this moment; the last 7 days when absent",
            "title": "Since"
          }
        },
        "title": "WebhookRedeliverFailed",
        "type": "object"
      },
      "WebhookRedelivered": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "title": "WebhookRedelivered",
        "type": "object"
      },
      "WebhookSecret": {
        "additionalProperties": false,
        "properties": {
          "secret": {
            "title": "Secret",
            "type": "string"
          }
        },
        "required": [
          "secret"
        ],
        "title": "WebhookSecret",
        "type": "object"
      },
      "WebhookSummary": {
        "additionalProperties": false,
        "properties": {
          "consecutive_failures": {
            "title": "Consecutive Failures",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "disabled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disabled At"
          },
          "disabled_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disabled Reason"
          },
          "failing_since": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "2026-09-01T12:00:00Z",
              null
            ],
            "title": "Failing Since"
          },
          "id": {
            "examples": [
              "whe_7c9e6679742540de944be07fc1f90ae7"
            ],
            "pattern": "^whe_[0-9a-f]{32}$",
            "title": "Id",
            "type": "string"
          },
          "include_pii": {
            "title": "Include Pii",
            "type": "boolean"
          },
          "last_delivered_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Delivered At"
          },
          "status": {
            "enum": [
              "pending",
              "active",
              "disabled",
              "paused_plan"
            ],
            "title": "Status",
            "type": "string"
          },
          "topics": {
            "items": {
              "enum": [
                "quiz.started",
                "quiz.finished",
                "quiz.abandoned",
                "identity.captured",
                "quiz.published",
                "profile.created",
                "profile.updated",
                "export.completed",
                "webhook.endpoint.disabled"
              ],
              "type": "string"
            },
            "title": "Topics",
            "type": "array"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          },
          "verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          }
        },
        "required": [
          "id",
          "url",
          "topics",
          "status",
          "include_pii",
          "description",
          "created_at",
          "updated_at",
          "verified_at",
          "disabled_at",
          "disabled_reason",
          "consecutive_failures",
          "failing_since",
          "last_delivered_at"
        ],
        "title": "WebhookSummary",
        "type": "object"
      },
      "WebhookUpdate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "include_pii": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Pii"
          },
          "topics": {
            "anyOf": [
              {
                "items": {
                  "enum": [
                    "quiz.started",
                    "quiz.finished",
                    "quiz.abandoned",
                    "identity.captured",
                    "quiz.published",
                    "profile.created",
                    "profile.updated",
                    "export.completed",
                    "webhook.endpoint.disabled"
                  ],
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Topics"
          }
        },
        "title": "WebhookUpdate",
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "description": "An `oct_live_...` key minted on the dashboard",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "The public REST API for a store's quizzes, analytics, shopper profiles, exports and webhooks.\n\nCreate a key on the dashboard (Developer > API keys) and send it as a Bearer token. See [Plans](#plans) for API availability.\n\n## Authentication and limits\n\n### Keys\n\nA store admin creates keys on the dashboard (Developer > API keys). A key is shown once and never again, and may carry an expiry chosen when it is created. Send it as a Bearer token:\n\n```\nAuthorization: Bearer oct_live_...\n```\n\nA key carries scopes chosen when it is created (`quizzes:read`, `quizzes:write`, `quizzes:publish`, `analytics:read`, `profiles:read`, `webhooks:manage`); the default is read-only (`quizzes:read`, `analytics:read`). A route that needs a scope the key lacks answers `403 insufficient_scope` and names the scope it needs. A missing, malformed, revoked or expired key answers `401 invalid_api_key` with `WWW-Authenticate: Bearer`.\n\nRevoking a key takes effect within two minutes. To rotate, create the new key first, switch, then revoke the old one.\n\n### Plans\n\nThe API is available on the Plus and Enterprise plans. A key of a store on another plan answers `403 plan_required`; a plan change gates within five minutes.\n\n### Limits\n\nEvery key has a leaky bucket and every store has one larger bucket shared by all its keys: three times a key's on Plus, six times on Enterprise (`bot_multiplier`). A request costs 1 (reads), 2 (writes) or 3 (analytics) units; the bucket drains at a steady rate. An analytics call is charged 1 when the key is accepted and 2 more once an answer body is served, so a `304`, a `404` or a `422` costs 1. The key's bucket is charged first; a request the key's bucket rejects never touches the store's. `GET /v1/store` returns the three numbers in force (`capacity`, `leak_per_second`, `bot_multiplier`).\n\nEvery limited response carries:\n\n```\nRateLimit: limit=72, remaining=42, reset=2\nRateLimit-Policy: 72;w=6\n```\n\nThe headers are absent on a `401` and on a `403` answered before the limit is checked (`plan_required`, `insufficient_scope`). `remaining` is what the bucket can still take now and `reset` is the number of seconds until it is empty again; on an admitted request the headers describe the key's bucket, on a `429` they describe the bucket that rejected (the store's bucket reports its own, larger limit). Past the limit the answer is `429 rate_limited` with a `Retry-After` header (seconds, also in the body as `retry_after`). When limits cannot be checked at all, reads are admitted and writes and analytics bodies answer `503 limiter_unavailable` with `Retry-After: 2`.\n\n### Analytics caching\n\nAnalytics are cached for a short time. If the cache is unavailable or an answer is not ready after two seconds, the answer is computed directly and may be slower. Rate-limit checks still apply: if they cannot run, the request returns `503 limiter_unavailable`.\n\n## Pagination\n\nList endpoints page by cursor:\n\n```\nGET /v1/quizzes?limit=50\nGET /v1/quizzes?limit=50&cursor=<next_cursor from the previous page>\n```\n\n- `limit` is 20 by default, at least 1 and at most 100.\n- The response is `{\"data\": [...], \"has_more\": true, \"next_cursor\": \"...\"}`. When `has_more` is false, `next_cursor` is null.\n- A cursor is opaque and positional: it names a place in the list, never a filter. Send it back unchanged with the same filters. A cursor that was not issued by the API answers `422 validation_error`.\n- Lists are newest first and stable under inserts: a row created after the first page was read appears on a later request of the first page, never in the middle of a walk.\n- Quiz and version lists order by creation time, with quiz UUID and public version UUID respectively breaking ties. Profile lists order by last-seen time, then profile UUID. These lists accept limits from 1 through 100.\n- `POST /v1/profiles/search` pages the same way: send the same body with every page and the `cursor` and `limit` as query parameters; `total` is exact up to 5,000 and `total_capped` says when counting stopped there. Totals on sparse filters can take about a second on very large stores.\n- `/v1/analytics/quizzes` pages by offset (`offset`, `limit`, `sort`, `dir`, and `q`), with no cursor; its default limit is 25 and its maximum is 1000. It answers `data`, `has_more` and `total`, and echoes `limit`, `offset`, `sort` and `dir`.\n- A query parameter the route does not declare answers `422 validation_error` naming it.\n\nIds are prefixed strings (`quiz_...`, `ver_...`, `key_...`); an id of the wrong kind, of another store, or that does not exist answers `404 not_found`.\n\n## Errors\n\nEvery non-2xx response is an RFC 9457 problem body with the media type `application/problem+json`:\n\n```json\n{\n  \"type\": \"https://api.octaneai.com/errors/insufficient_scope\",\n  \"title\": \"insufficient_scope\",\n  \"detail\": \"The API key does not carry the scope this route needs\",\n  \"status\": 403,\n  \"request_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n  \"required\": [\"quizzes:read\"]\n}\n```\n\n`type` is a stable identifier on the API's host, `title` is the machine code, `detail` is for people, and `request_id` is the same value as the `Request-Id` response header. Quote the `request_id` when you write to support: it finds the request in the store's API logs.\n\n| status | title | when |\n|---|---|---|\n| 401 | `invalid_api_key` | the key is missing, malformed, revoked or expired; the response carries `WWW-Authenticate: Bearer` |\n| 403 | `plan_required` | the store's plan has no API access |\n| 403 | `insufficient_scope` | the key lacks the scope named in `required` |\n| 404 | `not_found` | no such resource for this store (an id of another store answers the same); `detail` is always `Not found` and never echoes the id |\n| 405 | `method_not_allowed` | the route exists, the method does not |\n| 409 | `conflict` | the request cannot apply in the resource's current state: publishing a version with no pages, or starting an export of a dataset that is still being built |\n| 409 | `ai_run_in_progress` | the AI assistant is editing the quiz right now; archive, unarchive or write again when it has finished |\n| 422 | `validation_error` | the request did not validate; `errors` lists `field` and `message`, a query parameter the route does not declare included |\n| 429 | `rate_limited` | the key's or the store's bucket is full; see `Retry-After` (also `retry_after` in the body). A store-level reject has already spent the key's own bucket for that request; there is no refund. |\n| 500 | `internal_error` | something on our side; send the `request_id` |\n| 502 | `upstream_error` | a service this request depends on failed; retry shortly |\n| 503 | `limiter_unavailable` | limits could not be checked for a write or analytics call; retry after `Retry-After` |\n| 503 | `dependency_unavailable` | a backing service is temporarily unavailable; retry after `Retry-After` |\n| 504 | `timeout` | the request ran past 30 seconds |\n\nThe body is the `Problem` schema of the OpenAPI document: the five fields above on every error, `required` on `insufficient_scope`, `retry_after` on `429` and `503`, `errors` on `validation_error`.\n\n## Versioning\n\nThe version is in the path: `/v1`. Within `v1` the API only grows:\n\n- New endpoints, new optional parameters and new response fields may appear at any time. Clients must ignore fields they do not know.\n- Nothing is removed, renamed or retyped, and no input becomes required, without a deprecation window. A deprecated endpoint or field keeps working for at least 90 days and answers with `Deprecation` and `Sunset` headers naming the date; the replacement is available for the whole window.\n\nWithin `/v1` the API only grows; nothing is removed or renamed.",
    "title": "Octane AI Merchant API",
    "version": "v1",
    "x-released": false
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/analytics/breakdown": {
      "get": {
        "operationId": "analytics_breakdown",
        "parameters": [
          {
            "in": "query",
            "name": "by",
            "required": true,
            "schema": {
              "enum": [
                "channel",
                "device",
                "new_returning",
                "country"
              ],
              "title": "By",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "by": "channel",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "rows": [
                    {
                      "completions": 5,
                      "email_opt_ins": 2,
                      "phone_opt_ins": 1,
                      "starts": 8,
                      "unique_viewers_approx": 9,
                      "value": "direct",
                      "views": 10
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsBreakdown"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Store analytics by dimension",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/analytics/overview": {
      "get": {
        "operationId": "analytics_overview",
        "parameters": [
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data_start": "2026-09-01",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "series": [
                    {
                      "avg_time_to_complete_ms": 42000.0,
                      "completions": 5,
                      "consent_denied": 0,
                      "day": "2026-09-01",
                      "email_opt_ins": 2,
                      "median_time_to_complete_ms": 40000.0,
                      "orders": 1,
                      "orders_inside_window": 1,
                      "phone_opt_ins": 1,
                      "revenue": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "revenue_by_bucket": {
                        "added_from_quiz": {
                          "amount": "12.50",
                          "currency": "USD"
                        },
                        "bought_not_shown": {
                          "amount": "0",
                          "currency": "USD"
                        },
                        "shown_bought_later": {
                          "amount": "0",
                          "currency": "USD"
                        }
                      },
                      "starts": 8,
                      "unique_viewers_approx": 9,
                      "views": 10
                    }
                  ],
                  "totals": {
                    "aov": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "avg_quiz_to_checkout_ms": 60000.0,
                    "avg_time_to_complete_ms": 42000.0,
                    "completion_rate": 62.5,
                    "completions": 5,
                    "consent_denied": 0,
                    "email_opt_ins": 2,
                    "median_quiz_to_checkout_ms": 60000.0,
                    "median_time_to_complete_ms": 40000.0,
                    "orders": 1,
                    "orders_inside_window": 1,
                    "phone_opt_ins": 1,
                    "revenue": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "revenue_by_bucket": {
                      "added_from_quiz": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "bought_not_shown": {
                        "amount": "0",
                        "currency": "USD"
                      },
                      "shown_bought_later": {
                        "amount": "0",
                        "currency": "USD"
                      }
                    },
                    "start_rate": 80.0,
                    "starts": 8,
                    "unique_viewers_approx": 9,
                    "views": 10
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AccountOverview"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Store analytics overview",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/analytics/quizzes": {
      "get": {
        "operationId": "analytics_quizzes",
        "parameters": [
          {
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "name",
              "enum": [
                "name",
                "views",
                "starts",
                "completion_rate",
                "opt_ins",
                "orders",
                "revenue",
                "share"
              ],
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "dir",
            "required": false,
            "schema": {
              "default": "asc",
              "enum": [
                "asc",
                "desc"
              ],
              "title": "Dir",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "attributed_share": 40.0,
                      "avg_time_to_complete_ms": 42000.0,
                      "completion_rate": 62.5,
                      "completions": 5,
                      "email_opt_ins": 2,
                      "median_time_to_complete_ms": 40000.0,
                      "name": "Routine",
                      "orders": 1,
                      "phone_opt_ins": 1,
                      "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                      "revenue": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "starts": 8,
                      "status": "published",
                      "views": 10
                    }
                  ],
                  "dir": "asc",
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "has_more": false,
                  "limit": 25,
                  "offset": 0,
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "sort": "name",
                  "total": 1
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsQuizzes"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Compare quiz analytics",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/analytics/summary": {
      "get": {
        "operationId": "analytics_summary",
        "parameters": [
          {
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "default": "7d",
              "enum": [
                "7d",
                "30d"
              ],
              "title": "Period",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "completions": {
                    "current": 10,
                    "delta_pct": 100.0,
                    "previous": 5,
                    "sparkline": [
                      1,
                      2,
                      1,
                      2,
                      1,
                      2,
                      1
                    ]
                  },
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "opt_ins": {
                    "current": 10,
                    "delta_pct": 100.0,
                    "previous": 5,
                    "sparkline": [
                      1,
                      2,
                      1,
                      2,
                      1,
                      2,
                      1
                    ]
                  },
                  "orders": {
                    "current": 10,
                    "delta_pct": 100.0,
                    "previous": 5,
                    "sparkline": [
                      1,
                      2,
                      1,
                      2,
                      1,
                      2,
                      1
                    ]
                  },
                  "period": "7d",
                  "previous_range": {
                    "days": 7,
                    "end": "2026-08-31",
                    "start": "2026-08-25",
                    "timezone": "UTC"
                  },
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "revenue": {
                    "current": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "previous": {
                      "amount": "0",
                      "currency": "USD"
                    },
                    "sparkline": [
                      {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      },
                      {
                        "amount": "0",
                        "currency": "USD"
                      }
                    ]
                  },
                  "starts": {
                    "current": 10,
                    "delta_pct": 100.0,
                    "previous": 5,
                    "sparkline": [
                      1,
                      2,
                      1,
                      2,
                      1,
                      2,
                      1
                    ]
                  },
                  "views": {
                    "current": 10,
                    "delta_pct": 100.0,
                    "previous": 5,
                    "sparkline": [
                      1,
                      2,
                      1,
                      2,
                      1,
                      2,
                      1
                    ]
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsSummary"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Store analytics summary",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/events": {
      "get": {
        "operationId": "events_list",
        "parameters": [
          {
            "in": "query",
            "name": "topic",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "quiz.started",
                    "quiz.finished",
                    "quiz.abandoned",
                    "identity.captured",
                    "quiz.published",
                    "profile.created",
                    "profile.updated",
                    "export.completed",
                    "webhook.endpoint.disabled"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Topic"
            }
          },
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "created": "2026-09-07T09:11:58Z",
                      "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                      "id": "evt_6ba7b8109dad11d180b400c04fd430c8",
                      "topic": "quiz.finished",
                      "type": "quiz.finished"
                    }
                  ],
                  "has_more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/EventList"
                }
              }
            },
            "description": "One page of the store's retained events, newest first."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List distinct events retained for webhook delivery",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "read",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/exports": {
      "get": {
        "operationId": "exports_list",
        "parameters": [
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "bytes": 58311,
                      "completed_at": "2026-09-01T12:00:09Z",
                      "dataset": "profiles",
                      "expires_at": "2026-10-01T12:00:00Z",
                      "filters": {
                        "from": "2026-08-01",
                        "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                        "to": "2026-08-31"
                      },
                      "format": "csv",
                      "id": "exp_3f2504e04f8911d39a0c0305e82c3301",
                      "requested_at": "2026-09-01T12:00:00Z",
                      "row_count": 1240,
                      "source": "api",
                      "started_at": "2026-09-01T12:00:02Z",
                      "status": "completed",
                      "urls": {
                        "self": "https://api.octaneai.com/v1/exports/exp_3f2504e04f8911d39a0c0305e82c3301"
                      }
                    }
                  ],
                  "has_more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/ExportList"
                }
              }
            },
            "description": "One page of the store's exports, newest first, without download links."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List exports",
        "tags": [
          "exports"
        ],
        "x-rate-class": "read",
        "x-scope": "any"
      },
      "post": {
        "operationId": "export_create",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "dataset": "profiles",
                  "expires_at": "2026-10-01T12:00:00Z",
                  "filters": {
                    "from": "2026-08-01",
                    "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                    "to": "2026-08-31"
                  },
                  "format": "csv",
                  "id": "exp_3f2504e04f8911d39a0c0305e82c3301",
                  "requested_at": "2026-09-01T12:00:00Z",
                  "source": "api",
                  "status": "pending",
                  "urls": {
                    "self": "https://api.octaneai.com/v1/exports/exp_3f2504e04f8911d39a0c0305e82c3301"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ExportSummary"
                }
              }
            },
            "description": "The export is queued. Poll urls.self until status is completed, then follow download_url.",
            "headers": {
              "Location": {
                "example": "https://api.octaneai.com/v1/exports/exp_3f2504e04f8911d39a0c0305e82c3301",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "An export of this dataset is already being built; wait for it to finish",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "conflict",
                  "type": "https://api.octaneai.com/errors/conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "An export of this dataset is still being built; wait for it to finish."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Request an export",
        "tags": [
          "exports"
        ],
        "x-rate-class": "write",
        "x-scope": "profiles:read | analytics:read"
      }
    },
    "/v1/exports/{export_id}": {
      "get": {
        "operationId": "export_get",
        "parameters": [
          {
            "in": "path",
            "name": "export_id",
            "required": true,
            "schema": {
              "title": "Export Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bytes": 58311,
                  "completed_at": "2026-09-01T12:00:09Z",
                  "dataset": "profiles",
                  "download_url": "https://octaneai-api-exports.s3.amazonaws.com/exports/...?X-Amz-Expires=900&...",
                  "download_url_expires_at": "2026-09-01T12:15:09Z",
                  "expires_at": "2026-10-01T12:00:00Z",
                  "filters": {
                    "from": "2026-08-01",
                    "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                    "to": "2026-08-31"
                  },
                  "format": "csv",
                  "id": "exp_3f2504e04f8911d39a0c0305e82c3301",
                  "requested_at": "2026-09-01T12:00:00Z",
                  "row_count": 1240,
                  "source": "api",
                  "started_at": "2026-09-01T12:00:02Z",
                  "status": "completed",
                  "urls": {
                    "self": "https://api.octaneai.com/v1/exports/exp_3f2504e04f8911d39a0c0305e82c3301"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ExportSummary"
                }
              }
            },
            "description": "The export; while completed, a download link fresh for 15 minutes. Never cached."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Get an export and its download link",
        "tags": [
          "exports"
        ],
        "x-rate-class": "read",
        "x-scope": "profiles:read | analytics:read"
      }
    },
    "/v1/profiles": {
      "get": {
        "operationId": "profiles_list",
        "parameters": [
          {
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 320,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "quiz_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Quiz Id"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "completed_count": 1,
                      "email": "shopper@example.com",
                      "first_seen_at": "2026-09-01T12:00:00Z",
                      "id": "prof_50e1b7e458f14dfca7a2a5b971af2821",
                      "last_order_at": "2026-09-01T12:40:00Z",
                      "last_seen_at": "2026-09-01T12:00:00Z",
                      "orders_count": 1,
                      "phone": "+14155552671",
                      "quizzes": [
                        {
                          "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                          "name": "Find your routine"
                        }
                      ],
                      "removed": false,
                      "returning": false,
                      "sessions_count": 1,
                      "spent": {
                        "amount": "79.97",
                        "currency": "USD"
                      }
                    }
                  ],
                  "has_more": false,
                  "returning_total": 0,
                  "total": 1
                },
                "schema": {
                  "$ref": "#/components/schemas/ProfileList"
                }
              }
            },
            "description": "One page of shopper profiles. Contact data requires profiles:read and is never cached."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List or find shopper profiles",
        "tags": [
          "profiles"
        ],
        "x-rate-class": "read",
        "x-scope": "profiles:read"
      }
    },
    "/v1/profiles/search": {
      "post": {
        "operationId": "profiles_search",
        "parameters": [
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileSearch",
                "examples": [
                  {
                    "groups": [
                      {
                        "all": [
                          {
                            "component_key": "image_choice-48su5",
                            "kind": "choice",
                            "op": "in",
                            "option_labels": [
                              "Dry"
                            ],
                            "page_key": "skin",
                            "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                          },
                          {
                            "component_key": "number_input-re853",
                            "kind": "number",
                            "max": 50,
                            "min": 30,
                            "op": "between",
                            "page_key": "skin",
                            "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                          }
                        ]
                      },
                      {
                        "all": [
                          {
                            "dimension_id": "dry",
                            "kind": "points",
                            "op": "gt",
                            "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                            "value": 10
                          }
                        ]
                      }
                    ],
                    "match": "any_session"
                  },
                  {
                    "groups": [
                      {
                        "all": [
                          {
                            "component_key": "image_choice-48su5",
                            "kind": "choice",
                            "op": "in",
                            "option_labels": [
                              "Dry"
                            ],
                            "page_key": "skin",
                            "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                          },
                          {
                            "any": [
                              {
                                "component_key": "number_input-re853",
                                "kind": "number",
                                "op": "gt",
                                "page_key": "skin",
                                "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                                "value": 40
                              },
                              {
                                "component_key": "text_input-9k2ma",
                                "kind": "text",
                                "op": "contains",
                                "page_key": "skin",
                                "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                                "value": "eczema"
                              }
                            ]
                          }
                        ]
                      }
                    ],
                    "match": "any_session"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "completed_count": 1,
                      "email": "shopper@example.com",
                      "first_seen_at": "2026-09-01T12:00:00Z",
                      "id": "prof_50e1b7e458f14dfca7a2a5b971af2821",
                      "last_order_at": "2026-09-01T12:40:00Z",
                      "last_seen_at": "2026-09-01T12:00:00Z",
                      "orders_count": 1,
                      "phone": "+14155552671",
                      "quizzes": [
                        {
                          "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                          "name": "Find your routine"
                        }
                      ],
                      "removed": false,
                      "returning": false,
                      "sessions_count": 1,
                      "spent": {
                        "amount": "79.97",
                        "currency": "USD"
                      }
                    }
                  ],
                  "has_more": false,
                  "returning_total": 0,
                  "total": 1,
                  "total_capped": false
                },
                "schema": {
                  "$ref": "#/components/schemas/ProfileList"
                }
              }
            },
            "description": "One page of the matching profiles, newest last-seen first; total is exact up to 5,000 and total_capped says when it stopped there."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Find shopper profiles by what they answered",
        "tags": [
          "profiles"
        ],
        "x-rate-class": "search",
        "x-scope": "profiles:read"
      }
    },
    "/v1/profiles/{profile_id}": {
      "get": {
        "operationId": "profile_get",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "title": "Profile Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "completed_count": 1,
                  "first_seen_at": "2026-09-01T12:00:00Z",
                  "id": "prof_50e1b7e458f14dfca7a2a5b971af2821",
                  "identities": [
                    {
                      "consent": true,
                      "first_seen_at": "2026-09-01T12:00:00Z",
                      "kind": "email",
                      "last_seen_at": "2026-09-01T12:00:00Z",
                      "value": "shopper@example.com"
                    },
                    {
                      "first_seen_at": "2026-09-01T12:00:00Z",
                      "kind": "phone",
                      "value": "+14155552671"
                    }
                  ],
                  "last_order_at": "2026-09-01T12:40:00Z",
                  "last_seen_at": "2026-09-01T12:00:00Z",
                  "latest_results": [
                    {
                      "answers": [
                        {
                          "component_key": "image_choice-48su5",
                          "image_urls": [
                            "https://cdn.shopify.com/s/files/1/0001/skin-dry.jpg"
                          ],
                          "kind": "image",
                          "page_key": "skin",
                          "page_title": "Your skin",
                          "question": "Skin type?",
                          "removed": false,
                          "value": "dry",
                          "values": [
                            "Dry"
                          ]
                        },
                        {
                          "component_key": "number_input-re853",
                          "image_urls": [],
                          "kind": "number",
                          "page_key": "skin",
                          "page_title": "Your skin",
                          "question": "Your age",
                          "removed": false,
                          "value": 42,
                          "values": [
                            "42"
                          ]
                        },
                        {
                          "component_key": "email_input-abc12",
                          "image_urls": [],
                          "kind": "email",
                          "page_key": "contact",
                          "page_title": "Stay in touch",
                          "question": "Email",
                          "removed": false,
                          "value": "shopper@example.com",
                          "values": [
                            "shopper@example.com"
                          ]
                        }
                      ],
                      "completed_at": "2026-09-01T12:04:00Z",
                      "formulas": [
                        {
                          "component_key": "formula-tidtk",
                          "label": "Hydration score",
                          "page_key": "result",
                          "value": 72
                        }
                      ],
                      "points": [
                        {
                          "dimension_id": "dry",
                          "name": "Dry",
                          "total": 14
                        },
                        {
                          "dimension_id": "oily",
                          "name": "Oily",
                          "total": 6
                        }
                      ],
                      "points_total": 20,
                      "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                      "quiz_name": "Find your routine",
                      "result_page": {
                        "page_count": 3,
                        "page_key": "result",
                        "position": 3,
                        "shown_products": [
                          {
                            "block_key": "products-k3x9q",
                            "currency": "USD",
                            "handle": "hydrating-serum",
                            "image": "https://cdn.shopify.com/s/files/1/0001/serum.jpg",
                            "price": 39.0,
                            "product_id": "gid://shopify/Product/8692896989320",
                            "title": "Hydrating Serum",
                            "variant_id": "gid://shopify/ProductVariant/40926435967056",
                            "variant_title": "30 ml"
                          }
                        ],
                        "title": "Your match"
                      },
                      "session_id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e",
                      "started_at": "2026-09-01T12:00:00Z",
                      "version_number": 2,
                      "winner": {
                        "dimension_id": "dry",
                        "name": "Dry",
                        "total": 14
                      }
                    }
                  ],
                  "orders": [
                    {
                      "amount": {
                        "amount": "79.97",
                        "currency": "USD"
                      },
                      "created_at": "2026-09-01T12:40:00Z",
                      "matched_tier": "session",
                      "order_id": "5820135686408",
                      "order_name": "#1042",
                      "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                      "quiz_name": "Find your routine",
                      "session_id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e"
                    }
                  ],
                  "orders_count": 1,
                  "quizzes_taken_count": 1,
                  "removed": false,
                  "returning": false,
                  "returning_count": 0,
                  "sessions": [
                    {
                      "channel": "email",
                      "completed_at": "2026-09-01T12:04:00Z",
                      "country": "US",
                      "device_class": "mobile",
                      "ended_at": "2026-09-01T12:04:00Z",
                      "last_page_key": "result",
                      "last_page_position": 3,
                      "last_page_title": "Your match",
                      "order": {
                        "amount": {
                          "amount": "79.97",
                          "currency": "USD"
                        },
                        "created_at": "2026-09-01T12:40:00Z",
                        "matched_tier": "session",
                        "minutes_after": 36,
                        "order_id": "5820135686408",
                        "order_name": "#1042"
                      },
                      "page_count": 3,
                      "pages_visited": 3,
                      "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                      "quiz_name": "Find your routine",
                      "returning": false,
                      "session_id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e",
                      "started_at": "2026-09-01T12:00:00Z",
                      "status": "completed",
                      "version_number": 2
                    }
                  ],
                  "sessions_count": 1,
                  "spent": {
                    "amount": "79.97",
                    "currency": "USD"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ProfileDetail"
                }
              }
            },
            "description": "The shopper's identities, latest answers and results, sessions, and linked orders."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Get a shopper profile",
        "tags": [
          "profiles"
        ],
        "x-rate-class": "read",
        "x-scope": "profiles:read"
      }
    },
    "/v1/quizzes": {
      "get": {
        "operationId": "quizzes_list",
        "parameters": [
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "draft",
                    "published"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Archived"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "const": "latest_version",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Include"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "archived": false,
                      "created_at": "2026-09-01T12:00:00Z",
                      "id": "quiz_2ccb8aebb27c463fa783cafb3bf858e0",
                      "latest_version": {
                        "created_at": "2026-09-01T12:00:00Z",
                        "id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                        "label": "Autumn launch",
                        "number": 2,
                        "page_count": 3,
                        "published": true,
                        "quiz_id": "quiz_2ccb8aebb27c463fa783cafb3bf858e0"
                      },
                      "name": "Skin routine finder",
                      "page_count": 3,
                      "published_version": "ver_15ce0be06b904d0180b1155da02a6c6f",
                      "status": "published",
                      "updated_at": "2026-09-03T09:00:00Z",
                      "urls": {
                        "dashboard": "https://editor.octaneai.com/bot_123/editor/2ccb8aeb-b27c-463f-a783-cafb3bf858e0",
                        "self": "https://api.octaneai.com/v1/quizzes/quiz_2ccb8aebb27c463fa783cafb3bf858e0",
                        "versions": "https://api.octaneai.com/v1/quizzes/quiz_2ccb8aebb27c463fa783cafb3bf858e0/versions"
                      }
                    },
                    {
                      "archived": false,
                      "created_at": "2026-09-01T12:00:00Z",
                      "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                      "name": "Find your routine",
                      "page_count": 3,
                      "status": "draft",
                      "updated_at": "2026-09-01T12:00:00Z",
                      "urls": {
                        "dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
                        "versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
                      }
                    }
                  ],
                  "has_more": true,
                  "next_cursor": "eyJhdCI6IjIwMjYtMDktMDFUMTI6MDA6MDBaIiwiaWQiOiI3YzllNjY3OSJ9"
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizList"
                }
              }
            },
            "description": "One page of quiz summaries. include=latest_version adds the latest saved version."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List quizzes",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "read",
        "x-scope": "quizzes:read"
      }
    },
    "/v1/quizzes/{quiz_id}": {
      "delete": {
        "operationId": "quiz_delete",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The quiz was soft-deleted."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Soft-delete a quiz",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "write",
        "x-scope": "quizzes:write"
      },
      "get": {
        "operationId": "quiz_get",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "archived": false,
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "name": "Find your routine",
                  "page_count": 3,
                  "status": "draft",
                  "structure": {
                    "dimensions": [
                      {
                        "dimension_id": "dry",
                        "label": "Dry skin"
                      },
                      {
                        "dimension_id": "oily",
                        "label": "Oily skin"
                      }
                    ],
                    "page_count": 3,
                    "pages": [
                      {
                        "component_count": 0,
                        "page_key": "welcome",
                        "role": "start",
                        "title": "Find your routine"
                      },
                      {
                        "component_count": 2,
                        "components": [
                          {
                            "component_key": "multi_choice-k3x9q",
                            "kind": "choice_single",
                            "label": "How does your skin feel by noon?",
                            "option_count": 2,
                            "options": [
                              {
                                "label": "Tight",
                                "option_id": "b1f4d2e0-6c3a-4f0e-9b2a-1d5c7e8f9a01",
                                "scores": [
                                  "dry"
                                ]
                              },
                              {
                                "label": "Shiny",
                                "option_id": "c2a5e3f1-7d4b-4a1f-8c3b-2e6d8f9a0b12",
                                "scores": [
                                  "oily"
                                ]
                              }
                            ],
                            "required": true,
                            "type": "Multiple Choice"
                          },
                          {
                            "component_key": "sliders-p8m2t",
                            "kind": "slider",
                            "label": "How many products do you use?",
                            "range": {
                              "max": 10,
                              "min": 1,
                              "step": 1
                            },
                            "required": true,
                            "type": "Slider"
                          }
                        ],
                        "jumps": [
                          {
                            "condition": {
                              "=": [
                                {
                                  "var": "multi_choice-k3x9q"
                                },
                                "tight"
                              ]
                            },
                            "rule_key": "jump_1",
                            "target_page_key": "results"
                          }
                        ],
                        "page_key": "skin",
                        "role": "question",
                        "title": "Your skin"
                      },
                      {
                        "component_count": 2,
                        "components": [
                          {
                            "component_key": "heading-v7r1c",
                            "kind": "copy",
                            "label": "Your routine",
                            "type": "Heading"
                          },
                          {
                            "component_key": "shopify_product_block-a4n8s",
                            "kind": "products",
                            "label": "Products",
                            "product_source": "points",
                            "type": "Products"
                          }
                        ],
                        "page_key": "results",
                        "role": "results",
                        "title": "Your routine"
                      }
                    ]
                  },
                  "updated_at": "2026-09-01T12:00:00Z",
                  "urls": {
                    "dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
                    "versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizDetail"
                }
              }
            },
            "description": "The quiz summary and its structure: pages in order with their role, content components, rules and jumps, and the scoring dimensions. Never the quiz document; null and empty fields are left out."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Get a quiz",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "read",
        "x-scope": "quizzes:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/answers": {
      "get": {
        "operationId": "quiz_analytics_answers",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "component_key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Component Key"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "answered": 5,
                  "buckets": [],
                  "currency": "USD",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "options": [
                    {
                      "answer_orders": 1,
                      "answer_revenue": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "buyer_rate": 50.0,
                      "buyers": 1,
                      "chose": 3,
                      "chose_share": 60.0,
                      "completed": 2,
                      "completion_rate": 66.67,
                      "image_url": "https://cdn.shopify.com/s/files/1/0001/skin-dry.jpg",
                      "kind": "image",
                      "label": "Dry",
                      "opt_in_rate": 50.0,
                      "opted_in": 1,
                      "option_id": "opt-1",
                      "removed": false
                    }
                  ],
                  "question": {
                    "component_key": "choice-abc12",
                    "kind": "choice",
                    "page_key": "skin",
                    "page_title": "Skin",
                    "question": "Skin type?"
                  },
                  "questions": [
                    {
                      "component_key": "choice-abc12",
                      "kind": "choice",
                      "page_key": "skin",
                      "page_title": "Skin",
                      "question": "Skin type?"
                    }
                  ],
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsAnswers"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz answer conversion",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/breakdown": {
      "get": {
        "operationId": "quiz_analytics_breakdown",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "by",
            "required": true,
            "schema": {
              "enum": [
                "channel",
                "device",
                "new_returning",
                "country"
              ],
              "title": "By",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "by": "channel",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "rows": [
                    {
                      "completions": 5,
                      "email_opt_ins": 2,
                      "phone_opt_ins": 1,
                      "starts": 8,
                      "unique_viewers_approx": 9,
                      "value": "direct",
                      "views": 10
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsBreakdown"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz analytics by dimension",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/funnel": {
      "get": {
        "operationId": "quiz_analytics_funnel",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "completions": 7,
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "in_progress": 0,
                  "not_started": 2,
                  "pages": [
                    {
                      "avg_time_on_page_ms": 5000.0,
                      "dropped_share_of_starts": 12.5,
                      "page_key": "welcome",
                      "removed": false,
                      "sessions_continued": 7,
                      "sessions_dropped": 1,
                      "sessions_reached": 8,
                      "sessions_reached_by_jump": 0,
                      "sessions_skipped": 0,
                      "sessions_went_back": 0,
                      "title": "Welcome"
                    }
                  ],
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "starts": 8,
                  "views": 10
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsFunnel"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz completion funnel",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/overview": {
      "get": {
        "operationId": "quiz_analytics_overview",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data_start": "2026-09-01",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "live_since": "2026-09-01T00:00:00Z",
                  "live_since_approximate": false,
                  "markers": [
                    {
                      "approximate": false,
                      "day": "2026-09-03",
                      "published_at": "2026-09-03T09:00:00Z",
                      "version_number": 3
                    }
                  ],
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "series": [
                    {
                      "avg_time_to_complete_ms": 42000.0,
                      "completions": 5,
                      "consent_denied": 0,
                      "day": "2026-09-01",
                      "email_opt_ins": 2,
                      "median_time_to_complete_ms": 40000.0,
                      "orders": 1,
                      "orders_inside_window": 1,
                      "phone_opt_ins": 1,
                      "revenue": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "revenue_by_bucket": {
                        "added_from_quiz": {
                          "amount": "12.50",
                          "currency": "USD"
                        },
                        "bought_not_shown": {
                          "amount": "0",
                          "currency": "USD"
                        },
                        "shown_bought_later": {
                          "amount": "0",
                          "currency": "USD"
                        }
                      },
                      "starts": 8,
                      "unique_viewers_approx": 9,
                      "views": 10
                    }
                  ],
                  "totals": {
                    "aov": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "avg_quiz_to_checkout_ms": 60000.0,
                    "avg_time_to_complete_ms": 42000.0,
                    "completion_rate": 62.5,
                    "completions": 5,
                    "consent_denied": 0,
                    "email_opt_ins": 2,
                    "median_quiz_to_checkout_ms": 60000.0,
                    "median_time_to_complete_ms": 40000.0,
                    "orders": 1,
                    "orders_inside_window": 1,
                    "phone_opt_ins": 1,
                    "revenue": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "revenue_by_bucket": {
                      "added_from_quiz": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "bought_not_shown": {
                        "amount": "0",
                        "currency": "USD"
                      },
                      "shown_bought_later": {
                        "amount": "0",
                        "currency": "USD"
                      }
                    },
                    "start_rate": 80.0,
                    "starts": 8,
                    "unique_viewers_approx": 9,
                    "views": 10
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizOverview"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz analytics overview",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/paths": {
      "get": {
        "operationId": "quiz_analytics_paths",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cohort",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "finished",
                "left"
              ],
              "title": "Cohort",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "cohort": "all",
                  "data_start": "2026-09-01",
                  "edges": [
                    {
                      "cause": "jump",
                      "from_page_key": "welcome",
                      "jump_rule_key": "jr_1",
                      "moves": 3,
                      "sessions_moved": 3,
                      "to_page_key": "gone"
                    },
                    {
                      "cause": "restart",
                      "from_page_key": "welcome",
                      "moves": 2,
                      "sessions_moved": 2,
                      "to_page_key": "welcome"
                    }
                  ],
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "nodes": [
                    {
                      "entries": 10,
                      "entries_by_jump": 1,
                      "exits_closed": 1,
                      "exits_restarted": 2,
                      "exits_timed_out": 1,
                      "finished_here": 0,
                      "median_time_on_page_ms": 5000.0,
                      "page_key": "welcome",
                      "removed": false,
                      "still_here": 1,
                      "title": "Welcome"
                    },
                    {
                      "entries": 3,
                      "entries_by_jump": 3,
                      "exits_closed": 0,
                      "exits_restarted": 0,
                      "exits_timed_out": 0,
                      "finished_here": 3,
                      "page_key": "gone",
                      "removed": true,
                      "still_here": 0,
                      "title": "Page removed"
                    }
                  ],
                  "other_paths": {
                    "moves": 1,
                    "routes": 1
                  },
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "rules": [
                    {
                      "fired": 3,
                      "jump_rule_key": "jr_1",
                      "source_entries": 10,
                      "source_page_key": "welcome"
                    }
                  ],
                  "sessions": 8,
                  "visibility_skips": [
                    {
                      "page_key": "skin",
                      "removed": false,
                      "times_hidden": 3,
                      "title": "Skin"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsPaths"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz page-to-page journeys",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/products": {
      "get": {
        "operationId": "quiz_analytics_products",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "bucket",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "added_from_quiz",
                    "shown_bought_later",
                    "bought_not_shown"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Bucket"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "revenue",
              "enum": [
                "revenue",
                "units",
                "orders"
              ],
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "line_revenue": {
                    "amount": "12.50",
                    "currency": "USD"
                  },
                  "orders_matched_by_email": 1,
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "rows": [
                    {
                      "had_variants": false,
                      "in_store": true,
                      "line_revenue": {
                        "amount": "12.50",
                        "currency": "USD"
                      },
                      "orders_approx": 1,
                      "product_id": "gid://shopify/Product/1",
                      "quiz_name": "Routine",
                      "revenue_by_bucket": {
                        "added_from_quiz": {
                          "amount": "12.50",
                          "currency": "USD"
                        },
                        "bought_not_shown": {
                          "amount": "0",
                          "currency": "USD"
                        },
                        "shown_bought_later": {
                          "amount": "0",
                          "currency": "USD"
                        }
                      },
                      "shown_on": {
                        "block_key": "product-abc12",
                        "page_key": "result",
                        "page_title": "Your match"
                      },
                      "times_shown": 5,
                      "title": "Serum",
                      "units": 1
                    }
                  ],
                  "sort": "revenue",
                  "total_products": 1,
                  "totals_by_bucket": {
                    "added_from_quiz": {
                      "amount": "12.50",
                      "currency": "USD"
                    },
                    "bought_not_shown": {
                      "amount": "0",
                      "currency": "USD"
                    },
                    "shown_bought_later": {
                      "amount": "0",
                      "currency": "USD"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsProducts"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Products attributed to a quiz",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/analytics/traffic": {
      "get": {
        "operationId": "quiz_analytics_traffic",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "by",
            "required": true,
            "schema": {
              "enum": [
                "referrer_host",
                "utm_source",
                "utm_medium",
                "utm_campaign"
              ],
              "title": "By",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "maximum": 50,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "First day, inclusive, in tz; 29 days before `to` when absent",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First day, inclusive, in tz; 29 days before `to` when absent",
              "title": "From"
            }
          },
          {
            "description": "Last day, inclusive, in tz; today when absent",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last day, inclusive, in tz; today when absent",
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "tz",
            "required": false,
            "schema": {
              "default": "UTC",
              "maxLength": 64,
              "title": "Tz",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channel",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device"
            }
          },
          {
            "in": "query",
            "name": "new_returning",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "New Returning"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "in": "header",
            "name": "if-none-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 1024,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "by": "referrer_host",
                  "filters": {},
                  "freshness": {
                    "as_of": "2026-09-07T12:00:00Z",
                    "closed_days_through": "2026-09-06",
                    "next_refresh_at": "2026-09-07T13:00:00Z",
                    "pending": false,
                    "stale": false,
                    "today_live": true
                  },
                  "other": {
                    "completions": 5,
                    "email_opt_ins": 2,
                    "phone_opt_ins": 1,
                    "starts": 8,
                    "value": "other",
                    "views": 10
                  },
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "range": {
                    "days": 7,
                    "end": "2026-09-07",
                    "start": "2026-09-01",
                    "timezone": "UTC"
                  },
                  "rows": [
                    {
                      "completions": 5,
                      "email_opt_ins": 2,
                      "phone_opt_ins": 1,
                      "starts": 8,
                      "unique_viewers": 9,
                      "value": "google.com",
                      "views": 10
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsTraffic"
                }
              }
            },
            "description": "Analytics for the range. ETag identifies the cached response.",
            "headers": {
              "ETag": {
                "example": "\"5a23d8\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "If-None-Match matches the cached response; no body is sent.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "dependency_unavailable": {
                    "value": {
                      "detail": "A backing service is temporarily unavailable; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "dependency_unavailable",
                      "type": "https://api.octaneai.com/errors/dependency_unavailable"
                    }
                  },
                  "limiter_unavailable": {
                    "value": {
                      "detail": "Request limits cannot be checked right now; retry shortly",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "retry_after": 2,
                      "status": 503,
                      "title": "limiter_unavailable",
                      "type": "https://api.octaneai.com/errors/limiter_unavailable"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits could not be checked for the body, or the store's details could not be read."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Quiz traffic sources",
        "tags": [
          "analytics"
        ],
        "x-rate-class": "analytics",
        "x-scope": "analytics:read"
      }
    },
    "/v1/quizzes/{quiz_id}/archive": {
      "post": {
        "operationId": "quiz_archive",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "archived": true,
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "name": "Find your routine",
                  "page_count": 3,
                  "status": "draft",
                  "updated_at": "2026-09-01T12:00:00Z",
                  "urls": {
                    "dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
                    "versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizSummary"
                }
              }
            },
            "description": "The quiz is archived."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The AI assistant is editing this quiz right now. Wait for it to finish, then save.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "ai_run_in_progress",
                  "type": "https://api.octaneai.com/errors/ai_run_in_progress"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The AI assistant is editing the quiz; try again when it has finished."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Archive a quiz",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "write",
        "x-scope": "quizzes:write"
      }
    },
    "/v1/quizzes/{quiz_id}/unarchive": {
      "post": {
        "operationId": "quiz_unarchive",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "archived": false,
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "name": "Find your routine",
                  "page_count": 3,
                  "status": "draft",
                  "updated_at": "2026-09-01T12:00:00Z",
                  "urls": {
                    "dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
                    "versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizSummary"
                }
              }
            },
            "description": "The quiz is no longer archived."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The AI assistant is editing this quiz right now. Wait for it to finish, then save.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "ai_run_in_progress",
                  "type": "https://api.octaneai.com/errors/ai_run_in_progress"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The AI assistant is editing the quiz; try again when it has finished."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Unarchive a quiz",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "write",
        "x-scope": "quizzes:write"
      }
    },
    "/v1/quizzes/{quiz_id}/versions": {
      "get": {
        "operationId": "quiz_versions_list",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          },
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "created_at": "2026-09-01T12:00:00Z",
                      "id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                      "label": "Autumn launch",
                      "number": 2,
                      "page_count": 3,
                      "published": false,
                      "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                    }
                  ],
                  "has_more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/VersionList"
                }
              }
            },
            "description": "One page of saved version summaries, newest first."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List saved versions",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "read",
        "x-scope": "quizzes:read"
      },
      "post": {
        "operationId": "quiz_version_create",
        "parameters": [
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                  "label": "Autumn launch",
                  "number": 2,
                  "page_count": 3,
                  "published": false,
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                },
                "schema": {
                  "$ref": "#/components/schemas/VersionSummary"
                }
              }
            },
            "description": "The draft was saved as a version."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Save the draft as a version",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "write",
        "x-scope": "quizzes:write"
      }
    },
    "/v1/quizzes/{quiz_id}/versions/{version_id}": {
      "get": {
        "operationId": "quiz_version_get",
        "parameters": [
          {
            "in": "path",
            "name": "version_id",
            "required": true,
            "schema": {
              "title": "Version Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                  "label": "Autumn launch",
                  "number": 2,
                  "page_count": 3,
                  "published": false,
                  "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7"
                },
                "schema": {
                  "$ref": "#/components/schemas/VersionSummary"
                }
              }
            },
            "description": "The saved version summary."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Get a saved version summary",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "read",
        "x-scope": "quizzes:read"
      }
    },
    "/v1/quizzes/{quiz_id}/versions/{version_id}/publish": {
      "post": {
        "operationId": "quiz_version_publish",
        "parameters": [
          {
            "in": "path",
            "name": "version_id",
            "required": true,
            "schema": {
              "title": "Version Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "quiz_id",
            "required": true,
            "schema": {
              "title": "Quiz Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "archived": false,
                  "created_at": "2026-09-01T12:00:00Z",
                  "id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                  "name": "Find your routine",
                  "page_count": 3,
                  "published_version": "ver_15ce0be06b904d0180b1155da02a6c6f",
                  "status": "published",
                  "updated_at": "2026-09-01T12:00:00Z",
                  "urls": {
                    "dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
                    "versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/QuizSummary"
                }
              }
            },
            "description": "The selected version is now published."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Cannot publish a version with no pages; an app must have at least one page.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "conflict",
                  "type": "https://api.octaneai.com/errors/conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The selected version has no pages."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Publish a saved version",
        "tags": [
          "quizzes"
        ],
        "x-rate-class": "write",
        "x-scope": "quizzes:publish"
      }
    },
    "/v1/store": {
      "get": {
        "operationId": "store_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "credits": {
                    "limit": 50000,
                    "overages_enabled": true,
                    "threshold": 60000,
                    "used": 12450
                  },
                  "currency": "USD",
                  "limits": {
                    "analytics_soft_ttl_seconds": 60,
                    "bot_multiplier": 3,
                    "capacity": 72,
                    "export_page_pause_ms": 100,
                    "leak_per_second": 12,
                    "webhook_endpoints": 5,
                    "webhook_sends_per_second": 50
                  },
                  "name": "Bench store",
                  "plan_class": "plus",
                  "scopes": [
                    "analytics:read",
                    "quizzes:read"
                  ],
                  "shop_domain": "bench-store.myshopify.com",
                  "timezone": "America/New_York"
                },
                "schema": {
                  "$ref": "#/components/schemas/StoreResponse"
                }
              }
            },
            "description": "The store behind the key: who it is, its currency and timezone, its plan class, limits, the key's scopes and credit usage."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "The store behind the key",
        "tags": [
          "store"
        ],
        "x-rate-class": "read",
        "x-scope": "any"
      }
    },
    "/v1/webhooks": {
      "get": {
        "operationId": "webhooks_list",
        "parameters": [
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "consecutive_failures": 0,
                      "created_at": "2026-09-01T12:00:00Z",
                      "description": "Order desk",
                      "id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                      "include_pii": false,
                      "last_delivered_at": "2026-09-07T09:12:00Z",
                      "status": "active",
                      "topics": [
                        "quiz.finished",
                        "profile.created"
                      ],
                      "updated_at": "2026-09-01T12:00:05Z",
                      "url": "https://hooks.example.com/octane",
                      "verified_at": "2026-09-01T12:00:05Z"
                    }
                  ],
                  "has_more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookList"
                }
              }
            },
            "description": "One page of the store's endpoints; status reads paused_plan while the plan has no API."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List webhook endpoints",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "read",
        "x-scope": "webhooks:manage"
      },
      "post": {
        "operationId": "webhook_create",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "endpoint": {
                    "consecutive_failures": 0,
                    "created_at": "2026-09-01T12:00:00Z",
                    "description": "Order desk",
                    "id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                    "include_pii": false,
                    "last_delivered_at": "2026-09-07T09:12:00Z",
                    "status": "active",
                    "topics": [
                      "quiz.finished",
                      "profile.created"
                    ],
                    "updated_at": "2026-09-01T12:00:05Z",
                    "url": "https://hooks.example.com/octane",
                    "verified_at": "2026-09-01T12:00:05Z"
                  },
                  "secret": "whsec_AAECAwQFBgcICQoLDA0ODxAREhMUFRYX"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookCreated"
                }
              }
            },
            "description": "The existing endpoint with this URL and configuration, and its secret."
          },
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "endpoint": {
                    "consecutive_failures": 0,
                    "created_at": "2026-09-01T12:00:00Z",
                    "description": "Order desk",
                    "id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                    "include_pii": false,
                    "status": "pending",
                    "topics": [
                      "quiz.finished",
                      "profile.created"
                    ],
                    "updated_at": "2026-09-01T12:00:00Z",
                    "url": "https://hooks.example.com/octane"
                  },
                  "secret": "whsec_AAECAwQFBgcICQoLDA0ODxAREhMUFRYX"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookCreated"
                }
              }
            },
            "description": "The new endpoint, pending until a test ping reaches it, and its secret (shown once here)."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Create a webhook endpoint",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}": {
      "delete": {
        "operationId": "webhook_delete",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The endpoint and its deliveries are gone."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Delete a webhook endpoint and its deliveries",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      },
      "get": {
        "operationId": "webhook_get",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "consecutive_failures": 0,
                  "created_at": "2026-09-01T12:00:00Z",
                  "description": "Order desk",
                  "id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                  "include_pii": false,
                  "last_delivered_at": "2026-09-07T09:12:00Z",
                  "status": "active",
                  "topics": [
                    "quiz.finished",
                    "profile.created"
                  ],
                  "updated_at": "2026-09-01T12:00:05Z",
                  "url": "https://hooks.example.com/octane",
                  "verified_at": "2026-09-01T12:00:05Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookSummary"
                }
              }
            },
            "description": "The endpoint."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Get a webhook endpoint",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "read",
        "x-scope": "webhooks:manage"
      },
      "patch": {
        "operationId": "webhook_update",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "consecutive_failures": 0,
                  "created_at": "2026-09-01T12:00:00Z",
                  "description": "Order desk",
                  "id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                  "include_pii": false,
                  "last_delivered_at": "2026-09-07T09:12:00Z",
                  "status": "active",
                  "topics": [
                    "quiz.finished",
                    "profile.created"
                  ],
                  "updated_at": "2026-09-01T12:00:05Z",
                  "url": "https://hooks.example.com/octane",
                  "verified_at": "2026-09-01T12:00:05Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookSummary"
                }
              }
            },
            "description": "The updated endpoint."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Update webhook subscriptions or status",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/deliveries": {
      "get": {
        "operationId": "webhook_deliveries_list",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          },
          {
            "description": "From the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "From the previous page's nextCursor",
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "attempts": 1,
                      "created_at": "2026-09-07T09:11:58Z",
                      "delivered_at": "2026-09-07T09:12:00Z",
                      "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                      "event_id": "evt_6ba7b8109dad11d180b400c04fd430c8",
                      "id": "whd_7c9e6679742540de944be07fc1f90ae7",
                      "last_response": "ok",
                      "last_status_code": 200,
                      "next_attempt_at": "2026-09-07T09:12:00Z",
                      "payload": {
                        "api_version": "v1",
                        "created": "2026-09-07T09:11:58Z",
                        "data": {
                          "object": {
                            "answered_count": 1,
                            "answers": {
                              "image_choice-48su5": {
                                "kind": "image",
                                "label": "Skin type?",
                                "option_ids": [
                                  "dry"
                                ],
                                "page_key": "skin",
                                "value": "dry",
                                "values": [
                                  "Dry"
                                ]
                              }
                            },
                            "channel": "email",
                            "completed_at": "2026-09-07T09:11:30Z",
                            "country": "US",
                            "device": {
                              "browser": "Mobile Safari",
                              "browser_version": "17.5",
                              "class": "mobile",
                              "family": "iPhone",
                              "model": "iPhone",
                              "os": "iOS",
                              "os_version": "17.5",
                              "vendor": "Apple"
                            },
                            "ended_at": "2026-09-07T09:11:30Z",
                            "formulas": [
                              {
                                "component_key": "formula-tidtk",
                                "label": "Hydration score",
                                "page_key": "result",
                                "value": 72
                              }
                            ],
                            "id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e",
                            "last_page": "result",
                            "page_url": "https://shop.example.com/pages/quiz",
                            "points": [
                              {
                                "dimension_id": "dry",
                                "name": "Dry",
                                "total": 14
                              }
                            ],
                            "products_shown": [],
                            "property_mappings": [],
                            "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                            "quiz_name": "Find your routine",
                            "started_at": "2026-09-07T09:08:00Z",
                            "utm_source": "newsletter",
                            "version_id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                            "version_number": 2,
                            "visitor_id": "vis_0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d"
                          }
                        },
                        "id": "evt_6ba7b8109dad11d180b400c04fd430c8",
                        "type": "quiz.finished"
                      },
                      "status": "delivered",
                      "topic": "quiz.finished"
                    },
                    {
                      "attempts": 0,
                      "created_at": "2026-09-07T09:11:58Z",
                      "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                      "event_id": "evt_15ce0be06b904d0180b1155da02a6c6f",
                      "id": "whd_15ce0be06b904d0180b1155da02a6c6f",
                      "next_attempt_at": "2026-09-07T09:12:00Z",
                      "payload": {
                        "api_version": "v1",
                        "created": "2026-09-07T09:11:58Z",
                        "data": {
                          "object": {
                            "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301"
                          }
                        },
                        "id": "evt_15ce0be06b904d0180b1155da02a6c6f",
                        "type": "ping"
                      },
                      "status": "pending",
                      "topic": "ping"
                    }
                  ],
                  "has_more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/DeliveryList"
                }
              }
            },
            "description": "One page of the endpoint's deliveries, newest first, each with the payload as it was signed."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "List deliveries and their stored payloads",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "read",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/deliveries/{delivery_id}/redeliver": {
      "post": {
        "operationId": "webhook_redeliver",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "delivery_id",
            "required": true,
            "schema": {
              "title": "Delivery Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "attempts": 1,
                  "created_at": "2026-09-07T09:11:58Z",
                  "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                  "event_id": "evt_6ba7b8109dad11d180b400c04fd430c8",
                  "id": "whd_7c9e6679742540de944be07fc1f90ae7",
                  "last_response": "ok",
                  "last_status_code": 200,
                  "next_attempt_at": "2026-09-07T09:12:00Z",
                  "payload": {
                    "api_version": "v1",
                    "created": "2026-09-07T09:11:58Z",
                    "data": {
                      "object": {
                        "answered_count": 1,
                        "answers": {
                          "image_choice-48su5": {
                            "kind": "image",
                            "label": "Skin type?",
                            "option_ids": [
                              "dry"
                            ],
                            "page_key": "skin",
                            "value": "dry",
                            "values": [
                              "Dry"
                            ]
                          }
                        },
                        "channel": "email",
                        "completed_at": "2026-09-07T09:11:30Z",
                        "country": "US",
                        "device": {
                          "browser": "Mobile Safari",
                          "browser_version": "17.5",
                          "class": "mobile",
                          "family": "iPhone",
                          "model": "iPhone",
                          "os": "iOS",
                          "os_version": "17.5",
                          "vendor": "Apple"
                        },
                        "ended_at": "2026-09-07T09:11:30Z",
                        "formulas": [
                          {
                            "component_key": "formula-tidtk",
                            "label": "Hydration score",
                            "page_key": "result",
                            "value": 72
                          }
                        ],
                        "id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e",
                        "last_page": "result",
                        "page_url": "https://shop.example.com/pages/quiz",
                        "points": [
                          {
                            "dimension_id": "dry",
                            "name": "Dry",
                            "total": 14
                          }
                        ],
                        "products_shown": [],
                        "property_mappings": [],
                        "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7",
                        "quiz_name": "Find your routine",
                        "started_at": "2026-09-07T09:08:00Z",
                        "utm_source": "newsletter",
                        "version_id": "ver_15ce0be06b904d0180b1155da02a6c6f",
                        "version_number": 2,
                        "visitor_id": "vis_0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d"
                      }
                    },
                    "id": "evt_6ba7b8109dad11d180b400c04fd430c8",
                    "type": "quiz.finished"
                  },
                  "status": "pending",
                  "topic": "quiz.finished"
                },
                "schema": {
                  "$ref": "#/components/schemas/DeliverySummary"
                }
              }
            },
            "description": "The delivery, queued again with its attempt history kept."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Redeliver an event and replace its previous outcome",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/redeliver-failed": {
      "post": {
        "operationId": "webhook_redeliver_failed",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookRedeliverFailed",
                "examples": [
                  {
                    "since": "2026-09-05T00:00:00Z"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "count": 3
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookRedelivered"
                }
              }
            },
            "description": "How many failed deliveries were queued again."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Redeliver failed events since a timestamp",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/reveal-secret": {
      "post": {
        "operationId": "webhook_reveal_secret",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "secret": "whsec_AAECAwQFBgcICQoLDA0ODxAREhMUFRYX"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookSecret"
                }
              }
            },
            "description": "The current signing secret."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Reveal the endpoint signing secret",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/rotate-secret": {
      "post": {
        "operationId": "webhook_rotate_secret",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "secret": "whsec_AAECAwQFBgcICQoLDA0ODxAREhMUFRYX"
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookSecret"
                }
              }
            },
            "description": "The new signing secret; the previous one keeps signing for 24 hours."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Rotate the signing secret with 24-hour overlap",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    },
    "/v1/webhooks/{endpoint_id}/test": {
      "post": {
        "operationId": "webhook_test",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "attempts": 0,
                  "created_at": "2026-09-07T09:11:58Z",
                  "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301",
                  "event_id": "evt_15ce0be06b904d0180b1155da02a6c6f",
                  "id": "whd_15ce0be06b904d0180b1155da02a6c6f",
                  "next_attempt_at": "2026-09-07T09:12:00Z",
                  "payload": {
                    "api_version": "v1",
                    "created": "2026-09-07T09:11:58Z",
                    "data": {
                      "object": {
                        "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301"
                      }
                    },
                    "id": "evt_15ce0be06b904d0180b1155da02a6c6f",
                    "type": "ping"
                  },
                  "status": "pending",
                  "topic": "ping"
                },
                "schema": {
                  "$ref": "#/components/schemas/DeliverySummary"
                }
              }
            },
            "description": "The queued ping delivery."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The API key is missing, malformed, revoked or expired",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 401,
                  "title": "invalid_api_key",
                  "type": "https://api.octaneai.com/errors/invalid_api_key"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key is missing, malformed, revoked or expired.",
            "headers": {
              "WWW-Authenticate": {
                "example": "Bearer",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "examples": {
                  "insufficient_scope": {
                    "value": {
                      "detail": "The API key does not carry the scope this route needs",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "required": [
                        "quizzes:read"
                      ],
                      "status": 403,
                      "title": "insufficient_scope",
                      "type": "https://api.octaneai.com/errors/insufficient_scope"
                    }
                  },
                  "plan_required": {
                    "value": {
                      "detail": "The merchant API is available on the Plus and Enterprise plans",
                      "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "status": 403,
                      "title": "plan_required",
                      "type": "https://api.octaneai.com/errors/plan_required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The store's plan has no API access, or the key lacks the scope."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Not found",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 404,
                  "title": "not_found",
                  "type": "https://api.octaneai.com/errors/not_found"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The endpoint cannot be changed in its current state",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 409,
                  "title": "webhook_conflict",
                  "type": "https://api.octaneai.com/errors/webhook_conflict"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The endpoint limit was reached or the requested change conflicts with the endpoint's state."
          },
          "422": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "A request parameter is invalid.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 422,
                  "title": "validation_error",
                  "type": "https://api.octaneai.com/errors/validation_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "A request parameter is invalid."
          },
          "429": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Too many requests",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "retry_after": 1,
                  "status": 429,
                  "title": "rate_limited",
                  "type": "https://api.octaneai.com/errors/rate_limited"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The key's or the store's bucket is full; Retry-After says when to try again."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "Request limits cannot be checked right now; retry shortly",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 503,
                  "title": "limiter_unavailable",
                  "type": "https://api.octaneai.com/errors/limiter_unavailable"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Request limits cannot be checked right now; retry shortly."
          },
          "504": {
            "content": {
              "application/problem+json": {
                "example": {
                  "detail": "The request timed out.",
                  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                  "status": 504,
                  "title": "timeout",
                  "type": "https://api.octaneai.com/errors/timeout"
                },
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ],
        "summary": "Queue a signed ping",
        "tags": [
          "webhooks"
        ],
        "x-rate-class": "write",
        "x-scope": "webhooks:manage"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.octaneai.com"
    }
  ],
  "tags": [
    {
      "description": "The store behind the key: plan, limits and credits.",
      "name": "store"
    },
    {
      "description": "Quizzes and their versions: list, read, archive, delete, create and publish a version.",
      "name": "quizzes"
    },
    {
      "description": "Aggregated quiz analytics: overview, breakdowns, funnel, paths, products, answers and traffic.",
      "name": "analytics"
    },
    {
      "description": "Shopper profiles: list, find by what they answered, and read one.",
      "name": "profiles"
    },
    {
      "description": "CSV exports of profiles, responses and quiz analytics, built in the background.",
      "name": "exports"
    },
    {
      "description": "Webhook endpoints, their deliveries and the events they can carry.",
      "name": "webhooks"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Store",
      "tags": [
        "store"
      ]
    },
    {
      "name": "Quizzes",
      "tags": [
        "quizzes"
      ]
    },
    {
      "name": "Analytics",
      "tags": [
        "analytics"
      ]
    },
    {
      "name": "People",
      "tags": [
        "profiles"
      ]
    },
    {
      "name": "Exports",
      "tags": [
        "exports"
      ]
    },
    {
      "name": "Webhooks",
      "tags": [
        "webhooks"
      ]
    }
  ]
}
