openapi: 3.0.0
info:
  version: '2.0'
  title: ExaVault API
  contact:
    name: ExaVault Support
    email: support@exavault.com
  description: "# Introduction\n\nWelcome to the ExaVault API documentation. Our API lets you control nearly all aspects of your ExaVault account programmatically, from uploading and downloading files to creating and managing shares and notifications. \n\nCapabilities of the API include\n- Uploading and downloading files.\n- Managing files and folders, including standard operations like move, copy and delete.\n- Getting information about activity occurring in your account.\n- Creating, updating and deleting users.\n- Creating and managing shares, including download-only shares and receive folders. \n- Setting up and managing notifications.\n\nThe ExaVault API v2.0 is a RESTful API using JSON.\n\n## The API URL\n\nYou will access your account from your server address. For example, if your account is available at exampleaccount.exavault.com, you'll connect to the API at https://exampleaccount.exavault.com/api/v2\n\n# Obtaining Your API Key and Access Token\n\nAccount admins can create API Keys and personal access tokens within the ExaVault File Manager web application. \n\n## Create an API Key\n\n1. Log into the ExaVault File Manager at your account name address. i.e., if your account is exampleaccount.exavault.com, go to https://exampleaccount.exavault.com and log in with your username and password\n2. Click on the **My Account** option in the left-hand sidebar\n3. Click on the **Developer** tab\n4. Click the + button next to the table of API Keys to create a new key\n5. Enter a name that will uniquely identify connections using this key. This name will appear in your activity session logs.\n6. Enter a description with any other information that you need to track the purpose of your API key\n7. Save the new key\n\nAs soon as you save a new API key, you'll be prompted to create a personal access token which will allow a specific user to connect via the API using that API key (jump to step 5 in the instructions below)\n\n## Generate an Access Token\n1. Log into the ExaVault File Manager at your account name address. i.e., if your account is exampleaccount.exavault.com, go to https://exampleaccount.exavault.com and log in with your username and password\n1. Click on the **My Account** option in the left-hand sidebar\n1. Click on the **Developer** tab\n1. Click the + button next to the table of Access Tokens to create a new token\n1. Select the API Key from the first dropdown.\n1. Select the user who will use this token from the second dropdown.\n1. Click the **GENERATE TOKEN** button\n\nThe confirmation popup will display your API key and your access token. **Copy this access token to a safe location (such as a password vault) immediately.** Once you close this popup, you will not be able to see the token again. After you have saved your token securely, click CLOSE to close the popup.\n\nThe access token you have created will allow any program using that token and its API key to masquerade as the associated user. You should keep the token safe.\n\n# Code Libraries \n\nTo get you started quicker, we've created libraries on our [GitHub](https://github.com/ExaVault) with sample code for Java, PhP, and JavaScript that will do basic actions including;\n\n- Create a new user\n- Upload a file\n- Download a file\n- Create a share folder \n\n# Authentication\n\nThe ExaVault API uses the combination of an API key and a persistent access token to authenticate a user. Both the API key and the access token can be created by an admin-level user\n\nEach request made to the API must include 2 headers\n\n| Header Name   | Contains      |\n| ---      | :---:          |\n| **ev-api-key**      |  Your API key   |\n| **ev-access-token**       |   Your access token          |   \n\nThe access token uniquely identifies the user account for the connection. You should keep this token secure.\n\n\n# Testing w/ Postman\n\nWe've made it easy for you to test our API before you start full-scale development. Download [Postman](https://www.getpostman.com/), and then download our Postman collection, below. [Obtain your API key](#section/Obtaining-Your-API-Key-and-Access-Token) and you'll be able to interact with your ExaVault account immediately, so you can better understand the capabilities of the API.\n\n<div class=\"postman-run-button\" data-postman-action=\"collection/import\" data-postman-var-1=\"92a8be652bb28fd1ca01\"></div>\n\nIf the Run in Postman button doesn't respond, try refreshing this page.\n\nIf Postman prompts you for a workspace, you can use **My Workspace** and click the Import link to continue.  Once the collection is imported, click on the word **Variables** in the center pane. Enter your API URL, API key and access token in the appropriate blanks and then click **Persist All**. Click the **Save** button to save your changes. \n\n![ExaVault API Postman Collection Usage](/images/postman.png)\n\nYour postman collection should now be ready for use. To verify that your variables are entered correctly:\n\n1. Click on the collection name **ExaVault API 2.0** in the left panel until you can see the sections of the API listed out.\n1. Click on the **Account** section to expand it.\n1. Click on **GET Get Account Settings** to open that request\n1. In the center pane, click the **Send** button.\n1. You should see a successful response in the response pane. \n\n![ExaVault API Postman Collection Usage](/images/postman-test.png)\n\n# HTTP Status Codes\n\nThe ExaVault API v2.0 is RESTful and returns appropriate HTTP status codes in its responses\n\n**Success Statuses:**\n\n| Status   | Notes   |\n| ---      | :---:       |\n| 200      | Successful operation   |\n| 201      | Successful creation operation     |\n| 207      | Multiple operation status |\n\n**Request Error Statuses:**\n\n| Status   | Notes   |\n| ---      | :---:       |\n| 400      | Bad Request   |\n| 401      | Unauthorized     |\n| 403      | Forbidden   |\n| 404      | Not Found* |\n| 429      | Too many requests |\n\n**Server Error Statuses:**\n\n| Status   | Notes |\n| ---      | ---   |\n| 500      | Server Error |\n| 503      | Service unavailable | \n\n# Response Format\n\nNearly every response from the server will be a JSON object, which will contain a `responseStatus` attribute that matches the HTTP status of the response.\n\nMost succesful responses will also include a `data` attribute that contains the data related to your request. For instance using GET /account will return the information for the account associated with your API key and access token.\n\n## Timestamps \n\nAll of our responses that include datetime information will be structured in an IS0 8601 format: \n\nNo offset from UTC: `YYYY-MM-DDThh:mm:ssZ` e.g. 2019-09-07T15:50Z\n\nMinus offset from UTC: `YYYY-MM-DDThh:mm:ss-hh:mm` e.g. 2019-09-07T15:50-04:00\n\nPlus offset from UTC: `YYYY-MM-DDThh:mm:ss+hh:mm` e.g. 2019-09-07T15:50+04:00\n\n- YYYY = four-digit year\n- MM   = two-digit month\n- DD   = two-digit day of month\n- hh   = two digits of hour\n- mm   = two digits of minute\n- ss   = two digits of second\n- Z    = zero offset from UTC time\n\n## Error Responses\n\nError responses will have a similar format. The response will contain a `responseStatus` which contains the HTTP status code and an `errors` array, which will contain pertinent errors for the request. Each object in the `errors` array will contain a human-readable `code` and some explanatory `detail` text.\n\n## Common Errors \n\nAs you work with our suite of APIs, you'll likely encounter one or more of these error codes throughout the process. Let's take a look at some of the most common errors and how to resolve them quickly and painlessly. \n\n### 400 Error - Bad Request:\n\n```json\n{\n  \"responseStatus\":400,\n  \"errors\":[\n    {\n      \"code\":\"ERROR_INVALID_PARAMETER\",\n      \"detail\":\"Destination path cannot be an existing folder.\"\n    }\n  ]\n}\n```\n\n```json\n{\n\_\"responseStatus\": 400,\n\_\"errors\": [\n\_\_{\n\_\_\_\"code\": \"ERROR_INVALID_PASSWORD\",\n\_\_\_\"detail\": \"Password must be longer than eight (8) characters and contain one uppercase letter, one lowercase letter, and one number.\"\n\_\_}\n\_]\n}\n```\n\nThis error will generally mean a paramater or body element is invalid or missing. We suggest taking another look at the documentation of the API endpoint you're hitting to double check for; missing required fields in the request, spelling errors, invalid values be used. \n\nThe error messaging returned should point you exactly to what you need to correct to avoid going through trial and error. \n\n\n### 401 Error - Unauthorized \n\n```json\n{\n\_\"responseStatus\": 401,\n\_\"errors\": [\n\_\_{\n\_\_\_\"code\": \"ERROR_INVALID_CREDENTIALS\",\n\_\_\_\"detail\": \"HTTP_UNAUTHORIZED\"\n\_\_}\n\_]\n}\n```\n\nIf you encounter a 401, it means we're not recognizing the credentials you're attempting to authenticate with. To resolve the issue;  \n\n1. Double check that your credenitals (API Key and Access Token) are correct.\n2. Creating a second set of credentials (see \"Obtaining Your API Key and Access Token\" above) and attempt the call again. \n3. If you're able to successfully make a call, regenerate the Access Token of the first user and try the call one last time. \n\nIf you're still encountering a 401, contact us for help.\n\n### 403 Error - Forbidden\n\n```json\n{\n\_\"responseStatus\": 403,\n\_\"errors\": [\n\_\_{\n\_\_\_\"code\": \"ERROR_INSUFFICIENT_PRIVILEGES\",\n\_\_\_\"detail\": \"An error occurred\"\n\_\_}\n\_]\n}\n```\n\nSimilarly to a 401, you'll be unable to complete an API call if you encounter this error. Unlike a 401, your credentials were authenticated, but the authenticated user does not have permission to perform the action you're attempting. \n\nTo resolve the issue you can either; \n- Execute the call using an master user's credentials. \n- Log in to the ExaVault File Manager OR use the **PATCH /updateUser** endpoint to update the user's permissions.\n\n### 404 Error - Not Found\n\n```json \n{\n\_\"responseStatus\": 404,\n\_\"errors\": [\n\_\_{\n\_\_\_\"code\": \"ERROR_SHARE_NOT_FOUND\",\n\_\_\_\"detail\": \"Share not found\"\n\_\_}\n\_]\n}\n```\n\nEncountering a 404 error means whatever type of resource you're attempting to find or update; isn't being found. Usually, this is just a case of using the wrong ID when using a call, and can be resolved by fixing the ID on your call.  \n\nIf the ID on the call appears to be correct we recommend taking the following steps: \n- Attempt a more generic GET call to get a list of the type of resource you're looking for to see if you can find the ID you're looking for. \n- Check your activity logs to see if what you're looking for was recently deleted. \n\n\n# Identifying Resources\n\nMany API methods require you to provide one or more resources, which may be expressed as paths, ids, hashes, or some combination of the three (for calls that act upon multiple resources). \n\nTo specify a resource by path, provide a fully qualified string to the resource _relative to the associated user's home directory_. This path will always begin with a forward slash. Only forward slash characters may be used to separate the folders within a path string.\n\nTo specify a resource by ID, you'll need to obtain that ID from some other API method first. For example, **GET /resources/list** will return a list of resources in your account along with their IDs. Once you have the ID of that resource, append it to the string \"id:\" to specify that resource, such as `id:124447`. IDs are always whole-number numeric values. \n\nTo specify a resource by hash, first obtain the hash from another API method. Once you have the hash representing the resource, append it to the string \"hash:\" to specify that resource, such as `hash:3a1597ca982231f6666c75bcc2bd9c85` to indicate the resource with the hash value **3a1597ca982231f6666c75bcc2bd9c85**. Hashes are always an alphanumeric sequence without any special characters or punctuation.\n\n## Paths and Home Folders\n\nUsers with different home folders will use different paths to refer to the same resource. As an example, suppose there is a file located at **/Data/Production/Inbound/1595978053_G12.xml**. For an admin-level user, or any user whose home folder permits them access to the entire account, the path for that resource is **/Data/Production/Inbound/1595978053_G12.xml**.  For a user whose home folder is **/Data/Production/**, the path to the file becomes **/Inbound/1595978053_G12.xml**\n\n# Transaction Limits\n\nThe daily transaction limit restricts the overall number of operations you can perform in a 24-hour period in your ExaVault account. Those transactions could be file uploads, file downloads, making a shared folder, creating a user, deleting files, to name a few examples. All operations performed in your account count against the total daily transactions for your account, including:\n\n- FTP/SFTP operations\n- Actions by users who are logged into your web interface\n- Interacting with Receive folders\n- Receiving files through Send files and Shared Folders\n- Accessing files shared through direct links\n- API access from any user using any of the API keys for your account\n\nEach request sent to the API is one transaction. When your account has exceeded its rolling 24-hour rate limit, new operations will become available once the number of operations in the past 24-hours is below your daily rate limit. The response status of rate-limited API operations will be **429**.\n\n## Rate Limit Headers\n\nTo monitor your daily account transaction usage, the response object returned by the server for all API requests will include these custom headers:\n\n- **X-RateLimit-Limit** indicates the total number of operations permitted within a rolling 24-hour period across your entire account. This number is dependent upon the plan your account is subscribed to, and whether you have an enterprise agreement in place.\n- **X-RateLimit-Remaining** indicates the number of operations currently remaning to you at that moment in time. \n\n\n# Webhooks\n\nExaVault provides a webhook system for notifying you of changes to your account. The webhook sender will send a POST request to an endpoint you have specified whenever certain actions happen within your account. Account administrators can change these settings within the ExaVault File Manager.\n\nWebhooks will attempt to send a message up to 8 times with increasing timeouts between each attempt. All webhook requests are tracked in the webhooks log within the ExaVault File Manager web interface or via the `GET /activity/webhooks`.\n\n## Configuring Webhooks\n\n1. Log into the ExaVault File Manager at your account name address. i.e., if your account is exampleaccount.exavault.com, go to https://exampleaccount.exavault.com and log in with your username and password.\n1. Click on the **My Account** option in the left-hand sidebar.\n1. Click on the **Developer** tab\n1. In the **Webhooks** section, create a new webhook\n1. Set your endpoint URL, your desired path to recieve notifications, and check the boxes for the actions which should trigger your webhook.\n1. Scroll to the bottom of the page to click CREATE WEBHOOK.\n\n## Verification Signature\n\nWhen you configure a webhook endpoint and triggering actions, a Verification Token will be displayed below the webhook endpoint URL. You may use this token in combination with the X-Exavault-Signature header to verify that ExaVault is the sender of the webhook request.\n\n## Comparing the Signature\n\nYou'll can use this 3-step procedure to validate an individual webhook request to ensure it was sent by ExaVault.\n\n**1: Get Verification Token**\n\nIn order to verify the X-Exavault-Signature header value, you'll first need to obtain the Verification Token for your account:\n\n1. Click on the **My Account** option in the left-hand sidebar.\n1. Click on the **Developer** tab\n1. Copy the Verification Token that appears below the Webhooks Endpoint url field.\n\nEvery webhook request sent to your endpoint URL will use the same verification token. This token won't change for your account.\n\n**2: Concatenate Token and Request**\n\nOnce you have the verification token, you'll concatenate that token along with the raw string representing the request body that was received. \n\n**Do not convert the request body to any other type** of object; if the library you're using automatically converts the request body to an object, look for a method to obtain the raw request body as text.\n\n**3: Calculate MD5 Hash**\n\nCalculate the md5 hash of that concatenation. The result should match the contents of your X-Exavault-Signature header.\n\n## Webhook Request Examples\n\nThe following examples demonstrate the structure of webhook requests and how to validate the verification signature for an individual request. All of these examples will use the same verification token; you'll need to use the token for your account to do the same checks on your own webhook requests.\n\n**PLEASE NOTE:** Our v1 request format will be depercated in the future. We highly recommend using the v2 format as its been expanded t include additional, relevant data\n\n\n**V1 - Download File Example**\n\n| Verification Token | X-Exavault-Signature header value |\n| --- | --- |\n| efb7e0030e6cef1b45d3d74a67881a2b | 186e8c73793666c8b5cfa0b55eee691d |\n\n```json\n{\"accountname\":\"localtestuser\",\"username\":\"localtestuser\",\"operation\":\"Download\",\"protocol\":\"web\",\"sourcepath\":\"\\/New V1 folder\\/Black_10.png\",\"attemptId\":\"3k9y6u-1\",\"attempt\":1}\n```\n\n**V2 - Download File Example**\n\n| Verification Token | X-Exavault-Signature header value |\n| --- | --- |\n| efb7e0030e6cef1b45d3d74a67881a2b | e86119ce1b679c7b6010d9ac9a843a36 |\n\n```json\n{\n  \"attemptId\": \"3igmk8-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:45:42-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.download\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 301,\n      \"hash\": \"0602aeb83f082a5d706475127237cd8e\",\n      \"name\": \"MyGreen_0.png\",\n      \"extension\": \"png\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-19T15:31:05-08:00\",\n      \"createdAt\": \"2021-02-19T15:31:05-08:00\",\n      \"updatedAt\": \"2021-02-19T15:56:45-08:00\",\n      \"accessedAt\": \"2021-02-25T11:45:42-08:00\",\n      \"path\": \"/New V1 folder/MyGreen_0.png\",\n      \"size\": 4151,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"transferStatus\": \"success\"\n  }\n}\n```\n\n**V2 - Upload File Example**\n\n```json\n{\n  \"attemptId\": \"2ve27d-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T12:02:10-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.upload\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 337,\n      \"hash\": \"21bd4008dfa076d11618d533984469c3\",\n      \"name\": \"MyGreen_0.png\",\n      \"extension\": \"png\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T12:02:10-08:00\",\n      \"createdAt\": \"2021-02-25T12:02:10-08:00\",\n      \"updatedAt\": \"2021-02-25T12:02:10-08:00\",\n      \"accessedAt\": \"2021-02-25T12:02:10-08:00\",\n      \"path\": \"/New V1 folder/Test/MyGreen_0.png\",\n      \"size\": 4151,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"transferStatus\": \"success\"\n  }\n}\n```\n\n**V2 - Copy File Example**\n\n```json\n{\n  \"attemptId\": \"157pid-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:45:53-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.copy\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 301,\n      \"hash\": \"0602aeb83f082a5d706475127237cd8e\",\n      \"name\": \"MyGreen_0.png\",\n      \"extension\": \"png\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-19T15:31:05-08:00\",\n      \"createdAt\": \"2021-02-19T15:31:05-08:00\",\n      \"updatedAt\": \"2021-02-19T15:56:45-08:00\",\n      \"accessedAt\": \"2021-02-25T11:45:42-08:00\",\n      \"path\": \"/New V1 folder/MyGreen_0.png\",\n      \"size\": 4151,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"destinationResource\": {\n      \"id\": 184,\n      \"hash\": \"7c258f383dee1098664f0f656b1f8a6e\",\n      \"name\": \"New V1 folder\",\n      \"extension\": \"\",\n      \"type\": \"dir\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-14T22:31:01-08:00\",\n      \"createdAt\": \"2021-02-14T22:31:01-08:00\",\n      \"updatedAt\": \"2021-02-19T15:56:45-08:00\",\n      \"accessedAt\": \"2021-02-25T11:45:47-08:00\",\n      \"path\": \"/New V1 folder\",\n      \"size\": 8132,\n      \"fileCount\": 2,\n      \"previewable\": false\n    }\n  }\n}\n```\n\n**V2 - Rename File Example**\n\n```json\n{\n  \"attemptId\": \"1005ul-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:46:13-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.rename\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 316,\n      \"hash\": \"0602aeb83f082a5d706475127237cd8e\",\n      \"name\": \"MyGreen_0.png\",\n      \"extension\": \"png\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T11:46:01-08:00\",\n      \"createdAt\": \"2021-02-25T11:46:01-08:00\",\n      \"updatedAt\": \"2021-02-25T11:46:01-08:00\",\n      \"accessedAt\": \"2021-02-25T11:46:01-08:00\",\n      \"path\": \"/New V1 folder/Test/MyGreen_0.png\",\n      \"size\": 4151,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"newName\": \"MyGreen_1.png\"\n  }\n}\n```\n\n**V2 - Delete File Example**\n\n```json\n{\n  \"attemptId\": \"14hlpx-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:50:40-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.delete\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 316,\n      \"hash\": \"0602aeb83f082a5d706475127237cd8e\",\n      \"name\": \"MyGreen_1.png\",\n      \"extension\": \"png\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T11:46:01-08:00\",\n      \"createdAt\": \"2021-02-25T11:46:01-08:00\",\n      \"updatedAt\": \"2021-02-25T11:46:13-08:00\",\n      \"accessedAt\": \"2021-02-25T11:46:01-08:00\",\n      \"path\": \"/New V1 folder/Test/MyGreen_1.png\",\n      \"size\": 4151,\n      \"fileCount\": null,\n      \"previewable\": false\n    }\n  }\n}\n```\n\n**V2 - Move File Example**\n\n```json\n{\n  \"attemptId\": \"33xm6j-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:51:05-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.move\",\n  \"eventData\": {\n    \"resources\": {\n      \"id\": 321,\n      \"hash\": \"72bc85e15d28f8737e3576d55d8a0aa4\",\n      \"name\": \"New V1 folder test.zip\",\n      \"extension\": \"zip\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T11:51:01-08:00\",\n      \"createdAt\": \"2021-02-25T11:51:01-08:00\",\n      \"updatedAt\": \"2021-02-25T11:51:01-08:00\",\n      \"accessedAt\": \"2021-02-25T11:51:01-08:00\",\n      \"path\": \"/New V1 folder/New V1 folder test.zip\",\n      \"size\": 4223,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"destinationResource\": {\n      \"id\": 238,\n      \"hash\": \"31502fa248a3f234cab86d4014174b63\",\n      \"name\": \"Test\",\n      \"extension\": \"\",\n      \"type\": \"dir\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-15T22:18:24-08:00\",\n      \"createdAt\": \"2021-02-15T22:18:24-08:00\",\n      \"updatedAt\": \"2021-02-25T11:50:39-08:00\",\n      \"accessedAt\": \"2021-02-25T11:50:40-08:00\",\n      \"path\": \"/New V1 folder/Test\",\n      \"size\": 0,\n      \"fileCount\": 0,\n      \"previewable\": false\n    }\n  }\n}\n```\n\n**V2 - Compress Files Example**\n\n```json\n{\n  \"attemptId\": \"3o3m21-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:51:01-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.compress\",\n  \"eventData\": {\n    \"resources\": [\n      {\n        \"id\": 301,\n        \"hash\": \"0602aeb83f082a5d706475127237cd8e\",\n        \"name\": \"MyGreen_0.png\",\n        \"extension\": \"png\",\n        \"type\": \"file\",\n        \"createdBy\": \"localtestuser\",\n        \"uploadDate\": \"2021-02-19T15:31:05-08:00\",\n        \"createdAt\": \"2021-02-19T15:31:05-08:00\",\n        \"updatedAt\": \"2021-02-19T15:56:45-08:00\",\n        \"accessedAt\": \"2021-02-25T11:45:42-08:00\",\n        \"path\": \"/New V1 folder/MyGreen_0.png\",\n        \"size\": 4151,\n        \"fileCount\": null,\n        \"previewable\": false\n      },\n      {\n        \"id\": 289,\n        \"hash\": \"577bd0850791e3a71978492436169007\",\n        \"name\": \"Black_10.png\",\n        \"extension\": \"png\",\n        \"type\": \"file\",\n        \"createdBy\": \"localtestuser\",\n        \"uploadDate\": \"2021-02-19T11:26:10-08:00\",\n        \"createdAt\": \"2021-02-19T11:26:10-08:00\",\n        \"updatedAt\": \"2021-02-19T11:26:10-08:00\",\n        \"accessedAt\": \"2021-02-23T09:59:25-08:00\",\n        \"path\": \"/New V1 folder/Black_10.png\",\n        \"size\": 3981,\n        \"fileCount\": null,\n        \"previewable\": false\n      }\n    ],\n    \"archiveResource\": {\n      \"id\": 321,\n      \"hash\": \"72bc85e15d28f8737e3576d55d8a0aa4\",\n      \"name\": \"New V1 folder test.zip\",\n      \"extension\": \"zip\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T11:51:01-08:00\",\n      \"createdAt\": \"2021-02-25T11:51:01-08:00\",\n      \"updatedAt\": \"2021-02-25T11:51:01-08:00\",\n      \"accessedAt\": \"2021-02-25T11:51:01-08:00\",\n      \"path\": \"/New V1 folder/New V1 folder test.zip\",\n      \"size\": 4223,\n      \"fileCount\": null,\n      \"previewable\": false\n    }\n  }\n}\n```\n\n**V2 - Extract Files Example**\n\n```json\n{\n  \"attemptId\": \"11q5rl-1\",\n  \"accountName\": \"localtestuser\",\n  \"eventTimestamp\": \"2021-02-25T11:51:22-08:00\",\n  \"ipAddress\": \"172.20.0.12\",\n  \"protocol\": \"web\",\n  \"username\": \"localtestuser\",\n  \"event\": \"resources.extract\",\n  \"eventData\": {\n    \"resources\": [\n      {\n        \"id\": 322,\n        \"hash\": \"a37af0db0df3d95cccd1c6ad81fdcdfd\",\n        \"name\": \"MyGreen_0.png\",\n        \"extension\": \"png\",\n        \"type\": \"file\",\n        \"createdBy\": \"localtestuser\",\n        \"uploadDate\": \"2021-02-25T11:51:22-08:00\",\n        \"createdAt\": \"2021-02-25T11:51:22-08:00\",\n        \"updatedAt\": \"2021-02-25T11:51:22-08:00\",\n        \"accessedAt\": \"2021-02-25T11:51:22-08:00\",\n        \"path\": \"/MyGreen_0.png\",\n        \"size\": 4151,\n        \"fileCount\": null,\n        \"previewable\": null\n      },\n      {\n        \"id\": 323,\n        \"hash\": \"06902adce59e56e40b3cd2c3808dd121\",\n        \"name\": \"Black_10.png\",\n        \"extension\": \"png\",\n        \"type\": \"file\",\n        \"createdBy\": \"localtestuser\",\n        \"uploadDate\": \"2021-02-25T11:51:22-08:00\",\n        \"createdAt\": \"2021-02-25T11:51:22-08:00\",\n        \"updatedAt\": \"2021-02-25T11:51:22-08:00\",\n        \"accessedAt\": \"2021-02-25T11:51:22-08:00\",\n        \"path\": \"/Black_10.png\",\n        \"size\": 3981,\n        \"fileCount\": null,\n        \"previewable\": null\n      }\n    ],\n    \"archiveResource\": {\n      \"id\": 321,\n      \"hash\": \"72bc85e15d28f8737e3576d55d8a0aa4\",\n      \"name\": \"New V1 folder test.zip\",\n      \"extension\": \"zip\",\n      \"type\": \"file\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2021-02-25T11:51:01-08:00\",\n      \"createdAt\": \"2021-02-25T11:51:01-08:00\",\n      \"updatedAt\": \"2021-02-25T11:51:05-08:00\",\n      \"accessedAt\": \"2021-02-25T11:51:01-08:00\",\n      \"path\": \"/New V1 folder/Test/New V1 folder test.zip\",\n      \"size\": 4223,\n      \"fileCount\": null,\n      \"previewable\": false\n    },\n    \"destinationResource\": {\n      \"id\": 69,\n      \"hash\": \"332bd8368f2ba0d50fa5afda327566d1\",\n      \"name\": \"localtestuser\",\n      \"extension\": \"\",\n      \"type\": \"dir\",\n      \"createdBy\": \"localtestuser\",\n      \"uploadDate\": \"2020-09-21T11:53:36-07:00\",\n      \"createdAt\": \"2020-09-21T11:53:36-07:00\",\n      \"updatedAt\": \"2021-02-23T11:56:05-08:00\",\n      \"accessedAt\": \"2021-02-25T11:51:18-08:00\",\n      \"path\": \"/\",\n      \"size\": 1501577212,\n      \"fileCount\": 96,\n      \"previewable\": false\n    }\n  }\n}\n```\n\n## Webhooks Logs\n\nAccount administrators can track all of the webhook requests sent for your account within the ExaVault File Manager web interface. \n\nTo access Webhook logs:\n\n1. Log into the ExaVault File Manager at your account name address. i.e., if your account is exampleaccount.exavault.com, go to https://exampleaccount.exavault.com and log in with your username and password\n1. Click on the **Activity** option in the left-hand sidebar\n1. Click on **Webhooks Logs**\n\nThe webhook logs will show each time a webhook request was sent to an endpoint URL. \n\nYou can sort your webhook logs A-Z or Z-A on any column in the table as well as do a partial or exact text search to find specific entries. Using the **Details** button will show you the JSON formatted object of the request as we sent it, as well as the response we received back. If you need to troubleshoot a webhook, you can **RESEND WEBHOOK** to immediately refire the request exactly as it was originally sent. \n"
tags:
  - name: Authentication
    description: This section contains information on how to authenticate and logout from the API. **All ExaVault API calls (other than the authenticateUser method itself) require an access token.**
  - name: Resources
    description: 'The file and folder management APIs allow you to work with the core of your account. You can upload or download files and create, move and delete files & folders, to name a few options.'
  - name: Activity
    description: 'The activity APIs allow you to get logs from your account. We track multiple types of under the umbrellas; __Activity Logs__ that show an action a user performed or initiated on a file, folder or the account. __Webhooks Logs__ that show records of all outbound webhook calls made by ExaVault. Both can be optionally filtered to only return specific data you’re looking for.'
  - name: Users
    description: 'The user APIs allow you to create, update and delete users from your account. Users can be assigned unique permissions, set to expire after a certain time period, and more.'
  - name: Shares
    description: 'The sharing APIs allow you create and manage shares. Shares can be used to send a single file, share a folder, or set up a receive folder and its input form.'
  - name: Notifications
    description: 'The notifications APIs allow you to set up and manage notifications in your account. When an action is taken on a file folder, you can be notified via email or webhook.'
  - name: Email Lists
    description: 'The email lists APIs allow you to manage email lists that can be used for speeding up actions within the ExaVault File Manager such as adding your marketing team, Tom, Jane, and Harry, to a shared folder in a single action instead of three.'
  - name: Account
    description: 'The account APIs allow you review and change account settings. Many account settings will have immediate effects on all current and future users, so consider adding a user facing confirmation step before sending an update call.'
  - name: SSH Keys
    description: 'THe SSH Keys APIs allow you to manage SSH keys for users in your account. You can upload the contents of a public key for a user, get information for keys which are already defined, and remove a key from a user.'
  - name: Form
    description: The forms APIs allow you to manage the inputs and data submitted through receive folder forms.
  - name: Recipients
    description: 'The recipients APIs allow to retrieve, delete, or resend invitations for recipients of shared folders.'
  - name: Email
    description: The emails APIs allow you to generate welcome emails for account users and referral emails.
x-tagGroups:
  - name: API Documentation
    tags:
      - Resources
      - Activity
      - Users
      - Notifications
      - Shares
      - Recipients
      - Webhooks
      - Form
      - Email Lists
      - SSH Keys
      - Account
      - Email
paths:
  /email-lists:
    get:
      description: List all email groups for authenticated user
      tags:
        - Email Lists
      summary: Get all email groups
      operationId: getEmailLists
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: include
          description: Related record types to include in the response. Valid option is `ownerUser`
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 1
                returnedResults: 1
                data:
                  - id: 27
                    type: emailList
                    attributes:
                      name: ExaVault Test
                      created: '2020-07-30T10:09:05-07:00'
                      modified: '2020-07-30T10:09:05-07:00'
                      emails:
                        - exavault@example.com
                        - exavault+1@example.com
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                included:
                  - id: 124437
                    type: user
                    attributes:
                      status: 1
                      expiration: '2021-12-31 11:59:59'
                      created: '2020-09-02T18:54:14-07:00'
                      modified: '2020-09-02T18:54:14-07:00'
                      accessTimestamp: '0000-00-00T00:00:00+00:00'
                      accountName: example-acct
                      username: example-user
                      nickname: example-user
                      email: example@exavault-example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: false
                      firstLogin: null
                      role: admin
                      timeZone: America/Los_Angeles
    post:
      tags:
        - Email Lists
      summary: Create new email list
      operationId: addEmailList
      description: 'Create a new email list. Among other things, email lists can be used to send files or share folders with a group of email addresses at once.'
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: AddEmailListRequestBody
              type: object
              properties:
                name:
                  type: string
                  example: My friends list
                  description: 'Name of the email list. '
                emails:
                  type: array
                  example:
                    - johns@example.com
                    - jdoe@example.com
                  description: 'Array of email addresses to include in the email list. '
                  items:
                    type: string
              required:
                - name
                - emails
            example:
              value:
                name: ExaVault Test
                emails:
                  - exavault@example.com
                  - exavault+1@example.com
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListResponse'
              example:
                responseStatus: 201
                data:
                  id: 27
                  type: emailList
                  attributes:
                    name: ExaVault Test
                    created: '2020-07-30T10:09:05-07:00'
                    modified: '2020-07-30T10:09:05-07:00'
                    emails:
                      - exavault@example.com
                      - exavault+1@example.com
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                included: []
  '/email-lists/{id}':
    get:
      tags:
        - Email Lists
      summary: Get individual email group
      operationId: getEmailListById
      description: 'Retrieve all the details of a specific email list including it''s name, when it was created and all the email addresses that belong to the group.'
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: ID of the email list to return.
          schema:
            type: integer
        - name: include
          schema:
            type: string
          in: query
          description: Related record types to include in the response. Valid option is `ownerUser`
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListResponse'
              example:
                responseStatus: 200
                data:
                  id: 29
                  type: emailList
                  attributes:
                    name: My Test List
                    created: '2019-09-02T18:58:07-07:00'
                    emails:
                      - test1@example.com
                      - test2@example.com
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 125391
                included:
                  - id: 125391
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-09-02T18:54:14-07:00'
                      modified: '2020-09-02T18:54:14-07:00'
                      accessTimestamp: '0000-00-00T00:00:00+00:00'
                      accountName: example-acct
                      username: example-admin
                      nickname: example-admin
                      email: admin@exavault-example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: false
                      firstLogin: null
                      role: admin
                      timeZone: America/Los_Angeles
    patch:
      tags:
        - Email Lists
      summary: Update an email group
      operationId: updateEmailListById
      description: |-
        Add or remove emails from an email list that can be used to send and share files with groups. 

        **Notes**

        *This call will **replace** your current email list in its entirety.* If you want to keep any existing emails on the list, be sure to submit the call with any current emails you want to keep on the list.  
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: ID of the email list to update.
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateEmailListRequestBody
              type: object
              properties:
                name:
                  type: string
                  example: My friends list
                  description: Name of the email list.
                emails:
                  type: array
                  example:
                    - yuk@example.com
                    - jdoe@example.com
                  description: Email addresses that replace existing list.
                  items:
                    type: string
            example:
              name: Renamed Test Email List
              emails:
                - test@example.com
                - test+1@example.com
                - newaddress@example.com
        description: ''
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListResponse'
              example:
                responseStatus: 200
                data:
                  id: 33
                  type: emailList
                  attributes:
                    name: Renamed Test Email List
                    created: '2020-09-03T11:10:55-07:00'
                    modified: '2020-09-03T11:36:05-07:00'
                    emails:
                      - test@example.com
                      - test+1@example.com
                      - newaddress@example.com
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 125391
                included: []
    delete:
      tags:
        - Email Lists
      description: 'Permanently delete an email group. This action is not reversible. We recommend making a user confirm this action before sending the API call. '
      summary: Delete an email group with given id
      operationId: deleteEmailListById
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: ID of the email list to delete
          schema:
            type: integer
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 200
                data: []
  /forms:
    get:
      tags:
        - Form
      summary: Get receive folder form settings
      operationId: getFormByShareHash
      description: |
        Get the information for the [file upload form](/docs/account/05-file-sharing/05-form-builder) assigned to a [receive folder](/docs/account/05-file-sharing/04-receive-folders) by its shareHash. The form details will return all the input field settings and the CSS for the form.

        Use the `include` parameter (with the value **share**) to also get the details of the associated receive folder.

        **Note**

        - If you prefer to find a form by its ID, you can use the [GET /forms/{id}](#operation/getFormById) endpoint instead. 
      parameters:
        - name: ev-api-key
          in: header
          required: true
          description: API key required to make the API call.
          schema:
            type: string
        - schema:
            type: string
          in: header
          name: ev-access-token
          description: Access Token required to make the API call.
          required: true
        - name: shareHash
          in: query
          description: Share hash to retrieve the form for.
          schema:
            type: string
          required: true
        - name: include
          description: Related record types to include in the response. Valid option is **share**
          in: query
          schema:
            type: string
            enum:
              - share
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormResponse'
              example:
                responseStatus: 200
                data:
                  id: 459
                  type: form
                  attributes:
                    elements:
                      - id: 2329
                        name: Your Name
                        order: 0
                        type: name
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2331
                        name: Email Address
                        order: 1
                        type: email
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: true
                          description: null
                          width: 1
                      - id: 2333
                        name: Subject
                        order: 2
                        type: text
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2335
                        name: Message
                        order: 3
                        type: textarea
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2337
                        name: Upload Area
                        order: 4
                        type: upload_area
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                    submitButtonText: Send Files
                    formDescription: null
                    successMessage: Your files were uploaded
                    cssStyles: |-
                      #ev-widget-form {
                        /*Change this to change the font. Remove to use your website font*/
                        font-family: Helvetica Neue, sans-serif;
                        /*Makes the form the same width as your website */
                        margin: 0 -2%;
                      }
                      #ev-widget-form label{
                        width: 100%;
                      }
                      #ev-widget-form input,
                      #ev-widget-form textarea {
                        /*Changes color and thickness of borders on form elements */
                        border: 2px solid #ccc;
                        /*Changes spacing inside the form elements (top/bottom and left/right */
                        padding: 5px 5px;
                        /* Changes how far away the inputs are from their label */
                        margin-top: 2px;
                      }

                      #ev-widget-form input:focus,
                      #ev-widget-form textarea:focus {
                        /*Changes the color of the form elements when they are clicked in to */
                        border: 2px solid #b2cf88;
                        /*Removes glow effect from form elements that are clicked in to */
                        outline: none;
                      }

                      #ev-widget-form label {
                        font-size: 14px;
                        font-weight: bold;
                        /*Changes color of labels */
                        color: #232323
                      }

                      #ev-widget-form .ev-form-element-description {
                        /*Changes size of descriptions */
                        font-size: 12px;
                        /*Changes color of descriptions */
                        color: #777;
                        /* Changes how far away the descriptions are from their input */
                        margin-top: 2px;
                      }

                      #ev-widget-form textarea {
                        /* Makes textareas (multiline inputs) a taller. */
                        min-height: 90px;
                      }
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1581
                included:
                  - id: 1581
                    type: share
                    attributes:
                      name: HomeTest
                      hasPassword: false
                      public: true
                      accessMode:
                        upload: true
                        download: false
                        modify: false
                        delete: false
                      accessDescription: Receive folder
                      embed: false
                      hash: 1a6-eel4wett
                      ownerHash: 1a6-eel4wegt-9t0xc3jb
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: receive
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: 459
                      assets:
                        - HomeTest
                      paths:
                        - /HomeTest
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: true
                      created: '2020-07-30T06:24:33-07:00'
                      modified: '2020-07-30T06:27:12-07:00'
  '/forms/{id}':
    get:
      tags:
        - Form
      summary: Get receive folder form by Id
      operationId: getFormById
      description: |
        Returns the [file upload form](/docs/account/05-file-sharing/05-form-builder) assigned to a [receive folder](/docs/account/05-file-sharing/04-receive-folders). The form details will return all the input fields and their settings. 

        Use the `include` parameter (with the value **share**) to also retrieve the details of the associated receive folder. 

        **Note**

        If you prefer to find a form by its shareHash, you can use the [GET /forms](#operation/getFormByShareHash) endpoint instead. 
      parameters:
        - name: ev-api-key
          in: header
          required: true
          description: API key required to make the API call.
          schema:
            type: string
        - schema:
            type: string
          in: header
          name: ev-access-token
          required: true
          description: Access Token required to make the API call.
        - name: include
          description: Enter "**share**" to get information about associated receive folder.
          in: query
          schema:
            type: string
            example: share
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormResponse'
              example:
                responseStatus: 200
                data:
                  id: 459
                  type: form
                  attributes:
                    elements:
                      - id: 2329
                        name: Your Name
                        order: 0
                        type: name
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2331
                        name: Email Address
                        order: 1
                        type: email
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: true
                          description: null
                          width: 1
                      - id: 2333
                        name: Subject
                        order: 2
                        type: text
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2335
                        name: Message
                        order: 3
                        type: textarea
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2337
                        name: Upload Area
                        order: 4
                        type: upload_area
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                    submitButtonText: Send Files
                    formDescription: test test
                    successMessage: Your files were uploaded
                    cssStyles: |-
                      #ev-widget-form {
                        /*Change this to change the font. Remove to use your website font*/
                        font-family: Helvetica Neue, sans-serif;
                        /*Makes the form the same width as your website */
                        margin: 0 -2%;
                      }
                      #ev-widget-form label{
                        width: 100%;
                      }
                      #ev-widget-form input,
                      #ev-widget-form textarea {
                        /*Changes color and thickness of borders on form elements */
                        border: 2px solid #ccc;
                        /*Changes spacing inside the form elements (top/bottom and left/right */
                        padding: 5px 5px;
                        /* Changes how far away the inputs are from their label */
                        margin-top: 2px;
                      }

                      #ev-widget-form input:focus,
                      #ev-widget-form textarea:focus {
                        /*Changes the color of the form elements when they are clicked in to */
                        border: 2px solid #b2cf88;
                        /*Removes glow effect from form elements that are clicked in to */
                        outline: none;
                      }

                      #ev-widget-form label {
                        font-size: 14px;
                        font-weight: bold;
                        /*Changes color of labels */
                        color: #232323
                      }

                      #ev-widget-form .ev-form-element-description {
                        /*Changes size of descriptions */
                        font-size: 12px;
                        /*Changes color of descriptions */
                        color: #777;
                        /* Changes how far away the descriptions are from their input */
                        margin-top: 2px;
                      }

                      #ev-widget-form textarea {
                        /* Makes textareas (multiline inputs) a taller. */
                        min-height: 90px;
                      }
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1581
                included:
                  - id: 1581
                    type: share
                    attributes:
                      name: HomeTest
                      hasPassword: false
                      public: true
                      accessMode:
                        upload: true
                        download: false
                        modify: false
                        delete: false
                      accessDescription: Receive folder
                      embed: false
                      hash: 1a6-eel4nxrt
                      ownerHash: 1a6-eel4nxrt-9t0xc3jb
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: receive
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: 459
                      assets:
                        - HomeTest
                      paths:
                        - /HomeTest
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: true
                      created: '2020-07-30T06:24:33-07:00'
                      modified: '2020-07-30T07:39:42-07:00'
    patch:
      tags:
        - Form
      summary: Updates a form with given parameters
      operationId: updateFormById
      description: |-
        Add, update, or delete a form's parameters. This will alter how your users/customers will see and interact with the form when sending you files. 

        **Notes**

        *This call will **replace** your current form in its entirety.* If you want to keep any existing elements unchanged, be sure to submit the call with an element's current settings to preserve them.                          
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateFormByIdRequestBody
              type: object
              description: CSS Styles of the form.
              properties:
                formDescription:
                  type: string
                  example: Send your files
                  description: 'Set a description for the form that will be visible to recipients. '
                submitButtonText:
                  type: string
                  example: Send Files
                  description: Text to be displayed on the submission button.
                successMessage:
                  type: string
                  example: Your files were uploaded
                  description: 'Text to be displayed when a recipient has submitted the form. '
                elements:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 123
                        description: 'ID of the form element. If you''re adding a new element to the form, do not include this field.'
                      name:
                        type: string
                        example: Your name
                        description: Name of the form element.
                      order:
                        type: integer
                        example: 0
                        description: 'The order the fields will be displayed to the recipient. Starts at 0. '
                      type:
                        type: string
                        example: name
                        description: Type of form field to use.
                        enum:
                          - name
                          - email
                          - text
                          - textarea
                          - upload_area
                      settings:
                        type: object
                        properties:
                          isRequired:
                            type: boolean
                            example: true
                            description: 'True is the form element is required for submission. '
                          senderEmail:
                            type: boolean
                            example: false
                          useAsFolderName:
                            type: boolean
                            example: false
                            description: 'True if the submitted response should be used as the name for the new folder. '
                cssStyles:
                  type: string
                  example: |-
                    #ev-widget-form {
                      /*Change this to change the font. Remove to use your website font*/
                      font-family: Helvetica Neue, sans-serif;
                      /*Makes the form the same width as your website */
                      margin: 0 -2%;
                    }
                    #ev-widget-form label{
                      width: 100%;
                    }
                    #ev-widget-form input,
                    #ev-widget-form textarea {
                      /*Changes color and thickness of borders on form elements */
                      border: 2px solid #ccc;
                      /*Changes spacing inside the form elements (top/bottom and left/right */
                      padding: 5px 5px;
                      /* Changes how far away the inputs are from their label */
                      margin-top: 2px;
                    }

                    #ev-widget-form input:focus,
                    #ev-widget-form textarea:focus {
                      /*Changes the color of the form elements when they are clicked in to */
                      border: 2px solid #b2cf88;
                      /*Removes glow effect from form elements that are clicked in to */
                      outline: none;
                    }

                    #ev-widget-form label {
                      font-size: 14px;
                      font-weight: bold;
                      /*Changes color of labels */
                      color: #232323
                    }

                    #ev-widget-form .ev-form-element-description {
                      /*Changes size of descriptions */
                      font-size: 12px;
                      /*Changes color of descriptions */
                      color: #777;
                      /* Changes how far away the descriptions are from their input */
                      margin-top: 2px;
                    }

                    #ev-widget-form textarea {
                      /* Makes textareas (multiline inputs) a taller. */
                      min-height: 90px;
                    }     
            example:
              formDescription: hello world
              submitButtonText: goodbye world
              successMessage: thank you
              elements:
                - name: Name
                  order: 0
                  type: name
                  settings:
                    isRequired: true
                    senderEmail: false
                    useAsFolderName: false
                    description: this is a description test
                    width: 1
                - id: 2331
                  name: Email Address
                  order: 1
                  type: email
                  settings:
                    isRequired: true
                    senderEmail: false
                    useAsFolderName: false
                    description: null
                    width: 1
                - id: 2333
                  name: Subject
                  order: 2
                  type: text
                  settings:
                    isRequired: true
                    senderEmail: false
                    useAsFolderName: false
                    description: null
                    width: 1
                - id: 2335
                  name: Message
                  order: 3
                  type: textarea
                  settings:
                    isRequired: false
                    senderEmail: false
                    useAsFolderName: false
                    description: null
                    width: 1
                - id: 2337
                  name: Upload Area
                  order: 4
                  type: upload_area
                  settings:
                    isRequired: false
                    senderEmail: false
                    useAsFolderName: false
                    description: null
                    width: 1
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormResponse'
              example:
                responseStatus: 200
                data:
                  id: 459
                  type: form
                  attributes:
                    elements:
                      - id: 2351
                        name: rename test
                        order: 0
                        type: name
                        settings:
                          isRequired: 'true'
                          senderEmail: false
                          useAsFolderName: 'false'
                          description: this is a description test
                          width: '1'
                      - id: 2331
                        name: Email Address
                        order: 1
                        type: email
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2333
                        name: Subject
                        order: 2
                        type: text
                        settings:
                          isRequired: true
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2335
                        name: Message
                        order: 3
                        type: textarea
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                      - id: 2337
                        name: Upload Area
                        order: 4
                        type: upload_area
                        settings:
                          isRequired: false
                          senderEmail: false
                          useAsFolderName: false
                          description: null
                          width: 1
                    submitButtonText: goodbye world
                    formDescription: hello world
                    successMessage: thank you
                    cssStyles: null
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1581
                included: []
    parameters:
      - name: id
        required: true
        in: path
        description: Form unique ID number.
        schema:
          type: integer
          format: int32
  '/forms/entries/{id}':
    get:
      tags:
        - Form
      summary: Get form data entries for a receive
      operationId: getFormEntries
      description: |
        Returns the form data entries for a specific form for a receive. Optional parameters can be included in the call to manage larger data sets.
      parameters:
        - name: ev-api-key
          schema:
            type: string
          in: header
          description: 'API Key required to make the API call. '
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          description: ID of the form to retrieve entries for.
          in: path
          required: true
          schema:
            type: integer
        - name: limit
          description: Limit of records to be returned (for pagination)
          in: query
          schema:
            type: integer
          example: 10
        - name: offset
          description: Current offset of records (for pagination)
          in: query
          schema:
            type: integer
          example: 100
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormEntryResponse'
              example:
                responseStatus: 200
                totalResults: 2
                returnedResults: 2
                data:
                  - id: 320721
                    type: formEntry
                    attributes:
                      fields:
                        - name: Email Address
                          value: test451@example.com
                          order: 1
                      paths:
                        - /example/test451@example.com/1.csv
                        - /example/test451@example.com/2.csv
                      status: completed
                      created: '2020-09-15T05:36:41-07:00'
                      modified: '2020-09-16T05:36:44-07:00'
                  - id: 32021
                    type: formEntry
                    attributes:
                      fields:
                        - name: Email Address
                          value: test455@example.com
                          order: 1
                      paths:
                        - /example/test455@example.com/1.csv
                        - /example/test455@example.com/2.csv
                      status: completed
                      created: '2020-09-16T05:36:41-07:00'
                      modified: '2020-09-17T05:36:44-07:00'
    delete:
      tags:
        - Form
      summary: Delete a receive form submission
      operationId: deleteFormMessageById
      description: |
        Deletes a form submission entry, which represents one time that a visitor filled out the form and uploaded files. This deletes only the record of the submission (the date, the values entered in the form and the names of the files uploaded by the visitor).The share and any associated file resources will not be deleted by this. 

        **Notes**:

        - Use the [GET /form/entries/{formId}](#operation/getFormMessageById) to list the submissions and obtain the ID of the entry you want to delete
        - You must have the [DeleteFormData permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) in order to use this operation
        - It is not possible to un-delete data that is removed in this way
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: 'API Key required to make the API call. '
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: ID of the entry to be deleted data for
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 200
                data: []
  /activity/session:
    get:
      tags:
        - Activity
      summary: Get activity logs
      operationId: getSessionLogs
      description: |
        Returns the detailed activity logs for your account. Optional query paramaters will filter the returned results based on a number of options including usernames, activity types, or date ranges. 

        **NOTE:** Total Results will always return as 0 to avoid quering data you're not using and stay as performant as possible. 
          
        **Operation Types**
        Session activity is logged with an operation type that is different from what is visible through the [activity log interface in the web file manager](/docs/account/10-activity-logs/00-activity-logs). Consult the table below to compare the two:

        | File Manager Value | API Value | Notes |
        |-----|----|---|
        | Connect | PASS | |
        | Disconnect | EXIT | |
        | Upload | STOR | |
        | Download | RETR | |
        | Delete | DELE | |
        | Create Folder | MKD | |
        | Rename | RNTO | |
        | Move | MOVE | |
        | Copy | COPY | |
        | Compress | COMPR | |
        | Extract | EXTRACT | |
        | Shared Folders | SHARE | |
        | Send Files | SEND | |
        | Receive Files | RECV | |
        | _N/A_ | EDIT\_SEND | Update send. Not shown in file manager |
        | Update Share | EDIT\_SHARE| | 
        | Update Receive | EDIT\_RECV | |
        | Delete Send | DELE\_SEND | |
        | Delete Receive | DELE\_RECV | |
        | Delete Share | DELE\_SHARE | |
        | Create Notification | NOTIFY | |
        | Update Notification | EDIT\_NTFY| |
        | Delete Notification | DELE\_NTFY | |
        | Create User | USER | |
        | Update User | EDIT\_USER | |
        | Delete User | DELE\_USER | |
        | _N/A_ | DFA | Create direct link. Not shown in file manager |
        | _N/A_ | EDIT\_DFA | Update direct link options. Not shown in file manager |
        | _N/A_ | DELE\_DFA | Deactivate direct link. Not shown in file manager|
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
        - name: startDate
          in: query
          schema:
            type: string
            format: date-time
          example: '2019-10-18T06:48:40Z'
          description: Start date of the filter data range
        - name: endDate
          in: query
          schema:
            type: string
            format: date-time
          example: '2019-10-18T06:48:40Z'
          description: End date of the filter data range
        - name: ipAddress
          in: query
          schema:
            type: string
          example: 127.0.0.1
          description: Used to filter session logs by ip address.
        - name: username
          in: query
          schema:
            type: string
          example: jdoe
          description: Username used for filtering a list
        - name: path
          in: query
          schema:
            type: string
          example: /folder*
          description: Path used to filter records
        - name: type
          in: query
          schema:
            type: string
          example: EDIT_SHARE
          description: Filter session logs for operation type (see table above for acceptable values)
        - name: offset
          in: query
          schema:
            type: integer
          example: 100
          description: Offset of the records list
        - name: limit
          in: query
          schema:
            type: integer
          example: 10
          description: Limit of the records list
        - name: sort
          in: query
          description: Comma separated list sort params
          schema:
            type: string
            example: '-date'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionActivityResponse'
              examples:
                example-1:
                  value:
                    responseStatus: 200
                    totalResults: 2
                    returnedResults: 2
                    data:
                      - id: 12345
                        type: sessionActivity
                        attributes:
                          bytesTransferred: 10815676
                          created: '2019-10-18T06:48:40Z'
                          duration: 5
                          fileName: /test2/Cassandra2020The20Definitive20Guide.2030947496.pdf
                          fileSource: ''
                          ipAddress: 185.223.113.224
                          operation: PASS
                          protocol: web
                          sessionId: 5da9b4a8bd961dfa0a56fa0dc15aaffe57069271b389e
                          status: '-'
                          username: exavault
  /activity/webhooks:
    get:
      tags:
        - Activity
      summary: Get webhook logs
      operationId: getWebhookLogs
      description: |
        Returns the webhook logs for your account. Use the available query parameters to filter the listing of activity that is returned.

        **NOTE:** Total Results will always return as 0 to avoid querying data you're not using and stay as performant as possible. 

        **Event Types**

        Webhooks are triggered by enabled event types for your account, which are configured on the [developer settings page](/docs/account/09-settings/06-developer-settings). Not all event types may be allowed for your account type. These are the valid options for event types:

        - resources.upload
        - resources.download
        - resources.delete
        - resources.createFolder
        - resources.rename
        - resources.move
        - resources.copy
        - resources.compress
        - resources.extract
        - shares.formSubmit
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
        - schema:
            type: string
            format: date-time
          in: query
          name: startDate
          description: Earliest date of entries to include in list
        - schema:
            type: string
            format: date-time
          in: query
          name: endDate
          description: Latest date of entries to include in list
        - schema:
            type: string
            format: uri
          in: query
          name: endpointUrl
          description: Webhook listener endpoint
        - name: event
          in: query
          schema:
            type: string
            example: resources.upload
          description: Type of activity that triggered the webhook attempt
        - name: statusCode
          in: query
          schema:
            type: integer
            example: 200
          example: 200
          description: Response code from the webhook endpoint
        - name: resourcePath
          in: query
          schema:
            type: string
            example: /Production
          example: /folder*
          description: Path of the resource that triggered the webhook attempt
        - schema:
            type: string
            example: exampleuser
          in: query
          name: username
          description: Filter by triggering username.
        - name: offset
          in: query
          schema:
            type: integer
            minimum: 0
          example: 100
          description: Records to skip before returning results.
        - name: limit
          in: query
          schema:
            type: integer
            example: 100
          example: 10
          description: Limit of the records list
        - name: sort
          in: query
          description: Comma separated list sort params
          schema:
            type: string
          example: '-date,event'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookActivityResponse'
              example:
                responseStatus: 200
                totalResults: 1469
                returnedResults: 1
                data:
                  - id: 2602725
                    type: webhookActivity
                    attributes:
                      created: '2020-07-30T03:40:35-07:00'
                      endpointUrl: 'https://example.com/api/webhook'
                      event: Upload
                      status: 200
                      attempt: 1
                      responseSize: 0
                      response: ''
    parameters: []
  '/notifications/{id}':
    patch:
      tags:
        - Notifications
      summary: Update a notification
      operationId: updateNotificationById
      description: |-
        Update an existing notification. You can add additional emails or change the action or users that cause a notification to trigger. 

        When updating recipient emails, make sure your `recipients` parameter contains the full list of people who should be included on the notification. If you resend the list without an existing recipient, they will be deleted from the notification emails. 

        **Notes:**

        - You need to have the [notifications permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to update a notification.
        - You can only change notifications owned by your user account.
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          description: 'ID of the notification. Use [GET /notifications](#operation/listNotifications) if you need to lookup an ID.'
          required: true
          schema:
            type: integer
          example: 3
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateNotificationByIdRequestBody
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - upload
                    - download
                    - delete
                    - all
                  description: 'Type of action be notified about. Notifications will only be sent for the given type of action. Valid choices are **upload**, **download**, **delete** or **all** (upload/download/delete)'
                  example: all
                usernames:
                  type: array
                  description: |-
                    Determines which users' actions should trigger the notification. 

                    Rather than listing  individual users, you can also use 3 special options:

                    - **notice\_user\_all** for activity by any user or share recipient
                    - **notice\_user\_all\_users** for activity only by user accounts
                    - **notice\_user\_all\_recipients** for activity only by share recipients
                  example:
                    - notice_user_all
                  items:
                    type: string
                sendEmail:
                  type: boolean
                  description: Whether an email should be sent to the recipients when matching activity happens.
                  example: true
                recipients:
                  type: array
                  description: 'Email addresses to send notification emails to. If empty, sends to the current user''s email address.'
                  example:
                    - myemail@example.com
                  items:
                    type: string
                    format: email
                message:
                  type: string
                  description: 'Custom message to insert into the notification emails, along with the matching activity.'
            examples:
              Example Body:
                value:
                  action: upload
                  usernames:
                    - notice_user_all_recipients
                  sendEmail: 'true'
                  emails:
                    - exavault@example.com
                    - exavault+1@example.com
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationResponse'
              example:
                responseStatus: 200
                data:
                  id: 1143
                  type: notification
                  attributes:
                    type: folder
                    path: /Test
                    name: /Test
                    action: all
                    usernames:
                      - exavalutuser
                    recipients:
                      - id: 85
                        notificationId: 1143
                        email: exavault@example.com
                        created: '2020-07-30T06:01:09-07:00'
                        modified: '2020-07-30T06:01:09-07:00'
                      - id: 87
                        notificationId: 1143
                        email: exavault+1@example.com
                        created: '2020-07-30T06:01:09-07:00'
                        modified: '2020-07-30T06:01:09-07:00'
                    sendEmail: false
                    readableDescription: 'anybody uploads to, downloads from or deletes from ''/Test'''
                    readableDescriptionWithoutPath: anybody uploads to or downloads from this folder
                    message: null
                    created: '2020-07-29T20:15:09-07:00'
                    modified: '2020-07-29T20:15:09-07:00'
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    resource:
                      data:
                        type: resource
                        id: 2554051
                included: []
    get:
      tags:
        - Notifications
      summary: Get notification details
      operationId: getNotificationById
      description: |-
        Get the details for a notification with a specific ID number. You'll be able to review its path, triggers and who's getting the notification. 

        **Notes**

        - You need to have the [notifications permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to view the detail for a notification.
        - You can only retrieve notifications owned by your user account.
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          description: 'ID of the notification. Use [GET /notifications](#operation/listNotifications) if you need to lookup an ID.'
          required: true
          schema:
            type: integer
          example: 3
        - name: include
          in: query
          description: 'Related record types to include in the response. You can include multiple types by separating them with commas. Valid options are **ownerUser**, **resource**, and **share**.'
          schema:
            type: string
          example: 'resource,share'
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationResponse'
              example:
                responseStatus: 200
                data:
                  id: 1143
                  type: notification
                  attributes:
                    type: folder
                    path: /Test
                    name: /Test
                    action: upload
                    usernames:
                      - exavaultuser
                    recipients:
                      - id: 81
                        notificationId: 1143
                        email: exavault@example.com
                        created: '2020-07-29T20:15:09-07:00'
                        modified: '2020-07-29T20:15:09-07:00'
                      - id: 83
                        notificationId: 1143
                        email: exavault+1@example.com
                        created: '2020-07-29T20:15:09-07:00'
                        modified: '2020-07-29T20:15:09-07:00'
                    sendEmail: false
                    readableDescription: anybody uploads to '/Test'
                    readableDescriptionWithoutPath: anybody uploads to this folder
                    message: null
                    created: '2020-07-29T20:15:09-07:00'
                    modified: '2020-07-29T20:15:09-07:00'
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    resource:
                      data:
                        type: resource
                        id: 2554051
                included: []
    delete:
      summary: Delete a notification
      operationId: deleteNotificationById
      tags:
        - Notifications
      description: |-
        Deletes a notification. Note that deleting a notification _only_ deletes the notification &ndash; it does not delete any underlying files or folders.

        **Notes:**

        - You need to have the [notifications permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to update a notification.
        - You can only delete notifications owned by your user account.
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: 'ID of the notification. Use [GET /notifications](#operation/listNotifications) if you need to lookup an ID.'
          schema:
            type: integer
            format: int32
          example: 3
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
  /notifications:
    post:
      summary: Create a new notification
      operationId: addNotification
      tags:
        - Notifications
      description: |
        Create a new notification for a [resource](#section/Identifying-Resources) in your account. Notifications can be sent via email or webhook;

        - To enable email, pass an array of email addresses to the `recipients` parameter of this call. 
        - To enable webhooks, setup the webhook callback URL in your account settings via [PATCH /account](#operation/updateAccount). 

        **Notes:**
          - Authenticated user should have [notifications permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions)
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: 'API Key required to make API call. '
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: AddNotificationRequestBody
              type: object
              properties:
                type:
                  description: |-
                    What kind of notification you're making. Valid choices are:

                    - **file** to monitor activity for a file resource
                    - **folder** to monitor activity for a folder resource
                  type: string
                  enum:
                    - file
                    - folder
                  example: file
                resource:
                  type: string
                  description: 'Resources for this notification. See details on [how to specify resources](#section/Identifying-Resources) above.'
                action:
                  description: 'Type of action be notified about. Notifications will only be fired for the given type of action. Valid choices are **upload**, **download**, **delete** or **all** (upload/download/delete)'
                  type: string
                  enum:
                    - upload
                    - download
                    - delete
                    - all
                  example: upload
                usernames:
                  description: |-
                    Determines which users' actions should trigger the notification. 

                    Rather than listing  individual users, you can also use 3 special options:

                    - **notice\_user\_all** for activity by any user or share recipient
                    - **notice\_user\_all\_users** for activity only by user accounts
                    - **notice\_user\_all\_recipient** for activity only by share recipients
                  type: array
                  items:
                    type: string
                sendEmail:
                  description: Set to true if the user should be notified by email when the notification is triggered.
                  type: boolean
                  example: true
                recipients:
                  description: 'Email addresses to send notification emails to. If not specified, sends to the current user''s email address.'
                  type: array
                  example:
                    - myemail@example.com
                  items:
                    type: string
                    format: email
                message:
                  type: string
                  description: Custom message to include in notification emails.
              required:
                - type
                - resource
                - action
                - usernames
                - sendEmail
            examples:
              Example:
                value:
                  type: file
                  resource: examplefile.txt
                  action: upload
                  usernames:
                    - exavault
                    - exavalut2
                  sendEmail: true
                  recipients:
                    - myemail@example.com
                  message: hello world
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationResponse'
              example:
                responseStatus: 201
                data:
                  id: 1143
                  type: notification
                  attributes:
                    type: folder
                    path: /Test
                    name: /Test
                    action: upload
                    usernames:
                      - exavaultuser
                    recipients:
                      - id: 81
                        notificationId: 1143
                        email: exavault@example.com
                        created: '2020-07-29T20:15:09-07:00'
                        modified: '2020-07-29T20:15:09-07:00'
                      - id: 83
                        notificationId: 1143
                        email: exavault@example.com
                        created: '2020-07-29T20:15:09-07:00'
                        modified: '2020-07-29T20:15:09-07:00'
                    sendEmail: false
                    readableDescription: anybody uploads to '/Test'
                    readableDescriptionWithoutPath: anybody uploads to this folder
                    message: null
                    created: '2020-07-29T20:15:09-07:00'
                    modified: '2020-07-29T20:15:09-07:00'
                  relationships:
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    resource:
                      data:
                        type: resource
                        id: 2554051
    get:
      tags:
        - Notifications
      summary: Get a list of notifications
      operationId: listNotifications
      description: |-
        Get a list of all the [notifications](/docs/account/06-notifications) you have access to. You can use sorting and filtering to limit the returned list.

        **Notes:**
          - Authenticated user should have [notifications permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions)
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          required: true
          description: 'API Key required to make the API call. '
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: type
          in: query
          description: |-
            Type of notification include in the list. Valid options are **file**, **folder**, **send_receipt**, **share_receipt**, **file_drop**

            If this parameter is not used, only **file** and **folder** type notifications are included in the list.
          schema:
            type: string
            enum:
              - file
              - folder
              - shared_folder
              - send_receipt
              - share_receipt
              - file_drop
          example: file
        - name: offset
          in: query
          required: false
          description: Starting notification record in the result set. Can be used for pagination.
          schema:
            type: integer
            format: int32
            default: 0
          example: 50
        - name: sort
          in: query
          required: false
          description: |-
            What order the list of matches should be in. Valid sort fields are **resourcename**, **date**, **action** and **type**. The sort order for each sort field is ascending unless it is prefixed with a minus (“-“), in which case it will be descending.

            You can chose multiple options for the sort by separating them with commmas, such as "type,-date" to sort by type, then most recent.
          schema:
            type: string
          example: date
        - name: limit
          in: query
          required: false
          description: Number of notification records to return. Can be used for pagination.
          schema:
            type: integer
            format: int32
            default: 25
          example: 100
        - name: include
          in: query
          description: 'Related records to include in the response. Valid options are **ownerUser**, **resource**, **share**'
          schema:
            type: string
            enum:
              - resource
              - share
              - user
          example: 'resource,share,user'
        - schema:
            type: string
            enum:
              - connect
              - download
              - upload
              - delete
              - all
            example: all
          in: query
          name: action
          description: |-
            The kind of action which triggers the notification. Valid choices are **connect** (only for delivery receipts), **download**, **upload**, **delete**, or **all** 

            **Note** The **all** action matches notifications set to "all", not all notifications. For example, notifications set to trigger only on delete are not included if you filter for action=all
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 1
                returnedResults: 1
                data:
                  - id: 1117
                    type: notification
                    attributes:
                      type: folder
                      path: /Test
                      name: /Test
                      action: all
                      usernames:
                        - exavaultuser
                      recipients:
                        - id: null
                          notificationId: null
                          email: exavault@example.com
                          created: '2020-07-29T19:51:21-07:00'
                          modified: '2020-07-29T19:51:21-07:00'
                      recipientEmails:
                        - exavault@example.com
                      sendEmail: true
                      readableDescription: 'anybody uploads to, downloads from or deletes from ''/Test'''
                      readableDescriptionWithoutPath: anybody uploads to or downloads from this folder
                      message: null
                      created: '2020-07-29T09:53:17-07:00'
                      modified: '2020-07-29T09:53:17-07:00'
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      resource:
                        data:
                          type: resource
                          id: 2554051
                included: []
  /users:
    post:
      tags:
        - Users
      description: |-
        Adds a new user to the account. The user may be configured as an admin or standard user, and (if a standard user) may be assigned a restricted [home directory](/docs/account/04-users/00-introduction#setting-the-user-s-home-directory) and restricted [permissions](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions). 

        **Notes:**

        - You must be an [admin-level user](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to use this.
      summary: Create a user
      operationId: addUser
      parameters:
        - schema:
            type: string
          in: header
          description: API key required to make the API call
          name: ev-api-key
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: AddUserRequestBody
              type: object
              properties:
                username:
                  description: |-
                    Username of the user to create. This should follow standard username conventions - spaces are not allowed, etc. We do allow email addresses as usernames.

                    **Note** Usernames must be unique across all ExaVault accounts.
                  type: string
                  example: testuser
                nickname:
                  description: An optional nickname (e.g. 'David from Sales').
                  type: string
                  example: testnickname
                homeResource:
                  description: |-
                    Resource identifier for the user's home folder. See details on [how to specify resources](#section/Identifying-Resources) above.

                    The user will be locked to this directory and unable to move 'up' in the account. If the folder does not exist in the account, it will be created when the user is created. 

                    Users with the `role` **admin** should have their homeResource set to '/'
                  type: string
                  example: /
                email:
                  type: string
                  description: Email address for the user
                  example: testuser@example.com
                  format: email
                password:
                  type: string
                  description: Password for the user
                role:
                  description: 'The type of user to create, either **user** or **admin**.'
                  type: string
                  enum:
                    - user
                    - admin
                  example: user
                permissions:
                  type: object
                  description: |-
                    An object containing name/value pairs for each permission. Any permission that is not passed will be set to `false` by default. Note that users will be unable to see any files in the account unless you include `list` permission.
                    When creating a user with the `role` **admin**, you should set all of the permissions to `true`
                  properties:
                    list:
                      type: boolean
                      example: true
                    download:
                      type: boolean
                      example: true
                    upload:
                      type: boolean
                      example: true
                    modify:
                      type: boolean
                      example: true
                    delete:
                      type: boolean
                      example: true
                    changePassword:
                      type: boolean
                      example: true
                    share:
                      type: boolean
                      example: true
                    notification:
                      type: boolean
                      example: true
                    viewFormData:
                      type: boolean
                      example: true
                    deleteFormData:
                      type: boolean
                      example: true
                timeZone:
                  description: |
                    Time zone, used for accurate time display within the application. See <a href='https://php.net/manual/en/timezones.php' target='blank'>this page</a> for allowed values.
                  type: string
                  example: America/Los_Angeles
                expiration:
                  type: string
                  description: 'Optional timestamp when the user should expire, formatted in date-time.'
                  example: '2011-03-21 00:18:56'
                locked:
                  description: 'If true, the user will not be able to log in'
                  type: boolean
                  example: true
                welcomeEmail:
                  description: 'If **true**, send this new user a welcome email upon creation. The content of the welcome email can be configured with the [PATCH /accounts](#operation/updateAccount) method.'
                  type: boolean
                  example: true
                onboarding:
                  description: Set this to **true** to enable extra help popups in the web file manager for this user.
                  type: boolean
                  example: true
              required:
                - username
                - homeResource
                - email
                - password
                - role
                - permissions
                - timeZone
            examples:
              example-1:
                value:
                  username: testuser
                  nickname: testnickname
                  homeResource: /
                  email: testuser@example.com
                  password: string
                  role: user
                  permissions:
                    list: true
                    download: true
                    upload: true
                    modify: true
                    delete: true
                    changePassword: true
                    share: true
                    notification: true
                    viewFormData: true
                    deleteFormData: true
                  timeZone: America/Los_Angeles
                  expiration: '2011-03-21 00:18:56'
                  locked: true
                  welcomeEmail: true
                  onboarding: true
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                responseStatus: 201
                data:
                  id: 124449
                  type: user
                  attributes:
                    status: 1
                    expiration: '2020-07-31T17:00:00-07:00'
                    created: '2020-07-27T14:58:01-07:00'
                    modified: '2020-07-27T14:58:01-07:00'
                    accessTimestamp: null
                    accountName: exavault
                    username: exavaultuser
                    nickname: exavaultnickname
                    email: test@example.com
                    permissions:
                      download: true
                      upload: true
                      modify: false
                      delete: false
                      list: false
                      changePassword: false
                      share: false
                      notification: false
                      viewFormData: false
                      deleteFormData: false
                    homePath: /
                    onboarding: false
                    firstLogin: false
                    role: user
                    timeZone: America/Los_Angeles
                  relationships:
                    ownerAccount:
                      data:
                        type: account
                        id: 251
                    homeResource:
                      data:
                        type: resource
                        id: 2536831
                included: []
    get:
      tags:
        - Users
      summary: Get a list of users
      operationId: listUsers
      description: |-
        Get a list of the users in your account. There are three main types of searches you can do with this method:

        1. Search for a user by username. If you provide the `username` parameter in your call, then only the user who exactly matches that username will be in the list of matches. Any other parameters are ignored.
        1. Search for a user by individual filter fields (`nickname`,`email`,`role`,`status`,`homeDir`). Users in the list will be ones who match all of the filters you choose to search by. For example, you could look for users with the "admin" `role` AND `email` addresses ending in "*@acme.com". 
        1. Search for a user by search string. If you provide the `search` parameter, users whose nickname OR email OR role OR homeDir match value your provide.

        **Notes:**

        - You must be an [admin-level user](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to use this.
        - The homeDir is the full path to the user's home directory, not a resource ID or hash.
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: username
          in: query
          required: false
          schema:
            type: string
          example: testuser
          description: The username of the user you are looking for. Only entries with the same username as this will be in the list of results. Does not support wildcard searches.
        - schema:
            type: string
          in: query
          name: homeResource
          description: Resource identifier for user's home directory. Does not support wildcard searches.
        - schema:
            type: string
          in: query
          name: nickname
          description: Nickname to search for. Ignored if `username` is provided. Supports wildcard searches.
        - schema:
            type: string
            example: '*@example.co'
          in: query
          name: email
          description: Email to search for. Ignored if `username` is provided. Supports wildcard searches
        - schema:
            type: string
            example: use
          in: query
          name: role
          description: 'Types of users to include the list. Ignored if `username` is provided. Valid options are **admin**, **master** and **user**'
        - schema:
            type: integer
          in: query
          name: status
          description: 'Whether a user is locked. Ignored if `username` is provided. **0** means user is locked, **1** means user is not locked. '
        - schema:
            type: string
          in: query
          name: search
          description: 'Searches the nickname, email, role and homeDir fields for the provided value. Ignored if `username` is provided. Supports wildcard searches.'
        - name: offset
          in: query
          required: false
          description: Starting user record in the result set. Can be used for pagination.
          schema:
            type: integer
            format: int32
          example: 50
        - name: sort
          in: query
          required: false
          description: |-
            Sort order or matching users. You can sort by multiple columns by separating sort options with a comma; the sort will be applied in the order specified. The sort order for each sort field is ascending unless it is prefixed with a minus (“-“), in which case it will be descending.

            Valid sort fields are: **nickname**, **username**, **email**, **homeDir** and **modified**
          schema:
            type: string
            example: 'homeDir,-modified'
        - name: limit
          in: query
          required: false
          description: Number of users to return. Can be used for pagination.
          schema:
            type: integer
            format: int32
          example: 100
        - name: include
          in: query
          description: Comma separated list of relationships to include in response. Valid options are **homeResource** and **ownerAccount**.
          schema:
            type: string
          example: 'homeResource,ownerAccount'
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 3
                returnedResults: 3
                data:
                  - id: 124421
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T08:03:57-07:00'
                      modified: '2020-07-24T15:53:02-07:00'
                      accessTimestamp: '2020-07-24 23:37:39'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: admin
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 124423
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T08:08:51-07:00'
                      modified: '2020-07-24T08:08:51-07:00'
                      accessTimestamp: '0000-00-00 00:00:00'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: true
                      role: user
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 124439
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-27T02:04:11-07:00'
                      modified: '2020-07-27T02:04:11-07:00'
                      accessTimestamp: '0000-00-00 00:00:00'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test+4@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: false
                        viewFormData: false
                        deleteFormData: false
                      homeDir: /Sample Files and Folders
                      onboarding: false
                      firstLogin: false
                      role: user
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536835
                included: []
  '/users/{id}':
    get:
      tags:
        - Users
      summary: Get info for a user
      operationId: getUserById
      description: |-
        Get the details for a specific user. You can use the `include` parameter to also get the details of related records, such as the account or the home directory.

        **Notes:**

        - You must have [admin or master](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) access to use this.
      parameters:
        - schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          in: header
          name: ev-api-key
          description: API Key
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: include
          in: query
          description: Comma-separated list of relationships to include in response. Possible values include **homeResource** and **ownerAccount**.
          schema:
            type: string
            example: 'homeResource,ownerAccount'
          example: 'homeResource,owneraccount'
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                responseStatus: 200
                data:
                  id: 124419
                  type: user
                  attributes:
                    status: 1
                    expiration: null
                    created: '2020-07-24T07:51:12-07:00'
                    modified: '2020-07-24T07:51:13-07:00'
                    accessTimestamp: '2020-07-27 19:32:45'
                    accountName: exavault
                    username: exavaultuser
                    nickname: exavaultnickname
                    email: test@example.com
                    permissions:
                      download: true
                      upload: true
                      modify: true
                      delete: true
                      list: true
                      changePassword: true
                      share: true
                      notification: true
                      viewFormData: true
                      deleteFormData: true
                    homeDir: /
                    onboarding: true
                    firstLogin: false
                    role: master
                    timeZone: America/Los_Angeles
                  relationships:
                    ownerAccount:
                      data:
                        type: account
                        id: 251
                    homeResource:
                      data:
                        type: resource
                        id: 2536831
                included: []
    delete:
      tags:
        - Users
      summary: Delete a user
      operationId: deleteUser
      description: |
        Delete a user from the account. Deleting a user does **NOT** delete any files from the account; it merely removes a user's access. Aternatively, locking a user via the [PATCH /users/{id}](#operation/updateUser) will keep the user in your account, but make it unable to log in. 

        Resources and shares owned by the deleted user will be owned by the master user after the deletion.

        **Notes:**
         
        - You must have [admin-level access](/docs/account/04-users/01-admin-users) to delete a user.
        - The primary owner of the account cannot be deleted.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 200
                data: []
    patch:
      tags:
        - Users
      summary: Update a user
      operationId: updateUser
      description: |-
        Updates the settings for the user. Note that the unique key for this API call is our internal ID, and _not_ the username, as the username can be changed.

        In the request body, you should only send the parameters for values that you wish to change for the user.

        **Notes:**

        - You must have [admin or master](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) access to edit other users. If you have user-level access, you can only update your own user settings.
        - You cannot edit a master user with this method.
      parameters:
        - schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          in: header
          name: ev-api-key
          description: API key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateUserRequestBody
              type: object
              properties:
                username:
                  description: |-
                    New username for the user. This should follow standard username conventions - spaces are not allowed, etc. We do allow email addresses as usernames.

                    **Note** Usernames must be unique across all ExaVault accounts.
                  type: string
                  example: testuser
                nickname:
                  description: An optional nickname (e.g. 'David from Sales').
                  type: string
                  example: testnickname
                homeResource:
                  description: |-
                    Resource identifier for the user's home folder. See details on [how to specify resources](#section/Identifying-Resources) above.

                    The user will be locked to this directory and unable to move 'up' in the account. If the folder does not exist in the account, it will be created when the user logs in.

                    This setting is ignored for users with the `role` **admin**.
                  type: string
                  example: /
                email:
                  type: string
                  description: Email address for the user
                  example: testuser@example.com
                  format: email
                password:
                  type: string
                  description: New password for the user
                role:
                  description: 'The type of user (**admin** or **user**). Note that admin users cannot have a `homeResource` other than ''/'', and will have full permissions, but you must provide at least "download,upload,list,delete" in the `permissions` parameter.'
                  type: string
                  enum:
                    - user
                    - admin
                  example: user
                permissions:
                  $ref: '#/components/schemas/UserPermissions'
                timeZone:
                  description: |
                    Time zone, used for accurate time display within the application. See <a href='https://php.net/manual/en/timezones.php' target='blank'>this page</a> for allowed values.
                  type: string
                  example: America/Los_Angeles
                expiration:
                  type: string
                  description: Optional timestamp when the user should expire.
                  example: '2011-03-21 00:18:56'
                locked:
                  description: 'If true, the user will be prevented from logging in'
                  type: boolean
                  example: true
                onboarding:
                  description: Set this to **true** to enable extra help popups in the web file manager for this user.
                  type: boolean
                  example: true
            examples:
              example-1:
                value:
                  username: testuser
                  nickname: testnickname
                  homeResource: /
                  email: testuser@example.com
                  password: string
                  role: user
                  permissions:
                    list: true
                    download: true
                    upload: true
                    modify: true
                    delete: true
                    changePassword: true
                    share: true
                    notification: true
                    viewFormData: true
                    deleteFormData: true
                  timeZone: America/Los_Angeles
                  expiration: '2011-03-21 00:18:56'
                  locked: true
                  onboarding: true
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
              example:
                responseStatus: 200
                data:
                  id: 124447
                  type: user
                  attributes:
                    status: 1
                    expiration: '2020-08-29T17:00:00-07:00'
                    created: '2020-07-27T14:50:39-07:00'
                    modified: '2020-07-27T14:50:39-07:00'
                    accessTimestamp: '0000-00-00 00:00:00'
                    accountName: exavault
                    username: exavaultuser
                    nickname: exavaultnickname
                    email: test@example.com
                    permissions:
                      download: true
                      upload: true
                      modify: false
                      delete: false
                      list: false
                      changePassword: false
                      share: false
                      notification: false
                      viewFormData: false
                      deleteFormData: false
                    homeDir: /
                    onboarding: false
                    firstLogin: false
                    role: user
                    timeZone: America/Los_Angeles
                  relationships:
                    ownerAccount:
                      data:
                        type: account
                        id: 251
                    homeResource:
                      data:
                        type: resource
                        id: 2536831
                included: []
    parameters:
      - schema:
          type: integer
          format: int32
          example: 2224
        name: id
        in: path
        description: 'The user''s ID. Note that this is our internal ID, and _not the username_. You can obtain it by calling the [GET /users](#operation/listUsers) method.'
        required: true
  /resources/list:
    get:
      tags:
        - Resources
      summary: Get a list of all resources
      operationId: listResources
      description: |-
        Returns a list of files and folders in the account. Use the `resource` query parameter to indicate the folder you wish to search in (which can be /). 

        **Searching for Files and Folders**

        Using the `name` parameter triggers search mode, which will search the entire directory structure under the provided `resource` for files or folders with names matching the provided `name`. This supports wildcard matching such as:

        - \*Report\* would find any files or folders with "Report" in the name.
        - Data\_202?-09-30.xlsx would match items such as "Data\_2020-09-30.xlsx", "DATA\_2021-09-30.xlsx", "data\_2022-09-30.xlsx" etc.
        - sales\* would find any files or folders starting with the word "Sales"
        - \*.csv would locate any files ending in ".csv"
        - \* matches everything within the directory tree starting at your given `resource`

        The search is not case-sensitive. Searching for Clients\* or clients\* or CLIENTS\*, etc. will provide identical results

        If you are using the `name` parameter to run a search, the `type` parameter will be ignored by the server.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: resource
          schema:
            type: string
          in: query
          description: Resource identifier to get resources for. Can be path/id/name.
          required: true
        - name: sort
          in: query
          description: 'Endpoint support multiple sort fields by allowing array of sort params. Sort fields should be applied in the order specified. The sort order for each sort field is ascending unless it is prefixed with a minus (“-“), in which case it will be descending.'
          schema:
            type: string
            example: name
        - name: offset
          in: query
          required: false
          description: 'Determines which item to start on for pagination. Use zero (0) to start at the beginning of the list. e.g, setting `offset=200` would trigger the server to skip the first 200 matching entries when returning the results.'
          schema:
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          required: false
          description: 'The number of files to limit the result. If you have more files in your directory than this limit, make multiple calls, incrementing the `offset` parameter, above.'
          schema:
            type: integer
            format: int32
        - name: type
          in: query
          required: false
          description: Limit types of resources returned to "file" or "dir" only. This is ignored if you are using the `name` parameter to trigger a search.
          schema:
            type: string
        - schema:
            type: string
          in: query
          name: name
          description: 'Text to match resource names. This allows you to filter the results returned. For example, to locate only zip archive files, you can enter `*zip` and only resources ending in "zip" will be included in the list of results.'
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **share**, **notifications**, **directFile**, **parentResource**, **ownerUser**, **ownerAccount**.'
          schema:
            type: string
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 50
                returnedResults: 2
                data:
                  - type: resource
                    id: 2
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
                included:
                  - id: 1499
                    type: share
                    attributes:
                      name: Test
                      hasPassword: false
                      public: true
                      accessMode:
                        download: true
                        upload: false
                        modify: false
                        delete: false
                      accessDescription: Download only
                      embed: false
                      hash: 17t-eojdhh1j
                      ownerHash: 17t-eojowf1j-sfh242uj
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: shared_folder
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: null
                      assets:
                        - Test
                      paths:
                        - /Test
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: false
                      created: '2020-07-29T08:51:39-07:00'
                      modified: '2020-07-29T09:53:36-07:00'
                  - id: 101
                    type: directFile
                    attributes:
                      accountId: 7
                      path: /Test
                      isEnabled: true
                      isIndexEnabled: true
                      blockUntil: '-001-11-29T16:07:02-07:52'
                      created: '2020-07-29T09:53:12-07:00'
                      modified: '2020-07-29T09:53:12-07:00'
                  - id: 1143
                    type: notification
                    attributes:
                      type: folder
                      path: /Test
                      name: /Test
                      action: upload
                      usernames:
                        - exavaultuser
                      recipients:
                        - id: 81
                          notificationId: 1143
                          email: exavault@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                        - id: 83
                          notificationId: 1143
                          email: exavault+1@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                      recipientEmails:
                        - exavault@example.com
                        - exavault+1@example.com
                      sendEmail: false
                      readableDescription: anybody uploads to '/Test'
                      readableDescriptionWithoutPath: anybody uploads to this folder
                      message: null
                      created: '2020-07-29T20:15:09-07:00'
                      modified: '2020-07-29T20:15:09-07:00'
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      resource:
                        data:
                          type: resource
                          id: 2554051
                  - id: 124419
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T07:51:12-07:00'
                      modified: '2020-07-24T07:51:13-07:00'
                      accessTimestamp: '2020-07-27 19:32:45'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: master
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 7
                    type: account
                    attributes:
                      accountName: exampleaccount
                      maxUsers: 5
                      userCount: 4
                      status: 1
                      branding: true
                      customDomain: false
                      quota:
                        diskLimit: 37580963840
                        diskUsed: 24938382543
                        noticeEnabled: true
                        noticeThreshold: 90
                      secureOnly: false
                      complexPasswords: false
                      showReferralLinks: true
                      externalDomains: null
                      allowedIp: null
                      clientId: 1
                      welcomeEmailContent: |
                        "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                      welcomeEmailSubject: ExaVault File Sharing Account
                      customSignature: null
                      accountOnboarding: true
                      created: '2019-05-30T20:48:57Z'
                      modified: '2019-08-27T01:03:41Z'
                    relationships:
                      masterUser:
                        data:
                          type: user
                          id: 1
                  - id: 2
                    type: resource
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
  '/resources/{id}':
    get:
      tags:
        - Resources
      summary: Get resource metadata
      operationId: getResourceInfoById
      description: |
        Returns metadata for specified file/folder path, including upload date, size and type. For the full list of returned properties, see the response syntax, below.

        **Notes:**
        - Authenticated user should have list permission.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **share**, **notifications**, **directFile**, **parentResource**, **ownerUser**, **ownerAccount**.'
          schema:
            type: string
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 200
                data:
                  id: 2554051
                  type: resource
                  attributes:
                    hash: 7a2abd9f90ce196hf3f650c612372c0b
                    name: Test
                    extension: ''
                    type: dir
                    createdBy: exavaultuser
                    uploadDate: '2020-07-28T15:59:23-07:00'
                    createdAt: '2020-07-28T15:59:23-07:00'
                    updatedAt: '2020-07-29T09:52:47-07:00'
                    accessedAt: '2020-07-29T09:53:36-07:00'
                    path: /Test
                    size: 33415
                    fileCount: 2
                    previewable: false
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1499
                    notifications:
                      - data:
                          type: notification
                          id: 1117
                    directFile:
                      data:
                        type: directFile
                        id: 101
                    parentResource:
                      data:
                        type: resource
                        id: 103
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
                included:
                  - id: 1499
                    type: share
                    attributes:
                      name: Test
                      hasPassword: false
                      public: true
                      accessMode:
                        download: true
                        upload: false
                        modify: false
                        delete: false
                      accessDescription: Download only
                      embed: false
                      hash: 17t-eojdhh1j
                      ownerHash: 17t-eojowf1j-sfh242uj
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: shared_folder
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: null
                      assets:
                        - Test
                      paths:
                        - /Test
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: false
                      created: '2020-07-29T08:51:39-07:00'
                      modified: '2020-07-29T09:53:36-07:00'
                  - id: 101
                    type: directFile
                    attributes:
                      accountId: 7
                      path: /Test
                      isEnabled: true
                      isIndexEnabled: true
                      blockUntil: '-001-11-29T16:07:02-07:52'
                      created: '2020-07-29T09:53:12-07:00'
                      modified: '2020-07-29T09:53:12-07:00'
                  - id: 1143
                    type: notification
                    attributes:
                      type: folder
                      path: /Test
                      name: /Test
                      action: upload
                      usernames:
                        - exavaultuser
                      recipients:
                        - id: 81
                          notificationId: 1143
                          email: exavault@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                        - id: 83
                          notificationId: 1143
                          email: exavault+1@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                      recipientEmails:
                        - exavault@example.com
                        - exavault+1@example.com
                      sendEmail: false
                      readableDescription: anybody uploads to '/Test'
                      readableDescriptionWithoutPath: anybody uploads to this folder
                      message: null
                      created: '2020-07-29T20:15:09-07:00'
                      modified: '2020-07-29T20:15:09-07:00'
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      resource:
                        data:
                          type: resource
                          id: 2554051
                  - id: 124419
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T07:51:12-07:00'
                      modified: '2020-07-24T07:51:13-07:00'
                      accessTimestamp: '2020-07-27 19:32:45'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: master
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 7
                    type: account
                    attributes:
                      accountName: exampleaccount
                      maxUsers: 5
                      userCount: 4
                      status: 1
                      branding: true
                      customDomain: false
                      quota:
                        diskLimit: 37580963840
                        diskUsed: 24938382543
                        noticeEnabled: true
                        noticeThreshold: 90
                      secureOnly: false
                      complexPasswords: false
                      showReferralLinks: true
                      externalDomains: null
                      allowedIp: null
                      clientId: 1
                      welcomeEmailContent: |
                        "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                      welcomeEmailSubject: ExaVault File Sharing Account
                      customSignature: null
                      accountOnboarding: true
                      created: '2019-05-30T20:48:57Z'
                      modified: '2019-08-27T01:03:41Z'
                    relationships:
                      masterUser:
                        data:
                          type: user
                          id: 1
                  - id: 2
                    type: resource
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
    patch:
      tags:
        - Resources
      summary: Rename a resource.
      operationId: updateResourceById
      description: |
        Update the specified file or folder resource record's "name" parameter. The resource is identified by the numeric resource ID that is passed in as the last segment of the URI.
      parameters:
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: ev-api-key
          in: header
          required: true
          description: API key required to make the API call.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateResourceByIdRequestBody
              type: object
              properties:
                name:
                  type: string
                  description: The new name for the resource (file or folder).
                  example: my-renamed-file.txt
            examples:
              example-1:
                value:
                  name: my-renamed-file.txt
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 200
                data:
                  id: 2554051
                  type: resource
                  attributes:
                    hash: 7a2hhf9f90ce196de3f650c612372c0b
                    name: Test Folder
                    extension: ''
                    type: dir
                    createdBy: exavaultuser
                    uploadDate: '2020-07-28T15:59:23-07:00'
                    createdAt: '2020-07-28T15:59:23-07:00'
                    updatedAt: '2020-07-29T10:27:08-07:00'
                    accessedAt: '2020-07-29T09:53:36-07:00'
                    path: /Test Folder
                    size: 33415
                    fileCount: 2
                    previewable: false
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1499
                    notifications:
                      - data:
                          type: notification
                          id: 1117
                    directFile:
                      data:
                        type: directFile
                        id: 101
                    parentResource:
                      data:
                        type: resource
                        id: 103
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
                included: []
    delete:
      tags:
        - Resources
      summary: Delete a Resource
      operationId: deleteResourceById
      description: |
        Delete a single file or folder resource. Deleting a folder will also delete all of the contents.

        **Notes:**
        - Authenticated user should have [delete permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions).
        - There is no way to un-delete a deleted resource.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 200
                data: []
    parameters:
      - schema:
          type: integer
          format: int64
        name: id
        in: path
        required: true
        description: ID number of the resource
  /resources:
    delete:
      tags:
        - Resources
      summary: Delete Resources
      operationId: deleteResources
      description: |
        Delete multiple file or folder resourcess. Deleting a folder resource will also delete any resources in that folder.

        **Notes:**
        - Authenticated user should have [delete permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions).
        - It is not possible to un-delete a deleted resource.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
      requestBody:
        content:
          application/json:
            schema:
              title: DeleteResourcesRequestBody
              type: object
              properties:
                resources:
                  type: array
                  description: Resource identifiers of items to delete.
                  items:
                    type: string
              required:
                - resources
            examples:
              Example:
                value:
                  resources:
                    - exampleFile1.txt
                    - exampleFile2.txt
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 200
                data: []
        '207':
          description: Multi Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceMultiResponse'
              example:
                responses:
                  - responseStatus: 200
                    data:
                      type: resource
                      id: 2
                      meta:
                        path: /deletefolder
                  - responseStatus: 404
                    errors:
                      - code: null
                        title: null
                        detail: null
                        meta:
                          path: /deletefolder2
    post:
      tags:
        - Resources
      description: |
        Create a new empty folder at the specified path. New files can be uploaded via the [/resources/upload](#operation/uploadFile) endpoint.

        **Notes:**
        - Authenticated user should have modify permission.
      summary: Create a folder
      operationId: addFolder
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: AddFolderRequestBody
              type: object
              properties:
                path:
                  type: string
                  description: Fully-qualified path to the new folder including folder's name
                name:
                  type: string
                  description: Name of the folder to create. Required if **path** is not used
                parentResource:
                  type: string
                  description: Resource identifier where to create a folder. Required if **path** is not used
            examples:
              Example using path:
                value:
                  path: /exavault/exampleFile.txt
              Example without path:
                value:
                  name: exampleFile.txt
                  parentResource: /exavault
        description: ''
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 200
                data:
                  id: 2554051
                  type: resource
                  attributes:
                    hash: 7a2hhf9f90ce196de3f650c612372c0b
                    name: Test Folder
                    extension: ''
                    type: dir
                    createdBy: exavaultuser
                    uploadDate: '2020-07-28T15:59:23-07:00'
                    createdAt: '2020-07-28T15:59:23-07:00'
                    updatedAt: '2020-07-29T10:27:08-07:00'
                    accessedAt: '2020-07-29T09:53:36-07:00'
                    path: /Test Folder
                    size: 33415
                    fileCount: 2
                    previewable: false
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1499
                    notifications:
                      - data:
                          type: notification
                          id: 1117
                    directFile:
                      data:
                        type: directFile
                        id: 101
                    parentResource:
                      data:
                        type: resource
                        id: 103
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
                included: []
    get:
      tags:
        - Resources
      summary: Get Resource Properties
      operationId: getResourceInfo
      description: |
        Returns details for specified file/folder id or hash, including upload date, size and type. For the full list of returned properties, see the response syntax, below.

        **Notes:**
        - Authenticated user should have list permission.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: resource
          in: query
          required: true
          description: Resource identifier of the file or folder to get metadata for.
          schema:
            type: string
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **share**, **notifications**, **directFile**, **parentResource**, **ownerUser**, **ownerUser**.'
          schema:
            type: string
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 200
                data:
                  id: 2554051
                  type: resource
                  attributes:
                    hash: 7a2abd9f90ce196hf3f650c612372c0b
                    name: Test
                    extension: ''
                    type: dir
                    createdBy: exavaultuser
                    uploadDate: '2020-07-28T15:59:23-07:00'
                    createdAt: '2020-07-28T15:59:23-07:00'
                    updatedAt: '2020-07-29T09:52:47-07:00'
                    accessedAt: '2020-07-29T09:53:36-07:00'
                    path: /Test
                    size: 33415
                    fileCount: 2
                    previewable: false
                  relationships:
                    share:
                      data:
                        type: share
                        id: 1499
                    notifications:
                      - data:
                          type: notification
                          id: 1117
                    directFile:
                      data:
                        type: directFile
                        id: 101
                    parentResource:
                      data:
                        type: resource
                        id: 103
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
                included:
                  - id: 1499
                    type: share
                    attributes:
                      name: Test
                      hasPassword: false
                      public: true
                      accessMode:
                        download: true
                        upload: false
                        modify: false
                        delete: false
                      accessDescription: Download only
                      embed: false
                      hash: 17t-eojdhh1j
                      ownerHash: 17t-eojowf1j-sfh242uj
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: shared_folder
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: null
                      assets:
                        - Test
                      paths:
                        - /Test
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: false
                      created: '2020-07-29T08:51:39-07:00'
                      modified: '2020-07-29T09:53:36-07:00'
                  - id: 101
                    type: directFile
                    attributes:
                      accountId: 7
                      path: /Test
                      isEnabled: true
                      isIndexEnabled: true
                      blockUntil: '-001-11-29T16:07:02-07:52'
                      created: '2020-07-29T09:53:12-07:00'
                      modified: '2020-07-29T09:53:12-07:00'
                  - id: 1143
                    type: notification
                    attributes:
                      type: folder
                      path: /Test
                      name: /Test
                      action: upload
                      usernames:
                        - exavaultuser
                      recipients:
                        - id: 81
                          notificationId: 1143
                          email: exavault@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                        - id: 83
                          notificationId: 1143
                          email: exavault+1@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                      recipientEmails:
                        - exavault@example.com
                        - exavault+1@example.com
                      sendEmail: false
                      readableDescription: anybody uploads to '/Test'
                      readableDescriptionWithoutPath: anybody uploads to this folder
                      message: null
                      created: '2020-07-29T20:15:09-07:00'
                      modified: '2020-07-29T20:15:09-07:00'
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      resource:
                        data:
                          type: resource
                          id: 2554051
                  - id: 124419
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T07:51:12-07:00'
                      modified: '2020-07-24T07:51:13-07:00'
                      accessTimestamp: '2020-07-27 19:32:45'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: master
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 7
                    type: account
                    attributes:
                      accountName: exampleaccount
                      maxUsers: 5
                      userCount: 4
                      status: 1
                      branding: true
                      customDomain: false
                      quota:
                        diskLimit: 37580963840
                        diskUsed: 24938382543
                        noticeEnabled: true
                        noticeThreshold: 90
                      secureOnly: false
                      complexPasswords: false
                      showReferralLinks: true
                      externalDomains: null
                      allowedIp: null
                      clientId: 1
                      welcomeEmailContent: |
                        "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                      welcomeEmailSubject: ExaVault File Sharing Account
                      customSignature: null
                      accountOnboarding: true
                      created: '2019-05-30T20:48:57Z'
                      modified: '2019-08-27T01:03:41Z'
                    relationships:
                      masterUser:
                        data:
                          type: user
                          id: 1
                  - id: 2
                    type: resource
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
  '/resources/list/{id}':
    get:
      tags:
        - Resources
      summary: List contents of folder
      operationId: listResourceContents
      description: |
        Returns a list of files/folders for the parent resource ID. 

        You can use this API call to get information about all files and folders at a specified path. By default, the API returns basic metadata on each file/folder. An optional `include` parameter forces the return of additional metadata. As with all API calls, the path should be the full path relative to the user's home directory (e.g. **/myfiles/some_folder**).

        **Notes:**
        - Authenticated user should have list permission.
      parameters:
        - name: ev-api-key
          description: 'API Key required to make the API call. '
          in: header
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: id
          in: path
          required: true
          description: ID of the parent resource to get a list of resources for.
          schema:
            type: integer
            format: int64
        - name: sort
          in: query
          description: 'Endpoint support multiple sort fields by allowing array of sort params. Sort fields should be applied in the order specified. The sort order for each sort field is ascending unless it is prefixed with a minus (“-“), in which case it will be descending.'
          schema:
            type: string
            example: name
        - name: offset
          in: query
          required: false
          description: Determines which item to start on for pagination. Use zero (0) to start at the beginning of the list.
          schema:
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          required: false
          description: 'The number of files to limit the result. Cannot be set higher than 100. If you have more than one hundred files in your directory, make multiple calls, incrementing the `offset parameter, above.'
          schema:
            type: integer
            format: int32
        - name: type
          in: query
          required: false
          description: Limit types of resources returned to "file" or "dir" only.
          schema:
            type: string
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **share**, **notifications**, **directFile**, **parentResource**, **ownerUser**, **ownerUser**.'
          schema:
            type: string
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 50
                returnedResults: 2
                data:
                  - type: resource
                    id: 2
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
                included:
                  - id: 1499
                    type: share
                    attributes:
                      name: Test
                      hasPassword: false
                      public: true
                      accessMode:
                        download: true
                        upload: false
                        delete: false
                        modify: false
                      accessDescription: Download only
                      embed: false
                      hash: 17t-eojdhh1j
                      ownerHash: 17t-eojowf1j-sfh242uj
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: shared_folder
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: null
                      assets:
                        - Test
                      paths:
                        - /Test
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: false
                      created: '2020-07-29T08:51:39-07:00'
                      modified: '2020-07-29T09:53:36-07:00'
                  - id: 101
                    type: directFile
                    attributes:
                      accountId: 7
                      path: /Test
                      isEnabled: true
                      isIndexEnabled: true
                      blockUntil: '-001-11-29T16:07:02-07:52'
                      created: '2020-07-29T09:53:12-07:00'
                      modified: '2020-07-29T09:53:12-07:00'
                  - id: 1143
                    type: notification
                    attributes:
                      type: folder
                      path: /Test
                      name: /Test
                      action: upload
                      usernames:
                        - exavaultuser
                      recipients:
                        - id: 81
                          notificationId: 1143
                          email: exavault@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                        - id: 83
                          notificationId: 1143
                          email: exavault+1@example.com
                          created: '2020-07-29T20:15:09-07:00'
                          modified: '2020-07-29T20:15:09-07:00'
                      recipientEmails:
                        - exavault@example.com
                        - exavault+1@example.com
                      sendEmail: false
                      readableDescription: anybody uploads to '/Test'
                      readableDescriptionWithoutPath: anybody uploads to this folder
                      message: null
                      created: '2020-07-29T20:15:09-07:00'
                      modified: '2020-07-29T20:15:09-07:00'
                    relationships:
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      resource:
                        data:
                          type: resource
                          id: 2554051
                  - id: 124419
                    type: user
                    attributes:
                      status: 1
                      expiration: null
                      created: '2020-07-24T07:51:12-07:00'
                      modified: '2020-07-24T07:51:13-07:00'
                      accessTimestamp: '2020-07-27 19:32:45'
                      accountName: exavault
                      username: exavaultuser
                      nickname: exavaultnickname
                      email: test@example.com
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: master
                      timeZone: America/Los_Angeles
                    relationships:
                      ownerAccount:
                        data:
                          type: account
                          id: 251
                      homeResource:
                        data:
                          type: resource
                          id: 2536831
                  - id: 7
                    type: account
                    attributes:
                      accountName: exampleaccount
                      maxUsers: 5
                      userCount: 4
                      status: 1
                      branding: true
                      customDomain: false
                      quota:
                        diskLimit: 37580963840
                        diskUsed: 24938382543
                        noticeEnabled: true
                        noticeThreshold: 90
                      secureOnly: false
                      complexPasswords: false
                      showReferralLinks: true
                      externalDomains: null
                      allowedIp: null
                      clientId: 1
                      welcomeEmailContent: |
                        "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                      welcomeEmailSubject: ExaVault File Sharing Account
                      customSignature: null
                      accountOnboarding: true
                      created: '2019-05-30T20:48:57Z'
                      modified: '2019-08-27T01:03:41Z'
                    relationships:
                      masterUser:
                        data:
                          type: user
                          id: 1
                  - id: 2
                    type: resource
                    attributes:
                      hash: ec4aa9a91be282666a165899a14f29b1
                      name: examplefolder
                      extension: dir
                      createdBy: exampleuser
                      uploadDate: '2011-03-21T00:18:56-07:00'
                      createdAt: '2011-03-21T00:18:56-07:00'
                      updatedAt: '2011-03-21T00:18:56-07:00'
                      accessedAt: '2011-03-21T00:18:56-07:00'
                      path: /examplefolder
                      size: 12321321
                      fileCount: 3
                      previewable: false
                    relationships:
                      share:
                        data:
                          type: share
                          id: 1499
                      notifications:
                        - data:
                            type: notification
                            id: 1117
                      directFile:
                        data:
                          type: directFile
                          id: 101
                      parentResource:
                        data:
                          type: resource
                          id: 103
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
  /resources/compress:
    post:
      tags:
        - Resources
      description: |
        Create a zip archive containing the files from given set of paths. Note that this can be a very slow operation if you have indicated many files should be included in the archive.

        **Notes:**
        - Authenticated user should have modify permission.
      summary: Compress resources
      operationId: compressFiles
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: CompressFilesRequestBody
              type: object
              properties:
                resources:
                  type: array
                  description: Resource identifiers for file(s)/folder(s) to include in new zip file
                  items:
                    type: string
                parentResource:
                  type: string
                  description: Resource identifier of the folder where zip archive should be created.
                archiveName:
                  type: string
                  description: 'Name of the zip archive to create. If left blank, current date will be used.'
              required:
                - resources
            examples:
              Example:
                value:
                  resources:
                    - exampleFile1.txt
                    - exampleFile2.txt
                    - 'id:234222'
                  parentResource: /exavault
                  archiveName: exampleFiles.zip
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 201
                data:
                  id: 2566609
                  type: resource
                  attributes:
                    hash: b2d987d4ed9dhh28e3a18adafe59107c
                    name: Compress test.zip
                    extension: zip
                    type: file
                    createdBy: exavault
                    uploadDate: '2020-07-29T19:04:09-07:00'
                    createdAt: '2020-07-29T19:04:09-07:00'
                    updatedAt: '2020-07-29T19:04:09-07:00'
                    accessedAt: '2020-07-29T19:04:09-07:00'
                    path: /Test/Compress test.zip
                    size: 33434
                    fileCount: null
                    previewable: false
                  relationships:
                    parentResource:
                      data:
                        type: resource
                        id: 2554051
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
  /resources/extract:
    post:
      tags:
        - Resources
      summary: Extract resources
      operationId: extractFiles
      description: |
        Extract the contents of a zip archive to a specified directory. Note that this can be a very slow operation.

        **Notes:**
        - You must have  [modify permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to do this.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: ExtractFilesRequestBody
              type: object
              properties:
                resource:
                  type: string
                  description: Resource identifier of zip archive to be extracted.
                parentResource:
                  type: string
                  description: Resource identifier for folder files should be extracted to.
              required:
                - resource
                - parentResource
            examples:
              Example:
                value:
                  resource: /exavault/exampleFiles.zip
                  parentResource: /extractFolder
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCollectionResponse'
              example:
                responseStatus: 201
                returnedResults: 1
                totalResults: 1
                data:
                  - id: 2559471
                    type: resource
                    attributes:
                      hash: f836b417707583b017a26d4e5a2e6dd0
                      name: test.jpg
                      extension: jpg
                      type: file
                      createdBy: exavaultuser
                      uploadDate: '2020-07-29T09:52:47-07:00'
                      createdAt: '2020-07-29T09:52:47-07:00'
                      updatedAt: '2020-07-29T19:27:31-07:00'
                      accessedAt: '2020-07-29T12:50:38-07:00'
                      createdTime: 1596041567
                      updatedTime: 1596076051
                      accessedTime: 1596052238
                      path: /exavault/test.jpg
                      size: 33415
                      fileCount: null
                      previewable: false
                    relationships:
                      parentResource:
                        data:
                          type: resource
                          id: 2554051
                      ownerUser:
                        data:
                          type: user
                          id: 124437
                      ownerAccount:
                        data:
                          type: account
                          id: 7
  /resources/copy:
    post:
      tags:
        - Resources
      summary: Copy resources
      operationId: copyResources
      description: |
        Copies a set of exisiting files/folders (provided by an array `resources`) to the requested `parentResource` in your account.
        In the `resources` array, you may specify paths pointing files/folders throughout the account, but everything will be copied to the 
        root of the `parentResource`.

        **Notes:**
        - Authenticated user should have modify permission.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: CopyResourcesRequestBody
              type: object
              properties:
                resources:
                  type: array
                  description: Resource identifier(s) of items to be copied to a new location
                  items:
                    type: string
                parentResource:
                  type: string
                  description: Resource identifier for folder where items will be copied to.
              required:
                - resources
                - parentResource
            examples:
              Example:
                value:
                  resources:
                    - /exavault/exampleFile.txt
                    - /exavault/otherFile.txt
                    - 'id:28282828'
                  parentResource: /exavault/exampleFileFolder
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCopyMove'
              example:
                responseStatus: 200
                data:
                  id: 2563533
                  type: resource
                  attributes:
                    hash: f573b417707095b017a26d4e5a2e6dd0
                    name: test.jpg
                    extension: jpg
                    type: file
                    createdBy: exavault
                    uploadDate: '2020-07-29T12:53:26-07:00'
                    createdAt: '2020-07-29T12:53:26-07:00'
                    updatedAt: '2020-07-29T12:53:26-07:00'
                    accessedAt: '2020-07-29T12:53:26-07:00'
                    path: /HomeTest/test.jpg
                    size: 33415
                    fileCount: null
                    previewable: false
                meta:
                  path: /Test/test.jpg
                  destinationPath: /HomeTest
              examples:
                Example:
                  value:
                    data:
                      id: 1
                      type: resource
                      attributes:
                        hash: ec4aa9a91be282666a165899a14f29b1
                        name: examplefolder
                        extension: string
                        type: file
                        createdBy: exampleuser
                        uploadDate: '2011-03-21T00:18:56-07:00'
                        createdAt: '2011-03-21T00:18:56-07:00'
                        updatedAt: '2011-03-21T00:18:56-07:00'
                        accessedAt: '2011-03-21T00:18:56-07:00'
                        createdTime: 0
                        updatedTime: 0
                        accessedTime: 0
                        path: /examplefolder
                        size: 0
                        fileCount: 0
                        previewable: true
                      relationships:
                        share:
                          data:
                            id: 2345
                            type: share
                        notifications:
                          - data:
                              id: 2
                              type: notification
                        directFile:
                          data:
                            id: 2
                            type: directFile
                        parentResource:
                          data:
                            id: 2
                            type: resource
                    meta:
                      id: 2321
        '207':
          description: Multi Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceMultiResponse'
              example:
                responses:
                  - responseStatus: 200
                    data:
                      id: 2563533
                      type: resource
                      attributes:
                        hash: f573b417707095b017a26d4e5a2e6dd0
                        name: test.jpg
                        extension: jpg
                        type: file
                        createdBy: exavault
                        uploadDate: '2020-07-29T12:53:26-07:00'
                        createdAt: '2020-07-29T12:53:26-07:00'
                        updatedAt: '2020-07-29T12:53:26-07:00'
                        accessedAt: '2020-07-29T12:53:26-07:00'
                        path: /HomeTest/test.jpg
                        size: 33415
                        fileCount: null
                        previewable: false
                    meta:
                      path: /Test/test.jpg
                      destinationPath: /HomeTest
                  - responseStatus: 404
                    errors:
                      - code: null
                        title: null
                        detail: null
                        meta:
                          path: /Test/test2.jpg
                          destinationPath: /HomeTest
  /resources/move:
    post:
      tags:
        - Resources
      summary: Move resources
      operationId: moveResources
      description: |
        Moves a set of exisiting files/folders (provided by an array `resources`) to the requested `parentResource` in your account.
        In the `resources` array, you may specify paths pointing files/folders throughout the account, but everything will be moved to the root of the `parentResource`.

        **Notes:**
        - Authenticated user should have modify permission.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: MoveResourcesRequestBody
              type: object
              properties:
                resources:
                  description: Array containing file/folder paths to move.
                  type: array
                  example:
                    - /testone.jpg
                    - /folder
                  items:
                    type: string
                parentResource:
                  description: Resource identifier of folder to move files/folders to.
                  type: string
                  example: /copyhere
              required:
                - resources
                - parentResource
            examples:
              Example:
                value:
                  resources:
                    - /testone.jpg
                    - /folder
                  parentResource: /copyhere
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCopyMove'
              example:
                responseStatus: 200
                data:
                  id: 2563533
                  type: resource
                  attributes:
                    hash: f573b417707095b017a26d4e5a2e6dd0
                    name: test.jpg
                    extension: jpg
                    type: file
                    createdBy: exavault
                    uploadDate: '2020-07-29T12:53:26-07:00'
                    createdAt: '2020-07-29T12:53:26-07:00'
                    updatedAt: '2020-07-29T12:53:26-07:00'
                    accessedAt: '2020-07-29T12:53:26-07:00'
                    path: /HomeTest/test.jpg
                    size: 33415
                    fileCount: null
                    previewable: false
                meta:
                  path: /Test/test.jpg
                  destinationPath: /HomeTest
              examples:
                Example:
                  value:
                    data:
                      id: 1
                      type: resource
                      attributes:
                        hash: ec4aa9a91be282666a165899a14f29b1
                        name: examplefolder
                        extension: string
                        type: file
                        createdBy: exampleuser
                        uploadDate: '2011-03-21T00:18:56-07:00'
                        createdAt: '2011-03-21T00:18:56-07:00'
                        updatedAt: '2011-03-21T00:18:56-07:00'
                        accessedAt: '2011-03-21T00:18:56-07:00'
                        createdTime: 0
                        updatedTime: 0
                        accessedTime: 0
                        path: /examplefolder
                        size: 0
                        fileCount: 0
                        previewable: true
                      relationships:
                        share:
                          data:
                            id: 2345
                            type: share
                        notifications:
                          - data:
                              id: 2
                              type: notification
                        directFile:
                          data:
                            id: 2
                            type: directFile
                        parentResource:
                          data:
                            id: 2
                            type: resource
                    meta:
                      id: 2321
        '207':
          description: Multi Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceMultiResponse'
              example:
                responses:
                  - responseStatus: 200
                    data:
                      id: 2563533
                      type: resource
                      attributes:
                        hash: f573b417707095b017a26d4e5a2e6dd0
                        name: test.jpg
                        extension: jpg
                        type: file
                        createdBy: exavault
                        uploadDate: '2020-07-29T12:53:26-07:00'
                        createdAt: '2020-07-29T12:53:26-07:00'
                        updatedAt: '2020-07-29T12:53:26-07:00'
                        accessedAt: '2020-07-29T12:53:26-07:00'
                        path: /HomeTest/test.jpg
                        size: 33415
                        fileCount: null
                        previewable: false
                    meta:
                      path: /Test/test.jpg
                      destinationPath: /HomeTest
                  - responseStatus: 404
                    errors:
                      - code: null
                        title: null
                        detail: null
                        meta:
                          path: /Test/test2.jpg
                          destinationPath: /HomeTest
  /resources/preview:
    get:
      tags:
        - Resources
      summary: Preview a file
      operationId: getPreviewImage
      description: |
        Returns a resized image of the specified document for supported file types.

        Image data returned is encoded in base64 format and can be viewed using the `<img>` element. 

        ```<img src='data:image/jpeg;base64' + meta.image/>```

        **Notes:**
        - Supported files types are `'jpg'`, `'jpeg'`, `'gif'`, `'png'`, `'bmp'`, `'pdf'`, `'psd'`, `'doc'`
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
        - name: resource
          in: query
          required: true
          description: Resource identifier for the image file.
          schema:
            type: string
        - name: size
          in: query
          required: true
          description: The size of the image.
          schema:
            type: string
            enum:
              - small
              - medium
              - large
        - name: width
          in: query
          required: false
          description: Overrides sizes. Sets to a specific width.
          schema:
            type: integer
            format: int32
        - name: height
          in: query
          required: false
          description: Overrides sizes. Sets to a specific height.
          schema:
            type: integer
            format: int32
        - name: page
          in: query
          required: false
          description: Page number to extract from a multi-page document (0 is the first page). Vaild for **.pdf** or **.doc** files.
          schema:
            type: integer
            format: int32
            default: 0
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreviewFileResponse'
              example:
                responseStatus: 200
                data:
                  id: 2554101
                  type: resource
                meta:
                  image: exampleimagebinary
                  size: 13941
                  imageHash: 007e01062d91f9787f87c0cf78472d61
  /resources/upload:
    post:
      tags:
        - Resources
      summary: Upload a file
      operationId: uploadFile
      description: |
        Uploads a file to a specified path, with optional support for resuming a partially uploaded existing file.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: offsetBytes
          in: header
          required: false
          description: Allows a file upload to resume at a certain number of bytes.
          schema:
            type: integer
          example: 4852
        - name: path
          in: query
          schema:
            type: string
          required: true
          description: 'Destination path for the file being uploaded, including the file name.'
        - name: fileSize
          in: query
          schema:
            type: integer
          example: 2935
          required: true
          description: 'File size, in bits, of the file being uploaded.'
        - name: resume
          in: query
          schema:
            type: boolean
            default: 'true'
          example: true
          description: |
            True if upload resume is supported, false if it isn't.
        - name: allowOverwrite
          in: query
          schema:
            type: boolean
            default: 'false'
          example: true
          description: 'True if a file with the same name is found in the designated path, should be overwritten. False if different file names should be generated. '
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponse'
              example:
                responseStatus: 201
                data:
                  id: 2559471
                  type: resource
                  attributes:
                    hash: f836b417707583b017a26d4e5a2e6dd0
                    name: test.jpg
                    extension: jpg
                    type: file
                    createdBy: exavaultuser
                    uploadDate: '2020-07-29T09:52:47-07:00'
                    createdAt: '2020-07-29T09:52:47-07:00'
                    updatedAt: '2020-07-29T19:27:31-07:00'
                    accessedAt: '2020-07-29T12:50:38-07:00'
                    createdTime: 1596041567
                    updatedTime: 1596076051
                    accessedTime: 1596052238
                    path: /exavault/test.jpg
                    size: 33415
                    fileCount: null
                    previewable: false
                  relationships:
                    parentResource:
                      data:
                        type: resource
                        id: 2554051
                    ownerUser:
                      data:
                        type: user
                        id: 124437
                    ownerAccount:
                      data:
                        type: account
                        id: 7
                included: []
  /resources/download:
    get:
      tags:
        - Resources
      summary: Download a file
      operationId: download
      description: |-
        Downloads a file from the server. Whenever more than one file is being downloaded, the file are first zipped into  a single file before the download starts, and the resulting zip file is named to match the `downloadArchiveName` parameter.

        **NOTE**: Downloading many files at once  may result in a long delay before the API will return a response. You may need to override default timeout values in your API client, or download files individually.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: 'resources[]'
          in: query
          required: true
          description: 'Path of file or folder to be downloaded, starting from the root. Can also be an array of paths.'
          schema:
            type: array
            items:
              type: string
        - name: downloadArchiveName
          in: query
          required: false
          description: 'When downloading multiple files, this will be used as the name of the zip file that is created.'
          schema:
            type: string
      responses:
        '200':
          description: Content of the file
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            application/zip:
              schema:
                type: string
                format: binary
  /account:
    get:
      tags:
        - Account
      summary: Get account settings
      operationId: getAccount
      description: 'Get settings for your account, such as current space usage, webhooks settings, welcome email content and IP address restrictions.'
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required for the request
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token for the request
          required: true
        - name: include
          in: query
          description: Related records to include in the response. Valid option is **masterUser**
          schema:
            type: string
            example: masterUser
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountResponse'
              example:
                responseStatus: 200
                data:
                  id: 7
                  type: account
                  attributes:
                    accountName: exampleaccount
                    maxUsers: 5
                    userCount: 4
                    status: 1
                    branding: true
                    customDomain: false
                    quota:
                      diskLimit: 107374182400
                      bandwidthLimit: 9223372036854776000
                      bandwidthUsed: 0
                      transactionsLimit: 120000
                      diskUsed: 4770252339
                      noticeEnabled: false
                      noticeThreshold: 90
                      transactionsNoticeEnabled: false
                      transactionsNoticeThreshold: 90
                    secureOnly: false
                    complexPasswords: false
                    showReferralLinks: true
                    externalDomains: null
                    allowedIp: null
                    clientId: 1
                    welcomeEmailContent: |
                      "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                    welcomeEmailSubject: ExaVault File Sharing Account
                    customSignature: null
                    accountOnboarding: true
                    created: '2019-05-30T20:48:57Z'
                    modified: '2019-08-27T01:03:41Z'
                  relationships:
                    masterUser:
                      data:
                        type: user
                        id: 1
                  included:
                    - type: user
                      id: 1
                      attributes:
                        username: examplemasteruser
                        accountName: examplemasteraccount
                        nickname: examplenickname
                        email: user@example.com
                        expiration: null
                        status: 1
                        accountId: 2
                        firstLogin: false
                        onboarding: true
                        homeDir: /
                        role: master
                        timeZone: UTC
                        permissions:
                          download: true
                          upload: true
                          modify: true
                          delete: true
                          list: true
                          changePassword: true
                          share: true
                          notification: true
                          viewFormData: true
                          deleteFormData: true
                        created: '2019-05-29T20:48:57Z'
                        modified: '2019-07-27T01:03:41Z'
                        accessTimestamp: '2019-09-06T11:40:29Z'
                      relationships:
                        ownerAccount:
                          data:
                            type: account
                            id: 124437
                        homeResource:
                          data:
                            type: resource
                            id: 2554051
    patch:
      tags:
        - Account
      summary: Update account settings
      operationId: updateAccount
      description: |-
        Update account settings, such as welcome email content, IP address restrictions, webhooks settings and secure password requirements.

        **Notes**

        - You must have [admin-level access](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to change account settings.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
      requestBody:
        description: Update Account Settings
        content:
          application/json:
            schema:
              title: UpdateAccountRequestBody
              type: object
              properties:
                secureOnly:
                  type: boolean
                  description: Whether unencrypted FTP connections should be denied for the account.
                  example: false
                complexPasswords:
                  type: boolean
                  description: Whether to require complex passwords for all passwords.
                  example: false
                showReferralLinks:
                  type: boolean
                  description: Whether to display links for others to sign up on share views and invitation emails
                  example: false
                externalDomain:
                  type: string
                  description: Custom address used for web file manager. Not available for all account types.
                emailContent:
                  type: string
                  description: Content of welcome email template.
                  example: 'Great news, your new account is ready! For your records, we''ve listed information you''ll use to log in below: FTP Server: [[ftpserver]] Username (Web and FTP access): [[username]] [[setpassword]]'
                emailSubject:
                  type: string
                  example: ExaVault File Sharing Account
                  description: Subject line for welcome emails
                allowedIpRanges:
                  type: array
                  description: IP Address Ranges for restricting account access
                  items:
                    type: object
                    properties:
                      ipStart:
                        type: string
                        format: ipv4
                      ipEnd:
                        type: string
                        format: ipv4
                brandingSettings:
                  title: BrandingSettingsValues
                  type: object
                  properties:
                    companyName:
                      description: Custom company name to include in copyright and title bar.
                      type: string
                    customEmail:
                      description: Address to use as sender of email messages generated by ExaVault
                      type: string
                      format: email
                      example: custom@example.com
                    theme:
                      type: string
                      description: 'Color scheme for web file manager. Valid options are **default**, **light** and **dark**'
                      example: default
                accountOnboarding:
                  type: boolean
                  example: true
                  description: Whether extra help popups can be enabled for users in the web file manager.
                customSignature:
                  type: string
                  description: Signature to be automatically added to the bottom of emails generated by the account.
                quota:
                  title: AccountQuotaValues
                  type: object
                  description: ''
                  properties:
                    noticeEnabled:
                      type: boolean
                      description: Whether the system should email the account owner if the account storage exceeds the noticeThreshold value. Storage notice emails are sent no mo once per day.
                    noticeThreshold:
                      type: integer
                      description: Percent of account storage that would trigger a notice email. Must be a whole number between 70 and 100 (inclusive).
                    transactionsNoticeEnabled:
                      type: boolean
                      description: Whether the system should email the account owner if the daily transaction usage exceeds the transactionsNoticeThreshold value. Transaction notice emails are sent no more than once per day.
                    transactionsNoticeThreshold:
                      type: integer
                      description: Percent of daily transaction usage that would trigger a notice email. Must be a whole number between 70 and 100 (inclusive).
            example:
              secureOnly: true
              complexPasswords: true
              showReferralLinks: false
              externalDomain: 'https://example.com/files'
              emailContent: 'Greetings, ExampleUser!  Your account is ready for you to start transferring files right now. Here''s your link to set up your account [[setpassword]]  Henceforth, you shall be known as [[username]]'
              emailSubject: Welcome to the Example Account
              allowedIpRanges:
                - ipStart: 67.208.64.228
                  ipEnd: 67.208.64.254
              customSignature: Please consider the planet before printing this email
              accountOnboarding: true
              brandingSettings:
                companyName: Example File Transfer
                theme: light
              quota:
                noticeEnabled: true
                noticeThreshold: 90
                transactionsNoticeEnabled: true
                transactionsNoticeThreshold: 80
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountResponse'
              example:
                responseStatus: 200
                data:
                  id: 6
                  type: account
                  attributes:
                    accountName: exampleaccount
                    maxUsers: 5
                    userCount: 4
                    status: 1
                    branding: true
                    customDomain: false
                    quota:
                      diskLimit: 107374182400
                      bandwidthLimit: 9223372036854776000
                      bandwidthUsed: 0
                      transactionsLimit: 120000
                      diskUsed: 4770252339
                      noticeEnabled: true
                      noticeThreshold: 90
                      transactionsNoticeEnabled: true
                      transactionsNoticeThreshold: 80
                    secureOnly: false
                    complexPasswords: false
                    showReferralLinks: true
                    externalDomains: null
                    allowedIp: []
                    brandingSettings:
                      accountName: exampleaccount
                      companyName: Example Company
                      customEmail: custom@example.com
                      verifiedDomain: null
                      verifiedDomainId: null
                      verifiedDomainValid: false
                      logo: examplelogo.png
                      logoExt: png
                      theme: default
                      created: '2021-01-14T11:06:52-08:00'
                      modified: '2021-02-08T10:35:15-08:00'
                    clientId: 1
                    welcomeEmailContent: |
                      "Great news, your new account is ready!\n\nFor your records, we've listed information you'll use to log in below:\n\nFTP Server: [[ftpserver]]\n\nUsername (Web and FTP access): [[username]]\n\n[[setpassword]]"
                    welcomeEmailSubject: ExaVault File Sharing Account
                    customSignature: null
                    accountOnboarding: true
                    created: '2019-05-30T20:48:57Z'
                    modified: '2019-08-27T01:03:41Z'
                  relationships:
                    masterUser:
                      data:
                        type: user
                        id: 1
                included: []
  '/email/welcome/{username}':
    post:
      tags:
        - Email
      summary: Resend welcome email to specific user
      operationId: sendWelcomeEmail
      description: 'Send a welcome email to a user. The contents of the welcome email can be set by [PATCH /accounts](#operation/updateAccount).'
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: username
          required: true
          in: path
          schema:
            type: string
          example: exampleuser
          description: A username to send the welcome email to.
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 201
                data: []
  /email/referral:
    post:
      tags:
        - Email
      summary: Send referral email to a given address
      operationId: sendReferralEmail
      description: 'Invite a friend to sign up for a free trial of ExaVault. Send a [referral](/lp/referafriend/) email to an email address. If the recipient signs up for ExaVault, we''ll apply a credit to your account for the referral. '
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: SendReferralEmailRequestBody
              type: object
              properties:
                emails:
                  type: array
                  items:
                    type: string
                    format: email
                message:
                  type: string
                  example: 'I use ExaVault for secure file sending, and so should you. Follow my link to sign up for a trial.'
              required:
                - emails
                - message
            examples:
              Example:
                value:
                  emails:
                    - user@example.com
                  message: 'I use ExaVault for secure file sending, and so should you. Follow my link to sign up for a trial.'
      responses:
        '201':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              example:
                responseStatus: 201
                data: []
  /shares:
    post:
      tags:
        - Shares
      summary: Creates a share
      operationId: addShare
      description: |-
        Creates a new share object for the given path in your account. We support three types of shares:

          - A **shared folder** allows you to let outside parties access a folder in your account (including any files and nested subfolders) using just a link. Shared folders can be restricted; e.g. with an expiration date, password, download-only, etc. Shared folders are 'live'; if someone makes a change to a file in your shared folder, it will be immediately reflected in your account, and vice-versa.
          - A file **send** lets you send one or more files via an easy download link. File sends are different than shared folders because file sends are 'point in time' -- the recipient will get the files as you sent them. If you later make a change to the source file, it will not be updated for the recipient.
          - A **receive** folder lets you receive files into your account. You can either send users a link, or optionally [embed a customized form](/docs/account/05-file-sharing/05-upload-widget) on your website.
          
        **How to send files from your computer using the API**:

        In order to use the API to send files which are not already stored in your account, you'll need to follow a three-step process:

        1. Use the [POST /shares](#operation/addShare) endpoint to set up your send, including password, recipients, expiration, etc. You must include **upload** among the permissions in the `accessMode` and set the `sendingLocalFiles` parameter to **true**. The response that is returned will include a "meta" attribute, which contains an **accessToken** attribute. This new access token is valid only for the send.
        2. Use the [POST /resources/upload](#operation/uploadFile) endpoint to upload your files to the send you've created. The "/" path represents the root of the share, not your home directory. **You must send the access token that you received from the first step in the `ev-access-token` header**
        3. Use the [POST /shares/complete-send/{id}](#operation/completeDirectSend) endpoint to indicate that you have finished uploading files to your send. This will trigger the system to remove the **upload** permission from the share and send any invitation emails you set up in the first step of the process. **You must send YOUR access token in the `ev-access-token` header, not the temporary access token**

        **Setting the Share Permissions**

        Only 5 different combinations of permissions are valid for the `accessMode` object:

        - **Upload Only**: This allows share visitors to upload to a share but do nothing else to the contained files. To use this mode, set `upload` to **true** and all other permissions to **false**
        - **Download Only**: This allows share visitors to download files from a share but do nothing else to the contained files. To use this mode, set `download` to **true** and all other permissions to **false**
        - **Upload and Download**: This allows share visitors to upload new files to the share or download files within the share, but not make any other changes to the share contents. To use this mode, set `upload` and `download` to **true** and set both `modify` and `delete` to **false**
        - **All but Delete**: This allows share visitors to make any changes to the contents of a share except deleting files. To use this mode, set `upload`, `download`, and `modify` to **true** and set `delete` to **false**
        - **Full Access**: This allows share visitors to make any changes to the contents of a share. To use this mode, set all 4 permissions `upload`, `download`, `modify`, and `delete` to **true**

        Any other combination of permissions provided as the `accessMode` will be rejected as a bad request.

        **Notes:**

        Authenticated user requires [share permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions).
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      requestBody:
        content:
          application/json:
            schema:
              title: AddShareRequestBody
              type: object
              properties:
                type:
                  type: string
                  description: The type of share to create. See above for a description of each.
                  enum:
                    - shared_folder
                    - receive
                    - send
                  example: shared_folder
                name:
                  type: string
                  description: 'A name for the share. This will be visible on the page that recipients visit. '
                  example: Shared Folder
                resources:
                  type: array
                  description: |
                    Array of resources for this share. See details on [how to specify resources](#section/Identifying-Resources) above.

                    **shared_folder** and **receive** shares must have only one `resource`, which is a directory that does not have a current share attached.

                    **send** shares may have multiple `resource` parameters. You can also leave this parameter null if you are planning to upload files to the send. If you are planning to upload files to the send that are not yet in your account, you will also need to call the [POST /shares/complete-send/{id}](#operation/completeDirectSend) endpoint to finish the send operation.
                  example:
                    - /testfolder
                  items:
                    type: string
                accessMode:
                  $ref: '#/components/schemas/AccessMode'
                embed:
                  type: boolean
                  description: Whether this share can be embedded within a web page.
                  example: false
                recipients:
                  type: array
                  description: 'People you want to invite to the share. **Note**: unless you also set the `messageSubject` and `messageBody` for the new share, invitation emails will not be sent to these recipients.'
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: What kind of email should be sent to this recipient. Valid choices are **direct** and **cc**
                      email:
                        type: string
                        format: email
                        description: Email address of person you are inviting to the share
                expiration:
                  type: string
                  format: date-time
                  example: '2017-09-25T14:12:10Z'
                  description: 'Expiration date for the share. If someone attempts to use the share after this date, they will receive an error that the share is not available.'
                hasNotification:
                  type: boolean
                  example: false
                  description: Whether delivery receipts should be sent.
                isPublic:
                  type: boolean
                  example: true
                  description: Whether someone can visit the share without following a personalized recipient link.
                messageBody:
                  type: string
                  example: null
                  description: The message to be included in email invitations for your recipients. Ignored if you have not also provided `recipients` and `messageSubject`
                notificationEmails:
                  type: array
                  description: Emails that will receive delivery receipts for this share. `hasNotification` must be **true** for delivery receipts will be sent.
                  example:
                    - notify@example.com
                    - notify2@example.com
                  items:
                    type: string
                    format: email
                password:
                  type: string
                  description: Set a password for recipients to access the share. All recipients will use the same password.
                  example: null
                requireEmail:
                  type: boolean
                  description: True if recipients must provide their email to view the share.
                  example: false
                messageSubject:
                  type: string
                  example: Invitation to a shared folder
                  description: Subject to use on emails inviting recipients to the share. Ignored if you have not also provided `recipients` and a `messageBody`
                fileDropCreateFolders:
                  type: boolean
                  example: false
                  description: 'Only used for **receive** shares. If true, uploads will be automatically placed into sub-folders of the folder, named after the chosen field on your form. '
                sendingLocalFiles:
                  type: boolean
                  description: 'Use this only for **send** shares. Flag to indicate that you are going to upload additional files from your computer to the share. If this is **true**, you will also need to use the [POST /shares/complete-send/{id}](#operation/completeDirectSend) call to finish setting up your share after the files are uploaded.'
              required:
                - type
                - name
            examples:
              example-1:
                value:
                  type: shared_folder
                  name: Shared Folder
                  resources:
                    - /testfolder
                  accessMode:
                    download: true
                    upload: true
                    modify: true
                    delete: true
                  embed: false
                  recipients:
                    - type: string
                      email: user@example.com
                  expiration: '2017-09-25T14:12:10Z'
                  hasNotification: false
                  isPublic: true
                  messageBody: null
                  notificationEmails:
                    - notify@example.com
                    - notify2@example.com
                  password: null
                  requireEmail: false
                  messageSubject: Invitation to a shared folder
                  fileDropCreateFolders: false
                  sendingLocalFiles: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareResponse'
              example:
                responseStatus: 200
                data:
                  id: 10
                  type: share
                  attributes:
                    name: Example Share
                    hasPassword: false
                    public: true
                    accessMode:
                      upload: true
                      download: false
                      modify: false
                      delete: false
                    accessDescription: Upload only
                    embed: true
                    hash: wgf1-352
                    ownerHash: hd1e-3erufo72-fwggk999
                    expiration: null
                    expired: false
                    resent: null
                    type: shared_folder
                    requireEmail: false
                    fileDropCreateFolders: false
                    paths:
                      - /example share
                    recipients:
                      - id: 11
                        type: direct
                        hash: fsesghan
                        email: recipient@example.com
                        sent: true
                        received: false
                        created: '2017-04-21T10:53:47Z'
                    messages:
                      - id: 23
                        subject: Message subject.
                        body: You have files available for download.
                        created: '2017-04-21T10:53:47Z'
                        modified: '2017-04-21T10:53:47Z'
                    inherited: false
                    status: 1
                    hasNotification: true
                    created: '2017-04-21T10:53:47Z'
                    modified: '2017-04-21T10:53:47Z'
                  relationships:
                    owner:
                      data:
                        type: user
                        id: 12
                    resource:
                      - data: null
                        type: resource
                        id: 13
                    notifications:
                      - data:
                          type: notification
                          id: 14
                      - data:
                          type: notification
                          id: 15
    get:
      tags:
        - Shares
      summary: Get a list of shares
      operationId: listShares
      description: |-
        Get a list of shares that you would have access to view through the web interface. You can limit which results are returned by specifying specific types of shares you wish to view, finding things shared with a specific email address, as well as finding shares for specific folder names.


        **Notes:**

        - Authenticated user requires [share permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions).
        - To get share objects with type send, authenticated user's role must be admin or master.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key required to make the API call.
          schema:
            type: string
          required: true
          example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: offset
          description: Current offset of records (for pagination)
          schema:
            type: integer
          in: query
          example: 100
        - name: limit
          description: Limit of records to be returned (for pagination)
          in: query
          schema:
            type: integer
            default: 100
          example: 10
        - name: scope
          description: 'Set of shares to return. (**all**=all of them, **active**=shares that are currently active, **curentUser**=shares created by you)'
          in: query
          schema:
            type: string
            enum:
              - all
              - active
              - currentUser
          example: active
        - name: sort
          description: What order the list of matches should be in.
          in: query
          schema:
            type: string
            enum:
              - created
              - '-created'
          example: created
        - name: type
          description: Limit the list of matches to only certain types of shares.
          in: query
          schema:
            type: string
            enum:
              - receive
              - shared_folder
              - send
          example: receive
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **owner**, **resources**, **notifications**, **activity**.'
          schema:
            type: string
          example: 'owner,notifications'
        - schema:
            type: string
            example: Customer*
          in: query
          name: name
          description: |-
            When provided, only shares whose names include this value will be in the list. Supports wildcards, such as **send\*** to return everything starting with "send".

            Use this parameter if you are searching for shares or receives for a specific folder name. For example **/Clients/ACME/To Be Processed**.
        - schema:
            type: string
            example: test@example.com
          in: query
          name: recipient
          description: 'Filter the results to include only shares that invited a certain email address. Supports wildcard matching so that **\*@example.com** will give back entries shared with addresses ending in "@example.com". '
        - schema:
            type: string
            example: submitted
          in: query
          name: message
          description: 'When provided, only shares with a message that contains the text will be included in the list of matches. Both the subject and the body of all messages will be checked for matches. This will always be a wildcard match, so that searching for **taxes** will return any shares with a message that contains the word "taxes".'
        - schema:
            type: string
            example: example
          in: query
          name: username
          description: 'When provided, only shares created by the user with that `username` will be included in the list. Does not support wildcard searching.'
        - schema:
            type: string
          in: query
          name: search
          description: 'Searches the share name, username, recipients, share messages fields for the provided value. Supports wildcard searches.'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareCollectionResponse'
              example:
                responseStatus: 200
                totalResults: 98
                returnedResults: 27
                data:
                  - id: 1403
                    type: share
                    attributes:
                      name: Receive test
                      hasPassword: false
                      public: true
                      accessMode:
                        upload: true
                        download: false
                        modify: false
                        delete: false
                      accessDescription: Receive folder
                      embed: true
                      hash: 153-3n9ycimh
                      ownerHash: 153-3n9ycimh-99dm0ome
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: receive
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: 413
                      assets:
                        - Receive test
                      paths:
                        - /YK tests1/Receive test
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: true
                      created: '2020-07-27T23:34:49-07:00'
                      modified: '2020-07-28T09:33:11-07:00'
                    relationships:
                      owner:
                        data:
                          type: user
                          id: 7
                      notifications:
                        - data:
                            type: notification
                            id: 1045
                      resources:
                        - data:
                            type: resource
                            id: 2497089
                      activity:
                        - data:
                            type: shareActivity
                            id: 1719
                  - id: 1399
                    type: share
                    attributes:
                      name: Logos
                      hasPassword: false
                      public: true
                      accessMode:
                        download: true
                        upload: false
                        modify: false
                        delete: false
                      accessDescription: Download only
                      embed: false
                      hash: 14y-69359sgr
                      ownerHash: 14y-69359sgr-7tsf6cxx
                      expiration: null
                      trackingStatus: null
                      expired: false
                      resent: null
                      type: shared_folder
                      requireEmail: false
                      fileDropCreateFolders: false
                      formId: null
                      assets:
                        - Logos
                      paths:
                        - /STest071520/Logos
                      recipients: []
                      messages: []
                      inherited: null
                      status: 1
                      hasNotification: null
                      created: '2020-07-27T20:57:33-07:00'
                      modified: '2020-07-28T09:33:11-07:00'
                    relationships:
                      owner:
                        data:
                          type: user
                          id: 7
                      resources:
                        - data:
                            type: null
                            id: 2547033
                included: []
  '/shares/{id}':
    get:
      tags:
        - Shares
      summary: Get a share
      operationId: getShareById
      description: |-
        Get the details for a specific share entry. You can use the `include` parameter to also get the details of related records, such as the owning user or the resources involved in the share.

        **Notes:**

        - Authenticated user requires [share permission](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions).
        - To get share objects with type send, authenticated user's role must be admin or master.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
        - name: include
          in: query
          description: 'Comma separated list of relationships to include in response. Possible values are **owner**, **resources**, **notifications**, **activity**.'
          schema:
            type: string
          example: 'owner,notifications'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareResponse'
              example:
                responseStatus: 200
                data:
                  id: 10
                  type: share
                  attributes:
                    name: Example Share
                    hasPassword: false
                    public: true
                    accessMode:
                      upload: true
                      download: false
                      modify: false
                      delete: false
                    accessDescription: Upload only
                    embed: true
                    hash: wef1-352
                    ownerHash: hd1e-3eerg72-fsxak999
                    expiration: null
                    expired: false
                    resent: null
                    type: shared_folder
                    requireEmail: false
                    fileDropCreateFolders: false
                    paths:
                      - /example share
                    recipients:
                      - id: 11
                        type: direct
                        hash: fethwxan
                        email: recipient@example.com
                        sent: true
                        received: false
                        created: '2017-04-21T10:53:47Z'
                    messages:
                      - id: 23
                        subject: Message subject.
                        body: You have files available for download.
                        created: '2017-04-21T10:53:47Z'
                        modified: '2017-04-21T10:53:47Z'
                    inherited: false
                    status: 1
                    hasNotification: true
                    created: '2017-04-21T10:53:47Z'
                    modified: '2017-04-21T10:53:47Z'
                  relationships:
                    owner:
                      data:
                        type: user
                        id: 12
                    resources:
                      - data:
                          type: resource
                          id: 13
                    notifications:
                      - data:
                          type: notification
                          id: 14
                      - data:
                          type: notification
                          id: 15
                included:
                  - type: user
                    id: 12
                    attributes:
                      status: 0
                      expiration: '2020-04-21T10:53:47Z'
                      username: exampleuser
                      nickname: examplenickname
                      email: user@example.com
                      homeDir: /
                      onboarding: true
                      firstLogin: false
                      role: master
                      timeZone: UTC
                      permissions:
                        download: true
                        upload: true
                        modify: true
                        delete: true
                        list: true
                        changePassword: true
                        share: true
                        notification: true
                        viewFormData: true
                        deleteFormData: true
                      created: '2019-05-29T20:48:57Z'
                      modified: '2019-07-27T01:03:41Z'
                      accessTimestamp: '2019-09-06T11:40:29Z'
                  - type: resource
                    id: 13
                    attributes:
                      hash: ec4aa9a91er282666a165899a14f29b1
                      name: Shared Folder
                      extension: null
                      type: folder
                      uploadDate: '2019-05-29T20:48:57Z'
                      createdAt: '2019-05-29T20:48:57Z'
                      updatedAt: '2019-05-29T20:48:57Z'
                      accessedAt: '2019-05-29T20:48:57Z'
                      path: /Shared Folder
                      fileCount: 1
                      size: 987
                      previewable: false
                  - type: notification
                    id: 14
                    attributes:
                      type: shared_folder
                      path: /Shared Folder
                      name: Shared Folder
                      action: upload
                      usernames:
                        - notice_user_all
                      recipients:
                        - id: 18
                          email: recipient@example.com
                          notificationId: 14
                          created: '2019-05-29T20:48:57Z'
                          modified: '2019-05-29T20:48:57Z'
                      recipientEmails:
                        - recipient@example.com
                      sendEmail: 1
                      readableDescription: null
                      readableDescriptionWithoutPath: null
                      message: null
                      created: '2019-05-29T20:48:57Z'
                      updated: '2019-05-29T20:48:57Z'
                  - type: notification
                    id: 15
                    attributes:
                      type: shared_folder
                      path: /Shared Folder2
                      name: Shared Folder2
                      action: upload
                      usernames:
                        - notice_user_all
                      recipients:
                        - id: 18
                          email: recipient@example.com
                          notificationId: 14
                          created: '2019-05-29T20:48:57Z'
                          modified: '2019-05-29T20:48:57Z'
                      recipientEmails:
                        - recipient@example.com
                      sendEmail: 1
                      readableDescription: null
                      readableDescriptionWithoutPath: null
                      message: null
                      created: '2019-05-29T20:48:57Z'
                      updated: '2019-05-29T20:48:57Z'
    patch:
      tags:
        - Shares
      summary: Update a share
      operationId: updateShareById
      description: |-
        Change the settings on an active share. Any changes made will affect all users that have access to the share. 

        When updating invitees, pass the `recipients` body paramater with the full list of people who should be included on the share. If you resend the list without an existing recipient, they will be removed from the share.

        **Setting the Share Permissions**

        Only 5 different combinations of permissions are valid for the `accessMode` object:

        - **Upload Only**: This allows share visitors to upload to a share but do nothing else to the contained files. To use this mode, set `upload` to **true** and all other permissions to **false**
        - **Download Only**: This allows share visitors to download files from a share but do nothing else to the contained files. To use this mode, set `download` to **true** and all other permissions to **false**
        - **Upload and Download**: This allows share visitors to upload new files to the share or download files within the share, but not make any other changes to the share contents. To use this mode, set `upload` and `download` to **true** and set both `modify` and `delete` to **false**
        - **All but Delete**: This allows share visitors to make any changes to the contents of a share except deleting files. To use this mode, set `upload`, `download`, and `modify` to **true** and set `delete` to **false**
        - **Full Access**: This allows share visitors to make any changes to the contents of a share. To use this mode, set all 4 permissions `upload`, `download`, `modify`, and `delete` to **true**

        Any other combination of permissions provided as the `accessMode` will be rejected as a bad request.

        **Notes:**

          - Authenticated user should be the owner of the specified share.
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              title: UpdateShareRequestBody
              type: object
              properties:
                name:
                  type: string
                  description: Name of the share.
                  example: Shared Folder
                resources:
                  type: array
                  description: |-
                    Array of resources for this share. See details on [how to specify resources](#section/Identifying-Resources) above.

                    **shared_folder** and **receive** shares must have only one `resource`, which is a directory that does not have a current share attached.

                    **send** shares may have multiple `resource` parameters. 

                    **NOTE**: Sending this parameter will **REPLACE** the existing resources with the resources included in this request.
                  example:
                    - /testfolder
                  items:
                    type: string
                accessMode:
                  $ref: '#/components/schemas/AccessMode'
                embed:
                  type: boolean
                  description: Whether the share can be embedded in another web page.
                  example: false
                recipients:
                  type: array
                  description: |-
                    People you want to invite to the share. 

                    **Note**: unless you also set the `subject` and `message` for the new share, invitation emails will not be sent to these recipients.

                    **Note**: Recipients in this list will **REPLACE** the recipients already assigned to this share. 
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: What kind of email should be sent to this recipient. Valid choices are **direct** and **cc**
                      email:
                        type: string
                        format: email
                        description: Email address of person you are inviting to the share
                expiration:
                  type: string
                  format: date-time
                  example: '2017-09-25T14:12:10Z'
                  description: New expiration date and time for the share
                hasNotification:
                  type: boolean
                  example: false
                  description: Whether delivery receipts should be sent for this share.
                isPublic:
                  type: boolean
                  example: true
                  description: Whether people can visit the share without following a link from an invitation email
                messageBody:
                  type: string
                  example: null
                  description: Message content to use for emails inviting recipients to the share. Ignored if you have not also provided `recipients` and a `subject`
                notificationEmails:
                  type: array
                  description: 'List of email addresses to send delivery receipts to. Ignored if `hasNotification` is false. '
                  example:
                    - notify@example.com
                    - notify2@example.com
                  items:
                    type: string
                    format: email
                password:
                  type: string
                  description: 'New password for the share. To leave the password unchanged, do not send this parameter.'
                  example: null
                requireEmail:
                  type: boolean
                  description: Whether visitors to the share will be required to enter their email in order to access the share.
                  example: false
                messageSubject:
                  type: string
                  example: Invitation to a shared folder
                  description: Subject to use on emails inviting recipients to the share. Ignored if you have not also provided `recipients` and a `message`
                fileDropCreateFolders:
                  type: boolean
                  example: false
                  description: 'Whether uploads to a receive folder should be automatically placed into subfolders. See our [receive folder documentation](/docs/account/05-file-sharing/05-form-builder#advanced-form-settings)'
                status:
                  type: integer
                  description: New status for the share. You can set an active share to inactive by setting the status to **0**
            examples:
              example-1:
                value:
                  name: Shared Folder
                  resources:
                    - /testfolder
                  accessMode:
                    download: true
                    upload: true
                    modify: true
                    delete: true
                  embed: false
                  recipients:
                    - type: string
                      email: user@example.com
                  expiration: '2017-09-25T14:12:10Z'
                  hasNotification: false
                  isPublic: true
                  messageBody: null
                  notificationEmails:
                    - notify@example.com
                    - notify2@example.com
                  password: null
                  requireEmail: false
                  messageSubject: Invitation to a shared folder
                  fileDropCreateFolders: false
                  status: 0
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareResponse'
              example:
                responseStatus: 200
                data:
                  id: 10
                  type: share
                  attributes:
                    name: Example Share
                    hasPassword: false
                    public: true
                    accessMode:
                      upload: true
                      download: false
                      modify: false
                      delete: false
                    accessDescription: Upload only
                    embed: true
                    hash: wgf1-352
                    ownerHash: hd1e-3erufo72-fwggk999
                    expiration: null
                    expired: false
                    resent: null
                    type: shared_folder
                    requireEmail: false
                    fileDropCreateFolders: false
                    paths:
                      - /example share
                    recipients:
                      - id: 11
                        type: direct
                        hash: fsesghan
                        email: recipient@example.com
                        sent: true
                        received: false
                        created: '2017-04-21T10:53:47Z'
                    messages:
                      - id: 23
                        subject: Message subject.
                        body: You have files available for download.
                        created: '2017-04-21T10:53:47Z'
                        modified: '2017-04-21T10:53:47Z'
                    inherited: false
                    status: 1
                    hasNotification: true
                    created: '2017-04-21T10:53:47Z'
                    modified: '2017-04-21T10:53:47Z'
                  relationships:
                    owner:
                      data:
                        type: user
                        id: 12
                    resources:
                      - data:
                          type: resource
                          id: 13
                    notifications:
                      - data:
                          type: notification
                          id: 14
                      - data:
                          type: notification
                          id: 15
    delete:
      tags:
        - Shares
      summary: Deactivate a share
      operationId: deleteShareById
      description: |-
        Deactivate a share. Deactivating a share does not remove the underlying files for **shared_folder** and **receive** share types; it merely removes the access URL. Deleting a **send** share type does remove the associated files, as files that have been sent are only associated with the share, and aren't stored anywhere else in the account.

        **Notes:**

        - You must have [sharing permissons](/docs/account/04-users/00-introduction#managing-user-roles-and-permissions) to use this.
        - You must have [admin-level access](/docs/account/04-users/01-admin-users), or you must be the owner of the specified share you wish to delete.
      parameters:
        - schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
    parameters:
      - schema:
          type: integer
          format: int32
          example: 23241
        name: id
        in: path
        required: true
        description: ID of the share entry
  '/shares/complete-send/{id}':
    post:
      tags:
        - Shares
      summary: Complete send files
      operationId: completeDirectSend
      description: |
        After uploading the file(s) to be sent, this method will trigger invitation emails and finish the send files setup. If you are not sending files from your own computer in a send, you will not need this step.
          
        **How to send files from your computer using the API**:

        In order to use the API to send files which are not already stored in your account, you'll need to follow a three-step process:

        1. Use the [POST /shares](#operation/addShare) endpoint to set up your send, including password, recipients, expiration, etc. You must include **upload** among the permissions in the `accessMode` and set the `sendingLocalFiles` paramter to **true**. The response that is returned will include a "meta" attribute, which contains an **accessToken** attribute. This new access token is valid only for the send.
        2. Use the [POST /resources/upload](#operation/uploadFile) endpoint to upload your files to the send you've created. The "/" path represents the root of the share, not your home directory. **You must send the access token that you received from the first step in the `ev-access-token` header**
        3. Use the [POST /shares/complete-send/{id}](#operation/completeDirectSend) endpoint to indicate that you have finished uploading files to your send. This will trigger the system to remove the **upload** permission from the share and send any invitation emails you set up in the first step of the process. **You must send YOUR access token in the `ev-access-token` header, not the temporary access token**
      parameters:
        - name: ev-api-key
          in: header
          description: API Key
          schema:
            type: string
            example: exampleaccount-zwSuWUZ8S38h33qPS8v0s
          required: true
        - name: ev-access-token
          in: header
          schema:
            type: string
            example: 19853ef63a0bc348024a9e4cfd4a92520d2dfd04e88d8679fb1ed6bc551593d1
          description: Access Token
          required: true
        - name: id
          in: path
          required: true
          description: ID of the share to trigger invitations for.
          schema:
            type: integer
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareResponse'
  '/recipients/shares/invites/{shareId}':
    post:
      tags:
        - Recipients
      summary: Resend invitations to share recipients
      operationId: resendInvitationsForShare
      description: |-
        Resend invitations to one or all recipients attached to specified share. The most recent message that was sent for the share will be re-used for this email.

        You can use [GET /shares/{id}](#operation/getShareById) to view the recipient list and message history for a share. Use [PATCH /shares/{id}](#operation/updateShareById) to add or remove recipients.
      parameters:
        - schema:
            type: string
          in: header
          name: ev-api-key
          description: API Key required to make the API call.
          required: true
        - name: ev-access-token
          in: header
          required: true
          description: Access token required to make the API call.
          schema:
            type: string
          example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
        - name: shareId
          in: path
          required: true
          description: ID of the share to resend invites for.
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: ResendInvitationsRequestBody
              type: object
              properties:
                recipientId:
                  type: integer
                  description: ID number of recipient to send a new invitation to.
                  format: int32
            examples:
              example-1:
                value:
                  recipientId: 0
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareRecipientsResponse'
              example:
                responseStatus: 201
                data:
                  - test+3@example.com
                  - test+4@example.com
                  - test+5@example.com
  /ssh-keys:
    get:
      summary: Get metadata for a list of SSH Keys
      operationId: getSSHKeysList
      tags:
        - SSH Keys
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyCollectionResponse'
      description: Returns a list of SSH Keys within the account. Can be filtered for a single user.
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
        - schema:
            type: string
          in: query
          name: userId
          description: ' Only return results for the given user ID. This is not the username, but the numeric ID of the user.'
        - schema:
            type: integer
          in: query
          name: limit
          description: ' Limits the results by the given number. Cannot be set higher than 100.'
        - schema:
            type: integer
          in: query
          name: offset
          description: ' Determines which item to start on for pagination. Use zero (0) to start at the beginning of the list.'
    post:
      summary: Create a new SSH Key
      operationId: addSSHKey
      tags:
        - SSH Keys
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
      description: |-
        Create a new SSH Key for a user. Provide the Public Key as formatted from the ssh-keygen command (openssh format or RFC-4716 format).

        If you'd prefer to let us generate your key automatically, you can log in to your account via the web portal and set up new keys via the SSH Keys page. 
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
      requestBody:
        content:
          application/json:
            schema:
              title: AddSSHKeyRequestBody
              type: object
              properties:
                userId:
                  type: integer
                  description: 'ID of the user to assign the new key to. '
                publicKey:
                  type: string
                  description: 'Public Key to provide ExaVault. You can provide the Public Key as formatted from the ssh-keygen command or a standard rfc-4716 format. '
              required:
                - userId
                - publicKey
  '/ssh-keys/{id}':
    parameters:
      - schema:
          type: string
        name: id
        in: path
        required: true
    get:
      summary: Get metadata for an SSH Key
      operationId: getSSHKey
      tags:
        - SSH Keys
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
      description: Return the information for a single SSH Key
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
    delete:
      tags:
        - SSH Keys
      summary: Delete an SSH Key
      operationId: deleteSSHKey
      responses:
        '200':
          description: Successful Operation
      description: Delete the specified SSH key. This will not delete or deactivate the user tied to the key.
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
  /webhooks:
    get:
      summary: Get Webhooks List
      tags:
        - Webhooks
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCollectionResponse'
      operationId: getWehooksList
      description: 'Returns a list of Webhooks. By default, this will return metadata on all Webhooks within the account. '
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
        - schema:
            type: string
          in: query
          name: include
          description: List of related record types to include. Valid options are `owningAccount` and `resource`
        - name: offset
          in: query
          schema:
            type: integer
            minimum: 0
          example: 100
          description: Records to skip before returning results.
        - name: limit
          in: query
          schema:
            type: integer
            example: 100
          example: 10
          description: Limit of the records list
    post:
      summary: Add A New Webhook
      tags:
        - Webhooks
      operationId: addWebhook
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
              examples:
                New webhook:
                  value:
                    responseStatus: 201
                    data:
                      id: 0
                      type: webhook
                      attributes:
                        endpointUrl: 'https://example.com/webhook'
                        failed: true
                        verificationToken: 8df8200f7dee90ba4a41abe39c858c6c
                        responseVersion: v2
                        triggers:
                          resources:
                            upload: true
                            download: true
                            delete: true
                            rename: true
                            copy: true
                            move: true
                            compress: true
                            extract: true
                            createFolder: true
                          shares:
                            formSubmit: true
                        created: '2021-03-04T22:22:00-08:00'
                        modified: '2021-03-04T22:23:03-08:00'
                      relationships:
                        ownerAccount:
                          data:
                            type: account
                            id: 5
                        resource:
                          data:
                            type: resource
                            id: 234232
                    included: []
      description: 'Create a new Webhook on your account. Creating a Webhook will require an endpoint URL, a path, what events should trigger a webhook, and what request version to use. '
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: AddWebhookRequestBody
              properties:
                endpointUrl:
                  type: string
                  format: uri
                  example: 'https://example.com/webhook'
                  description: The endpoint is where the webhook request will be sent.
                triggers:
                  $ref: '#/components/schemas/WebhookTriggers'
                resource:
                  type: string
                  description: Resource identifier for the top folder this webhook is associated with
                  example: /uploads-folder
                responseVersion:
                  type: string
                  description: What version of webhook request should be sent to the endpoint URL when messages are sent
                  enum:
                    - v1
                    - v2
                  example: v2
              required:
                - endpointUrl
            examples: {}
  '/webhooks/{id}':
    parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: Webhook endpoint ID
    get:
      summary: Get info for a webhook
      tags:
        - Webhooks
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
      operationId: getWebhookById
      description: Returns the metadata for a specific webhook. Webhook IDs can be retrieve from GET /webhooks
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
        - schema:
            type: string
          in: query
          name: include
          description: ' Include metadata for related items; `ownerAccount` and/or `resource` '
    patch:
      summary: Update a webhook
      tags:
        - Webhooks
      operationId: updateWebhook
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
              examples:
                Updated webhook:
                  value:
                    responseStatus: 200
                    data:
                      id: 0
                      type: webhook
                      attributes:
                        endpointUrl: 'https://example.com/new-endpoint'
                        failed: true
                        verificationToken: 8df822322dee90ba4a41abe39c858c11
                        responseVersion: v1
                        triggers:
                          resources:
                            upload: true
                            download: true
                            delete: true
                            rename: true
                            copy: true
                            move: true
                            compress: true
                            extract: true
                            createFolder: true
                          shares:
                            formSubmit: true
                        created: '2021-03-04T22:22:00-08:00'
                        modified: '2021-03-04T22:23:03-08:00'
                      relationships:
                        ownerAccount:
                          data:
                            type: account
                            id: 23422
                        resource:
                          data:
                            type: resource
                            id: 433
                    included: []
      description: |-
        Update the specified webhook. Updated webhooks will take effect immediately and could impact active workflows. Please be certain the webhook is not currently in use prior to updating. 

        You only need to send the portions of the webhook configuration you wish to change, rather than the entire webhook object.
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: ''
              title: UpdateWebhookRequestBody
              properties:
                endpointUrl:
                  type: string
                  format: uri
                  example: 'https://example.com/new-endpoint'
                  description: New endpoint URL to use for the webhook configuration
                triggers:
                  $ref: '#/components/schemas/WebhookTriggers'
                resource:
                  type: string
                  example: /newfolder
                  description: Resource identifier of the top folder watched by this webhook.
                responseVersion:
                  type: string
                  enum:
                    - v2
                    - v1
                  example: v1
                  description: Version of the webhooks message to send to the endpoint
    delete:
      summary: Delete a webhook
      tags:
        - Webhooks
      operationId: deleteWebhook
      responses:
        '200':
          description: Sucessful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
              examples:
                Delete operation OK:
                  value:
                    responseStatus: 200
                    data: []
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
      description: 'Deleted the specified webhook. This will not affect logs or any resources the webhook is connected to. '
  '/webhooks/resend/{activityId}':
    parameters:
      - schema:
          type: string
        name: activityId
        in: path
        required: true
        description: Webhooks activity entry ID
    post:
      summary: Resend a webhook message
      tags:
        - Webhooks
      operationId: resendWebhookActivityEntry
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyResponse'
      description: This endpoint will allow you to resend a webhook that was previously sent. Resent webhooks will send exactly the same as the original webhook with the exception of the “sent” timestamp. Activity IDs can be retrieve from the webhook logs in your account or via GET /activity/webhooks
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
  '/webhooks/regenerate-token/{id}':
    parameters:
      - schema:
          type: string
        name: id
        in: path
        required: true
        description: Webhook ID
    post:
      summary: Regenerate security token
      tags:
        - Webhooks
      operationId: regenerateWebhookToken
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
              examples:
                Success:
                  value:
                    responseStatus: 200
                    data:
                      id: 0
                      type: webhook
                      attributes:
                        endpointUrl: 'https://example.com/webhook'
                        failed: true
                        verificationToken: 771820badeefa22a4a41abe39c858c6c
                        responseVersion: v2
                        triggers:
                          resources:
                            upload: true
                            download: true
                            delete: true
                            rename: true
                            copy: true
                            move: true
                            compress: true
                            extract: true
                            createFolder: true
                          shares:
                            formSubmit: true
                        created: '2021-03-04T22:22:00-08:00'
                        modified: '2021-03-04T22:23:03-08:00'
                      relationships:
                        ownerAccount:
                          data:
                            type: account
                            id: 23422
                        resource:
                          data:
                            type: resource
                            id: 134122
                    included: []
      description: 'This endpoint will allow you to regenerate the security token for a webhook if you believe it’s been compromised in any way. '
      parameters:
        - $ref: '#/components/parameters/apiKeyParam'
        - $ref: '#/components/parameters/accessTokenParam'
components:
  schemas:
    ShareRecipient:
      title: ShareRecipient
      type: object
      properties:
        id:
          description: ID of the recipient.
          type: integer
          format: int32
          example: 2
        shareId:
          description: ID of the share that the recipoient belongs to.
          type: string
          example: 23
        type:
          enum:
            - owner
            - direct
          description: Type of the recipient.
          type: string
          example: owner
        hash:
          description: Share hash.
          type: string
          example: fseowxan
        email:
          description: Recipient email address.
          type: string
          example: recipient@example.com
        sent:
          enum:
            - true
            - false
          description: Set to true if invite email was sent; false otherwise.
          type: boolean
          example: true
        received:
          enum:
            - true
            - false
          description: Set to true if recipient has accessed the share. Note this is set to true when the recipient clicks the link to access the share; not when they download a file.
          type: boolean
          example: false
        created:
          description: Timestamp of adding recipient to the share.
          type: string
          format: date-time
          example: '2017-01-26T18:10:47Z'
    ShareRecipientsResponse:
      title: ShareRecipientsResponse
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        data:
          type: array
          items:
            type: string
            format: email
          example:
            - test+3@example.com
            - test+4@example.com
    Error:
      title: Error
      type: object
      properties:
        code:
          description: Specific internal error string.
          type: string
          example: <_ERROR_CODE>
        title:
          description: Human readable summary of the problem.
          type: string
          example: <_TITLE>
        detail:
          description: human-readable explanation specific to this occurrence of the problem.
          type: string
          example: <_DETAIL>
        meta:
          type: object
          description: Meta object containing non-standard meta-information about the error.
          example: <_META_OBJECT>
    NotificationRecipient:
      title: NotificationRecipient
      type: object
      properties:
        id:
          description: ID of the recipient.
          type: integer
          format: int32
          example: 2
        notificationId:
          description: ID of the notification that the recipient belongs to.
          type: integer
          example: 23
        email:
          description: Recipient email.
          type: string
          example: exampleuser@example.com
        created:
          description: Timestamp of adding notification recipient.
          type: string
          format: date-time
          example: '2011-03-21T00:18:56Z'
        modified:
          description: Timestamp of notification recipient modification.
          type: string
          format: date-time
          example: '2011-03-21T00:18:56Z'
    NotificationResponse:
      title: NotificationResponse
      description: Response object for notifications.
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        data:
          $ref: '#/components/schemas/Notification'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Share'
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    NotificationCollectionResponse:
      title: NotificationCollectionResponse
      description: Response object for notifications collection.
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        totalResults:
          type: integer
          example: 2
          description: 'Total results found. '
        returnedResults:
          type: integer
          example: 2
          description: Number of returned results.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Notification'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Share'
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    NotificationAttributes:
      title: NotificationAttributes
      description: 'Attributes for the notification including the path, recipients, and share data. '
      type: object
      properties:
        userId:
          description: ID of the user that the notification belongs to.
          type: string
          example: 2
        type:
          enum:
            - file
            - folder
            - shared_folder
            - send_receipt
            - share_receipt
            - file_drop
          description: 'Type of the resource the notification is attached to. '
          type: string
          example: folder
        path:
          description: Path to the item that the notification is set on.
          type: string
          example: /examplefolder
        name:
          description: Name of the item that the notification is set on.
          type: string
          example: examplefolder
        action:
          enum:
            - upload
            - download
            - delete
            - all
          description: Action that triggers notification.
          type: string
          example: all
        usernames:
          description: Detail on which users can trigger the notification.
          type: array
          example:
            - notice_user_all
          items:
            type: string
        recipients:
          description: Notification recipients.
          type: array
          items:
            $ref: '#/components/schemas/NotificationRecipient'
        sendEmail:
          type: boolean
          enum:
            - true
            - false
          description: Whether or not an email will send when the notification is triggered.
          example: true
        readableDescription:
          description: Human readable description of the notification.
          type: string
          example: 'anybody changes, downloads or deletes ''/examplefile.jpg'''
        readableDescriptionWithoutPath:
          description: Human readable description of the notification without item path.
          type: string
          example: anybody changes or downloads this file
        shareId:
          description: ID of the share that the notification belogns to.
          type: string
          example: null
        message:
          description: Custom message that will be sent to the notification recipients.
          type: string
          example: null
        created:
          description: Timestamp of notifiction creation.
          type: string
          format: date-time
          example: '2011-03-21T00:18:56Z'
        modified:
          description: Timestamp of notification modification.
          type: string
          format: date-time
          example: '2011-03-21T00:18:56Z'
    Notification:
      title: Notification
      description: Object containing notification properties.
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        type:
          type: string
          example: notification
        attributes:
          $ref: '#/components/schemas/NotificationAttributes'
        relationships:
          type: object
          properties:
            resource:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      example: resource
                    id:
                      type: integer
                      format: int64
                      example: 2345
            share:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      example: share
                    id:
                      type: integer
                      format: int32
                      example: 2
            ownerUser:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      description: null
                      enum:
                        - user
                      example: user
                    id:
                      type: integer
                      description: null
                      example: 12345
    UserCollectionResponse:
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        totalResults:
          type: integer
          example: 2
          description: Total results found.
        returnedResults:
          type: integer
          example: 2
          description: Number of results returned.
        data:
          type: array
          items:
            $ref: '#/components/schemas/User'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    UserResponse:
      title: UserResponse
      description: Response object for users.
      type: object
      properties:
        responseStatus:
          type: integer
          description: Http code for the response.
          example: 200
        data:
          $ref: '#/components/schemas/User'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    UserAttributes:
      title: UserAttributes
      type: object
      description: 'Attributes of the user including expiration, home directory, and permissions. '
      required:
        - status
        - created
        - modified
        - accountName
        - username
        - nickname
        - homeResource
        - permissions
        - role
        - timeZone
        - onboarding
      properties:
        status:
          enum:
            - 0
            - 1
          description: Indicates user activity status. `0` means the user is locked and cannot log in. `1` means the user is active and can log in.
          type: integer
          format: int32
          example: 1
        locked:
          description: '`true` if the user is locked and cannot log in.'
          type: boolean
          example: false
        expiration:
          type: string
          description: Timestamp of user expiration.
          example: '2020-06-30T13:33:30-07:00'
        created:
          type: string
          description: Timestamp of user creation.
          format: date-time
          example: '2018-07-27T15:43:55-07:00'
        modified:
          type: string
          description: Timestamp of user modification.
          format: date-time
          example: '2018-07-29T15:43:55-07:00'
        accessTimestamp:
          type: string
          description: Timestamp of most recent successful user login.
          example: '2011-03-21T00:18:56-07:00'
        accountName:
          type: string
          description: Name of the account this user belongs to.
          example: exampleaccount
        username:
          description: Username of the user.
          type: string
          example: exampleuser
        nickname:
          description: Nickname of the user.
          type: string
          example: exampleuser
        email:
          description: Email address of the user.
          type: string
          example: example@exavault.mail
        homePath:
          description: Path to the user's home folder.
          type: string
          example: /
        permissions:
          $ref: '#/components/schemas/UserPermissions'
        role:
          description: User's access level
          type: string
          example: user
          enum:
            - user
            - admin
            - master
        timeZone:
          description: 'User''s timezone. See <a href=''https://php.net/manual/en/timezones.php'' target=''blank''>this page</a> for allowed values.'
          type: string
          example: America/Chicago
        onboarding:
          description: Whether the onboarding help system is enabled for this user. `true` means that additional help popups are displayed in the web application for this user.
          type: boolean
          example: false
        firstLogin:
          description: '`true` if the user has logged into the system.'
          type: boolean
          example: false
    User:
      title: User
      description: Object contains user properties.
      type: object
      properties:
        id:
          description: ID of the user.
          type: integer
          format: int32
          example: 655621
        type:
          type: string
          example: user
          description: Type of object being returned. Always "user"
        attributes:
          $ref: '#/components/schemas/UserAttributes'
        relationships:
          type: object
          description: 'Home resource and owner account relationship data for the user. '
          properties:
            homeResource:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      description: Type is resource.
                      example: resource
                      enum:
                        - resource
                    id:
                      type: integer
                      description: ID of home directory resource.
                      format: int64
            ownerAccount:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - account
                      example: account
                      description: Type is account.
                    id:
                      type: integer
                      format: int32
                      description: ID of the account.
          required:
            - ownerAccount
    ResourceDelete:
      title: ResourceDelete
      description: All properties of the resource delete object
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 1
        type:
          type: string
          example: resource
          description: Type of item. "resource"
          enum:
            - resource
        meta:
          type: object
          description: Meta object containing non-standard meta-information about the delete operation.
          example:
            id: 2321
    ResourceCopyMove:
      title: ResourceCopyMove
      description: Resource which was successfully copied or moved.
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Resource'
        meta:
          type: object
          description: Meta object containing non-standard meta-information about the operation.
          example:
            id: 2321
    ResourceMultiResponse:
      title: ResourceDeleteMultiResponse
      type: object
      properties:
        responses:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/ResourceDelete'
              - $ref: '#/components/schemas/Error'
            discriminator:
              propertyName: responseStatus
    ResourceCollectionResponse:
      title: ResourceCollectionResponse
      description: Response object for collection of resources.
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        totalResults:
          type: integer
          example: 2
          description: Total count of results found.
        returnedResults:
          type: integer
          example: 2
          description: Count of returned results.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Resource'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
              - $ref: '#/components/schemas/Notification'
              - $ref: '#/components/schemas/Share'
            discriminator:
              propertyName: type
    EmptyResponse:
      type: object
      title: EmptyResponse
      properties:
        responseStatus:
          type: integer
          description: 'Http status code of the response. '
          example: 200
        data:
          type: array
          items:
            type: string
          example: []
    ResourceResponse:
      title: ResourceResponse
      description: Response object for resources.
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        data:
          $ref: '#/components/schemas/Resource'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
              - $ref: '#/components/schemas/Notification'
              - $ref: '#/components/schemas/Share'
            discriminator:
              propertyName: type
    PreviewFileResponse:
      title: PreivewFileResponse
      description: Response object for preview file
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: HTTP Status Code
        data:
          $ref: '#/components/schemas/PreviewFile'
    PreviewFile:
      title: PreviewFile
      description: Object with preview image properties.
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 1
        type:
          type: string
          example: preview
        attributes:
          type: object
          properties:
            image:
              description: 'Binary image content, base64 encoded.'
              type: string
              example: iVBORw0KGgoAAAANSUhEUgAAACIAAAAoCAYAAACb3CikAAAABGdBTUEAALGPC
            size:
              description: Size of the image in bytes.
              type: integer
              format: int64
              example: 2186
            imageHash:
              description: hash of the image.
              type: string
              example: 6afaa3ef4056dc602ccfc69ab52d6f40
            pageCount:
              description: Amount of pages available in the file. Used only for multipage documents.
              type: integer
              format: int32
              example: 10
    BrandingSettings:
      title: BrandingSettings
      type: object
      properties:
        companyName:
          description: null
          type: string
          example: null
        customEmail:
          description: null
          type: string
          format: email
          example: custom@example.com
        logo:
          description: null
          type: string
          example: examplelogo.png
        logoExt:
          type: string
          description: null
          example: png
        theme:
          type: string
          description: null
          example: default
        verifiedDomain:
          type: string
        verifiedDomainId:
          type: string
        verifiedDomainValid:
          type: boolean
    Quota:
      title: Quota
      type: object
      properties:
        diskLimit:
          description: Amount of disk space that the account has available to it. This may be increased by upgrading to a larger plan.
          type: integer
          format: int64
          example: 375809638400
        diskUsed:
          description: Amount of disk space currently in use.
          type: integer
          format: int64
          example: 1225352192
        noticeEnabled:
          description: Should a quota warning be sent to the account owner when a threshold level of space utilization is reached?
          type: boolean
          example: true
        noticeThreshold:
          description: Treshold that triggers a quota notification. This represents the "percent full" your account must be before the quota notification is generated.
          type: integer
          format: int32
          example: 80
        bandwidthLimit:
          type: integer
          format: int64
          description: Total number of bytes that can be transferred per month.
        bandwidthUsed:
          type: integer
          format: int64
          description: Number of bytes transferred this month.
        transactionsLimit:
          type: integer
          format: int32
          description: Total number of transactions allowed in a 24-hour period.
        transactionsNoticeEnabled:
          type: boolean
          description: Whether an email should be sent to the account owner up to once per day if transaction usage exceeds `transactionsNoticeThreshold` value.
        transactionsNoticeThreshold:
          type: integer
          format: int32
          description: Percent of daily transactions limit that will trigger an email if activity exceeds it.
    ShareMessage:
      title: Message
      type: object
      properties:
        id:
          description: Message id.
          type: integer
          format: int32
          example: 397584
        userId:
          description: User ID who generated share invite
          type: integer
          format: int32
          example: 119394
        shareId:
          description: ID of associated share
          type: integer
          format: int32
          example: 3544253
        subject:
          description: Share invitation message subject.
          type: string
          example: Files available for download
        body:
          description: Share invitation message text.
          type: string
          example: You have files available for download.
        created:
          description: Timestamp of message creation.
          type: string
          format: date-time
          example: '2017-01-26T18:10:47Z'
        modified:
          description: Timestamp of message modification.
          type: string
          format: date-time
          example: '2017-01-28T13:10:47Z'
    Share:
      title: Share
      description: Object contains share properties.
      type: object
      properties:
        id:
          description: ID of the share.
          type: integer
          format: int32
          example: 655621
        type:
          type: string
          enum:
            - share
          example: share
          description: 'Type of the share. '
        attributes:
          $ref: '#/components/schemas/ShareAttributes'
        relationships:
          type: object
          title: ShareRelationships
          description: 'Message, owner, resource, and notification relationships of the share. '
          properties:
            messages:
              type: array
              description: null
              items:
                title: ShareRelationshipsMessage
                type: object
                properties:
                  data:
                    title: ShareMessageData
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - message
                        example: message
                        description: 'Type is message. '
                      id:
                        type: integer
                        example: 21
                        description: ID of the message.
            owner:
              title: ShareRelationshipsOwner
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: ID of the owner.
                      example: 12345
                    type:
                      type: string
                      description: Type is user.
            resources:
              type: array
              items:
                title: ShareRelationshipsResource
                type: object
                properties:
                  data:
                    title: ShareResourceData
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - resource
                        example: resource
                        description: 'Type is resource. '
                      id:
                        type: integer
                        description: ID of the shared resource.
                        example: 12345
                        format: int64
            notifications:
              type: array
              description: null
              items:
                title: ShareRelationshipsNotification
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        description: 'Type is notification. '
                        enum:
                          - notification
                        example: notification
                      id:
                        type: integer
                        description: 'ID of the notification. '
                        example: 9
    ShareAttributes:
      title: ShareAttributes
      description: 'Attributes of the share including the name, path and share recipients. '
      type: object
      properties:
        name:
          description: Share name.
          type: string
          example: Example Folder
        hasPassword:
          enum:
            - true
            - false
          description: True if the share has password.
          type: boolean
          example: false
        public:
          enum:
            - true
            - false
          description: True if the share has a public url.
          type: boolean
          example: true
        accessMode:
          $ref: '#/components/schemas/AccessMode'
        accessDescription:
          description: Description of the share access rights.
          type: string
          example: Download only
        embed:
          description: True if share can be embedded.
          type: boolean
          example: false
        hash:
          description: Share hash.
          type: string
          example: hd1e-3erufo72
        ownerHash:
          description: Share owner's hash.
          type: string
          example: hd1e-3erufo72-fsxak999
        expiration:
          description: Expiration date of the share.
          type: string
          example: null
        expired:
          enum:
            - true
            - false
          description: True if the share has expired.
          type: boolean
          example: false
        resent:
          description: Invitations resent date. Can be `null` if resent never happened.
          type: string
          format: date-time
          example: null
        type:
          enum:
            - shared_folder
            - send
            - receive
          description: Type of share.
          type: string
          example: shared_folder
        requireEmail:
          description: True if share requires email to access.
          type: boolean
          example: true
        fileDropCreateFolders:
          enum:
            - true
            - false
          description: Flag to show if separate folders should be created for each file upload to receive folder.
          type: boolean
          example: false
        paths:
          description: Path to the shared resource in your account.
          type: array
          example:
            - /Example Folder
          items:
            type: string
        recipients:
          description: Array of recipients.
          type: array
          example:
            - id: 2
              shareId: 23
              type: direct
              hash: fseowxan
              email: recipient@example.com
              sent: true
              received: false
              created: '2017-04-21T10:53:47Z'
          items:
            $ref: '#/components/schemas/ShareRecipient'
        messages:
          description: Array of invitation messages.
          type: array
          items:
            $ref: '#/components/schemas/ShareMessage'
        inherited:
          enum:
            - true
            - false
          description: True if share inherited from parent folder.
          type: boolean
          example: false
        status:
          enum:
            - 0
            - 1
          description: Share activity status. Can be active (1) or deactivated (0).
          type: integer
          format: int32
          example: 1
        hasNotification:
          enum:
            - true
            - false
          description: True if share has notification.
          type: boolean
          example: false
        created:
          description: Timestamp of share creation.
          type: string
          format: date-time
          example: '2017-01-28T13:10:47Z'
        modified:
          description: Timestamp of share modification. Can be `null` if it wasn't modified.
          type: string
          format: date-time
          example: null
        trackingStatus:
          type: string
          description: 'Checks recipient received status and returns whether it''s been received (`complete`,) partial received (`incomplete`,) or not received yet (`pending`.)'
          enum:
            - complete
            - incomplete
            - pending
        formId:
          type: integer
          description: ID of the form.
    ShareResponse:
      title: ShareResponse
      description: Response object for shares.
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        data:
          $ref: '#/components/schemas/Share'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Notification'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    SSHKey:
      title: SSH Key
      description: Object representing an SSH Key associated with a user.
      type: object
      properties:
        id:
          description: ID of the key.
          type: integer
          format: int32
          example: 655621
        type:
          type: string
          enum:
            - sshKey
          example: sshKey
          description: 'Type of the object. '
        attributes:
          $ref: '#/components/schemas/SSHKeyAttributes'
        relationships:
          type: object
          properties:
            ownerUser:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                    type:
                      type: string
    ShareCollectionResponse:
      title: ShareCollectionResponse
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        totalResults:
          type: integer
          example: 2
          description: 'Total results found. '
        returnedResults:
          type: integer
          example: 2
          description: Number of returned results.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Share'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/User'
              - $ref: '#/components/schemas/Notification'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    Account:
      title: Account
      description: Object contains all account properties.
      type: object
      properties:
        id:
          description: Account ID
          type: integer
          format: int32
          example: 13758
        type:
          type: string
          description: Type of item. "account"
          enum:
            - account
        attributes:
          $ref: '#/components/schemas/AccountAttributes'
        relationships:
          title: MasterUser
          type: object
          properties:
            masterUser:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      example: user
                      enum:
                        - user
                    id:
                      type: integer
                      description: ID of master user for account
    AccountAttributes:
      type: object
      description: ''
      properties:
        accountName:
          description: Name of the account
          type: string
        maxUsers:
          description: Maximum number of users the account can have. This can be increased by contacting ExaVault Support.
          type: integer
          format: int32
          example: 1000
        userCount:
          description: Current number of users on the account.
          type: integer
          format: int32
          example: 3
        status:
          enum:
            - 1
            - 0
          description: Account status flag. A one (1) means the account is active; zero (0) means it is suspended.
          type: integer
          format: int32
          example: 1
        branding:
          enum:
            - true
            - false
          description: Branding flag. Set to `true` if the account has branding functionality enabled.
          type: boolean
          example: true
        customDomain:
          enum:
            - true
            - false
          description: Custom domain flag. Set to `true` if account type allows custom domain functionality.
          type: boolean
          example: true
        quota:
          $ref: '#/components/schemas/Quota'
        secureOnly:
          description: Flag to indicate whether the account disables connections via insecure protocols (e.g. FTP). Set to `true` to disable all traffic over port 21.
          type: boolean
          example: false
        complexPasswords:
          description: Flag to indicate whether the account requires complex passwords. Set to `true` to require complex passwords on all users and shares.
          type: boolean
          example: false
        showReferralLinks:
          description: Flag to indicate showing of referrals links in the account. Set to `true` to include marketing messages in share invitations.
          type: boolean
          example: true
        externalDomains:
          description: Custom domain used to brand this account.
          type: array
          example: []
          items:
            type: string
        allowedIp:
          description: Range of IP addresses allowed to access this account.
          type: array
          example:
            - ipStart: 192.30.23.2
              ipEnd: 192.30.24.5
          items:
            type: object
            properties:
              ipStart:
                type: string
              ipEnd:
                type: string
        brandingSettings:
          $ref: '#/components/schemas/BrandingSettings'
        planDetails:
          $ref: '#/components/schemas/PlanDetails'
        clientId:
          description: (ExaVault Use Only) Internal ID of the account in CMS.
          type: integer
          format: int32
          example: 1
        welcomeEmailContent:
          description: Content of welcome email each new user will receive.
          type: string
          example: Welcome to your new account!
        welcomeEmailSubject:
          description: Subject of welcome email each new user will receive.
          type: string
          example: ExaVault File Sharing Account
        customSignature:
          description: Custom signature for all account emails users or recipients will receive.
          type: string
          example: null
        accountOnboarding:
          description: Whether the web application onboarding help is enabled for new users in the account.
          type: boolean
          example: false
        created:
          description: Timestamp of account creation.
          type: string
          format: date-time
          example: '2017-01-12T09:06:21Z'
        modified:
          description: Timestamp of account modification.
          type: string
          format: date-time
          example: '2017-06-03T20:42:05Z'
      title: ''
    AccountResponse:
      title: AccountResponse
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
        data:
          $ref: '#/components/schemas/Account'
        included:
          description: Array can contain objects specified in include param of the get call e.g User object
          type: array
          items:
            $ref: '#/components/schemas/User'
    Form:
      title: Form
      type: object
      description: Regular form object.
      properties:
        type:
          type: string
          description: Type is "form".
          example: form
        id:
          description: ID of the form.
          type: integer
          format: int32
          example: 823752
        attributes:
          $ref: '#/components/schemas/FormAttributes'
        relationships:
          type: object
          description: 'Share relationship data of the form. '
          properties:
            share:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                      example: 22
                      description: 'ID of the share. '
                    type:
                      type: string
                      enum:
                        - share
                      example: share
                      description: 'Type is share. '
    FormField:
      title: FormField
      type: object
      properties:
        id:
          description: 'ID of the form field. '
          type: integer
          format: int32
          example: 1185
        name:
          description: Label of the field.
          type: string
          example: Your Name
        order:
          description: 'Order that field appears on the form, starting from 0'
          type: integer
          format: int32
          example: 0
        type:
          description: Field type
          enum:
            - email
            - textarea
            - name
            - text
        settings:
          description: Advanced field settings
          type: object
          properties:
            description:
              description: Secondary description of field.
              type: string
              example: null
            width:
              description: How much of the available width the field should occupy
              type: number
              format: float
              example: 0.5
            isRequired:
              description: Whether this field must be completed before form can be submitted
              type: boolean
              example: false
            useAsFolderName:
              description: Whether to place submitted files into a subfolder named the contents of this field. Only takes effect when the `fileDropCreateFolders` parameter on the receive folder is `true`. `isRequired` must be set to `true` if this setting is `true`.
              type: boolean
              example: false
            senderEmail:
              type: boolean
    FormFieldUploadArea:
      title: FormFieldUploadArea
      properties:
        id:
          description: 'ID of the form field. '
          type: integer
          format: int32
          example: 1103
        name:
          description: Label of the field (not used).
          type: string
          example: Upload Area
        order:
          description: 'Order that field appears on the form, starting from 0'
          type: integer
          format: int32
          example: 0
        type:
          description: Type is upload_area.
          enum:
            - upload_area
        settings:
          description: Advanced field settings
          type: object
          properties:
            fileTypes:
              description: File types that can be uploaded. Comma-delimited string of MIME file types.
              type: string
              example: null
    FormAttributes:
      title: FormAttributes
      type: object
      description: Attributes of the form including it's included fields and css styles
      properties:
        formDescription:
          description: Text that appears at the top of a receive form
          type: string
          example: Upload your photos to us
        submitButtonText:
          description: Text that appears on the submit button for the form
          type: string
          example: Send Files
        successMessage:
          description: Message displayed to submitter after files are uploaded
          type: string
          example: Your files were uploaded
        cssStyles:
          description: CSS Styles of the form.
          type: string
          example: |-
            #ev-widget-form {
              /*Change this to change the font. Remove to use your website font*/
              font-family: Helvetica Neue, sans-serif;
              /*Makes the form the same width as your website */
              margin: 0 -2%;
            }
            #ev-widget-form label{
              width: 100%;
            }
            #ev-widget-form input,
            #ev-widget-form textarea {
              /*Changes color and thickness of borders on form elements */
              border: 2px solid #ccc;
              /*Changes spacing inside the form elements (top/bottom and left/right */
              padding: 5px 5px;
              /* Changes how far away the inputs are from their label */
              margin-top: 2px;
            }

            #ev-widget-form input:focus,
            #ev-widget-form textarea:focus {
              /*Changes the color of the form elements when they are clicked in to */
              border: 2px solid #b2cf88;
              /*Removes glow effect from form elements that are clicked in to */
              outline: none;
            }

            #ev-widget-form label {
              font-size: 14px;
              font-weight: bold;
              /*Changes color of labels */
              color: #232323
            }

            #ev-widget-form .ev-form-element-description {
              /*Changes size of descriptions */
              font-size: 12px;
              /*Changes color of descriptions */
              color: #777;
              /* Changes how far away the descriptions are from their input */
              margin-top: 2px;
            }

            #ev-widget-form textarea {
              /* Makes textareas (multiline inputs) a taller. */
              min-height: 90px;
            }
        elements:
          description: Array of form fields defined for the form
          type: array
          items:
            $ref: '#/components/schemas/FormField'
          example:
            - id: 234
              name: Project ID
              order: 0
              type: name
              settings:
                description: null
                width: 1
                isRequired: false
                useAsFolderName: false
            - id: 235
              name: Your Email
              order: 1
              type: email
              setings:
                description: Enter your email from the registration system
                width: 1
                isRequired: true
                senderEmail: true
                useAsFolderName: true
            - id: 236
              name: Upload Area
              order: 2
              type: upload_area
              settings:
                fileTypes: null
    FormResponse:
      title: Regular form response
      type: object
      description: Response object for forms.
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        data:
          $ref: '#/components/schemas/Form'
        included:
          type: array
          items:
            $ref: '#/components/schemas/Share'
    FormEntryResponse:
      title: FormEntryResponse
      type: object
      description: Response object of the form data.
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        totalResults:
          type: integer
          example: 2
          description: 'Total results found. '
        returnedResults:
          type: integer
          example: 2
          description: 'Number of returned results. '
        data:
          description: Object submissions data for form.
          type: array
          items:
            $ref: '#/components/schemas/FormEntry'
      example:
        responseStatus: 200
        totalResults: 2
        returnedResults: 2
        data:
          - id: 320721
            type: formEntry
            attributes:
              fields:
                - name: Email Address
                  value: test451@example.com
                  order: 1
              paths:
                - /example/test451@example.com/1.csv
                - /example/test451@example.com/2.csv
              status: completed
              created: '2020-09-15T05:36:41-07:00'
              modified: '2020-09-16T05:36:44-07:00'
          - id: 32021
            type: formEntry
            attributes:
              fields:
                - name: Email Address
                  value: test455@example.com
                  order: 1
              paths:
                - /example/test455@example.com/1.csv
                - /example/test455@example.com/2.csv
              status: completed
              created: '2020-09-16T05:36:41-07:00'
              modified: '2020-09-17T05:36:44-07:00'
    FormEntry:
      title: FormEntry
      description: Contains the data submitted for a form.
      type: object
      properties:
        id:
          type: integer
          description: Form entry id
          example: 12345
          format: int64
        type:
          type: string
          description: Type of item. "formEntry"
          example: formEntry
        attributes:
          type: object
          properties:
            fields:
              type: array
              items:
                $ref: '#/components/schemas/FormEntryField'
            paths:
              description: Full paths to files associated with the form submission
              type: array
              example:
                - /image1.jpg
                - /image2.jpg
                - /image3.jpg
              items:
                type: string
            status:
              description: Form entry status
              type: string
              enum:
                - pending
                - completed
              example: completed
            created:
              description: Timestamp of the submission
              type: string
              format: date-time
              example: '2019-09-19T18:00:00Z'
            modified:
              description: Timestamp of the field modified date
              type: string
              format: date-time
              example: '2019-09-20T18:00:00Z'
    FormEntryField:
      title: FormEntryField
      type: object
      description: Attributes of the form including its included fields and css styles
      properties:
        name:
          description: Field name
          type: string
          example: Email Adress
        value:
          description: Field value
          type: string
          example: example@example.com
        order:
          description: Field order in the form
          type: integer
          format: int32
          example: 1
    EmailListCollectionResponse:
      title: EmailListCollectionResponse
      description: Response object for list of email lists
      type: object
      properties:
        responseStatus:
          type: integer
          description: Http status of response
        totalResults:
          type: integer
          minimum: 0
        returnedResults:
          type: integer
          minimum: 0
        data:
          type: array
          items:
            $ref: '#/components/schemas/EmailList'
        included:
          type: array
          items:
            $ref: '#/components/schemas/User'
    EmailListResponse:
      title: EmailListResponse
      description: Response object for a single email list.
      type: object
      properties:
        responseStatus:
          type: integer
          format: int32
          description: Http Status code
          example: 200
        data:
          $ref: '#/components/schemas/EmailList'
        included:
          type: array
          items:
            $ref: '#/components/schemas/User'
    SessionActivityResponse:
      title: SessionActivityResponse
      description: Session activity list response
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
        totalResults:
          type: integer
          example: 2
        returnedResults:
          type: integer
          example: 2
        data:
          type: array
          items:
            $ref: '#/components/schemas/SessionActivityEntry'
    SessionActivityEntry:
      title: SessionActivityEntry
      description: Single entry of session activity
      type: object
      properties:
        id:
          type: integer
          example: 12345
          format: int64
        type:
          type: string
          enum:
            - sessionActivity
          example: sessionActivity
        attributes:
          type: object
          properties:
            bytesTransferred:
              type: integer
              example: 10815676
              format: int64
            created:
              type: string
              example: '2019-10-18T06:48:40Z'
            duration:
              type: integer
              example: 5
            fileName:
              type: string
              example: /test2/Cassandra2020The20Definitive20Guide.2030947496.pdf
            fileSource:
              type: string
              example: ''
            ipAddress:
              type: string
              example: 185.223.113.224
            operation:
              type: string
              example: PASS
            protocol:
              type: string
              example: web
            sessionId:
              type: string
              example: 5da9b4a8bd961dfa0a56fa0dc15aaffe57069271b389e
            status:
              type: string
              example: '-'
            username:
              type: string
              example: ykravchuk
    WebhookActivityResponse:
      title: WebhookActivityResponse
      description: Session activity list response
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        totalResults:
          type: integer
          example: 2
          description: Total results found.
        returnedResults:
          type: integer
          example: 2
          description: 'Number of results returned. '
        data:
          type: array
          items:
            $ref: '#/components/schemas/WebhookActivityEntry'
    WebhookActivityEntry:
      title: WebhookActivityEntry
      type: object
      properties:
        id:
          type: integer
          example: 12345
          format: int64
        type:
          type: string
          enum:
            - webhookActivity
          example: webhookActivity
        attributes:
          oneOf:
            - $ref: '#/components/schemas/WebhookActivityAttributesV2'
            - $ref: '#/components/schemas/WebhookActivityAttributesV1'
          discriminator:
            propertyName: webhookFormat
    UserPermissions:
      title: UserPermissions
      type: object
      properties:
        download:
          type: boolean
          description: Download permission flag
        upload:
          type: boolean
          description: Upload permission flag
        modify:
          type: boolean
          description: Modify permission flag
        delete:
          type: boolean
          description: Delete permission flag
        list:
          type: boolean
          description: View folder contents permission flag
        changePassword:
          type: boolean
          description: Change (own) password permission flag
        share:
          type: boolean
          description: Sharing permission flag
        notification:
          type: boolean
          description: Notifications permission flag
        viewFormData:
          type: boolean
          description: 'Access Form Data permission flag. If true, user can view submissions that have been stored for a receive folder. This includes any data submitted in the receive folder form.'
        deleteFormData:
          type: boolean
          description: 'Delete form data permission flag. If true, user can remove data that was submitted for a receive folder. This applies only to data submitted in the receive folder form, not the actual files uploaded.'
      required:
        - download
        - upload
        - modify
        - delete
        - list
        - changePassword
        - share
        - notification
        - viewFormData
        - deleteFormData
    Resource:
      title: Resource
      type: object
      description: All properties of the resource.
      properties:
        id:
          type: integer
          format: int64
          example: 1
        type:
          type: string
          example: resource
          description: Type of item. "resource"
          enum:
            - resource
        attributes:
          $ref: '#/components/schemas/ResourceAttributes'
        relationships:
          type: object
          properties:
            share:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                      format: int32
                      example: 2345
                    type:
                      type: string
                      example: share
            notifications:
              type: array
              items:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        format: int32
                        example: 2
                      type:
                        type: string
                        example: notification
            directFile:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                      format: int32
                      example: 2
                    type:
                      type: string
                      example: directFile
            parentResource:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: integer
                      format: int64
                      example: 2
                    type:
                      type: string
                      example: resource
    ResourceAttributes:
      title: ResourceAttributes
      type: object
      description: Attributes of resource
      properties:
        hash:
          description: Unique hash of the resource.
          type: string
          example: ec4aa9a91be282666a165899a14f29b1
        name:
          description: 'Resource name, e.g. the name of the file or folder.'
          type: string
          example: examplefolder
        extension:
          type: string
          description: Resource extension. Property exists only if resource `type` is file.
        type:
          type: string
          enum:
            - file
            - dir
          description: Type of the resource.
        createdBy:
          description: Username of the creator.
          type: string
          example: exampleuser
        uploadDate:
          type: string
          description: Timestamp of resource upload.
          format: date-time
          example: '2011-03-21T00:18:56-07:00'
        createdAt:
          type: string
          description: Date-time of resource creation.
          format: date-time
          example: '2011-03-21T00:18:56-07:00'
        updatedAt:
          type: string
          description: Date-time of resource modification.
          format: date-time
          example: '2011-03-21T00:18:56-07:00'
        accessedAt:
          type: string
          description: Date-time of the time when resource was accessed.
          format: date-time
          example: '2011-03-21T00:18:56-07:00'
        createdTime:
          type: integer
          format: int32
          description: UNIX timestamp of resource creation
        updatedTime:
          type: integer
          format: int32
          description: UNIX timestamp of resource modification
        accessedTime:
          type: integer
          format: int32
          description: UNIX timestamp of last access
        path:
          description: Full path to the resource.
          type: string
          example: /examplefolder
        size:
          description: Resource size in bytes
          type: integer
          format: int64
          example: 0
        fileCount:
          type: integer
          description: Number of files within folder. null if resource type is a file.
        previewable:
          description: Can resource be previewed. Property equals `null` if resource `type` is dir.
          enum:
            - true
            - false
          type: boolean
          example: true
    EmailListAttributes:
      title: EmailListAttributes
      type: object
      properties:
        name:
          type: string
          description: Short title for email list
        emails:
          type: array
          description: Recipient emails in the email list
          items:
            type: string
        created:
          type: string
          format: date-time
          description: Created datetime
        modified:
          type: string
          format: date-time
          description: Modified datetime
      description: 'Information for the email list, including its short title and recipient emails'
    RelationshipData:
      title: RelationshipData
      type: object
      description: Identifying info for related record
      properties:
        id:
          type: integer
          description: ID number of related record
        type:
          type: string
          description: Kind of record
    EmailListOwnerUser:
      title: EmailListOwnerUser
      type: object
      properties:
        data:
          $ref: '#/components/schemas/RelationshipData'
      description: Information for user who owns the email list
    EmailListRelationships:
      title: EmailListRelationships
      type: object
      properties:
        ownerUser:
          $ref: '#/components/schemas/EmailListOwnerUser'
      description: Related record summary info
    EmailList:
      title: EmailList
      type: object
      description: A single email group list
      properties:
        id:
          type: integer
          description: ID of the email list
        type:
          type: string
          description: Type of record. "emailList"
        attributes:
          $ref: '#/components/schemas/EmailListAttributes'
        relationships:
          $ref: '#/components/schemas/EmailListRelationships'
    AccessMode:
      description: An object defining what a not-logged-in visitor can do with the share contents
      title: AccessMode
      type: object
      properties:
        download:
          type: boolean
          description: Whether share allows visitors to download
        upload:
          type: boolean
          description: Whether share allows visitors to upload
        modify:
          type: boolean
          description: Whether share allows visitors to rename or move contents.
        delete:
          type: boolean
          description: Whether share allows visitors to delete contents
    SSHKeyAttributes:
      title: SSHKeysAttributes
      type: object
      properties:
        fingerprint:
          type: string
          description: 'The Key Fingerprint. The fingerprint can be used to identify and keep track of the key without exposing the actual credential. '
        lastLogin:
          type: string
          format: date-time
          description: 'The date-time the SSH Key was last used to access ExaVault. '
        created:
          type: string
          format: date-time
          description: The date-time the SSH Key was created.
    SSHKeyResponse:
      title: SSHKeyResponse
      type: object
      properties:
        responseStatus:
          type: integer
          description: Http status code of the response.
        data:
          $ref: '#/components/schemas/SSHKey'
        included:
          type: array
          items:
            $ref: '#/components/schemas/User'
    SSHKeyCollectionResponse:
      title: SSHKeyCollectionResponse
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: Http status code of the response.
        totalResults:
          type: integer
          example: 2
          description: 'Total results found. '
        returnedResults:
          type: integer
          example: 2
          description: Number of returned results.
        data:
          type: array
          items:
            $ref: '#/components/schemas/SSHKey'
        included:
          type: array
          items:
            $ref: '#/components/schemas/User'
    WebhookCollectionResponse:
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        totalResults:
          type: integer
          example: 2
          description: Total results found.
        returnedResults:
          type: integer
          example: 2
          description: Number of results returned.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Webhook'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    WebhookResponse:
      type: object
      properties:
        responseStatus:
          type: integer
          example: 200
          description: 'Http status code of the response. '
        data:
          type: array
          items:
            $ref: '#/components/schemas/Webhook'
        included:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/Account'
              - $ref: '#/components/schemas/Resource'
            discriminator:
              propertyName: type
    Webhook:
      title: Webhook
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          description: Type of thing it is. "webhook"
          example: webhook
        attributes:
          $ref: '#/components/schemas/WebhookAttributes'
        relationships:
          type: object
          properties:
            ownerAccount:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      example: account
                      description: Type of thing it is "account"
                    id:
                      type: integer
                      description: Account ID
                      example: 23422
            resource:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      description: Type of thing it is. "resource"
                      example: resource
                    id:
                      type: integer
                      description: ID of the resource associated with the webhook
                      example: 134122
    WebhookAttributes:
      title: WebhookAttributes
      type: object
      x-examples: {}
      properties:
        endpointUrl:
          type: string
          format: uri
          example: 'https://example.com/webhook'
          description: The endpoint is where the webhook request will be sent.
        failed:
          type: boolean
          description: Whether webhook has been disabled for too many consecutive failures
        verificationToken:
          type: string
          description: Token for verifying sender is ExaVault
          example: 8df8200f7dee90ba4a41abe39c858c6c
        responseVersion:
          type: string
          enum:
            - v1
            - v2
          example: v2
          description: The version of webhook request to send to the endpoint URL
        triggers:
          $ref: '#/components/schemas/WebhookTriggers'
        created:
          type: string
          format: date-time
          example: '2021-03-04T22:22:00-08:00'
          description: Timestamp when webhook configuration was added to system.
        modified:
          type: string
          format: date-time
          example: '2021-03-04T22:23:03-08:00'
          description: Timestamp when webhook configuration was last modified
    WebhookTriggers:
      title: WebhookTriggers
      type: object
      properties:
        resources:
          type: object
          properties:
            upload:
              type: boolean
              description: Send webhook messages when resources are uploaded.
            download:
              type: boolean
              description: Send webhook messages when resources are downloaded.
            delete:
              type: boolean
              description: Send webhook messages when resources are deleted
            rename:
              type: boolean
              description: Send webhook messages when resources are renamed.
            copy:
              type: boolean
              description: Send webhook messages when resources are copied.
            move:
              type: boolean
              description: Send webhook messages when resources are moved.
            compress:
              type: boolean
              description: Send webhook messages when resources are compressed into an archive.
            extract:
              type: boolean
              description: Send webhook messages when resources are extracted from an archive.
            createFolder:
              type: boolean
              description: Send webhook messages when a new folder is created.
        shares:
          type: object
          properties:
            formSubmit:
              type: boolean
              description: Send webhook messages when a receive folder form is submitted.
    WebhookActivityAttributesV1:
      title: WebhookActivityAttributesV1
      type: object
      properties:
        webhookId:
          type: integer
          description: Unique ID of webhook configuration
        webhookFormat:
          type: string
          description: What version of webhook message is being sent `v1`
        attemptId:
          type: string
          description: Event - retry identifier
        accountId:
          type: string
          description: Unique ID of account
        resend:
          type: boolean
          description: Whether this attempt was a re-send of a previous attempt
        endpointUrl:
          type: string
          format: uri
          description: The URL the message was sent to
        event:
          type: string
          description: Event type
          enum:
            - resources.upload
            - resources.download
            - resources.delete
            - resources.rename
            - resources.copy
            - resources.move
            - resources.compress
            - resources.extract
            - resources.createFolder
            - shares.formSubmit
        status:
          type: integer
          description: HTTP Status Code returned by webhook listener
        ipAddress:
          type: string
          description: IP Address of related activity
        response:
          type: string
          description: Body of web response returned by webhook listener
        details:
          type: object
          title: WebhookV1Details
          properties:
            attemptId:
              type: string
              description: Entry - retry identifier
            accountName:
              type: string
              description: Account master username
            protocol:
              type: string
              description: Type of connection used for related activity
            username:
              type: string
              description: 'Username logged for related activity. May refer to someone who is not a user of the account, such as a share recipient or "publ'
            event:
              type: string
              description: Type of related activity
            attempt:
              type: integer
              description: Number of times the system has attempted to send
        webhookPath:
          type: string
          description: Path that webhook is watching
        resourcePath:
          type: string
          description: Path of resource that matched webhook
        username:
          type: string
          description: Username of related activity
        created:
          type: string
          description: Date and time of webhook message being generated by system
    WebhookActivityAttributesV2:
      title: WebhookActivityAttributesV2
      type: object
      properties:
        webhookId:
          type: integer
          description: Unique ID of webhook configuration
        webhookFormat:
          type: string
          description: What version of webhook message is being sent `v2`
        attemptId:
          type: string
          description: Event - retry identifier
        accountId:
          type: string
          description: Unique ID of account
        resend:
          type: boolean
          description: Whether this attempt was a re-send of a previous attempt
        endpointUrl:
          type: string
          format: uri
          description: The URL the message was sent to
        event:
          type: string
          description: Event type
          enum:
            - resources.upload
            - resources.download
            - resources.delete
            - resources.rename
            - resources.copy
            - resources.move
            - resources.compress
            - resources.extract
            - resources.createFolder
            - shares.formSubmit
        status:
          type: integer
          description: HTTP Status Code returned by webhook listener
        ipAddress:
          type: string
          description: IP Address of related activity
        response:
          type: string
          description: Body of web response returned by webhook listener
        details:
          type: object
          title: WebhookV2Details
          properties:
            attemptId:
              type: string
              description: Entry - retry identifier
            accountName:
              type: string
              description: Account master username
            eventTimestamp:
              type: string
              format: date-time
              description: Date and time event originally took place
            ipAddress:
              type: string
              description: IP address of related activity
            protocol:
              type: string
              description: Type of connection used for related activity
            username:
              type: string
              description: 'Username logged for related activity. May refer to someone who is not a user of the account, such as a share recipient or "publ'
            event:
              type: string
              description: Type of related activity
            eventData:
              type: object
              title: WebhookV2EventData
              properties:
                resources:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Resource ID
                      hash:
                        type: string
                        description: Resource hash value
                      name:
                        type: string
                        description: Resource name
                      type:
                        type: string
                        description: Type of resource `file` or `dir`
                      createdBy:
                        type: string
                        description: Username who originally created resource
                      uploadDate:
                        type: string
                        format: date-time
                        description: Date resource was first uploaded
                      createdAt:
                        type: string
                        format: date-time
                        description: Date and time of resource creation
                      updatedAt:
                        type: string
                        format: date-time
                        description: Date and time resource was most recently changed
                      accessedAt:
                        type: string
                        format: date-time
                        description: Date and time resource was most recently downloaded
                      path:
                        type: string
                        description: Full path to resource
                      size:
                        type: integer
                        format: int32
                        description: Size of resource in bytes
                      fileCount:
                        type: integer
                        description: 'Number of resources contained in this folder. If this is a file, fileCount is null'
                      previewable:
                        type: boolean
                        description: Whether the resource can be previewed
                formDetails:
                  type: array
                  items:
                    type: object
                share:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Unique ID of associated receive folder
                      name:
                        type: string
                        description: Name of receiv
                      hasPassword:
                        type: boolean
                        description: Whether the receive folder requires visitors to enter a password
                      isPublic:
                        type: boolean
                        description: Whether visitors can acccess the receive folder without an invitation link
                      accessMode:
                        $ref: '#/components/schemas/AccessMode'
                      accessDescription:
                        type: string
                        description: Human readable description of what visitors are allowed to do with the receive folder
                      embed:
                        type: boolean
                        description: Whether the receive folder can be embedded within a web page
                      hash:
                        type: string
                        description: Hash value of the receive
                      ownerHash:
                        type: string
                        description: Hash value of the user who "owns" the receive fo
                      expiration:
                        type: string
                        description: 'Date and time when the receive folder will no longer be '
                      trackingStatus:
                        type: string
                        description: Status of invitations sent for this receive folder
                      expired:
                        type: boolean
                        description: Whether access to the receive folder has expired
                      resent:
                        type: boolean
                        description: Whether invitations to the receive folder have been re-sent to recipients
                      type:
                        type: string
                        description: Type of share **"receive"**
                      requireEmail:
                        type: boolean
                        description: Whether visitors must enter their email addresses to access the receive folder
                      fileDropCreateFolders:
                        type: boolean
                        description: Whether files should be automatically placed in subfolders of the receive folder
                      formId:
                        type: integer
                        description: ID of the associated form
                      assets:
                        type: array
                        description: List of items included in the share
                        items:
                          type: string
                      paths:
                        type: array
                        description: List
                        items:
                          type: string
                      recipients:
                        type: array
                        description: List of recipients invited  to the receive folder
                        items:
                          $ref: '#/components/schemas/ShareRecipient'
                      messages:
                        type: array
                        description: Invitation messages sent for receive folder
                        items:
                          $ref: '#/components/schemas/ShareMessage'
                      inherited:
                        type: boolean
                        description: Whether this share is inherited from a parent fol
                      status:
                        type: integer
                        description: 1 if share is active. 0 if not.
                      hasNotification:
                        type: boolean
                        description: Whether delivery receipts are enabled for this share
                      created:
                        type: string
                        format: date-time
                        description: Date and ti
                      modified:
                        type: string
                        description: Date and time when the share was last changed
                        format: date-time
                transferStatus:
                  type: string
                  description: 'For uploads, and downloads, whether the file transferred OK. `success` means the transfer did not have errors'
        webhookPath:
          type: string
          description: Path that webhook is watching
        resourcePath:
          type: string
          description: Path of resource that matched webhook
        username:
          type: string
          description: Username of related activity
        created:
          type: string
          description: Date and time of webhook message being generated by system
    PlanDetails:
      title: PlanDetails
      type: object
      properties:
        storageAddOn:
          type: integer
        ipWhitelist:
          type: boolean
        userExpiration:
          type: boolean
        userImport:
          type: boolean
        customDomain:
          type: boolean
        customName:
          type: boolean
        colorSchema:
          type: boolean
        apiKeys:
          type: integer
        apiTokens:
          type: integer
        sshKeys:
          type: integer
        directLinks:
          type: boolean
        sharingOptions:
          type: array
          items:
            type: string
        webhookOptions:
          type: object
          properties:
            restrictionTypes:
              type: array
              items:
                type: string
            amount:
              type: integer
            includeTriggers:
              type: string
        unlimitedUsers:
          type: boolean
  requestBodies:
    AccountBody:
      content:
        application/json:
          schema:
            type: object
            properties:
              quotaNoticeThreshold:
                type: integer
                description: null
                example: 90
              secureOnly:
                type: boolean
                description: null
                example: false
              complexPasswords:
                type: boolean
                description: null
                example: false
              showReferralLinks:
                type: boolean
                description: null
                example: false
              externalDomain:
                type: array
                description: null
              emailContent:
                type: string
                description: null
                example: 'Great news, your new account is ready! For your records, we''ve listed information you''ll use to log in below: FTP Server: [[ftpserver]] Username (Web and FTP access): [[username]] [[setpassword]]'
              emailSubject:
                type: string
                example: ExaVault File Sharing Account
                description: null
              allowedIpRanges:
                type: object
                properties:
                  ipStart:
                    type: string
                    format: ipv4
                    description: null
                    example: 127.0.0.1
                  ipEnd:
                    type: string
                    format: ipv4
                    description: null
                    example: 255.255.255.255
              brandingSettings:
                title: BrandingSettings
                type: object
                properties:
                  companyName:
                    description: null
                    type: string
                    example: null
                  customEmail:
                    description: null
                    type: string
                    format: email
                    example: custom@example.com
                  logo:
                    description: null
                    type: string
                    example: examplelogo.png
                  logoExt:
                    type: string
                    description: null
                    example: png
                  theme:
                    type: string
                    description: null
                    example: default
              accountOnboarding:
                type: boolean
                example: true
                description: null
              customSignature:
                type: string
                example: null
                description: null
  examples:
    EmailListsExample:
      summary: Regular email list response
      value:
        responseStatus: 200
        data:
          - id: 1
            type: emailList
            attributes:
              name: My friends
              created: '2019-10-10T06:58:07Z'
              modified: '2019-10-10T06:58:07Z'
              emails:
                - jdoe@example.com
                - yk@example.com
            relationships:
              owner:
                data:
                  type: user
                  id: 4
    EmailListsInludedExample:
      summary: Email list reponse with included
      value:
        responseStatus: 200
        data:
          - id: 1
            type: emailList
            attributes:
              name: My friends
              created: '2019-10-10T06:58:07Z'
              modified: '2019-10-10T06:58:07Z'
              emails:
                - jdoe@example.com
                - yk@example.com
            relationships:
              owner:
                data:
                  type: user
                  id: 4
        included:
          - id: 4
            type: user
            attributes:
              status: 1
              expiration: null
              created: '2019-10-10T06:58:07Z'
              modified: '2019-10-10T06:58:07Z'
              accessTimestamp: '2019-10-10T06:58:07Z'
              accountId: 5
              accountName: jdoe
              username: john
              nickname: jdoe
              email: jdoe@example.com
              homeDir: /
              permissions:
                download: true
                upload: true
                modify: true
                delete: true
                list: true
                changePassword: true
                share: true
                notification: true
                viewFormData: true
                deleteFormData: true
              role: admin
              timeZone: America/Chicago
              onboarding: false
              firstLogin: false
    FormResponseExample:
      summary: Regular form response
      value:
        responseStatus: 200
        data:
          id: 1
          type: form
          attributes:
            submitButtonText: Send Files
            formDescription: Upload your photos to us
            successMessage: Your files were uploaded
            elements:
              - id: 123
                name: You name
                order: 1
                type: name
                settings:
                  width: 1
                  isRequired: true
                  senderEmail: false
                  useAsFolderName: false
              - id: 124
                name: Your Email
                order: 1
                type: email
                settings:
                  description: Enter your email from the registration system
                  width: 1
                  isRequired: true
                  senderEmail: true
                  useAsFolderName: true
            cssStyles: |-
              #ev-widget-form {
                /*Change this to change the font. Remove to use your website font*/
                font-family: Helvetica Neue, sans-serif;
                /*Makes the form the same width as your website */
                margin: 0 -2%;
              } #ev-widget-form label{
                width: 100%;
              } #ev-widget-form input, #ev-widget-form textarea {
                /*Changes color and thickness of borders on form elements */
                border: 2px solid #ccc;
                /*Changes spacing inside the form elements (top/bottom and left/right */
                padding: 5px 5px;
                /* Changes how far away the inputs are from their label */
                margin-top: 2px;
              }
              #ev-widget-form input:focus, #ev-widget-form textarea:focus {
                /*Changes the color of the form elements when they are clicked in to */
                border: 2px solid #b2cf88;
                /*Removes glow effect from form elements that are clicked in to */
                outline: none;
              }
              #ev-widget-form label {
                font-size: 14px;
                font-weight: bold;
                /*Changes color of labels */
                color: #232323
              }
              #ev-widget-form .ev-form-element-description {
                /*Changes size of descriptions */
                font-size: 12px;
                /*Changes color of descriptions */
                color: #777;
                /* Changes how far away the descriptions are from their input */
                margin-top: 2px;
              }
              #ev-widget-form textarea {
                /* Makes textareas (multiline inputs) a taller. */
                min-height: 90px;
              }
          relationships:
            share:
              data:
                type: share
                id: 3
    FormExtendedResponseExample:
      summary: Form response with relationships
      value:
        responseStatus: 200
        data:
          id: 1
          type: form
          attributes:
            submitButtonText: Send Files
            formDescription: Upload your photos to us
            successMessage: Your files were uploaded
            elements:
              - id: 123
                name: You name
                order: 1
                type: name
                settings:
                  width: 1
                  isRequired: true
                  senderEmail: false
                  useAsFolderName: false
              - id: 124
                name: Your Email
                order: 1
                type: email
                settings:
                  description: Enter your email from the registration system
                  width: 1
                  isRequired: true
                  senderEmail: true
                  useAsFolderName: true
            cssStyles: |-
              #ev-widget-form {
                /*Change this to change the font. Remove to use your website font*/
                font-family: Helvetica Neue, sans-serif;
                /*Makes the form the same width as your website */
                margin: 0 -2%;
              } #ev-widget-form label{
                width: 100%;
              } #ev-widget-form input, #ev-widget-form textarea {
                /*Changes color and thickness of borders on form elements */
                border: 2px solid #ccc;
                /*Changes spacing inside the form elements (top/bottom and left/right */
                padding: 5px 5px;
                /* Changes how far away the inputs are from their label */
                margin-top: 2px;
              }
              #ev-widget-form input:focus, #ev-widget-form textarea:focus {
                /*Changes the color of the form elements when they are clicked in to */
                border: 2px solid #b2cf88;
                /*Removes glow effect from form elements that are clicked in to */
                outline: none;
              }
              #ev-widget-form label {
                font-size: 14px;
                font-weight: bold;
                /*Changes color of labels */
                color: #232323
              }
              #ev-widget-form .ev-form-element-description {
                /*Changes size of descriptions */
                font-size: 12px;
                /*Changes color of descriptions */
                color: #777;
                /* Changes how far away the descriptions are from their input */
                margin-top: 2px;
              }
              #ev-widget-form textarea {
                /* Makes textareas (multiline inputs) a taller. */
                min-height: 90px;
              }
          relationships:
            share:
              data:
                type: share
                id: 3322
        included:
          - id: 3322
            type: share
            attributes:
              name: Shared folder
              hasPassword: false
              public: true
              accessMode:
                upload: true
                download: false
                modify: false
                delete: false
              accessDescription: Upload only
              embed: false
              hash: hd1e-3erufo72
              ownerHash: hd1e-3erufo72-fsxak999
              expiration: null
              expired: false
    ShareCollectionResponseExample:
      summary: Regular share collection response
      value:
        responseStatus: 200
        totalResults: 2
        returnedResults: 2
        data:
          - id: 10
            type: share
            attributes:
              name: Example Share
              hasPassword: false
              public: true
              accessMode:
                upload: true
                download: false
                modify: false
                delete: false
              accessDescription: Upload only
              embed: true
              hash: sdg1-352
              ownerHash: hd1e-3erufo72-fsxak999
              expiration: null
              expired: false
              resent: null
              type: shared_folder
              requireEmail: false
              fileDropCreateFolders: false
              paths:
                - /example share
              recipients:
                - id: 11
                  type: direct
                  hash: fseowxan
                  email: recipient@example.com
                  sent: true
                  received: false
                  created: '2017-04-21T10:53:47Z'
              messages:
                - id: 23
                  subject: Message subject.
                  body: You have files available for download.
                  created: '2017-04-21T10:53:47Z'
                  modified: '2017-04-21T10:53:47Z'
              inherited: false
              status: 1
              hasNotification: true
              created: '2017-04-21T10:53:47Z'
              modified: '2017-04-21T10:53:47Z'
            relationships:
              owner:
                type: user
                id: 12
              resource:
                type: resource
                id: 13
              notifications:
                - type: notification
                  id: 14
                - type: notification
                  id: 15
    ShareExtendedCollectionResponseExample:
      summary: Share collection response with relationships
      value:
        responseStatus: 200
        totalResults: 2
        returnedResults: 2
        data:
          - id: 10
            type: share
            attributes:
              name: Example Share
              hasPassword: false
              public: true
              accessMode:
                upload: true
                download: false
                modify: false
                delete: false
              accessDescription: Upload only
              embed: true
              hash: sdg1-352
              ownerHash: hd1e-3erufo72-fsxak999
              expiration: null
              expired: false
              resent: null
              type: shared_folder
              requireEmail: false
              fileDropCreateFolders: false
              paths:
                - /example share
              recipients:
                - id: 11
                  type: direct
                  hash: fseowxan
                  email: recipient@example.com
                  sent: true
                  received: false
                  created: '2017-04-21T10:53:47Z'
              messages:
                - id: 23
                  subject: Message subject.
                  body: You have files available for download.
                  created: '2017-04-21T10:53:47Z'
                  modified: '2017-04-21T10:53:47Z'
              inherited: false
              status: 1
              hasNotification: true
              created: '2017-04-21T10:53:47Z'
              modified: '2017-04-21T10:53:47Z'
            relationships:
              owner:
                type: user
                id: 12
              resources:
                type: resource
                id: 13
              notifications:
                - type: notification
                  id: 14
                - type: notification
                  id: 15
        included:
          - type: user
            id: 12
            attributes:
              status: 0
              expiration: '2020-04-21T10:53:47Z'
              username: exampleuser
              nickname: examplenickname
              email: user@example.com
              homeDir: /
              onboarding: true
              firstLogin: false
              role: master
              timeZone: UTC
              permissions:
                download: true
                upload: true
                modify: true
                delete: true
                list: true
                changePassword: true
                share: true
                notification: true
                viewFormData: true
                deleteFormData: true
              created: '2019-05-29T20:48:57Z'
              modified: '2019-07-27T01:03:41Z'
              accessTimestamp: '2019-09-06T11:40:29Z'
          - type: resource
            id: 13
            attributes:
              hash: ec4aa9a91be282666a165899a14f29b1
              name: Shared Folder
              extension: null
              type: folder
              uploadDate: '2019-05-29T20:48:57Z'
              createdAt: '2019-05-29T20:48:57Z'
              updatedAt: '2019-05-29T20:48:57Z'
              accessedAt: '2019-05-29T20:48:57Z'
              path: /Shared Folder
              fileCount: 1
              size: 987
              previewable: false
          - type: notification
            id: 14
            attributes:
              type: shared_folder
              path: /Shared Folder
              name: Shared Folder
              action: upload
              usernames:
                - notice_user_all
              recipients:
                - id: 18
                  email: recipient@example.com
                  notificationId: 14
                  created: '2019-05-29T20:48:57Z'
                  modified: '2019-05-29T20:48:57Z'
              recipientEmails:
                - recipient@example.com
              sendEmail: 1
              readableDescription: null
              readableDescriptionWithoutPath: null
              message: null
              created: '2019-05-29T20:48:57Z'
              updated: '2019-05-29T20:48:57Z'
          - type: notification
            id: 15
            attributes:
              type: shared_folder
              path: /Shared Folder2
              name: Shared Folder2
              action: upload
              usernames:
                - notice_user_all
              recipients:
                - id: 18
                  email: recipient@example.com
                  notificationId: 14
                  created: '2019-05-29T20:48:57Z'
                  modified: '2019-05-29T20:48:57Z'
              recipientEmails:
                - recipient@example.com
              sendEmail: 1
              readableDescription: null
              readableDescriptionWithoutPath: null
              message: null
              created: '2019-05-29T20:48:57Z'
              updated: '2019-05-29T20:48:57Z'
    ShareExtendedResponseExample:
      summary: Share response with relationships
      value:
        responseStatus: 200
        data:
          id: 10
          type: share
          attributes:
            name: Example Share
            hasPassword: false
            public: true
            accessMode:
              upload: true
              download: false
              delete: false
              modify: false
            accessDescription: Upload only
            embed: true
            hash: sdg1-352
            ownerHash: hd1e-3erufo72-fsxak999
            expiration: null
            expired: false
            resent: null
            type: shared_folder
            requireEmail: false
            fileDropCreateFolders: false
            paths:
              - /example share
            recipients:
              - id: 11
                type: direct
                hash: fseowxan
                email: recipient@example.com
                sent: true
                received: false
                created: '2017-04-21T10:53:47Z'
            messages:
              - id: 23
                subject: Message subject.
                body: You have files available for download.
                created: '2017-04-21T10:53:47Z'
                modified: '2017-04-21T10:53:47Z'
            inherited: false
            status: 1
            hasNotification: true
            created: '2017-04-21T10:53:47Z'
            modified: '2017-04-21T10:53:47Z'
          relationships:
            owner:
              type: user
              id: 12
            resources:
              type: resource
              id: 13
            notifications:
              - type: notification
                id: 14
              - type: notification
                id: 15
        included:
          - type: user
            id: 12
            attributes:
              status: 0
              expiration: '2020-04-21T10:53:47Z'
              username: exampleuser
              nickname: examplenickname
              email: user@example.com
              homeDir: /
              onboarding: true
              firstLogin: false
              role: master
              timeZone: UTC
              permissions:
                download: true
                upload: true
                modify: true
                delete: true
                list: true
                changePassword: true
                share: true
                notification: true
                viewFormData: true
                deleteFormData: true
              created: '2019-05-29T20:48:57Z'
              modified: '2019-07-27T01:03:41Z'
              accessTimestamp: '2019-09-06T11:40:29Z'
          - type: resource
            id: 13
            attributes:
              hash: ec4aa9a91be282666a165899a14f29b1
              name: Shared Folder
              extension: null
              type: folder
              uploadDate: '2019-05-29T20:48:57Z'
              createdAt: '2019-05-29T20:48:57Z'
              updatedAt: '2019-05-29T20:48:57Z'
              accessedAt: '2019-05-29T20:48:57Z'
              path: /Shared Folder
              fileCount: 1
              size: 987
              previewable: false
          - type: notification
            id: 14
            attributes:
              type: shared_folder
              path: /Shared Folder
              name: Shared Folder
              action: upload
              usernames:
                - notice_user_all
              recipients:
                - id: 18
                  email: recipient@example.com
                  notificationId: 14
                  created: '2019-05-29T20:48:57Z'
                  modified: '2019-05-29T20:48:57Z'
              recipientEmails:
                - recipient@example.com
              sendEmail: 1
              readableDescription: null
              readableDescriptionWithoutPath: null
              message: null
              created: '2019-05-29T20:48:57Z'
              updated: '2019-05-29T20:48:57Z'
          - type: notification
            id: 15
            attributes:
              type: shared_folder
              path: /Shared Folder2
              name: Shared Folder2
              action: upload
              usernames:
                - notice_user_all
              recipients:
                - id: 18
                  email: recipient@example.com
                  notificationId: 14
                  created: '2019-05-29T20:48:57Z'
                  modified: '2019-05-29T20:48:57Z'
              recipientEmails:
                - recipient@example.com
              sendEmail: 1
              readableDescription: null
              readableDescriptionWithoutPath: null
              message: null
              created: '2019-05-29T20:48:57Z'
              updated: '2019-05-29T20:48:57Z'
    ShareResponseExample:
      summary: Regular share response
      value:
        responseStatus: 200
        data:
          id: 10
          type: share
          attributes:
            name: Example Share
            hasPassword: false
            public: true
            accessMode:
              upload: true
              download: false
              modify: false
              delete: false
            accessDescription: Upload only
            embed: true
            hash: sdg1-352
            ownerHash: hd1e-3erufo72-fsxak999
            expiration: null
            expired: false
            resent: null
            type: shared_folder
            requireEmail: false
            fileDropCreateFolders: false
            paths:
              - /example share
            recipients:
              - id: 11
                type: direct
                hash: fseowxan
                email: recipient@example.com
                sent: true
                received: false
                created: '2017-04-21T10:53:47Z'
            messages:
              - id: 23
                subject: Message subject.
                body: You have files available for download.
                created: '2017-04-21T10:53:47Z'
                modified: '2017-04-21T10:53:47Z'
            inherited: false
            status: 1
            hasNotification: true
            created: '2017-04-21T10:53:47Z'
            modified: '2017-04-21T10:53:47Z'
          relationships:
            owner:
              type: user
              id: 12
            resource:
              type: resource
              id: 13
            notifications:
              - type: notification
                id: 14
              - type: notification
                id: 15
  parameters:
    apiKeyParam:
      name: ev-api-key
      in: header
      required: true
      description: API key required to make the API call.
      schema:
        type: string
    accessTokenParam:
      name: ev-access-token
      in: header
      required: true
      description: Access token required to make the API call.
      schema:
        type: string
      example: 5dc97cc607985eb8da033220e7447647e7915fbf73808
servers:
  - url: 'https://accountname.exavault.com/api/v2'
    description: Replace accountname with your account name
