{
  "openapi": "3.0.2",
  "info": {
    "title": "Screenshot API",
    "version": "1.0.0"
  },
  "components": {
    "schemas": {
      "Users": {
        "title": "User",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "oldUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "nullable": true,
            "default": "team_admin"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "createdAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "emailVerified": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "gaid": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "ip": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isAdmin": {
            "type": "boolean",
            "default": false
          },
          "source": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "trialstartsat": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true,
            "default": {}
          },
          "allowInvoiceNotification": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "ScheduleRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduleRequest"
            }
          }
        },
        "required": [
          "id",
          "email",
          "role",
          "status",
          "isActive",
          "isAdmin",
          "trialstartsat",
          "allowInvoiceNotification"
        ]
      },
      "Teams": {
        "title": "Team",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "oldUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "apiToken": {
            "type": "string",
            "maxLength": 255
          },
          "rememberToken": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          },
          "screenshotsThisMonth": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "totalScreenshots": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cardBrand": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "cardLastFour": {
            "type": "string",
            "maxLength": 4,
            "nullable": true
          },
          "cardExpMonth": {
            "type": "string",
            "maxLength": 2,
            "nullable": true
          },
          "cardExpYear": {
            "type": "string",
            "maxLength": 4,
            "nullable": true
          },
          "plan": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeCustomer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "creemCustomer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "Screenshots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Screenshot"
            }
          },
          "Queues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Queue"
            }
          },
          "CancelReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CancelReason"
            }
          },
          "Subscription": {
            "$ref": "#/components/schemas/Subscription"
          },
          "TeamInvitations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamInvitation"
            }
          },
          "CookieTemplates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CookieTemplate"
            }
          },
          "StorageIntegrations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorageIntegration"
            }
          }
        },
        "required": [
          "id",
          "name",
          "apiToken",
          "screenshotsThisMonth",
          "createdAt",
          "updatedAt"
        ]
      },
      "Permissions": {
        "title": "Permission",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "permissions": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "User": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt"
        ]
      },
      "Prices": {
        "title": "Price",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "interval": {
            "type": "string",
            "nullable": true
          },
          "flat_fee_id": {
            "type": "string",
            "nullable": true
          },
          "overage_id": {
            "type": "string",
            "nullable": true
          },
          "screenshot_amount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "is_visible": {
            "type": "boolean",
            "nullable": true,
            "default": true
          },
          "flat_fee_creem_id": {
            "type": "string",
            "nullable": true
          },
          "maxPaymentFailure": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 10
          },
          "rpm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "metadata": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "is_visible",
          "maxPaymentFailure",
          "createdAt",
          "updatedAt"
        ]
      },
      "EventLogs": {
        "title": "EventLog",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "User": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt"
        ]
      },
      "Screenshots": {
        "title": "Screenshot",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1680
          },
          "height": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 876
          },
          "screenshotFile": {
            "type": "string",
            "nullable": true
          },
          "htmlFile": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "textFile": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "markdownFile": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "status": {
            "type": "string",
            "maxLength": 255
          },
          "ip": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ttl": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "normalizedUrl": {
            "type": "string",
            "nullable": true
          },
          "full_page": {
            "type": "boolean",
            "default": false
          },
          "file_type": {
            "type": "string",
            "maxLength": 10,
            "nullable": true
          },
          "image_quality": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "grayscale": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pdf_options": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "thumbnail_width": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accept_languages": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "user_agent": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "css_url": {
            "type": "string",
            "nullable": true
          },
          "css": {
            "type": "string",
            "nullable": true
          },
          "js_url": {
            "type": "string",
            "nullable": true
          },
          "js": {
            "type": "string",
            "nullable": true
          },
          "selector": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "cookies": {
            "type": "string",
            "maxLength": 4096,
            "nullable": true
          },
          "delay": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "headers": {
            "type": "string",
            "maxLength": 4096,
            "nullable": true
          },
          "block_ads": {
            "type": "boolean",
            "default": false
          },
          "block_tracking": {
            "type": "boolean",
            "default": false
          },
          "block_stylesheets": {
            "type": "boolean",
            "default": false
          },
          "block_images": {
            "type": "boolean",
            "default": false
          },
          "block_media": {
            "type": "boolean",
            "default": false
          },
          "block_font": {
            "type": "boolean",
            "default": false
          },
          "block_text_track": {
            "type": "boolean",
            "default": false
          },
          "block_xhr": {
            "type": "boolean",
            "default": false
          },
          "block_fetch": {
            "type": "boolean",
            "default": false
          },
          "block_event_source": {
            "type": "boolean",
            "default": false
          },
          "block_web_socket": {
            "type": "boolean",
            "default": false
          },
          "block_manifest": {
            "type": "boolean",
            "default": false
          },
          "omit_background": {
            "type": "boolean",
            "default": false
          },
          "dark_mode": {
            "type": "boolean",
            "default": false
          },
          "no_cookie_banners": {
            "type": "boolean",
            "default": false
          },
          "block_chat_widgets": {
            "type": "boolean",
            "default": false
          },
          "block_js": {
            "type": "boolean",
            "default": false
          },
          "lazy_load": {
            "type": "boolean",
            "default": false
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "retina": {
            "type": "boolean",
            "default": false
          },
          "proxy": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "custom_html": {
            "type": "string",
            "nullable": true
          },
          "scroll_to_element": {
            "type": "string",
            "nullable": true
          },
          "destroy_screenshot": {
            "type": "boolean",
            "default": false
          },
          "wait_for_event": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "clip": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "blur_selector": {
            "type": "string",
            "nullable": true
          },
          "remove_selector": {
            "type": "string",
            "nullable": true
          },
          "fail_on_error": {
            "type": "boolean",
            "default": false
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "User": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "id",
          "width",
          "height",
          "status",
          "full_page",
          "block_ads",
          "block_tracking",
          "block_stylesheets",
          "block_images",
          "block_media",
          "block_font",
          "block_text_track",
          "block_xhr",
          "block_fetch",
          "block_event_source",
          "block_web_socket",
          "block_manifest",
          "omit_background",
          "dark_mode",
          "no_cookie_banners",
          "block_chat_widgets",
          "block_js",
          "lazy_load",
          "retina",
          "destroy_screenshot",
          "fail_on_error"
        ]
      },
      "Subscriptions": {
        "title": "Subscription",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "oldUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeStatus": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripePlan": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeOveragePlan": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeSubItemId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "stripeSubItemOverageId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "trialEndsAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "endsAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "createdAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "allowOverage": {
            "type": "boolean",
            "nullable": true,
            "default": true
          },
          "screenshot_amount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": null
          },
          "creemId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "status": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "creemProductId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "creemSitemId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "creemPriceId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "paymentFailureCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "rpm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          }
        },
        "required": [
          "id",
          "quantity",
          "allowOverage",
          "screenshot_amount",
          "paymentFailureCount"
        ]
      },
      "Queues": {
        "title": "Queue",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "maxLength": 255
          },
          "status": {
            "type": "string",
            "enum": [
              "in-progress",
              "completed",
              "failed",
              "paused",
              "cancelled"
            ],
            "nullable": true,
            "default": "in-progress"
          },
          "error_message": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "screenshot": {
            "type": "string",
            "nullable": true
          },
          "params": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "bulk",
              "sitemap"
            ],
            "nullable": true,
            "default": "bulk"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "queue_uuid": {
            "type": "string",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "User": {
            "$ref": "#/components/schemas/User"
          },
          "BulkRequest": {
            "$ref": "#/components/schemas/BulkRequest"
          }
        },
        "required": [
          "id",
          "url",
          "status",
          "type",
          "createdAt",
          "updatedAt"
        ]
      },
      "BulkRequests": {
        "title": "BulkRequest",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "queue_uuid": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "in-progress",
              "completed",
              "failed",
              "paused",
              "cancelled"
            ],
            "nullable": true,
            "default": "in-progress"
          },
          "percent_complete": {
            "type": "integer",
            "nullable": true,
            "default": 0
          },
          "total_shots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "success_shots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "failed_shots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "webhook_url": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "bulk",
              "sitemap"
            ],
            "nullable": true,
            "default": "bulk"
          },
          "sitemapDomain": {
            "type": "string",
            "nullable": true
          },
          "bulkFileName": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "User": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "id",
          "status",
          "percent_complete",
          "total_shots",
          "success_shots",
          "failed_shots",
          "type",
          "createdAt",
          "updatedAt"
        ]
      },
      "ScheduleRequests": {
        "title": "ScheduleRequest",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "schedule_date": {
            "type": "string",
            "nullable": true
          },
          "isostring_date": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "success",
              "failed",
              "running",
              "stopped"
            ],
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "request": {
            "type": "string",
            "nullable": true
          },
          "cron_time": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "enableNotification": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "User": {
            "$ref": "#/components/schemas/User"
          },
          "ScheduleScreenshots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduleScreenshot"
            }
          }
        },
        "required": [
          "id",
          "count",
          "enableNotification",
          "createdAt",
          "updatedAt"
        ]
      },
      "TeamInvitations": {
        "title": "TeamInvitation",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending"
            ]
          },
          "code": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          }
        },
        "required": [
          "id",
          "status",
          "code",
          "email",
          "role",
          "expiresAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "DailyUsageStats": {
        "title": "DailyUsageStat",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "totalShots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "successShots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "failedShots": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "totalShots",
          "successShots",
          "failedShots",
          "createdAt",
          "updatedAt"
        ]
      },
      "EmailHistories": {
        "title": "EmailHistory",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "team_id": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "default": {}
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "default": {}
          },
          "activeBillingPeriod": {
            "type": "boolean",
            "default": false
          },
          "trialUsage": {
            "type": "boolean",
            "default": false
          },
          "notify": {
            "type": "boolean",
            "default": true
          },
          "percent80": {
            "type": "boolean",
            "default": false
          },
          "percent90": {
            "type": "boolean",
            "default": false
          },
          "percent100": {
            "type": "boolean",
            "default": false
          },
          "overageUsed": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "team_id",
          "createdAt",
          "updatedAt",
          "activeBillingPeriod",
          "trialUsage",
          "notify",
          "percent80",
          "percent90",
          "percent100",
          "overageUsed"
        ]
      },
      "CancelReasons": {
        "title": "CancelReason",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "reason": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "feedback": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt"
        ]
      },
      "ScheduleScreenshots": {
        "title": "ScheduleScreenshot",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "isostring_date": {
            "type": "string",
            "nullable": true
          },
          "request": {
            "type": "string",
            "nullable": true
          },
          "screenshot_url": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "ScheduleRequestId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ScheduleRequest": {
            "$ref": "#/components/schemas/ScheduleRequest"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt"
        ]
      },
      "CookieTemplates": {
        "title": "CookieTemplate",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "temp_id": {
            "type": "string"
          },
          "cookies": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ]
          },
          "isEpired": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "notifiedAtWeek": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "notifiedAt3Days": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "notifiedAt1Day": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "alertSetting": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "iv": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          },
          "User": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "id",
          "temp_id",
          "cookies",
          "isEpired",
          "notifiedAtWeek",
          "notifiedAt3Days",
          "notifiedAt1Day",
          "createdAt",
          "updatedAt"
        ]
      },
      "Testimonials": {
        "title": "Testimonial",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "organization": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "designation": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "rating": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "verified": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "verified",
          "createdAt",
          "updatedAt"
        ]
      },
      "StorageIntegrations": {
        "title": "StorageIntegration",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "endpointUrl": {
            "type": "string",
            "nullable": true
          },
          "bucketName": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "connectionString": {
            "type": "string",
            "nullable": true
          },
          "service": {
            "type": "string",
            "nullable": true
          },
          "defaultService": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "defaultBucket": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "iv": {
            "type": "string",
            "nullable": true
          },
          "configurations": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "TeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Team": {
            "$ref": "#/components/schemas/Team"
          }
        },
        "required": [
          "id",
          "defaultService",
          "defaultBucket",
          "createdAt",
          "updatedAt"
        ]
      }
    }
  },
  "paths": {
    "/billing/subscription": {
      "delete": {
        "summary": "Cancel a subscription",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "cancel a subscription",
            "schema": {
              "type": "Billing"
            }
          }
        }
      },
      "put": {
        "summary": "update team subscription to a plan",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Billing"
            }
          }
        }
      }
    },
    "/billing/card": {
      "post": {
        "summary": "create card for a team",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Object"
            }
          }
        }
      },
      "delete": {
        "summary": "delete card for a team",
        "tags": [
          "billing"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "cardId",
            "required": true,
            "description": "The card id",
            "schema": {
              "type": "array",
              "default": "2"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Object"
            }
          }
        }
      }
    },
    "/billing/info": {
      "get": {
        "summary": "Get billing info for a team",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Object"
            }
          }
        }
      }
    },
    "/billing/default-card": {
      "post": {
        "summary": "Make a card default",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Object"
            }
          }
        }
      }
    },
    "/billing/subscribe": {
      "get": {
        "summary": "subscribe team to a plan",
        "tags": [
          "billing"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "Billing",
            "schema": {
              "type": "Billing"
            }
          }
        }
      }
    },
    "/screenshots": {
      "get": {
        "summary": "get screenshots",
        "tags": [
          "screenshot"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "page number (zero indexed)",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The numbers of items to return",
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "The numbers of items to return",
            "schema": {
              "type": "integer",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          }
        }
      }
    },
    "/team/member": {
      "post": {
        "summary": "create a new team member (a user)",
        "tags": [
          "team"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "firstName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "lastName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "email",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "role",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "tier",
            "description": "for operators only, tiers can be 1, 2 or 3",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "body",
            "name": "UserGroups",
            "schema": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "register a team  member",
            "schema": {
              "type": "User"
            }
          }
        }
      },
      "put": {
        "summary": "update a team member (a user)",
        "tags": [
          "team"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "id",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "firstName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "lastName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "email",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "tier",
            "description": "for operators only, tiers can be 1, 2 or 3",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "body",
            "name": "role",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "body",
            "name": "UserGroups",
            "schema": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "update a team  member",
            "schema": {
              "type": "User"
            }
          }
        }
      }
    },
    "/team/:id": {
      "get": {
        "summary": "get a team",
        "tags": [
          "team"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "get a team",
            "schema": {
              "type": "Team"
            }
          }
        }
      },
      "put": {
        "summary": "update team",
        "tags": [
          "team"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "id",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "body",
            "name": "tags",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "body",
            "name": "name",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          }
        }
      }
    },
    "/team/member/:id": {
      "get": {
        "summary": "get a team member (a user)",
        "tags": [
          "team"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "get a team member",
            "schema": {
              "type": "User"
            }
          }
        }
      }
    },
    "/team/members": {
      "get": {
        "summary": "get team members",
        "tags": [
          "team"
        ],
        "parameters": null,
        "responses": {
          "200": {
            "description": "get a team",
            "schema": {
              "type": "Team"
            }
          }
        }
      }
    }
  }
}