{
  "swagger": "2.0",
  "host": "api.sirv.com",
  "basePath": "/",
  "schemes": [
    "https"
  ],
  "info": {
    "title": "API documentation",
    "version": "0.0.1"
  },
  "tags": [],
  "paths": {
    "/v2/account": {
      "get": {
        "summary": "Get account info",
        "operationId": "getV2Account",
        "description": "Use this API method to get information about the account, including its CDN URL; account name; additional domains; remote fetching status; date created and more.",
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Account"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Update account info",
        "operationId": "postV2Account",
        "description": "Use this method to change the account options. You can enable or disable JS/CSS file minification. You can also enable/disable automatic fetching via HTTP or S3 from a remote location.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model18"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/user": {
      "get": {
        "summary": "Get user info",
        "operationId": "getV2User",
        "description": "Use this API method to get information about a user, including their name, email and S3 key.",
        "parameters": [
          {
            "type": "string",
            "name": "userId",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/User"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/limits": {
      "get": {
        "summary": "Get API limits",
        "operationId": "getV2AccountLimits",
        "description": "Use this method to check the allowed number of API requests and the number of requests used in the past 60 minutes.",
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/storage": {
      "get": {
        "summary": "Get storage info",
        "operationId": "getV2AccountStorage",
        "description": "Use this to check the current storage usage of an account. It will also return the total allowed storage; any extra storage provided; the temporary 30-day burstable storage allowance; the total files stored. If the account has exceeded its storage allowance, it will state the when that happened. If the account is one of a <a href=\"https://sirv.com/help/resources/multiple-sirv-accounts/\">multi-account group</a>, it will show the total storage used by all accounts.",
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Account_storage"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/users": {
      "get": {
        "summary": "Get users",
        "operationId": "getV2AccountUsers",
        "description": "Use this API method to get a list of all users of an account. It will return a list of user IDs and their roles. If you need a users email address, the user ID can be used to obtain it.",
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Account_users_list"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/billing/plan": {
      "get": {
        "summary": "Get billing info",
        "operationId": "getV2BillingPlan",
        "description": "Use this API method to get all the billing plan information of an account, including price, storage and transfer allowances.",
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Billing_plan"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/download": {
      "get": {
        "summary": "Download file",
        "operationId": "getV2FilesDownload",
        "description": "Use this API method to download a single file from an account.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta": {
      "get": {
        "summary": "Get all file meta",
        "operationId": "getV2FilesMeta",
        "description": "Get all the meta for a file, in a single request. Unlike the API methods for getting meta title, description, tags and product data, this API method will return all meta data, making it the fastest and easiest way to get meta via the API. (You can also get file meta simply by requesting a file URL with ?info appended - <a href=\"https://demo.sirv.com/example.jpg?info\">example</a>)",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model1"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set all file meta",
        "operationId": "postV2FilesMeta",
        "description": "Add multiple meta fields in a single request. Any of the 10 types of meta can be added or changed with this API method. If you're adding a lot of meta, this is the fastest and lowest load way to add meta data.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model33"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/options": {
      "get": {
        "summary": "Get folder options",
        "operationId": "getV2FilesOptions",
        "description": "Use this API method to check the options of a folder. It will tell you the settings for spin scanning, spin naming, public listing and folder locking (Enterprise accounts only).",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "type": "boolean",
            "description": "Include options inherited from parent folders",
            "default": false,
            "name": "withInherited",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model2"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set folder options",
        "operationId": "postV2FilesOptions",
        "description": "Use this API method to change the folder options. You can enable/disable spin scanning, change the spin naming convention and enable/disable publicly viewable folder listings.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model34"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/poi": {
      "get": {
        "summary": "Get user points of interest",
        "operationId": "getV2FilesPoi",
        "description": "Use this API method to get coordinates of all the POI (points of interest) on the image.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set point of interest",
        "operationId": "postV2FilesPoi",
        "description": "Use this API method to set coordinates of the POI (point of interest) on the image.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model35"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "delete": {
        "summary": "Delete point of interest",
        "operationId": "deleteV2FilesPoi",
        "description": "Use this API method to delete POI (point of interest) on the image.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model73"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/readdir": {
      "get": {
        "summary": "Read folder contents",
        "operationId": "getV2FilesReaddir",
        "description": "Use this API method to get a list of all the files/folders within a folder. It will return the filename, mimetype, content type and file size. It will also return any folders that exist. A page of up to 100 results will be returned - use the 'continuation' field to request additional pages.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "dirname",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "Send it to get next page of results",
            "maxLength": 1024,
            "name": "continuation",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model4"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/removeBackground": {
      "get": {
        "summary": "Get results of image background removal job",
        "operationId": "getV2FilesRemovebackground",
        "description": "Use this method to get results of the job created with POST /files/3d/model2GLB",
        "parameters": [
          {
            "type": "string",
            "description": "Job ID returned from POST /files/removeBackground",
            "maxLength": 1024,
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model5"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Remove image background",
        "operationId": "postV2FilesRemovebackground",
        "description": "Use this method to remove background from images",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model36"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model37"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/stat": {
      "get": {
        "summary": "Get file info",
        "operationId": "getV2FilesStat",
        "description": "Use this API method to get information about a file, including created time, modified time, content type and size. It returns Unix information.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model6"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/zip": {
      "get": {
        "summary": "Get results of ZIP job",
        "operationId": "getV2FilesZip",
        "description": "Use this method to get results and progress of ZIP job created with POST /files/zip method",
        "parameters": [
          {
            "type": "string",
            "description": "Job ID returned from POST /files/zip",
            "maxLength": 1024,
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model8"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Zip a batch of files or directories",
        "operationId": "postV2FilesZip",
        "description": "Use this method to create a ZIP archive from the list of filenames",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model57"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model58"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/stats/http": {
      "get": {
        "summary": "Get transfer stats",
        "operationId": "getV2StatsHttp",
        "description": "Use this API method to check how much data was transferred per day during a certain period (date from/to). The request returns aggregated HTTP log data.",
        "parameters": [
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: 1 month ago, rounded to start of day",
            "name": "from",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: now, rounded to end of day",
            "name": "to",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/stats/storage": {
      "get": {
        "summary": "Get storage stats",
        "operationId": "getV2StatsStorage",
        "description": "Use this API method to check the total amount of data stored on a given day or each day over a certain period.",
        "parameters": [
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: 1 month ago, rounded to start of day",
            "name": "from",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: now, rounded to end of day",
            "name": "to",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/3d/model2GLB": {
      "get": {
        "summary": "Get results of GLB conversion job",
        "operationId": "getV2Files3dModel2glb",
        "description": "Use this method to get results of the job created with POST /files/3d/model2GLB",
        "parameters": [
          {
            "type": "string",
            "description": "Job ID returned from POST /files/3d/model2GLB",
            "maxLength": 1024,
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model9"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Convert OBJ, USD, USDZ, FBX to GLB",
        "operationId": "postV2Files3dModel2glb",
        "description": "Use this method to convert OBJ, USD, USDZ, FBX to GLB format",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model61"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model62"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/batch/delete": {
      "get": {
        "summary": "Get results of batch delete job",
        "operationId": "getV2FilesBatchDelete",
        "description": "Use this method to get results and progress of batch delete job created with POST /files/batch/delete method",
        "parameters": [
          {
            "type": "string",
            "description": "Job ID returned from POST /files/batch/delete",
            "maxLength": 1024,
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model11"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Delete a batch of files or directories",
        "operationId": "postV2FilesBatchDelete",
        "description": "Use this method to delete the list of filenames",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model64"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model65"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta/approval": {
      "get": {
        "summary": "Get approval flag",
        "operationId": "getV2FilesMetaApproval",
        "description": "Use this API method to get the file approval tag and optional comment for a file. Used as part of an image review and approval process.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model12"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set approval flag",
        "operationId": "postV2FilesMetaApproval",
        "description": "Use this API method to set the file approval tag (approved or not) and an optional comment. Used as part of an image review and approval process.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model66"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta/description": {
      "get": {
        "summary": "Get meta description",
        "operationId": "getV2FilesMetaDescription",
        "description": "Use this API method to check the meta description of a file or folder. For images, this is the meta field that is used for showing alt tags on images.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model13"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set meta description",
        "operationId": "postV2FilesMetaDescription",
        "description": "Use this API method to set/change the meta description of a file or folder. For images, this is the meta field that is used for showing alt tags on images.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model67"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta/product": {
      "get": {
        "summary": "Get product meta",
        "operationId": "getV2FilesMetaProduct",
        "description": "Use this API method to get the product meta fields for an image. This can be used by retailers for organizing images into product groups for an ecommerce store.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model14"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set product meta",
        "operationId": "postV2FilesMetaProduct",
        "description": "Use this API method to set product meta fields for an image. This can be used by retailers for organizing images into product groups for an ecommerce store.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model68"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta/tags": {
      "get": {
        "summary": "Get file meta tags",
        "operationId": "getV2FilesMetaTags",
        "description": "Use this API method to get all the meta tags of a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model15"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Add file meta tags",
        "operationId": "postV2FilesMetaTags",
        "description": "Use this API method to add a meta tag to a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model70"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "delete": {
        "summary": "Delete file meta tags",
        "operationId": "deleteV2FilesMetaTags",
        "description": "Use this API method to delete a meta tag from a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model75"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/meta/title": {
      "get": {
        "summary": "Get meta title",
        "operationId": "getV2FilesMetaTitle",
        "description": "Use this API method to check the meta title of a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model16"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "Set meta title",
        "operationId": "postV2FilesMetaTitle",
        "description": "Use this API method to set the meta title of a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model71"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/tus/locations": {
      "get": {
        "summary": "List available tus.io locations",
        "operationId": "getV2FilesTusLocations",
        "description": "Use this API method to list available tus.io locations.",
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/tus/url": {
      "get": {
        "summary": "Get tus.io upload link",
        "operationId": "getV2FilesTusUrl",
        "description": "Use this API method to get a link for tus.io file upload link.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 256,
            "name": "location",
            "in": "query",
            "required": true
          },
          {
            "type": "number",
            "description": "URL expiration time in seconds",
            "maximum": 604800,
            "name": "expiresIn",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/stats/spins/views": {
      "get": {
        "summary": "Get spins views",
        "operationId": "getV2StatsSpinsViews",
        "description": "Use this API method to get spins views stats over a certain period (date from/to). Date range is limited to 5 days.",
        "parameters": [
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: 1 day ago",
            "name": "from",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: now",
            "name": "to",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Filter by account name (alias)",
            "name": "alias",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/stats/http/agg/traffic": {
      "get": {
        "summary": "Get transfer stats",
        "operationId": "getV2StatsHttpAggTraffic",
        "description": "Use this API method to check how much data was transferred per day during a certain period (date from/to). The request returns aggregated HTTP log data.",
        "parameters": [
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: 1 month ago, rounded to start of day",
            "name": "from",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "description": "Default: now, rounded to end of day",
            "name": "to",
            "in": "query"
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/token": {
      "post": {
        "summary": "Get bearer token",
        "operationId": "postV2Token",
        "description": "Every API call will be authenticated with a bearer token, so your first step is to obtain a bearer token.\nBearer tokens expire after 20 minutes (1200 seconds). If your token expires, request a new one, then continue with your work. After each API request you submit, you'll receive a response that contains useful information, including an expiresIn field (in seconds) telling you  how long remains before your bearer token expires.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model19"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model20"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/custom-domain": {
      "post": {
        "summary": "Add custom domain",
        "operationId": "postV2AccountCustomdomain",
        "description": "Use this method to configure a custom CDN domain for an account alias.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model21"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "delete": {
        "summary": "Remove custom domain",
        "operationId": "deleteV2AccountCustomdomain",
        "description": "Use this method to remove the custom CDN domain from an account alias.",
        "parameters": [
          {
            "type": "string",
            "name": "alias",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "domain",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/sub-account": {
      "post": {
        "summary": "Create sub-account",
        "operationId": "postV2AccountSubaccount",
        "description": "Use this method to create a sub-account under the account. Sub-account functions as a fully independent account, but uses main account's billing, storage, and bandwidth.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model22"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/minify"
            },
            "description": "Successful"
          }
        }
      },
      "delete": {
        "summary": "Close sub-account",
        "operationId": "deleteV2AccountSubaccount",
        "description": "Use this method to close a sub-account.",
        "parameters": [
          {
            "type": "string",
            "name": "alias",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/minify"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/copy": {
      "post": {
        "summary": "Copy file",
        "operationId": "postV2FilesCopy",
        "description": "Use this API method to copy a single file.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "from",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "to",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/delete": {
      "post": {
        "summary": "Delete file or empty folder",
        "operationId": "postV2FilesDelete",
        "description": "Use this API method to delete a single file or an empty folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/fetch": {
      "post": {
        "summary": "Fetch URL",
        "operationId": "postV2FilesFetch",
        "description": "Use this API method to fetch a file(s) from a URL via HTTP and save it to your Sirv account. This can be any URL, either public or private (via HTTP authentication). In the url parameter, enter the full URL of the remote file. In the filename parameter, enter the folder path and filename where it should be saved e.g. /path/to/folder/new-filename.jpg. If the folder path does not already exist in your Sirv account new folder(s) will be created.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model25"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model28"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/jwt": {
      "post": {
        "summary": "Get JWT protected URL",
        "operationId": "postV2FilesJwt",
        "description": "JWT protection is a powerful way to protect your files from being seen without permission. Use this API method to generate a token that can be appended to a URL or set of URLs, allowing a file to be served. Without a valid token, requests for any file within a JWT protected folder will be denied.\nBefore using this method, you must enable JWT folder protection and obtain a key.\nRead the documentation to learn how to enable and use JWT protection: https://sirv.com/help/json-web-token-protected-signed-url#enable-jwt-protection",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model29"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/mkdir": {
      "post": {
        "summary": "Create new empty folder",
        "operationId": "postV2FilesMkdir",
        "description": "Use this API method to create a new empty folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "dirname",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/rename": {
      "post": {
        "summary": "Rename file or folder",
        "operationId": "postV2FilesRename",
        "description": "Use this API method to rename (or move) a file or folder.",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "from",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "to",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/search": {
      "post": {
        "summary": "Search files",
        "operationId": "postV2FilesSearch",
        "description": "Use this API method to search for files based on one or more criteria: file name; folder path; file extension; content type; created/modified time; or with some specific meta information.\n\nUp to 1000 results can be returned. If you need more results, use the scroll API method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model39"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2amazon360": {
      "post": {
        "summary": "Export spin to Amazon",
        "operationId": "postV2FilesSpin2amazon360",
        "description": "This API method will generate a zip file containing 360 spin images that meet Amazon's requirements for width, height, format and file naming. The response will contain the zip file URL.\n\nYou must know the ASIN (Amazon Standard Identification Number) to use this 360 spin zip method. The ASIN is displayed on the Amazon product page.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model40"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model41"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2grainger360": {
      "post": {
        "summary": "Export spin to Grainger",
        "operationId": "postV2FilesSpin2grainger360",
        "description": "This API method will generate a zip file containing 360 spin images that meet Grainger's requirements for format and file naming. The response will contain the zip file URL.\n\nYou must know the Grainger SKU to use this 360 spin zip method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model42"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model43"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2homedepot360": {
      "post": {
        "summary": "Export spin to Home Depot",
        "operationId": "postV2FilesSpin2homedepot360",
        "description": "This API method will generate a zip file containing 360 spin images that meet Home Depot's requirements for image dimensions, format and naming. The response will contain the zip file URL for download.\n\nYou must know the Home Depot OMSID to use this 360 spin zip method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model44"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model45"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2lowes360": {
      "post": {
        "summary": "Export spin to Lowe's",
        "operationId": "postV2FilesSpin2lowes360",
        "description": "This API method will generate a zip file containing 360 spin images that meet Lowe's requirements for format and file naming. The response will contain the zip file URL.\n\nYou must know the Lowe's barcode to use this 360 spin zip method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model46"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model47"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2msc360": {
      "post": {
        "summary": "Export spin to MSC Direct",
        "operationId": "postV2FilesSpin2msc360",
        "description": "This API method will generate a zip file containing 360 spin images that meet MSC Direct's requirements for format and file naming. The response will contain the zip file URL.\n\nYou must know the MSC Direct's vendor item # (MSC ID) to use this 360 spin zip method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model48"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model49"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2video": {
      "post": {
        "summary": "Convert spin to video",
        "operationId": "postV2FilesSpin2video",
        "description": "Use this API method to convert a 360 spin into an MP4 video. You can specify the width/height of the video and the number of rotations. If it is a multi-row spin, you can also specify which row should be converted.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model50"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model51"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/spin2walmart360": {
      "post": {
        "summary": "Export spin to Walmart",
        "operationId": "postV2FilesSpin2walmart360",
        "description": "This API method will generate a zip file containing 360 spin images that meet Walmart's requirements for format and file naming. The response will contain the zip file URL.\n\nYou must know the Walmart GTIN to use this 360 spin zip method.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model52"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model53"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/upload": {
      "post": {
        "summary": "Upload file",
        "operationId": "postV2FilesUpload",
        "description": "Use this API method to upload a file. If the folder path does not already exist, it will be created. Specify the appropriate content type. Use binary content encoding (not base64).",
        "parameters": [
          {
            "type": "string",
            "maxLength": 1024,
            "pattern": "^\\/",
            "name": "filename",
            "in": "query",
            "required": true
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/video2spin": {
      "post": {
        "summary": "Convert video to spin",
        "operationId": "postV2FilesVideo2spin",
        "description": "Use this API method to create a 360 spin from a video file. Choose the start and end time if you only wish to convert part of the video.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model55"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Model56"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/events/search": {
      "post": {
        "summary": "List or search account events",
        "operationId": "postV2AccountEventsSearch",
        "description": "List all events triggered for account.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model59"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/account/events/seen": {
      "post": {
        "summary": "Mark account event(s) as seen",
        "operationId": "postV2AccountEventsSeen",
        "description": "Add `seen` flag for specified account event(s)",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model60"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/v2/files/search/scroll": {
      "post": {
        "summary": "Scroll through search results",
        "operationId": "postV2FilesSearchScroll",
        "description": "Use the scroll API method after performing an API search if you need to retrieve more than 1000 results.\n\nEach call to the scroll API returns the next batch of search results until there are no more results left to return.\n\nTo use scrolling, the initial search request should specify the \"scroll\" parameter. The search context will then be kept alive for 30 seconds between each scroll call.\n\nA scrolling search will cache the entire results temporarily while you retrieve them. As such, it shows a snapshot in time and may become outdated if files have been added, deleted or modified since then. <a href=\"https://sirv.com/help/articles/search-files-with-the-api/#scroll-through-more-than-1000-results\">Learn more</a>",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model72"
            }
          }
        ],
        "tags": [
          "v2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    }
  },
  "definitions": {
    "object_with_no_schema": {
      "type": "object"
    },
    "minify": {
      "type": "object"
    },
    "Account": {
      "type": "object",
      "properties": {
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "alias": {
          "type": "string"
        },
        "isPartner": {
          "type": "boolean"
        },
        "fileSizeLimit": {
          "type": "number"
        },
        "customRedirectUrl": {
          "type": "string"
        },
        "extraDataTransfer": {
          "type": "number"
        },
        "extraStorage": {
          "type": "number"
        },
        "cdnURL": {
          "type": "string"
        },
        "cdnTempURL": {
          "type": "string"
        },
        "fetching": {
          "$ref": "#/definitions/object_with_no_schema"
        },
        "minify": {
          "$ref": "#/definitions/minify"
        },
        "aliases": {
          "$ref": "#/definitions/minify"
        },
        "status": {
          "$ref": "#/definitions/minify"
        }
      }
    },
    "User": {
      "type": "object",
      "properties": {
        "lastName": {
          "type": "string"
        },
        "firstName": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "s3Secret": {
          "type": "string"
        }
      }
    },
    "sharedBilling": {
      "type": "object",
      "description": "Storage breakdown by sub-accounts"
    },
    "Account_storage": {
      "type": "object",
      "properties": {
        "plan": {
          "type": "number",
          "description": "Billing plan storage allowance"
        },
        "burstable": {
          "type": "number",
          "description": "Burstable storage allowance"
        },
        "extra": {
          "type": "number",
          "description": "Extra storage allowance"
        },
        "used": {
          "type": "number",
          "description": "Storage used"
        },
        "remaining": {
          "type": "number",
          "description": "Storage remaining"
        },
        "files": {
          "type": "number",
          "description": "Total number of files"
        },
        "sharedBilling": {
          "$ref": "#/definitions/sharedBilling"
        },
        "quotaExceededDate": {
          "type": "string",
          "format": "date-time",
          "description": "The datetime when account exceeded total storage allowance"
        }
      }
    },
    "Account_user_entry": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string"
        },
        "userId": {
          "type": "string"
        }
      }
    },
    "Account_users_list": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Account_user_entry"
      }
    },
    "Billing_plan_pricing": {
      "type": "object",
      "properties": {
        "month": {
          "type": "number"
        },
        "quarter": {
          "type": "number"
        },
        "year": {
          "type": "number"
        }
      }
    },
    "Billing_plan": {
      "type": "object",
      "properties": {
        "dateActive": {
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "type": "string"
        },
        "period": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "price": {
          "$ref": "#/definitions/Billing_plan_pricing"
        },
        "storage": {
          "type": "number"
        },
        "burstableStorage": {
          "type": "number"
        },
        "dataTransferLimit": {
          "type": "number"
        }
      }
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "product": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "brand": {
          "type": "string"
        },
        "category1": {
          "type": "string"
        },
        "category2": {
          "type": "string"
        }
      }
    },
    "approval": {
      "type": "object",
      "properties": {
        "datetime": {
          "type": "string",
          "format": "date-time"
        },
        "approved": {
          "type": "boolean"
        },
        "comment": {
          "type": "string"
        }
      }
    },
    "Model1": {
      "type": "object",
      "properties": {
        "tags": {
          "$ref": "#/definitions/tags"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "product": {
          "$ref": "#/definitions/product"
        },
        "approval": {
          "$ref": "#/definitions/approval"
        }
      }
    },
    "Model2": {
      "type": "object",
      "properties": {
        "scanSpins": {
          "type": "boolean"
        },
        "nameSpinsAfterFolder": {
          "type": "boolean"
        },
        "allowListing": {
          "type": "boolean"
        },
        "locked": {
          "type": "boolean"
        }
      }
    },
    "Model3": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string"
        },
        "mtime": {
          "type": "string",
          "format": "date-time"
        },
        "contentType": {
          "type": "string"
        },
        "size": {
          "type": "number"
        },
        "isDirectory": {
          "type": "boolean"
        },
        "meta": {
          "$ref": "#/definitions/minify"
        }
      },
      "required": [
        "filename",
        "mtime"
      ]
    },
    "contents": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/definitions/Model3"
      }
    },
    "Model4": {
      "type": "object",
      "properties": {
        "continuation": {
          "type": "string",
          "description": "Presence of this field means there is next page of results. Resend request with *continuation* query parameter to get next page."
        },
        "contents": {
          "$ref": "#/definitions/contents"
        }
      },
      "required": [
        "contents"
      ]
    },
    "Model5": {
      "type": "object",
      "properties": {
        "progress": {
          "type": "number"
        }
      }
    },
    "Model6": {
      "type": "object",
      "properties": {
        "ctime": {
          "type": "string",
          "format": "date-time"
        },
        "mtime": {
          "type": "string",
          "format": "date-time"
        },
        "contentType": {
          "type": "string"
        },
        "size": {
          "type": "number"
        },
        "isDirectory": {
          "type": "boolean"
        },
        "meta": {
          "$ref": "#/definitions/minify"
        }
      }
    },
    "Model7": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "ZIP filename"
        },
        "size": {
          "type": "number",
          "description": "Size of ZIP filename"
        },
        "url": {
          "type": "string",
          "description": "URL to download ZIP file"
        }
      }
    },
    "result": {
      "type": "array",
      "description": "Array of resulting ZIP file(s)",
      "items": {
        "$ref": "#/definitions/Model7"
      }
    },
    "Model8": {
      "type": "object",
      "properties": {
        "progress": {
          "type": "number"
        },
        "result": {
          "$ref": "#/definitions/result"
        }
      }
    },
    "Model9": {
      "type": "object",
      "properties": {
        "progress": {
          "type": "number"
        }
      }
    },
    "skipped": {
      "type": "array",
      "description": "Array of NOT removed files (locked files)",
      "items": {
        "type": "string"
      }
    },
    "deleted": {
      "type": "object",
      "properties": {
        "files": {
          "type": "number",
          "description": "Number of deleted files"
        },
        "dirs": {
          "type": "number",
          "description": "Number of deleted folders"
        }
      }
    },
    "Model10": {
      "type": "object",
      "properties": {
        "skipped": {
          "$ref": "#/definitions/skipped"
        },
        "notfound": {
          "type": "number",
          "description": "Number of not found files"
        },
        "deleted": {
          "$ref": "#/definitions/deleted"
        }
      }
    },
    "Model11": {
      "type": "object",
      "properties": {
        "progress": {
          "type": "number"
        },
        "result": {
          "$ref": "#/definitions/Model10"
        }
      }
    },
    "Model12": {
      "type": "object",
      "properties": {
        "datetime": {
          "type": "string",
          "format": "date-time"
        },
        "approved": {
          "type": "boolean"
        },
        "comment": {
          "type": "string"
        }
      }
    },
    "Model13": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        }
      }
    },
    "Model14": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "brand": {
          "type": "string"
        },
        "category1": {
          "type": "string"
        },
        "category2": {
          "type": "string"
        }
      }
    },
    "Model15": {
      "type": "object",
      "properties": {
        "tags": {
          "$ref": "#/definitions/tags"
        }
      }
    },
    "Model16": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        }
      }
    },
    "Model17": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable or disable automatic minification of JS/CSS files"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "http",
        "s3"
      ]
    },
    "auth": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      },
      "required": [
        "enabled",
        "username",
        "username",
        "password",
        "password"
      ]
    },
    "http": {
      "type": "object",
      "properties": {
        "auth": {
          "$ref": "#/definitions/auth"
        },
        "url": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        }
      },
      "required": [
        "url"
      ]
    },
    "s3": {
      "type": "object",
      "properties": {
        "endpoint": {
          "type": "string"
        },
        "accessKeyId": {
          "type": "string"
        },
        "secretAccessKey": {
          "type": "string"
        },
        "bucket": {
          "type": "string"
        },
        "prefix": {
          "type": "string"
        },
        "forcePathStyle": {
          "type": "boolean"
        }
      },
      "required": [
        "accessKeyId",
        "secretAccessKey",
        "bucket"
      ]
    },
    "fetching": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "example": false
        },
        "type": {
          "$ref": "#/definitions/type"
        },
        "http": {
          "$ref": "#/definitions/http"
        },
        "s3": {
          "$ref": "#/definitions/s3"
        }
      },
      "required": [
        "enabled",
        "type",
        "type",
        "http",
        "http",
        "s3",
        "s3"
      ]
    },
    "string": {
      "type": "object",
      "properties": {
        "cdn": {
          "type": "boolean"
        },
        "prefix": {
          "type": "string"
        },
        "defaultProfile": {
          "type": "string"
        }
      }
    },
    "Model18": {
      "type": "object",
      "properties": {
        "minify": {
          "$ref": "#/definitions/Model17"
        },
        "fetching": {
          "$ref": "#/definitions/fetching"
        },
        "aliases": {
          "type": "object",
          "properties": {
            "string": {
              "$ref": "#/definitions/string"
            }
          }
        }
      }
    },
    "Model19": {
      "type": "object",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "API client ID",
          "example": "ZcnZNfzwRhQExoHFoGpxWJ4p2R"
        },
        "clientSecret": {
          "type": "string",
          "description": "API client secret",
          "example": "TM3d0CfXxusKMpH3x7kHJYD40qJIR3omTIGXP6wPPkXpIUKLEz/dOJ9v6LbXra3y67XsaGK7iQPmnAuD+fzj+Q=="
        },
        "expiresIn": {
          "type": "number",
          "description": "Expiration TTL for token in seconds",
          "minimum": 5,
          "maximum": 604800
        }
      },
      "required": [
        "clientId",
        "clientSecret"
      ]
    },
    "scope": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "List of allowed access scopes"
      }
    },
    "Model20": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "description": "JWT access token"
        },
        "expiresIn": {
          "type": "number",
          "description": "Expiration TTL for token in seconds"
        },
        "scope": {
          "$ref": "#/definitions/scope"
        }
      },
      "required": [
        "token",
        "expiresIn"
      ]
    },
    "Model21": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string",
          "example": "my-account"
        },
        "domain": {
          "type": "string",
          "example": "cdn.example.com"
        }
      },
      "required": [
        "alias",
        "domain"
      ]
    },
    "Model22": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string",
          "example": "sub-account-1"
        }
      },
      "required": [
        "alias"
      ]
    },
    "Model23": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "maxLength": 256
        },
        "password": {
          "type": "string",
          "maxLength": 256
        }
      }
    },
    "Model24": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 1024
        },
        "filename": {
          "type": "string",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "auth": {
          "$ref": "#/definitions/Model23"
        },
        "wait": {
          "type": "boolean"
        }
      },
      "required": [
        "url",
        "filename"
      ]
    },
    "Model25": {
      "type": "array",
      "example": [
        [
          {
            "url": "https://demo.sirv.com/aurora.jpg",
            "filename": "/REST API Examples/aurora.jpg"
          },
          {
            "url": "https://demo.sirv.com/missing.jpg",
            "filename": "/REST API Examples/missing.jpg"
          }
        ]
      ],
      "maxItems": 20,
      "x-constraint": {
        "single": true
      },
      "items": {
        "$ref": "#/definitions/Model24"
      }
    },
    "Model26": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "initiator": {
          "$ref": "#/definitions/minify"
        },
        "statusCode": {
          "type": "number"
        },
        "contentLength": {
          "type": "number"
        },
        "headers": {
          "$ref": "#/definitions/minify"
        },
        "timing": {
          "$ref": "#/definitions/minify"
        },
        "error": {
          "$ref": "#/definitions/minify"
        },
        "date": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "attempts": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Model26"
      }
    },
    "Model27": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string"
        },
        "success": {
          "type": "boolean"
        },
        "error": {
          "type": "string"
        },
        "attempted": {
          "type": "boolean"
        },
        "retryAfter": {
          "type": "string",
          "format": "date-time"
        },
        "attempts": {
          "$ref": "#/definitions/attempts"
        }
      }
    },
    "Model28": {
      "type": "array",
      "maxItems": 20,
      "x-constraint": {
        "single": true
      },
      "items": {
        "$ref": "#/definitions/Model27"
      }
    },
    "secureParams": {
      "type": "object"
    },
    "Model29": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/aurora.jpg",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "key": {
          "type": "string",
          "description": "Specify JWT secret",
          "example": "cIxWUYfCjRHAy1BpcoIVNI5TivXszVPq"
        },
        "alias": {
          "type": "string",
          "description": "Specify account alias if your account has multiple aliases",
          "example": "demo-jwt"
        },
        "insecureParams": {
          "$ref": "#/definitions/minify"
        },
        "secureParams": {
          "$ref": "#/definitions/secureParams"
        },
        "expiresIn": {
          "type": "number",
          "description": "Token expiration time in seconds",
          "example": 300
        }
      },
      "required": [
        "filename",
        "key",
        "expiresIn"
      ]
    },
    "Model30": {
      "type": "array",
      "example": [
        [
          "lake",
          "water"
        ]
      ],
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 32
      }
    },
    "Model31": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "LLBB77",
          "maxLength": 256
        },
        "name": {
          "type": "string",
          "example": "Blue Lake Card",
          "maxLength": 256
        },
        "brand": {
          "type": "string",
          "example": "BLUE LAKE LLC",
          "maxLength": 256
        },
        "category1": {
          "type": "string",
          "example": "Cards",
          "maxLength": 256
        },
        "category2": {
          "type": "string",
          "example": "Lakes",
          "maxLength": 256
        }
      }
    },
    "Model32": {
      "type": "object",
      "properties": {
        "approved": {
          "type": "boolean",
          "example": false
        },
        "comment": {
          "type": "string",
          "example": "It looks too cold!",
          "maxLength": 256
        }
      },
      "required": [
        "approved",
        "comment",
        "comment"
      ]
    },
    "Model33": {
      "type": "object",
      "properties": {
        "tags": {
          "$ref": "#/definitions/Model30"
        },
        "title": {
          "type": "string",
          "example": "Blue Lake",
          "maxLength": 256
        },
        "description": {
          "type": "string",
          "example": "Blue Lake in the Winter",
          "maxLength": 1024
        },
        "product": {
          "$ref": "#/definitions/Model31"
        },
        "approval": {
          "$ref": "#/definitions/Model32"
        }
      }
    },
    "Model34": {
      "type": "object",
      "properties": {
        "scanSpins": {
          "type": "boolean",
          "example": true
        },
        "nameSpinsAfterFolder": {
          "type": "boolean"
        },
        "allowListing": {
          "type": "boolean",
          "example": false
        }
      }
    },
    "Model35": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the POI",
          "example": "BlueLake",
          "maxLength": 16
        },
        "x": {
          "type": "number",
          "description": "Relative X coordinate of the center of the POI",
          "example": 0.5,
          "minimum": 0,
          "maximum": 1
        },
        "y": {
          "type": "number",
          "description": "Relative Y coordinate of the center of the POI",
          "example": 0.5,
          "minimum": 0,
          "maximum": 1
        },
        "width": {
          "type": "number",
          "description": "Relative width of the POI",
          "example": 0.5,
          "minimum": 0,
          "maximum": 1
        },
        "height": {
          "type": "number",
          "description": "Relative height of the POI",
          "example": 0.5,
          "minimum": 0,
          "maximum": 1
        }
      }
    },
    "format": {
      "type": "string",
      "description": "Output image format",
      "default": "original",
      "enum": [
        "png",
        "jpg",
        "original"
      ]
    },
    "Model36": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/filename.jpg",
          "maxLength": 1024
        },
        "overwrite": {
          "type": "boolean",
          "description": "Overwrite original image or not",
          "example": false,
          "default": false
        },
        "format": {
          "$ref": "#/definitions/format"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model37": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Job ID"
        }
      },
      "required": [
        "id"
      ]
    },
    "Model38": {
      "type": "object"
    },
    "Model39": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "notes": [
            "Available fields:",
            "filename",
            "dirname",
            "extension",
            "basename",
            "ctime",
            "mtime",
            "size",
            "contentType",
            "isDirectory",
            "meta.title",
            "meta.description",
            "meta.tags",
            "meta.approval.approved",
            "meta.product.id",
            "meta.product.name",
            "meta.product.brand",
            "meta.product.category1",
            "meta.product.category2",
            "meta.width",
            "meta.height",
            "meta.format",
            "meta.duration",
            "meta.EXIF.DateTimeOriginal",
            "meta.EXIF.CreateDate",
            "meta.EXIF.ModifyDate",
            "meta.EXIF.ColorSpace",
            "meta.EXIF.ImageDescription",
            "meta.EXIF.UserComment",
            "meta.IPTC.Category",
            "meta.IPTC.Keywords",
            "meta.IPTC.ProductID",
            "meta.XMP.Title",
            "meta.XMP.Name",
            "meta.XMP.ProductID",
            "meta.XMP.ProductName",
            "meta.XMP.ProductTitle",
            "meta.XMP.ProductType",
            "meta.XMP.Categories",
            "meta.XMP.Category",
            "meta.XMP.Tags",
            "meta.XMP.TagsList",
            "meta.XMP.Keyword",
            "meta.XMP.Keywords"
          ],
          "example": "extension:.jpg AND mtime:[now-30d TO now] AND -dirname:\\/.Trash",
          "maxLength": 1024
        },
        "sort": {
          "$ref": "#/definitions/Model38",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/sort"
            },
            {
              "$ref": "#/x-alt-definitions/Model1"
            }
          ]
        },
        "from": {
          "type": "number",
          "example": 0,
          "maximum": 1000
        },
        "size": {
          "type": "number",
          "example": 5,
          "maximum": 100
        },
        "scroll": {
          "type": "boolean",
          "description": "Start a scrolling search."
        }
      }
    },
    "Model40": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "asin": {
          "type": "string",
          "description": "Amazon Standard Identification Number",
          "example": "ASIN1234",
          "maxLength": 64
        }
      },
      "required": [
        "filename",
        "asin"
      ]
    },
    "Model41": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model42": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "sku": {
          "type": "string",
          "description": "Grainger SKU",
          "example": "SKU1234",
          "maxLength": 64
        }
      },
      "required": [
        "filename",
        "sku"
      ]
    },
    "Model43": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model44": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "omsid": {
          "type": "string",
          "description": "Home Depot OMSID",
          "example": "100650378",
          "x-constraint": {
            "length": 9
          }
        },
        "spinNumber": {
          "type": "number",
          "description": "Spin number in case product has more than 1 spin",
          "example": 2
        }
      },
      "required": [
        "filename",
        "omsid"
      ]
    },
    "Model45": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model46": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "barcode": {
          "type": "string",
          "description": "Lowe's barcode",
          "example": "1234567890"
        }
      },
      "required": [
        "filename",
        "barcode"
      ]
    },
    "Model47": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model48": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "mscid": {
          "type": "string",
          "description": "MSC Direct's MSC ID",
          "example": "12345678"
        }
      },
      "required": [
        "filename",
        "mscid"
      ]
    },
    "Model49": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "row": {
      "type": "string",
      "enum": [
        "single",
        "all"
      ]
    },
    "options": {
      "type": "object",
      "properties": {
        "width": {
          "type": "number",
          "example": 1920,
          "maximum": 1920
        },
        "height": {
          "type": "number",
          "example": 1080,
          "maximum": 1080
        },
        "loops": {
          "type": "number",
          "example": 3,
          "maximum": 20
        },
        "speed": {
          "type": "number",
          "example": 3600,
          "minimum": 1,
          "maximum": 60000
        },
        "row": {
          "$ref": "#/definitions/row"
        }
      }
    },
    "Model50": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "options": {
          "$ref": "#/definitions/options"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model51": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated video filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model52": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/coin/coin.spin",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "gtin": {
          "type": "string",
          "description": "Walmart GTIN",
          "example": "00612052029955",
          "maxLength": 64
        }
      },
      "required": [
        "filename",
        "gtin"
      ]
    },
    "Model53": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated ZIP filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model54": {
      "type": "object",
      "properties": {
        "start": {
          "type": "number"
        },
        "end": {
          "type": "number"
        },
        "frames": {
          "type": "number",
          "example": 32,
          "minimum": 8,
          "maximum": 512
        }
      }
    },
    "Model55": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/video.mp4",
          "maxLength": 1024,
          "pattern": "^\\/"
        },
        "options": {
          "$ref": "#/definitions/Model54"
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model56": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Generated spin filename"
        }
      },
      "required": [
        "filename"
      ]
    },
    "filenames": {
      "type": "array",
      "example": [
        [
          "/REST API Examples/coin/coin_01.jpg",
          "/REST API Examples/coin/coin_02.jpg"
        ]
      ],
      "maxItems": 1000,
      "items": {
        "type": "string",
        "maxLength": 1024
      }
    },
    "Model57": {
      "type": "object",
      "properties": {
        "filenames": {
          "$ref": "#/definitions/filenames"
        },
        "zipFilename": {
          "type": "string",
          "example": "Sirv January 18, 2023.zip",
          "maxLength": 64
        }
      },
      "required": [
        "filenames"
      ]
    },
    "Model58": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "ZIP job ID"
        }
      },
      "required": [
        "id"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "error",
        "warn",
        "info"
      ]
    },
    "Model59": {
      "type": "object",
      "properties": {
        "module": {
          "type": "string",
          "example": "fetching",
          "maxLength": 64
        },
        "type": {
          "type": "string",
          "maxLength": 64
        },
        "filename": {
          "type": "string",
          "maxLength": 1000
        },
        "level": {
          "$ref": "#/definitions/level"
        },
        "seen": {
          "type": "boolean",
          "description": "Filter seen/unseen events"
        }
      }
    },
    "Model60": {
      "type": "array",
      "example": [
        [
          "f1f5d68ef232e5d27d10f28bcef836efbb7cdeba",
          "199cf48046964f8567fe49e22107c4c5d27271e7"
        ]
      ],
      "maxItems": 100,
      "x-constraint": {
        "single": true
      },
      "items": {
        "type": "string"
      }
    },
    "Model61": {
      "type": "object",
      "properties": {
        "filename": {
          "type": "string",
          "example": "/REST API Examples/model.usdz",
          "maxLength": 1024
        }
      },
      "required": [
        "filename"
      ]
    },
    "Model62": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Job ID"
        }
      },
      "required": [
        "id"
      ]
    },
    "Model63": {
      "type": "array",
      "example": [
        [
          "/REST API Examples/filename.jpg",
          "/REST API Examples/directory/"
        ]
      ],
      "maxItems": 1000,
      "items": {
        "type": "string",
        "maxLength": 1024
      }
    },
    "Model64": {
      "type": "object",
      "properties": {
        "filenames": {
          "$ref": "#/definitions/Model63"
        }
      },
      "required": [
        "filenames"
      ]
    },
    "Model65": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Batch delete job ID"
        }
      },
      "required": [
        "id"
      ]
    },
    "Model66": {
      "type": "object",
      "properties": {
        "approved": {
          "type": "boolean",
          "example": false
        },
        "comment": {
          "type": "string",
          "example": "It looks too cold!",
          "maxLength": 256
        }
      },
      "required": [
        "approved",
        "comment",
        "comment"
      ]
    },
    "Model67": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "example": "Blue Lake in the Winter",
          "maxLength": 1024
        }
      },
      "required": [
        "description"
      ]
    },
    "Model68": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "LLBB77",
          "maxLength": 256
        },
        "name": {
          "type": "string",
          "example": "Blue Lake Card",
          "maxLength": 256
        },
        "brand": {
          "type": "string",
          "example": "BLUE LAKE LLC",
          "maxLength": 256
        },
        "category1": {
          "type": "string",
          "example": "Cards",
          "maxLength": 256
        },
        "category2": {
          "type": "string",
          "example": "Lakes",
          "maxLength": 256
        }
      }
    },
    "Model69": {
      "type": "array",
      "example": [
        [
          "blue",
          "lake",
          "winter",
          "cold",
          "water"
        ]
      ],
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 32
      }
    },
    "Model70": {
      "type": "object",
      "properties": {
        "tags": {
          "$ref": "#/definitions/Model69"
        }
      },
      "required": [
        "tags"
      ]
    },
    "Model71": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "example": "Blue Lake",
          "maxLength": 256
        }
      },
      "required": [
        "title"
      ]
    },
    "Model72": {
      "type": "object",
      "properties": {
        "scrollId": {
          "type": "string",
          "description": "Scroll ID returned from preceding /files/search or /files/search/scroll call."
        }
      },
      "required": [
        "scrollId"
      ]
    },
    "Model73": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the POI",
          "example": "BlueLake",
          "maxLength": 16
        }
      }
    },
    "Model74": {
      "type": "array",
      "example": [
        [
          "ocean"
        ]
      ],
      "maxItems": 50,
      "items": {
        "type": "string"
      }
    },
    "Model75": {
      "type": "object",
      "properties": {
        "tags": {
          "$ref": "#/definitions/Model74"
        }
      },
      "required": [
        "tags"
      ]
    }
  },
  "x-alt-definitions": {
    "sort": {
      "type": "object"
    },
    "Model1": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}