openapi: 3.0.0
info:
  title: 'API Reference - Alterable'
  description: "# Introduction\n\nWelcome to the reference for Alterable REST API!\n\n[REST](http://en.wikipedia.org/wiki/REST_API) is a web-service protocol that lends itself to rapid development by using everyday\nHTTP and JSON technology.\n\nLast update: 2026-08-23\n\n# Authentication\n\n## Get your API Token\n\nOnce your are logged navigate to [API Settings](https://next.alterable.com/settings#/api) and create your API token.\n\nYou can name your token, so you know where this one is going to be used, in case you ever need to revoke it.\n\nOnce you create a token, it'll be shown only once to you. Make sure to store it safely, after this it can only be revoked and you can generate a new token for use.\n\nOnce you have your token, you can authenticate against the API.\n\n## Authenticate against the API\n\nThe token you've received can be used as the `Bearer` authentication header.\n\nHere's a curl example of how you can authenticate against the API. In this example, it'll list all countdown timers in your account.\n\n```\n$ curl https://next.alterable.com/api/v1/countdown-timers \\\n    -H 'Authorization: Bearer zSgHP42Qcf91QUFkn8fDpOli9R3vDD3Guzaoe8ZiQDo8m2w1QbeGabmHNVVI' \\\n    -H 'Accept: application/json' \\\n    -H 'Content-Type: application/json'\n```\n\nIn this example, `zSgHP42Qcf91QUFkn8fDpOli9R3vDD3Guzaoe8ZiQDo8m2w1QbeGabmHNVVI` is the API token you retrieved earlier.\n\n# MCP server (AI assistants)\n\nEvery resource in this reference is also available to AI assistants through a [Model Context Protocol](https://modelcontextprotocol.io) server at `https://next.alterable.com/mcp` (Streamable HTTP). It uses the same API tokens: send them as `Authorization: Bearer <token>`.\n\n```\nclaude mcp add --transport http alterable https://next.alterable.com/mcp --header \"Authorization: Bearer <token>\"\n```\n\nClients that require OAuth (claude.ai custom connectors, ChatGPT) can connect with the same URL and no token: discovery documents are served under `/.well-known/`, dynamic client registration is enabled, and you will be asked to sign in and approve the connection. Access can be limited per resource and action (e.g. `countdown_timers:read`, `surveys:write`), whether you create a token in API Settings or approve an OAuth connection on the consent screen. Both can be revoked from API Settings.\n\nThe server exposes tools to list, create, update and delete countdown timers, dynamic images and products, local maps, scratchers, surveys, images, products and merge tags, fetch embed codes and read analytics, plus reference resources describing targeting rules and allowed values. Validation, plan limits and team scoping are identical to the REST API.\n\n# Headers\n\nMake sure you have the following content type headers are set on every request:\n```\nAccept: application/json\nContent-Type: application/json\n```\n\n# Errors\n\nThe Alterable REST API uses conventional HTTP response codes to indicate the success or failure of an API request. The table below contains a summary of the typical response codes:\n\nCode | Description\n---- | -----------\n200 | Everything is ok.\n400 | Valid data was given but the request has failed.\n401 | No valid API Key was given.\n404 | The request resource could not be found.\n405 | The request method is not allowed.\n422 | The payload has missing required parameters or invalid data was given.\n429 | Too many attempts.\n500 | Request failed due to an internal error in Alterable.\n503 | Alterable is offline for maintenance.\n\n# Rate limiting\n\nWe have set a limit of requests per method to avoid unnecessary load on our servers. This limit is currently set at 60 requests per minute but we reserve the right to change it at any time and without warning. Therefor, we highly recommend that you make sure your application make use of the Rate Limiting Headers described below.\n\nWhen you are receiving a response, you have the ability to get rate limiting status with the following headers:\n```\nHTTP/1.1 200 OK\nDate: Mon, 22 Oct 2018 18:19:43 GMT\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 59\n```\n\nHeader Name | Description\n----------- | -----------\n`X-RateLimit-Limit` | The maximum number of requests you're permitted to make.\n`X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window.\n\nWhen this limit is exceeded the API sends a HTTP status code `429 Too Many Requests`, with the following headers:\n```\nHTTP/1.1 429 Too Many Requests\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 0\nRetry-After: 2\nX-RateLimit-Reset: 1540233499\n```\n\nHeader Name | Description\n----------- | -----------\n`Retry-After` | How many seconds you should wait before trying again.\n`X-RateLimit-Reset` | The time at which the current rate limit window resets in [UTC epoch seconds](http://en.wikipedia.org/wiki/Unix_time)."
  termsOfService: https://next.alterable.com/terms-and-conditions
  contact:
    name: Alterable
    email: support@alterable.com
  version: '0.1'
servers:
  -
    url: https://next.alterable.com/api
paths:
  /v1/countdown-timers:
    get:
      tags:
        - 'Countdown Timers'
      summary: 'Get all countdown timers'
      description: 'This reference describes how to query all countdown timers through the REST API.'
      operationId: GET_CountdownTimers
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/countdown_timer'
    post:
      tags:
        - 'Countdown Timers'
      summary: 'Create a countdown timer'
      description: 'This reference describes how to create a new countdown timer through the REST API. The countdown timer will be active as soon as it has been created.'
      operationId: POST_CountdownTimer
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/countdown_timer'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { type: string, format: uuid, example: 72e02882-d632-11e8-932d-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/countdown-timers/{countdownTimerId}':
    get:
      tags:
        - 'Countdown Timers'
      summary: 'Get a countdown timer'
      description: 'This reference describes how to query a countdown timer through the REST API.'
      operationId: GET_CountdownTimer
      parameters:
        -
          name: countdownTimerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/countdown_timer'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Countdown Timers'
      summary: 'Update a countdown timer'
      description: 'This reference describes how to update an existing countdown timer through the REST API.'
      operationId: PUT_CountdownTimer
      parameters:
        -
          name: countdownTimerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/countdown_timer'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Countdown Timers'
      summary: 'Delete a countdown timer'
      description: 'This reference describes how to delete a countdown timer through the REST API.'
      operationId: DELETE_CountdownTimer
      parameters:
        -
          name: countdownTimerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/countdown-timers/{countdownTimerId}/restore':
    post:
      tags:
        - 'Countdown Timers'
      summary: 'Restore a countdown timer'
      description: 'This reference describes how to restore a countdown timer (that was previously deleted) through the REST API.'
      operationId: RESTORE_CountdownTimer
      parameters:
        -
          name: countdownTimerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/countdown-timers/{countdownTimerId}/embed':
    get:
      tags:
        - 'Countdown Timers'
      summary: 'Get countdown timer embed code'
      operationId: GET_CountdownTimerEmbedCode
      parameters:
        -
          name: countdownTimerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/dynamic-images:
    get:
      tags:
        - 'Dynamic Images'
      summary: 'Get all dynamic images'
      description: 'This reference describes how to query all dynamic images through the REST API.'
      operationId: GET_DynamicImages
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/dynamic_image'
    post:
      tags:
        - 'Dynamic Images'
      summary: 'Create a dynamic image'
      description: 'This reference describes how to create a new dynamic image through the REST API. The dynamic image will be active as soon as it has been created.'
      operationId: POST_DynamicImage
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/dynamic_image'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/dynamic-images/{dynamicImageId}':
    get:
      tags:
        - 'Dynamic Images'
      summary: 'Get a dynamic image'
      description: 'This reference describes how to query a dynamic image through the REST API.'
      operationId: GET_DynamicImage
      parameters:
        -
          name: dynamicImageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dynamic_image'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Dynamic Images'
      summary: 'Update a dynamic image'
      description: 'This reference describes how to update an existing dynamic image through the REST API.'
      operationId: PUT_DynamicImage
      parameters:
        -
          name: dynamicImageId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/dynamic_image'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Dynamic Images'
      summary: 'Delete a dynamic image'
      description: 'This reference describes how to delete a dynamic image through the REST API.'
      operationId: DELETE_DynamicImage
      parameters:
        -
          name: dynamicImageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/dynamic-images/{dynamicImageId}/restore':
    post:
      tags:
        - 'Dynamic Images'
      summary: 'Restore a dynamic image'
      description: 'This reference describes how to restore a dynamic image (that was previously deleted) through the REST API.'
      operationId: RESTORE_DynamicImage
      parameters:
        -
          name: dynamicImageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/dynamic-images/{dynamicImageId}/embed':
    get:
      tags:
        - 'Dynamic Images'
      summary: 'Get dynamic image embed code'
      operationId: GET_DynamicImageEmbedCode
      parameters:
        -
          name: dynamicImageId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/dynamic-products:
    get:
      tags:
        - 'Dynamic Products'
      summary: 'Get all dynamic products'
      description: 'This reference describes how to query all dynamic products through the REST API.'
      operationId: GET_DynamicProducts
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/dynamic_product'
    post:
      tags:
        - 'Dynamic Products'
      summary: 'Create a dynamic product'
      description: 'This reference describes how to create a new dynamic product through the REST API. The dynamic product will be active as soon as it has been created.'
      operationId: POST_DynamicProduct
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/dynamic_product'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/dynamic-products/{dynamicProductId}':
    get:
      tags:
        - 'Dynamic Products'
      summary: 'Get a dynamic product'
      description: 'This reference describes how to query a dynamic product through the REST API.'
      operationId: GET_DynamicProduct
      parameters:
        -
          name: dynamicProductId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dynamic_product'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Dynamic Products'
      summary: 'Update a dynamic product'
      description: 'This reference describes how to update an existing dynamic product through the REST API.'
      operationId: PUT_DynamicProduct
      parameters:
        -
          name: dynamicProductId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/dynamic_product'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Dynamic Products'
      summary: 'Delete a dynamic product'
      description: 'This reference describes how to delete a dynamic product through the REST API.'
      operationId: DELETE_DynamicProduct
      parameters:
        -
          name: dynamicProductId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/dynamic-products/{dynamicProductId}/restore':
    post:
      tags:
        - 'Dynamic Products'
      summary: 'Restore a dynamic product'
      description: 'This reference describes how to restore a dynamic product (that was previously deleted) through the REST API.'
      operationId: RESTORE_DynamicProduct
      parameters:
        -
          name: dynamicProductId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/dynamic-products/{dynamicProductId}/embed':
    get:
      tags:
        - 'Dynamic Products'
      summary: 'Get dynamic product embed code'
      operationId: GET_DynamicProductEmbedCode
      parameters:
        -
          name: dynamicProductId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/images:
    get:
      tags:
        - Images
      summary: 'Get all images'
      description: 'This reference describes how to query all images through the REST API.'
      operationId: GET_Images
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/image'
    post:
      tags:
        - Images
      summary: 'Create an image'
      description: 'This reference describes how to create a new image through the REST API.'
      operationId: POST_Image
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/image'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/images/{imageId}':
    get:
      tags:
        - Images
      summary: 'Get am image'
      description: 'This reference describes how to query an image through the REST API.'
      operationId: GET_Image
      parameters:
        -
          name: imageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/image'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    delete:
      tags:
        - Images
      summary: 'Delete an image'
      description: 'This reference describes how to delete an image through the REST API.'
      operationId: DELETE_Image
      parameters:
        -
          name: imageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/local-maps:
    get:
      tags:
        - 'Local Maps'
      summary: 'Get all local maps'
      description: 'This reference describes how to query all local maps through the REST API.'
      operationId: GET_LocalMaps
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/local_map'
    post:
      tags:
        - 'Local Maps'
      summary: 'Create a local map'
      description: 'This reference describes how to create a new local map through the REST API. The local map will be active as soon as it has been created.'
      operationId: POST_LocalMap
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/local_map'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { type: string, format: uuid, example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/local-maps/{localMapId}':
    get:
      tags:
        - 'Local Maps'
      summary: 'Get a local map'
      description: 'This reference describes how to query a local map through the REST API.'
      operationId: GET_LocalMap
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/local_map'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Local Maps'
      summary: 'Update a local map'
      description: 'This reference describes how to update an existing local map through the REST API.'
      operationId: PUT_LocalMap
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/local_map'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Local Maps'
      summary: 'Delete a local map'
      description: 'This reference describes how to delete a local map through the REST API.'
      operationId: DELETE_LocalMap
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/local-maps/{localMapId}/restore':
    post:
      tags:
        - 'Local Maps'
      summary: 'Restore a local map'
      description: 'This reference describes how to restore a local map (that was previously deleted) through the REST API.'
      operationId: RESTORE_LocalMap
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/local-maps/{localMapId}/embed':
    get:
      tags:
        - 'Local Maps'
      summary: 'Get local map embed code'
      operationId: GET_LocalMapEmbedCode
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/local-maps/{localMapId}/locations':
    get:
      tags:
        - 'Local Maps'
      summary: 'Get all locations for a given local map'
      description: 'This reference describes how to query all locations for a given local map through the REST API.'
      operationId: GET_LocalMap_Locations
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/location'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    post:
      tags:
        - 'Local Maps'
      summary: 'Create a location for a given local map'
      description: 'This reference describes how to create a new location for a given local map through the REST API. The location will be active as soon as it has been created.'
      operationId: POST_LocalMap_Location
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/location'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { type: string, format: uuid, example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/local-maps/{localMapId}/locations/{locationId}':
    get:
      tags:
        - 'Local Maps'
      summary: 'Get a location for a given local map'
      description: 'This reference describes how to query a location for a given local map through the REST API.'
      operationId: GET_LocalMap_Location
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        -
          name: locationId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/location'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Local Maps'
      summary: 'Update a location for a given local map'
      description: 'This reference describes how to update an existing location for a given local map through the REST API.'
      operationId: PUT_LocalMap_Location
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        -
          name: locationId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/location'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Local Maps'
      summary: 'Delete a location for a given local map'
      description: 'This reference describes how to delete a local map through the REST API.'
      operationId: DELETE_LocalMap_Location
      parameters:
        -
          name: localMapId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        -
          name: locationId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/merge-tags:
    get:
      tags:
        - 'Merge Tags'
      summary: 'Get all merge tags'
      description: 'This reference describes how to query all merge tags through the REST API.'
      operationId: GET_MergeTags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/merge_tag'
    post:
      tags:
        - 'Merge Tags'
      summary: 'Create a merge tag'
      description: 'This reference describes how to create a new merge tag through the REST API.'
      operationId: POST_MergeTag
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/merge_tag'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/merge-tags/{mergeTagId}':
    get:
      tags:
        - 'Merge Tags'
      summary: 'Get a merge tag'
      description: 'This reference describes how to query a merge tag through the REST API.'
      operationId: GET_MergeTag
      parameters:
        -
          name: mergeTagId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/merge_tag'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - 'Merge Tags'
      summary: 'Update a merge tag'
      description: 'This reference describes how to update an existing merge tag through the REST API.'
      operationId: PUT_MergeTag
      parameters:
        -
          name: mergeTagId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/merge_tag'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - 'Merge Tags'
      summary: 'Delete a merge tag'
      description: 'This reference describes how to delete a merge tag through the REST API.'
      operationId: DELETE_MergeTag
      parameters:
        -
          name: mergeTagId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/merge-tags/{mergeTagId}/restore':
    post:
      tags:
        - 'Merge Tags'
      summary: 'Restore a merge tag'
      description: 'This reference describes how to restore a merge tag (that was previously deleted) through the REST API.'
      operationId: RESTORE_MergeTag
      parameters:
        -
          name: mergeTagId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/products:
    get:
      tags:
        - Products
      summary: 'Get all products'
      description: 'This reference describes how to query all products through the REST API.'
      operationId: GET_Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/product'
    post:
      tags:
        - Products
      summary: 'Create a product'
      description: 'This reference describes how to create a new product through the REST API.'
      operationId: POST_Product
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { example: 17665578-d635-11e8-aa1c-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/products/{productId}':
    get:
      tags:
        - Products
      summary: 'Get a product'
      description: 'This reference describes how to query a product through the REST API.'
      operationId: GET_Product
      parameters:
        -
          name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - Products
      summary: 'Update a product'
      description: 'This reference describes how to update an existing product through the REST API.'
      operationId: PUT_Product
      parameters:
        -
          name: productId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - Products
      summary: 'Delete a product'
      description: 'This reference describes how to delete a product through the REST API.'
      operationId: DELETE_Product
      parameters:
        -
          name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/products/{productId}/restore':
    post:
      tags:
        - Products
      summary: 'Restore a product'
      description: 'This reference describes how to restore a product (that was previously deleted) through the REST API.'
      operationId: RESTORE_Product
      parameters:
        -
          name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/scratchers:
    get:
      tags:
        - Scratchers
      summary: 'Get all scratchers'
      description: 'This reference describes how to query all scratchers through the REST API.'
      operationId: GET_Scratchers
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/scratcher'
    post:
      tags:
        - Scratchers
      summary: 'Create a scratcher'
      description: 'This reference describes how to create a new scratcher through the REST API.'
      operationId: POST_Scratcher
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/scratcher'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { type: string, format: uuid, example: 72e02882-d632-11e8-932d-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/scratchers/{scratcherId}':
    get:
      tags:
        - Scratchers
      summary: 'Get a scratcher'
      description: 'This reference describes how to query a scratcher through the REST API.'
      operationId: GET_Scratcher
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scratcher'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - Scratchers
      summary: 'Update a scratcher'
      description: 'This reference describes how to update an existing scratcher through the REST API.'
      operationId: PUT_Scratcher
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/scratcher'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - Scratchers
      summary: 'Delete a scratcher'
      description: 'This reference describes how to delete a scratcher through the REST API.'
      operationId: DELETE_Scratcher
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/scratchers/{scratcherId}/restore':
    post:
      tags:
        - Scratchers
      summary: 'Restore a scratcher'
      description: 'This reference describes how to restore a scratcher (that was previously deleted) through the REST API.'
      operationId: RESTORE_Scratcher
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/scratchers/{scratcherId}/plays':
    get:
      tags:
        - Scratchers
      summary: 'Get scratcher plays'
      description: 'This reference describes how to query scratcher plays through the REST API.'
      operationId: GET_ScratcherPlays
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/scratchers/{scratcherId}/embed':
    get:
      tags:
        - Scratchers
      summary: 'Get scratcher embed code'
      description: 'This reference describes how to query scratcher embed code through the REST API.'
      operationId: GET_ScratcherEmbedCode
      parameters:
        -
          name: scratcherId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        -
          name: uid
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  /v1/surveys:
    get:
      tags:
        - Surveys
      summary: 'Get all surveys'
      description: 'This reference describes how to query all surveys through the REST API.'
      operationId: GET_Surveys
      parameters:
        -
          name: with_trashed
          in: query
          description: 'Include soft-deleted records'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/survey'
    post:
      tags:
        - Surveys
      summary: 'Create a survey'
      description: 'This reference describes how to create a new survey through the REST API.'
      operationId: POST_Survey
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/survey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id: { type: string, format: uuid, example: 72e02882-d632-11e8-932d-0800274c42e0 }
                type: object
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
  '/v1/surveys/{surveyId}':
    get:
      tags:
        - Surveys
      summary: 'Get a survey'
      description: 'This reference describes how to query a survey through the REST API.'
      operationId: GET_Survey
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/survey'
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
    put:
      tags:
        - Surveys
      summary: 'Update a survey'
      description: 'This reference describes how to update an existing survey through the REST API.'
      operationId: PUT_Survey
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/survey'
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
        '422':
          description: 'Unprocessable Entity'
          content:
            application/json: {  }
    delete:
      tags:
        - Surveys
      summary: 'Delete a survey'
      description: 'This reference describes how to delete a survey through the REST API.'
      operationId: DELETE_Survey
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/surveys/{surveyId}/restore':
    post:
      tags:
        - Surveys
      summary: 'Restore a survey'
      description: 'This reference describes how to restore a survey (that was previously deleted) through the REST API.'
      operationId: RESTORE_Survey
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json: {  }
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/surveys/{surveyId}/results':
    get:
      tags:
        - Surveys
      summary: 'Get survey results'
      description: 'This reference describes how to query survey results through the REST API.'
      operationId: GET_SurveyResults
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/surveys/{surveyId}/votes':
    get:
      tags:
        - Surveys
      summary: 'Get survey votes'
      description: 'This reference describes how to query survey votes through the REST API.'
      operationId: GET_SurveyVotes
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
  '/v1/surveys/{surveyId}/embed':
    get:
      tags:
        - Surveys
      summary: 'Get survey embed code'
      description: 'This reference describes how to query survey embed code through the REST API.'
      operationId: GET_SurveyEmbedCode
      parameters:
        -
          name: surveyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        -
          name: uid
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: 'Not Found'
          content:
            application/json: {  }
components:
  schemas:
    fonts_list:
      title: 'Font Family'
      type: string
      enum:
        - ABeeZee
        - Abel
        - 'Abhaya Libre'
        - 'Abril Fatface'
        - Aclonica
        - Acme
        - Actor
        - Adamina
        - 'Advent Pro'
        - 'Aguafina Script'
        - Akronim
        - Aladin
        - Alata
        - Alatsi
        - Aldrich
        - Alef
        - 'Alegreya Sans'
        - Alegreya
        - Aleo
        - 'Alex Brush'
        - 'Alfa Slab One'
        - Alice
        - 'Alike Angular'
        - Alike
        - Allan
        - 'Allerta Stencil'
        - Allerta
        - Allura
        - Almarai
        - Almendra
        - Amarante
        - Amaranth
        - Amethysta
        - Amiko
        - Amiri
        - Amita
        - Anaheim
        - Andika
        - 'Annie Use Your Telescope'
        - 'Anonymous Pro'
        - 'Antic Didone'
        - 'Antic Slab'
        - Antic
        - Anton
        - Arapey
        - 'Arbutus Slab'
        - Arbutus
        - 'Architects Daughter'
        - 'Archivo Black'
        - 'Archivo Narrow'
        - Archivo
        - 'Aref Ruqaa'
        - 'Arima Madurai'
        - Arimo
        - Arizonia
        - Armata
        - Arsenal
        - Artifika
        - Arvo
        - Arya
        - 'Asap Condensed'
        - Asap
        - Asar
        - Asset
        - Assistant
        - Astloch
        - Asul
        - Athiti
        - Atma
        - 'Atomic Age'
        - Aubrey
        - Audiowide
        - 'Autour One'
        - 'Average Sans'
        - Average
        - 'Averia Gruesa Libre'
        - 'Averia Libre'
        - 'Averia Sans Libre'
        - 'Averia Serif Libre'
        - 'B612 Mono'
        - B612
        - 'Bad Script'
        - Bahiana
        - Bahianita
        - 'Bai Jamjuree'
        - Balthazar
        - Bangers
        - 'Barlow Condensed'
        - 'Barlow Semi Condensed'
        - Barlow
        - Barriecito
        - Barrio
        - Basic
        - Baskervville
        - Baumans
        - 'Bebas Neue'
        - Belgrano
        - Bellefair
        - Belleza
        - BenchNine
        - Bentham
        - 'Berkshire Swash'
        - 'Beth Ellen'
        - Bevan
        - 'Big Shoulders Text'
        - 'Bigelow Rules'
        - 'Bigshot One'
        - 'Bilbo Swash Caps'
        - Bilbo
        - BioRhyme
        - Biryani
        - Bitter
        - 'Black And White Picture'
        - 'Black Han Sans'
        - 'Black Ops One'
        - Blinker
        - Bonbon
        - Boogaloo
        - 'Bowlby One'
        - Brawler
        - 'Bree Serif'
        - 'Bubblegum Sans'
        - 'Bubbler One'
        - Buenard
        - 'Bungee Hairline'
        - 'Bungee Inline'
        - 'Bungee Outline'
        - 'Bungee Shade'
        - Bungee
        - Butcherman
        - 'Butterfly Kids'
        - 'Cabin Condensed'
        - 'Cabin Sketch'
        - Cabin
        - 'Caesar Dressing'
        - Cagliostro
        - Cairo
        - Calistoga
        - Calligraffitti
        - Cambay
        - Cambo
        - Candal
        - Cantarell
        - 'Cantata One'
        - 'Cantora One'
        - Capriola
        - Cardo
        - Carme
        - 'Carrois Gothic'
        - 'Carter One'
        - Catamaran
        - Caudex
        - 'Caveat Brush'
        - Caveat
        - 'Cedarville Cursive'
        - 'Ceviche One'
        - 'Chakra Petch'
        - 'Changa One'
        - Changa
        - Chango
        - Charm
        - Charmonman
        - Chathura
        - 'Chau Philomene One'
        - 'Chela One'
        - 'Chelsea Market'
        - 'Cherry Cream Soda'
        - 'Cherry Swash'
        - Chewy
        - Chicle
        - Chilanka
        - Chivo
        - Chonburi
        - 'Cinzel Decorative'
        - Cinzel
        - 'Clicker Script'
        - Coda
        - Codystar
        - Coiny
        - Combo
        - Comfortaa
        - 'Coming Soon'
        - 'Concert One'
        - Condiment
        - Content
        - 'Contrail One'
        - Convergence
        - Cookie
        - Copse
        - Corben
        - 'Cormorant Garamond'
        - 'Cormorant Infant'
        - 'Cormorant Unicase'
        - 'Cormorant Upright'
        - Cormorant
        - Courgette
        - 'Courier Prime'
        - Cousine
        - Coustard
        - 'Covered By Your Grace'
        - 'Crafty Girls'
        - Creepster
        - 'Crete Round'
        - 'Crimson Pro'
        - 'Croissant One'
        - Crushed
        - Cuprum
        - 'Cute Font'
        - 'Cutive Mono'
        - Cutive
        - 'DM Sans'
        - 'DM Serif Text'
        - Damion
        - 'Dancing Script'
        - 'Darker Grotesque'
        - 'David Libre'
        - 'Dawning of a New Day'
        - 'Days One'
        - Dekko
        - 'Delius Swash Caps'
        - 'Delius Unicase'
        - Delius
        - 'Della Respira'
        - 'Denk One'
        - Devonshire
        - Dhurjati
        - 'Didact Gothic'
        - Diplomata
        - 'Do Hyeon'
        - Dokdo
        - Domine
        - 'Donegal One'
        - 'Doppio One'
        - Dorsa
        - Dosis
        - 'Dr Sugiyama'
        - 'Duru Sans'
        - Dynalight
        - 'EB Garamond'
        - 'Eagle Lake'
        - 'East Sea Dokdo'
        - Eater
        - Economica
        - Eczar
        - 'El Messiri'
        - Electrolize
        - 'Elsie Swash Caps'
        - Elsie
        - 'Emblema One'
        - 'Emilys Candy'
        - 'Encode Sans Condensed'
        - 'Encode Sans Expanded'
        - 'Encode Sans Semi Condensed'
        - 'Encode Sans Semi Expanded'
        - 'Encode Sans'
        - Engagement
        - Englebert
        - Enriqueta
        - 'Erica One'
        - Esteban
        - 'Euphoria Script'
        - Ewert
        - 'Exo 2'
        - Exo
        - 'Expletus Sans'
        - Fahkwang
        - 'Fanwood Text'
        - Farro
        - Farsan
        - 'Fascinate Inline'
        - Fascinate
        - 'Faster One'
        - 'Fauna One'
        - Faustina
        - Federant
        - Federo
        - Felipa
        - Fenix
        - 'Finger Paint'
        - 'Fira Code'
        - 'Fira Mono'
        - 'Fira Sans Condensed'
        - 'Fira Sans Extra Condensed'
        - 'Fira Sans'
        - 'Fjalla One'
        - 'Fjord One'
        - Flamenco
        - Flavors
        - Fondamento
        - 'Fontdiner Swanky'
        - Forum
        - 'Francois One'
        - 'Frank Ruhl Libre'
        - 'Freckle Face'
        - 'Fredericka the Great'
        - 'Fredoka One'
        - Fresca
        - Frijole
        - Fruktur
        - 'Fugaz One'
        - 'GFS Didot'
        - 'GFS Neohellenic'
        - Gabriela
        - Gaegu
        - Gafata
        - Galada
        - Galdeano
        - Galindo
        - 'Gamja Flower'
        - Gayathri
        - Gelasio
        - 'Gentium Basic'
        - 'Gentium Book Basic'
        - Geo
        - 'Geostar Fill'
        - Geostar
        - 'Germania One'
        - Gidugu
        - Girassol
        - 'Give You Glory'
        - 'Glass Antiqua'
        - Glegoo
        - 'Gloria Hallelujah'
        - 'Goblin One'
        - 'Gochi Hand'
        - Gorditas
        - 'Gothic A1'
        - 'Goudy Bookletter 1911'
        - Graduate
        - 'Grand Hotel'
        - 'Gravitas One'
        - 'Great Vibes'
        - Grenze
        - Griffy
        - Gruppo
        - Gudea
        - Gugi
        - Gupter
        - Gurajada
        - Habibi
        - Halant
        - 'Hammersmith One'
        - 'Hanalei Fill'
        - Hanalei
        - Handlee
        - Hanuman
        - 'Happy Monkey'
        - Harmattan
        - 'Headland One'
        - Heebo
        - 'Henny Penny'
        - 'Hepta Slab'
        - 'Herr Von Muellerhoff'
        - 'Hi Melody'
        - 'Hind Guntur'
        - 'Hind Madurai'
        - 'Hind Siliguri'
        - 'Hind Vadodara'
        - Hind
        - 'Homemade Apple'
        - Homenaje
        - 'IBM Plex Mono'
        - 'IBM Plex Sans Condensed'
        - 'IBM Plex Sans'
        - 'IBM Plex Serif'
        - 'IM Fell DW Pica'
        - 'IM Fell Double Pica'
        - 'IM Fell English'
        - 'IM Fell French Canon'
        - 'IM Fell Great Primer'
        - 'Ibarra Real Nova'
        - Iceberg
        - Iceland
        - Imprima
        - Inconsolata
        - Inder
        - 'Indie Flower'
        - Inika
        - 'Inknut Antiqua'
        - 'Inria Serif'
        - 'Irish Grover'
        - 'Istok Web'
        - Italiana
        - Italianno
        - Itim
        - 'Jacques Francois Shadow'
        - 'Jacques Francois'
        - Jaldi
        - 'Jim Nightshade'
        - 'Jockey One'
        - 'Jolly Lodger'
        - Jomhuria
        - Jomolhari
        - 'Josefin Sans'
        - 'Josefin Slab'
        - 'Joti One'
        - Jua
        - Judson
        - Julee
        - 'Julius Sans One'
        - Junge
        - Jura
        - 'Just Another Hand'
        - 'Just Me Again Down Here'
        - K2D
        - Kadwa
        - Kalam
        - Kameron
        - Kanit
        - Kantumruy
        - Karla
        - Karma
        - Katibeh
        - 'Kaushan Script'
        - Kavivanar
        - Kavoon
        - 'Keania One'
        - 'Kelly Slab'
        - Kenia
        - Khand
        - Khula
        - 'Kirang Haerang'
        - 'Kite One'
        - Knewave
        - KoHo
        - Kodchasan
        - 'Kosugi Maru'
        - Kosugi
        - Kranky
        - Kreon
        - Kristi
        - 'Krona One'
        - Krub
        - 'Kulim Park'
        - Kurale
        - 'La Belle Aurore'
        - Lacquer
        - Laila
        - 'Lakki Reddy'
        - Lalezar
        - Lancelot
        - Lateef
        - Lato
        - 'League Script'
        - 'Leckerli One'
        - Ledger
        - Lekton
        - Lemon
        - Lemonada
        - 'Lexend Deca'
        - 'Lexend Exa'
        - 'Lexend Giga'
        - 'Lexend Mega'
        - 'Lexend Peta'
        - 'Lexend Tera'
        - 'Lexend Zetta'
        - 'Libre Baskerville'
        - 'Libre Caslon Text'
        - 'Libre Franklin'
        - 'Life Savers'
        - 'Lilita One'
        - 'Lily Script One'
        - Limelight
        - 'Linden Hill'
        - Literata
        - 'Liu Jian Mao Cao'
        - Livvic
        - 'Lobster Two'
        - Lobster
        - 'Londrina Outline'
        - 'Londrina Shadow'
        - 'Londrina Sketch'
        - 'Londrina Solid'
        - 'Long Cang'
        - Lora
        - 'Love Ya Like A Sister'
        - 'Loved by the King'
        - 'Lovers Quarrel'
        - 'Luckiest Guy'
        - Lusitana
        - Lustria
        - 'M PLUS 1p'
        - 'M PLUS Rounded 1c'
        - 'Ma Shan Zheng'
        - 'Macondo Swash Caps'
        - Macondo
        - Mada
        - Magra
        - 'Maiden Orange'
        - Maitree
        - Mako
        - Mali
        - Mallanna
        - Mandali
        - Manjari
        - Mansalva
        - Manuale
        - Marcellus
        - 'Marck Script'
        - Margarine
        - 'Markazi Text'
        - 'Marko One'
        - Marmelad
        - 'Martel Sans'
        - Martel
        - Marvel
        - Mate
        - 'Maven Pro'
        - McLaren
        - Meddon
        - MedievalSharp
        - 'Medula One'
        - 'Meera Inimai'
        - Megrim
        - 'Meie Script'
        - 'Merienda One'
        - Merienda
        - 'Merriweather Sans'
        - Merriweather
        - 'Metal Mania'
        - Metamorphous
        - Metrophobic
        - Michroma
        - Milonga
        - 'Miltonian Tattoo'
        - Miltonian
        - Mina
        - Miniver
        - 'Miriam Libre'
        - Mirza
        - 'Miss Fajardose'
        - Mitr
        - Modak
        - 'Modern Antiqua'
        - Mogra
        - Molengo
        - Monda
        - Monofett
        - Monoton
        - 'Monsieur La Doulaise'
        - Montaga
        - Montez
        - 'Montserrat Alternates'
        - 'Montserrat Subrayada'
        - Montserrat
        - 'Mountains of Christmas'
        - 'Mouse Memoirs'
        - 'Mr Bedfort'
        - 'Mr Dafoe'
        - 'Mr De Haviland'
        - 'Mrs Saint Delafield'
        - 'Mrs Sheppards'
        - 'Mukta Mahee'
        - 'Mukta Malar'
        - 'Mukta Vaani'
        - Mukta
        - 'Mystery Quest'
        - NTR
        - 'Nanum Brush Script'
        - 'Nanum Gothic Coding'
        - 'Nanum Gothic'
        - 'Nanum Myeongjo'
        - 'Nanum Pen Script'
        - Neucha
        - Neuton
        - 'New Rocker'
        - 'News Cycle'
        - Niconne
        - Niramit
        - 'Nixie One'
        - Nobile
        - Norican
        - Nosifer
        - Notable
        - 'Nothing You Could Do'
        - 'Noticia Text'
        - 'Noto Sans'
        - 'Noto Serif'
        - 'Nova Cut'
        - 'Nova Flat'
        - 'Nova Mono'
        - 'Nova Oval'
        - 'Nova Round'
        - 'Nova Script'
        - 'Nova Slim'
        - 'Nova Square'
        - Numans
        - 'Nunito Sans'
        - Nunito
        - 'Odibee Sans'
        - Offside
        - 'Old Standard TT'
        - Oldenburg
        - 'Oleo Script Swash Caps'
        - 'Oleo Script'
        - 'Open Sans'
        - Oranienbaum
        - Orbitron
        - Oregano
        - Orienta
        - 'Original Surfer'
        - Oswald
        - 'Over the Rainbow'
        - Overlock
        - 'Overpass Mono'
        - Overpass
        - Ovo
        - 'Oxygen Mono'
        - Oxygen
        - 'PT Mono'
        - 'PT Sans Caption'
        - 'PT Sans Narrow'
        - 'PT Sans'
        - 'PT Serif Caption'
        - 'PT Serif'
        - Pacifico
        - Padauk
        - 'Palanquin Dark'
        - Palanquin
        - Pangolin
        - Paprika
        - Parisienne
        - 'Passero One'
        - 'Passion One'
        - 'Pathway Gothic One'
        - 'Patrick Hand'
        - Pattaya
        - 'Patua One'
        - Pavanam
        - 'Paytone One'
        - Peddana
        - Peralta
        - 'Permanent Marker'
        - 'Petit Formal Script'
        - Petrona
        - Philosopher
        - Piedra
        - 'Pinyon Script'
        - 'Pirata One'
        - Plaster
        - Play
        - Playball
        - Podkova
        - 'Poiret One'
        - 'Poller One'
        - Poly
        - Pompiere
        - 'Pontano Sans'
        - 'Poor Story'
        - Poppins
        - 'Port Lligat Sans'
        - 'Port Lligat Slab'
        - 'Pragati Narrow'
        - Prata
        - 'Press Start 2P'
        - Pridi
        - 'Princess Sofia'
        - Prociono
        - Prompt
        - 'Prosto One'
        - 'Proza Libre'
        - 'Public Sans'
        - Puritan
        - 'Purple Purse'
        - Quando
        - Quantico
        - 'Quattrocento Sans'
        - Quattrocento
        - Questrial
        - Quicksand
        - Quintessential
        - Qwigley
        - 'Racing Sans One'
        - Radley
        - Rajdhani
        - Rakkas
        - 'Raleway Dots'
        - Raleway
        - Ramabhadra
        - Ramaraja
        - Rambla
        - 'Rammetto One'
        - Ranchers
        - Rancho
        - Ranga
        - Rasa
        - Rationale
        - 'Ravi Prakash'
        - 'Red Hat Text'
        - Redressed
        - 'Reem Kufi'
        - 'Reenie Beanie'
        - Revalia
        - 'Rhodium Libre'
        - 'Ribeye Marrow'
        - Ribeye
        - Righteous
        - Risque
        - 'Roboto Condensed'
        - 'Roboto Mono'
        - 'Roboto Slab'
        - Roboto
        - Rochester
        - 'Rock Salt'
        - Rokkitt
        - Romanesco
        - 'Ropa Sans'
        - Rosario
        - Rosarivo
        - 'Rouge Script'
        - 'Rozha One'
        - 'Rubik Mono One'
        - Rubik
        - Ruda
        - Rufina
        - 'Ruge Boogie'
        - Ruluko
        - 'Rum Raisin'
        - 'Russo One'
        - Ruthie
        - Rye
        - Sacramento
        - Sahitya
        - Sail
        - 'Saira Condensed'
        - 'Saira Extra Condensed'
        - 'Saira Semi Condensed'
        - 'Saira Stencil One'
        - Saira
        - Salsa
        - Sanchez
        - Sancreek
        - Sansita
        - Sarabun
        - Sarala
        - Sarina
        - Sarpanch
        - Satisfy
        - 'Sawarabi Gothic'
        - 'Sawarabi Mincho'
        - Scada
        - Schoolbell
        - 'Scope One'
        - 'Seaweed Script'
        - 'Secular One'
        - 'Sedgwick Ave'
        - Sevillana
        - 'Seymour One'
        - 'Shadows Into Light Two'
        - 'Shadows Into Light'
        - Shanti
        - 'Share Tech Mono'
        - 'Share Tech'
        - Share
        - Shojumaru
        - 'Short Stack'
        - Shrikhand
        - 'Sigmar One'
        - 'Signika Negative'
        - Signika
        - Simonetta
        - 'Single Day'
        - Sintony
        - 'Sirin Stencil'
        - 'Six Caps'
        - Skranji
        - 'Slabo 13px'
        - 'Slabo 27px'
        - Slackey
        - Smokum
        - Smythe
        - Sniglet
        - Snippet
        - 'Snowburst One'
        - 'Sofadi One'
        - Sofia
        - Solway
        - 'Song Myung'
        - 'Sonsie One'
        - 'Sorts Mill Goudy'
        - 'Source Code Pro'
        - 'Source Sans Pro'
        - 'Source Serif Pro'
        - 'Space Mono'
        - 'Special Elite'
        - Spectral
        - 'Spicy Rice'
        - Spinnaker
        - Spirax
        - 'Squada One'
        - 'Sree Krushnadevaraya'
        - Sriracha
        - Srisakdi
        - Staatliches
        - Stalemate
        - 'Stalinist One'
        - 'Stardos Stencil'
        - 'Stint Ultra Condensed'
        - 'Stint Ultra Expanded'
        - Stoke
        - Strait
        - Stylish
        - 'Sue Ellen Francisco'
        - 'Suez One'
        - 'Sulphur Point'
        - Sumana
        - Sunshiney
        - 'Supermercado One'
        - Sura
        - Suranna
        - Suravaram
        - 'Swanky and Moo Moo'
        - Syncopate
        - Tajawal
        - Tangerine
        - Tauri
        - Taviraj
        - Teko
        - Telex
        - 'Tenali Ramakrishna'
        - 'Tenor Sans'
        - 'Text Me One'
        - Thasadith
        - 'The Girl Next Door'
        - Tienne
        - Tillana
        - Timmana
        - Tinos
        - 'Titan One'
        - 'Titillium Web'
        - Tomorrow
        - 'Trade Winds'
        - Trirong
        - Trocchi
        - Trochut
        - Trykker
        - 'Tulpen One'
        - 'Turret Road'
        - 'Ubuntu Condensed'
        - 'Ubuntu Mono'
        - Ubuntu
        - Ultra
        - 'Uncial Antiqua'
        - Underdog
        - 'Unica One'
        - UnifrakturMaguntia
        - Unkempt
        - Unlock
        - Unna
        - VT323
        - 'Vampiro One'
        - 'Varela Round'
        - Varela
        - 'Vast Shadow'
        - 'Vesper Libre'
        - Vibes
        - Vibur
        - Vidaloka
        - Viga
        - Voces
        - Volkhov
        - Vollkorn
        - Voltaire
        - 'Waiting for the Sunrise'
        - Wallpoet
        - 'Walter Turncoat'
        - Warnes
        - Wellfleet
        - 'Wendy One'
        - 'Wire One'
        - 'Work Sans'
        - 'Yanone Kaffeesatz'
        - Yantramanav
        - 'Yatra One'
        - Yellowtail
        - 'Yeon Sung'
        - 'Yeseva One'
        - Yesteryear
        - Yrsa
        - 'ZCOOL KuaiLe'
        - 'ZCOOL QingKe HuangYou'
        - 'ZCOOL XiaoWei'
        - Zeyada
        - 'Zilla Slab'
    languages_list:
      title: Language
      type: string
      enum:
        - ar
        - bn
        - da
        - de
        - en
        - es
        - fr
        - hi
        - id
        - it
        - ja
        - ko
        - nl
        - 'no'
        - pa
        - pl
        - ru
        - sv
        - tr
        - vi
        - zh
    countries_list:
      title: Country
      type: string
      enum:
        - AF
        - AX
        - AL
        - DZ
        - AS
        - AD
        - AO
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BQ
        - BA
        - BW
        - BV
        - BR
        - IO
        - BN
        - BG
        - BF
        - BI
        - KH
        - CM
        - CA
        - CV
        - KY
        - CF
        - TD
        - CL
        - CN
        - CX
        - CC
        - CO
        - KM
        - CG
        - CD
        - CK
        - CR
        - CI
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - DO
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KP
        - KR
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MK
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NG
        - NU
        - NF
        - MP
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - BL
        - SH
        - KN
        - LC
        - MF
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - SN
        - RS
        - SC
        - SL
        - SG
        - SX
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - SS
        - ES
        - LK
        - SD
        - SR
        - SZ
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - UG
        - UA
        - AE
        - GB
        - US
        - UM
        - UY
        - UZ
        - VU
        - VE
        - VN
        - VG
        - VI
        - WF
        - EH
        - YE
        - ZM
        - ZW
    currencies_list:
      title: Currency
      description: 'Currency (ISO 4217 3-letters code)'
      type: string
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BOV
        - BRL
        - BSD
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - IQD
        - IRR
        - ISK
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LTL
        - LVL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRO
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLL
        - SOS
        - SRD
        - SSP
        - STD
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VES
        - VED
        - VND
        - VUV
        - WST
        - XAF
        - XAG
        - XAU
        - XCD
        - XDR
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMW
        - ZWL
    timezone:
      title: Timezone
      type: string
      enum:
        - Africa/Abidjan
        - Africa/Accra
        - Africa/Addis_Ababa
        - Africa/Algiers
        - Africa/Asmara
        - Africa/Bamako
        - Africa/Bangui
        - Africa/Banjul
        - Africa/Bissau
        - Africa/Blantyre
        - Africa/Brazzaville
        - Africa/Bujumbura
        - Africa/Cairo
        - Africa/Casablanca
        - Africa/Ceuta
        - Africa/Conakry
        - Africa/Dakar
        - Africa/Dar_es_Salaam
        - Africa/Djibouti
        - Africa/Douala
        - Africa/El_Aaiun
        - Africa/Freetown
        - Africa/Gaborone
        - Africa/Harare
        - Africa/Johannesburg
        - Africa/Juba
        - Africa/Kampala
        - Africa/Khartoum
        - Africa/Kigali
        - Africa/Kinshasa
        - Africa/Lagos
        - Africa/Libreville
        - Africa/Lome
        - Africa/Luanda
        - Africa/Lubumbashi
        - Africa/Lusaka
        - Africa/Malabo
        - Africa/Maputo
        - Africa/Maseru
        - Africa/Mbabane
        - Africa/Mogadishu
        - Africa/Monrovia
        - Africa/Nairobi
        - Africa/Ndjamena
        - Africa/Niamey
        - Africa/Nouakchott
        - Africa/Ouagadougou
        - Africa/Porto-Novo
        - Africa/Sao_Tome
        - Africa/Tripoli
        - Africa/Tunis
        - Africa/Windhoek
        - America/Adak
        - America/Anchorage
        - America/Anguilla
        - America/Antigua
        - America/Araguaina
        - America/Argentina/Buenos_Aires
        - America/Argentina/Catamarca
        - America/Argentina/Cordoba
        - America/Argentina/Jujuy
        - America/Argentina/La_Rioja
        - America/Argentina/Mendoza
        - America/Argentina/Rio_Gallegos
        - America/Argentina/Salta
        - America/Argentina/San_Juan
        - America/Argentina/San_Luis
        - America/Argentina/Tucuman
        - America/Argentina/Ushuaia
        - America/Aruba
        - America/Asuncion
        - America/Atikokan
        - America/Bahia
        - America/Bahia_Banderas
        - America/Barbados
        - America/Belem
        - America/Belize
        - America/Blanc-Sablon
        - America/Boa_Vista
        - America/Bogota
        - America/Boise
        - America/Cambridge_Bay
        - America/Campo_Grande
        - America/Cancun
        - America/Caracas
        - America/Cayenne
        - America/Cayman
        - America/Chicago
        - America/Chihuahua
        - America/Ciudad_Juarez
        - America/Costa_Rica
        - America/Coyhaique
        - America/Creston
        - America/Cuiaba
        - America/Curacao
        - America/Danmarkshavn
        - America/Dawson
        - America/Dawson_Creek
        - America/Denver
        - America/Detroit
        - America/Dominica
        - America/Edmonton
        - America/Eirunepe
        - America/El_Salvador
        - America/Fort_Nelson
        - America/Fortaleza
        - America/Glace_Bay
        - America/Goose_Bay
        - America/Grand_Turk
        - America/Grenada
        - America/Guadeloupe
        - America/Guatemala
        - America/Guayaquil
        - America/Guyana
        - America/Halifax
        - America/Havana
        - America/Hermosillo
        - America/Indiana/Indianapolis
        - America/Indiana/Knox
        - America/Indiana/Marengo
        - America/Indiana/Petersburg
        - America/Indiana/Tell_City
        - America/Indiana/Vevay
        - America/Indiana/Vincennes
        - America/Indiana/Winamac
        - America/Inuvik
        - America/Iqaluit
        - America/Jamaica
        - America/Juneau
        - America/Kentucky/Louisville
        - America/Kentucky/Monticello
        - America/Kralendijk
        - America/La_Paz
        - America/Lima
        - America/Los_Angeles
        - America/Lower_Princes
        - America/Maceio
        - America/Managua
        - America/Manaus
        - America/Marigot
        - America/Martinique
        - America/Matamoros
        - America/Mazatlan
        - America/Menominee
        - America/Merida
        - America/Metlakatla
        - America/Mexico_City
        - America/Miquelon
        - America/Moncton
        - America/Monterrey
        - America/Montevideo
        - America/Montserrat
        - America/Nassau
        - America/New_York
        - America/Nome
        - America/Noronha
        - America/North_Dakota/Beulah
        - America/North_Dakota/Center
        - America/North_Dakota/New_Salem
        - America/Nuuk
        - America/Ojinaga
        - America/Panama
        - America/Paramaribo
        - America/Phoenix
        - America/Port-au-Prince
        - America/Port_of_Spain
        - America/Porto_Velho
        - America/Puerto_Rico
        - America/Punta_Arenas
        - America/Rankin_Inlet
        - America/Recife
        - America/Regina
        - America/Resolute
        - America/Rio_Branco
        - America/Santarem
        - America/Santiago
        - America/Santo_Domingo
        - America/Sao_Paulo
        - America/Scoresbysund
        - America/Sitka
        - America/St_Barthelemy
        - America/St_Johns
        - America/St_Kitts
        - America/St_Lucia
        - America/St_Thomas
        - America/St_Vincent
        - America/Swift_Current
        - America/Tegucigalpa
        - America/Thule
        - America/Tijuana
        - America/Toronto
        - America/Tortola
        - America/Vancouver
        - America/Whitehorse
        - America/Winnipeg
        - America/Yakutat
        - Antarctica/Casey
        - Antarctica/Davis
        - Antarctica/DumontDUrville
        - Antarctica/Macquarie
        - Antarctica/Mawson
        - Antarctica/McMurdo
        - Antarctica/Palmer
        - Antarctica/Rothera
        - Antarctica/Syowa
        - Antarctica/Troll
        - Antarctica/Vostok
        - Arctic/Longyearbyen
        - Asia/Aden
        - Asia/Almaty
        - Asia/Amman
        - Asia/Anadyr
        - Asia/Aqtau
        - Asia/Aqtobe
        - Asia/Ashgabat
        - Asia/Atyrau
        - Asia/Baghdad
        - Asia/Bahrain
        - Asia/Baku
        - Asia/Bangkok
        - Asia/Barnaul
        - Asia/Beirut
        - Asia/Bishkek
        - Asia/Brunei
        - Asia/Chita
        - Asia/Colombo
        - Asia/Damascus
        - Asia/Dhaka
        - Asia/Dili
        - Asia/Dubai
        - Asia/Dushanbe
        - Asia/Famagusta
        - Asia/Gaza
        - Asia/Hebron
        - Asia/Ho_Chi_Minh
        - Asia/Hong_Kong
        - Asia/Hovd
        - Asia/Irkutsk
        - Asia/Jakarta
        - Asia/Jayapura
        - Asia/Jerusalem
        - Asia/Kabul
        - Asia/Kamchatka
        - Asia/Karachi
        - Asia/Kathmandu
        - Asia/Khandyga
        - Asia/Kolkata
        - Asia/Krasnoyarsk
        - Asia/Kuala_Lumpur
        - Asia/Kuching
        - Asia/Kuwait
        - Asia/Macau
        - Asia/Magadan
        - Asia/Makassar
        - Asia/Manila
        - Asia/Muscat
        - Asia/Nicosia
        - Asia/Novokuznetsk
        - Asia/Novosibirsk
        - Asia/Omsk
        - Asia/Oral
        - Asia/Phnom_Penh
        - Asia/Pontianak
        - Asia/Pyongyang
        - Asia/Qatar
        - Asia/Qostanay
        - Asia/Qyzylorda
        - Asia/Riyadh
        - Asia/Sakhalin
        - Asia/Samarkand
        - Asia/Seoul
        - Asia/Shanghai
        - Asia/Singapore
        - Asia/Srednekolymsk
        - Asia/Taipei
        - Asia/Tashkent
        - Asia/Tbilisi
        - Asia/Tehran
        - Asia/Thimphu
        - Asia/Tokyo
        - Asia/Tomsk
        - Asia/Ulaanbaatar
        - Asia/Urumqi
        - Asia/Ust-Nera
        - Asia/Vientiane
        - Asia/Vladivostok
        - Asia/Yakutsk
        - Asia/Yangon
        - Asia/Yekaterinburg
        - Asia/Yerevan
        - Atlantic/Azores
        - Atlantic/Bermuda
        - Atlantic/Canary
        - Atlantic/Cape_Verde
        - Atlantic/Faroe
        - Atlantic/Madeira
        - Atlantic/Reykjavik
        - Atlantic/South_Georgia
        - Atlantic/St_Helena
        - Atlantic/Stanley
        - Australia/Adelaide
        - Australia/Brisbane
        - Australia/Broken_Hill
        - Australia/Darwin
        - Australia/Eucla
        - Australia/Hobart
        - Australia/Lindeman
        - Australia/Lord_Howe
        - Australia/Melbourne
        - Australia/Perth
        - Australia/Sydney
        - Europe/Amsterdam
        - Europe/Andorra
        - Europe/Astrakhan
        - Europe/Athens
        - Europe/Belgrade
        - Europe/Berlin
        - Europe/Bratislava
        - Europe/Brussels
        - Europe/Bucharest
        - Europe/Budapest
        - Europe/Busingen
        - Europe/Chisinau
        - Europe/Copenhagen
        - Europe/Dublin
        - Europe/Gibraltar
        - Europe/Guernsey
        - Europe/Helsinki
        - Europe/Isle_of_Man
        - Europe/Istanbul
        - Europe/Jersey
        - Europe/Kaliningrad
        - Europe/Kirov
        - Europe/Kyiv
        - Europe/Lisbon
        - Europe/Ljubljana
        - Europe/London
        - Europe/Luxembourg
        - Europe/Madrid
        - Europe/Malta
        - Europe/Mariehamn
        - Europe/Minsk
        - Europe/Monaco
        - Europe/Moscow
        - Europe/Oslo
        - Europe/Paris
        - Europe/Podgorica
        - Europe/Prague
        - Europe/Riga
        - Europe/Rome
        - Europe/Samara
        - Europe/San_Marino
        - Europe/Sarajevo
        - Europe/Saratov
        - Europe/Simferopol
        - Europe/Skopje
        - Europe/Sofia
        - Europe/Stockholm
        - Europe/Tallinn
        - Europe/Tirane
        - Europe/Ulyanovsk
        - Europe/Vaduz
        - Europe/Vatican
        - Europe/Vienna
        - Europe/Vilnius
        - Europe/Volgograd
        - Europe/Warsaw
        - Europe/Zagreb
        - Europe/Zurich
        - Indian/Antananarivo
        - Indian/Chagos
        - Indian/Christmas
        - Indian/Cocos
        - Indian/Comoro
        - Indian/Kerguelen
        - Indian/Mahe
        - Indian/Maldives
        - Indian/Mauritius
        - Indian/Mayotte
        - Indian/Reunion
        - Pacific/Apia
        - Pacific/Auckland
        - Pacific/Bougainville
        - Pacific/Chatham
        - Pacific/Chuuk
        - Pacific/Easter
        - Pacific/Efate
        - Pacific/Fakaofo
        - Pacific/Fiji
        - Pacific/Funafuti
        - Pacific/Galapagos
        - Pacific/Gambier
        - Pacific/Guadalcanal
        - Pacific/Guam
        - Pacific/Honolulu
        - Pacific/Kanton
        - Pacific/Kiritimati
        - Pacific/Kosrae
        - Pacific/Kwajalein
        - Pacific/Majuro
        - Pacific/Marquesas
        - Pacific/Midway
        - Pacific/Nauru
        - Pacific/Niue
        - Pacific/Norfolk
        - Pacific/Noumea
        - Pacific/Pago_Pago
        - Pacific/Palau
        - Pacific/Pitcairn
        - Pacific/Pohnpei
        - Pacific/Port_Moresby
        - Pacific/Rarotonga
        - Pacific/Saipan
        - Pacific/Tahiti
        - Pacific/Tarawa
        - Pacific/Tongatapu
        - Pacific/Wake
        - Pacific/Wallis
        - UTC
    weather_list:
      title: Weather
      type: string
      enum:
        - clear
        - rain
        - snow
        - sleet
        - wind
        - fog
        - cloudy
        - partly-cloudy
    image_attachment:
      title: 'Image Attachment'
      properties:
        attachment:
          description: 'Image data (Base64 encoded)'
          type: string
          format: byte
        filename:
          description: 'Image filename'
          type: string
          example: ipod-touch.png
      type: object
    countdown_timer:
      title: 'Countdown Timer'
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: 7c8db93c-9101-445c-9799-bc5c3743ce19
        expired_url:
          description: 'The URL to point to when deep_linking is set to "false" and the countdown timer is expired.'
          type: string
          example: 'http://www.mywebsite.com/offer'
      type: object
      discriminator:
        propertyName: type
        mapping:
          query_param: '#/components/schemas/countdown_timer_query_param'
          standard: '#/components/schemas/countdown_timer_standard'
          evergreen: '#/components/schemas/countdown_timer_evergreen'
    dynamic_image:
      title: 'Dynamic Image'
      properties:
        id:
          format: uuid
          readOnly: true
          example: 41b9c7ca-39ac-441d-8381-3bfdbac5a83b
        images:
          description: 'The images and their rules'
          type: array
          items:
            type: object
            discriminator:
              propertyName: default
            oneOf:
              -
                $ref: '#/components/schemas/default_image'
              -
                $ref: '#/components/schemas/image_with_rules'
      type: object
    base_image:
      title: 'Base Image'
      properties:
        default:
          description: 'Indicates if the image is the default fallback image'
          type: boolean
          default: true
        url:
          description: 'The URL to the target destination'
          type: string
          example: 'http://www.example.com/black-friday'
        name:
          description: 'The name of the image'
          type: string
          example: 'Black Friday'
        image_url:
          description: 'The URL to the image'
          type: string
          example: 'http://www.example.com/img/black-friday.jpg'
      type: object
    default_image:
      title: 'Default Image'
      allOf:
        -
          $ref: '#/components/schemas/base_image'
    image_with_rules:
      title: 'Image (image with rules)'
      allOf:
        -
          $ref: '#/components/schemas/base_image'
        -
          properties:
            rules:
              $ref: '#/components/schemas/targeting_rules'
          type: object
    dynamic_product:
      title: 'Dynamic Product'
      properties:
        id:
          format: uuid
          readOnly: true
          example: 41b9c7ca-39ac-441d-8381-3bfdbac5a83b
        products:
          description: 'The products and their rules'
          type: array
          items:
            type: object
            discriminator:
              propertyName: default
            oneOf:
              -
                $ref: '#/components/schemas/default_product'
              -
                $ref: '#/components/schemas/product_with_rules'
      type: object
    base_product:
      title: 'Base Product'
      properties:
        default:
          description: 'Indicates if the product is the default fallback product'
          type: boolean
          example: false
        url:
          description: 'The product target URL'
          type: string
          example: 'http://example.com/ipod-nano'
        name:
          description: 'The name of the product'
          type: string
          example: 'iPod Nano - 8GB'
        image_url:
          description: 'The URL to the product image'
          type: string
          example: 'http://example.com/ipod.jpg'
        price:
          description: 'Current product price'
          type: number
          example: 199.99
        currency:
          $ref: '#/components/schemas/currencies_list'
        inventory_quantity:
          description: 'Inventory quantity '
          type: integer
      type: object
    default_product:
      title: 'Default Product'
      allOf:
        -
          $ref: '#/components/schemas/base_product'
    product_with_rules:
      title: 'Product (with rules)'
      allOf:
        -
          $ref: '#/components/schemas/base_product'
        -
          properties:
            rules:
              $ref: '#/components/schemas/targeting_rules'
          type: object
    image:
      title: Image
      properties:
        id:
          readOnly: true
          example: 1544146a-26af-4c2d-8a97-fba17f39add6
        image:
          $ref: '#/components/schemas/image_attachment'
      type: object
    local_map:
      title: 'Local Map'
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: f9d8bb75-a29a-461d-b5cb-de6d4e4f896f
        show_address_list:
          description: 'Show/hide address list under the map'
          type: boolean
          example: false
      type: object
    location:
      title: Location
      properties:
        url:
          description: 'URL of the location'
          type: string
          example: 'https://www.apple.com'
      type: object
    merge_tag:
      title: 'Merge Tag'
      properties:
        id:
          readOnly: true
          example: 1544146a-26af-4c2d-8a97-fba17f39add6
        placeholder_value:
          description: 'The placeholder value of the merge tag (for design purposes)'
          type: string
          example: 'John Doe'
      type: object
    product:
      title: Product
      properties:
        id:
          readOnly: true
          example: 1544146a-26af-4c2d-8a97-fba17f39add6
        image:
          $ref: '#/components/schemas/image_attachment'
      type: object
    scratcher:
      title: Scratcher
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: 7c8db93c-9101-445c-9799-bc5c3743ce19
        cta_text_color:
          description: 'Call-to-action button text color in Hex Color'
          type: string
          example: '#ffffff'
      type: object
    survey:
      title: Survey
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: 7c8db93c-9101-445c-9799-bc5c3743ce19
        thank_you_url:
          description: 'The thank you URL'
          type: string
          example: 'https://example.com/thanks'
      type: object
    targeting_rules:
      title: 'Targeting Rules'
      properties:
        groups:
          type: array
          items:
            properties:
              conditions:
                type: array
                items:
                  type: object
                  anyOf: [{ $ref: '#/components/schemas/date_condition' }, { $ref: '#/components/schemas/day_of_week_condition' }, { $ref: '#/components/schemas/device_condition' }, { $ref: '#/components/schemas/language_condition' }, { $ref: '#/components/schemas/location_condition' }, { $ref: '#/components/schemas/operating_system_condition' }, { $ref: '#/components/schemas/query_parameter_condition' }, { $ref: '#/components/schemas/temperature_condition' }, { $ref: '#/components/schemas/time_of_day_condition' }, { $ref: '#/components/schemas/timezone_condition' }, { $ref: '#/components/schemas/weather_condition' }, { $ref: '#/components/schemas/momentum_condition' }]
              matchAllConditions:
                type: boolean
                default: false
            type: object
        matchAllGroups:
          type: boolean
          default: false
      type: object
    momentum_condition:
      title: 'Momentum condition'
      properties:
        name:
          type: string
          example: momentum
          default: momentum
        operator:
          type: string
          enum:
            - is_more_than
            - is_less_than
        source:
          type: string
          enum:
            - sent_at
            - first_open
        value:
          type: number
          example: 24
      type: object
    date_condition:
      title: 'Date condition'
      properties:
        name:
          type: string
          example: date
          default: date
        operator:
          type: string
          enum:
            - is_before
            - is_after
        date:
          type: string
          format: date-time
        timezone:
          $ref: '#/components/schemas/timezone'
      type: object
    day_of_week_condition:
      title: 'Day of week condition'
      properties:
        name:
          type: string
          example: day_of_week
          default: day_of_week
        operator:
          type: string
          enum:
            - is
            - is_not
        value:
          type: string
          enum:
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
            - sunday
      type: object
    device_condition:
      title: 'Device condition'
      properties:
        name:
          type: string
          example: device
          default: device
        operator:
          type: string
          enum:
            - is
            - is_not
        value:
          type: string
          enum:
            - desktop
            - mobile
            - tablet
      type: object
    language_condition:
      title: 'Language condition'
      properties:
        name:
          type: string
          example: language
          default: language
        operator:
          type: string
          enum:
            - is
            - is_not
        value:
          $ref: '#/components/schemas/languages_list'
      type: object
    location_condition:
      title: 'Location condition'
      properties:
        name:
          type: string
          example: location
          default: location
        operator:
          type: string
          enum:
            - is
            - is_not
        country:
          $ref: '#/components/schemas/countries_list'
        region:
          description: ''
          type: string
          nullable: true
        city:
          description: ''
          type: string
          nullable: true
      type: object
    operating_system_condition:
      title: 'Operating System condition'
      properties:
        name:
          type: string
          example: android
          default: operating_system
        operator:
          type: string
          enum:
            - is
            - is_not
        value:
          type: string
          enum:
            - android
            - chromeos
            - ios
            - ipados
            - linux
            - windows
      type: object
    query_parameter_condition:
      title: 'Query parameter condition'
      properties:
        name:
          type: string
          example: query_param
          default: query_param
        parameter:
          type: string
          example: color
          default: ''
        operator:
          type: string
          enum:
            - is
            - is_not
            - contains
            - does_not_contains
        value:
          type: string
          example: green
          default: ''
      type: object
    temperature_condition:
      title: 'Temperature condition'
      properties:
        name:
          type: string
          example: temperature
          default: temperature
        value:
          type: number
          example: '10'
          default: ''
        operator:
          type: string
          enum:
            - is_less_then
            - is_more_than
        unit:
          type: string
          example: F
          default: F
          enum:
            - F
            - C
      type: object
    time_of_day_condition:
      title: 'Time of day condition'
      properties:
        name:
          type: string
          example: time_of_day
          default: time_of_day
        operator:
          type: string
          enum:
            - is_between
            - is_not_between
        start_time:
          type: number
          example: '0'
          default: '0'
          maximum: '24'
          minimum: '0'
        end_time:
          type: number
          example: '0'
          default: '0'
          maximum: '24'
          minimum: '0'
        timezone:
          $ref: '#/components/schemas/timezone'
      type: object
    timezone_condition:
      title: 'Timezone condition'
      properties:
        name:
          type: string
          example: timezone
          default: timezone
        operator:
          type: string
          enum:
            - is
            - is_not
        timezone:
          $ref: '#/components/schemas/timezone'
      type: object
    weather_condition:
      title: 'Weather condition'
      properties:
        name:
          type: string
          example: weather
          default: weather
        operator:
          type: string
          enum:
            - is
            - is_not
        value:
          $ref: '#/components/schemas/weather_list'
      type: object
  responses:
    '200':
      description: 'Everything is ok.'
    '400':
      description: 'Valid data was given but the request has failed.'
    '401':
      description: 'No valid API Key was given.'
    '404':
      description: 'The request resource could not be found.'
    '422':
      description: 'The payload has missing required parameters or invalid data was given.'
    '429':
      description: 'Too many attempts.'
    '500':
      description: 'Request failed due to an internal error in Alterable.'
    '503':
      description: 'Alterable is offline for maintenance.'
tags:
  -
    name: 'Countdown Timers'
    description: 'Countdown Timers'
  -
    name: 'Dynamic Images'
    description: 'Dynamic Images'
  -
    name: 'Dynamic Products'
    description: 'Dynamic Products'
  -
    name: Images
    description: Images
  -
    name: 'Local Maps'
    description: 'Local Maps'
  -
    name: 'Merge Tags'
    description: 'Merge Tags'
  -
    name: Products
    description: Products
  -
    name: Scratchers
    description: Scratchers
  -
    name: Surveys
    description: Surveys
x-tagGroups:
  - name: Services
    tags:
      - Countdown Timers
      - Dynamic Images
      - Dynamic Products
      - Local Maps
      - Scratchers
      - Surveys
  - name: Data
    tags:
      - Images
      - Products