openapi: 3.0.3 info: title: Quatrix API description: Download and upload files or folders, share them with predefined security options, manage your account and profile settings and a lot more functionalities can be easily integrated into your application using our Quatrix APIs. Learn more how to authenticate the Quatrix session, how to construct JSON formatted API calls and what responses to expect in our [API Guide](https://docs.maytech.net/display/MD/Quatrix+API). version: 1.0.0 servers: - url: https://{account_name}.quatrix.it/{basePath} description: Base url variables: account_name: default: api description: 'this value is assigned by the service provider, in this example `gigantic-server.com`' basePath: default: api/1.0 security: - session_id: [] - bearerAuth: [] tags: - name: Auth description: Authenticate Quatrix account - name: Account description: Get general information about the current account - name: Language description: Get details about account language - name: Contact description: Create and manage contacts - name: PGP description: Generate and manage PGP keys - name: Group description: Get information about users and contacts - name: File description: Retrieve and modify files/folders (hereinafter files) - name: Upload description: Upload files - name: Password Reset description: Reset password for existing users - name: Preview description: Preview photos, videos or files - name: Profile description: Update profile information of the user - name: MFA description: Enable and disable MFA - name: Project Folder description: Create and manage project folders - name: Site Settings description: Manage service settings - name: User description: Create and manage users - name: Widget description: Set the widget - name: Share description: Create shares, quicklinks, file sharing requests - name: ActivityLog description: Track activity history - name: Service description: Get information about the service - name: Automation description: Create and administer automatic rules - name: Inbox description: Activity tracking of a logged-in contact - name: SSH-Key description: Create and manage SSH keys - name: API-Key description: Create and manage API keys - name: Branding description: Create/update email branding - name: Tags description: Manage file tags paths: /session/login: get: tags: - Auth summary: Log in and get session ID details description: | Get session information for the given session ID and log in to the account. The easiest way to authenticate is using [Basic HTTP Authentication Scheme](https://en.wikipedia.org/wiki/Basic_access_authentication). To proceed with the authorization, you need to have Quatrix account. If you don’t have the one, you can set up a free trial account [here](https://www.maytech.net/freetrial.html#trial=qtrx). As the basic authentication requires the authentication of the user with the user ID and password, the Authorization header should be constructed as follows: 1. The user email and password are combined with a single colon. (:) 2. The resulting string is encoded using a variant of Base64. 3. The authorization method and a space is then prepended to the encoded string, separated with a space (e.g. "Basic "). For example, 'test@example.com' as the user email and 'qwerty' as the password, then the field's value is the following: base64-encoding of test@example.com:qwerty, or dGVzdEBleGFtcGxlLmNvbTpxd2VydHk=. The authorization header will appear as 'Authorization: Basic dGVzdEBleGFtcGxlLmNvbTpxd2VydHk=' responses: 200: description: Login success response content: application/json: schema: $ref: '#/components/schemas/SessionLoginResp' 207: description: MFA required headers: Mfa-Code: description: MFA code schema: type: number enum: - 61 - 71 - 73 content: application/json: schema: $ref: '#/components/schemas/SessionLoginResp' 401: $ref: '#/components/responses/Unauthorized' security: - basicAuth: [] post: security: - session_id: [] tags: - Auth - MFA summary: Log in to the account using MFA description: | Use to generate a session login token in scenarios in which 2FA or PIN are required. requestBody: content: application/json: schema: title: SessionLoginPostResp required: - auth_type - code type: object properties: auth_type: type: string enum: - 2FA - PIN code: type: string description: Auth code for MFA required: true responses: 200: description: Login success response content: application/json: schema: $ref: '#/components/schemas/SessionLoginResp' 401: $ref: '#/components/responses/Unauthorized' /session/keepalive: get: tags: - Auth summary: Refresh session expiration time description: | Refresh the existing session using the ID for the session. The session will expire if there were no API actions for 15 minutes. responses: 200: description: Keepalive success response content: {} 401: $ref: '#/components/responses/Unauthorized' /session/logout: get: tags: - Auth summary: Close the user's session description: | Close the session for the currently logged in user. responses: 200: description: Logout success response content: {} /session/unblock-captcha: get: tags: - Auth summary: Unblock the session using CAPTCHA description: | Enter CAPTCHA to log in the user to the current session. parameters: - name: token in: query required: true schema: type: string responses: 200: description: Captcha is passed successfully content: application/json: schema: $ref: '#/components/schemas/SessionUnblockCaptchaResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: description: Captcha is wrong content: application/json: schema: $ref: '#/components/schemas/SessionUnblockCaptchaResp' /account/metadata: get: security: [] tags: - Account summary: Get account metadata description: | Retrieve general settings for the account e.g. status of the user, identity providers, language, set logo and banner text. responses: 200: description: Account metadata content: application/json: schema: title: AccountMetadataResp type: object properties: status: type: string title: type: string language: type: string default_logo: type: boolean /account/roles: get: tags: - Account summary: Call users of the account description: | Get the list of the current account users with their IDs, names and emails responses: 200: description: List of account roles content: application/json: schema: title: AccountRolesResp type: array items: title: AccountRolesRespItems type: object properties: id: type: string format: uuid email: type: string format: email name: type: string 401: $ref: '#/components/responses/Unauthorized' /account/logo: get: security: [] tags: - Account summary: Get account logo description: | Retrieve the logo set for the current account. responses: 200: description: Logo body content: {} /account/info: get: tags: - Account summary: Get account usage info description: | Retrieve details of the account e.g. service settings, virus scan details, available and used storage, set automations, etc. responses: 200: description: Account info content: application/json: schema: title: AccountInfoResp type: object properties: id: type: string format: uuid key: type: string base: type: boolean properties: type: object format: json description: account service properties json server_location: type: string 401: $ref: '#/components/responses/Unauthorized' /account/list: get: tags: - Account summary: List user accounts description: | Get the list with user accounts displaying the ID, host name, plan and status. responses: 200: description: Account list content: application/json: schema: title: AccountListResp type: array items: title: AccountListRespItems type: object properties: id: type: string hostname: type: string plan: type: string status: type: string current: type: boolean description: true if logged in to this account 401: $ref: '#/components/responses/Unauthorized' /languages: get: tags: - Language summary: List available languages description: | Get the list of languages that can be set for the account. English and Chinese are currently available. responses: 200: description: Language list content: application/json: schema: title: LanguagesResp type: array items: title: LanguagesRespItems type: object properties: id: type: string name: type: string filename: type: string 401: $ref: '#/components/responses/Unauthorized' /languages/default: get: security: [] tags: - Language summary: Get default language description: | Get the default language ID. English (GB) is set as the default language for Quatrix. responses: 200: description: Default language id content: application/json: schema: title: LanguagesDefaultResp type: object properties: id: type: string /contact: get: tags: - Contact summary: List user contacts description: | Retrieve the list of contacts (personal and site) available in the current account. responses: 200: description: Contact list content: application/json: schema: type: array items: $ref: '#/components/schemas/ContactResp' 401: $ref: '#/components/responses/Unauthorized' /contact/metadata/{id}: get: tags: - Contact summary: Get contact metadata description: | Retrieve contact details containing the ID, name, email, status, time it was created, PGP key details, assigned group and permissions. parameters: - $ref: '#/components/parameters/ContactId' responses: 200: description: Contact metadata content: application/json: schema: $ref: '#/components/schemas/ContactResp' 401: $ref: '#/components/responses/Unauthorized' /contact/create: post: tags: - Contact summary: Create a new contact description: | Add a new contact to the account. The contact will be assigned a unique ID that can be used to look up the contact inside of Quatrix later. requestBody: content: application/json: schema: title: ContactCreateReq required: - name - email type: object properties: name: maxLength: 511 minLength: 1 type: string email: maxLength: 254 minLength: 6 type: string description: valid email personal: type: boolean description: should be 'true' for personal contact groups: type: array description: Group IDs. Could be omitted for site contact. items: type: string format: uuid required: true responses: 201: description: Contact metadata content: application/json: schema: $ref: '#/components/schemas/ContactResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' example: msg: Email is already taken code: 32 details: {} 401: $ref: '#/components/responses/Unauthorized' /contact/edit/{id}: post: tags: - Contact summary: Edit contact metadata description: | Use to edit the existing contact details. parameters: - name: id in: path description: ID of a contact required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: ContactEditResp type: object properties: name: maxLength: 511 minLength: 1 type: string email: maxLength: 254 minLength: 6 type: string description: valid email personal: type: boolean description: should be 'true' for personal contact groups: type: array description: Group IDs. Could be omitted for site contact. items: type: string format: uuid required: false responses: 200: description: Contact metadata content: application/json: schema: $ref: '#/components/schemas/ContactResp' 401: $ref: '#/components/responses/Unauthorized' /contact/delete: post: tags: - Contact summary: Delete a contact description: | Delete an existing contact from the account. requestBody: description: IDs of a contacts content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 200: description: Contact ids content: application/json: schema: title: ContactDeleteResp type: array items: title: ContactDeleteRespItems type: object properties: id: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /contact/upgrade/{id}: get: tags: - Contact summary: Upgrade a contact description: | Convert an existing contact to the user. parameters: - name: id in: path description: ID of a contact required: true schema: type: string format: uuid responses: 200: description: User metadata content: application/json: schema: $ref: '#/components/schemas/ContactUpgradeResp' 401: $ref: '#/components/responses/Unauthorized' /contact/pgp-key/{id}: get: tags: - Contact - PGP summary: Get contact's PGP key description: | Use to retrieve PGP key generated by the contact. parameters: - name: id in: path description: ID of a contact required: true schema: type: string format: uuid responses: 200: description: PGP key metadata object content: application/json: schema: $ref: '#/components/schemas/PgpKeyResp' 401: $ref: '#/components/responses/Unauthorized' 403: description: PGP management is disabled content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 404: description: Contact doesn't have a PGP key content: application/json: schema: $ref: '#/components/schemas/ErrorModel' deprecated: true /contact/group: get: tags: - Contact - Group summary: List available contact groups. description: | Get a list of available contact groups. responses: 200: description: Contact groups metadata object content: application/json: schema: title: ContactGroupResp type: array items: title: ContactGroupRespItems type: object properties: id: type: string format: uuid name: type: string global: type: boolean readonly: type: boolean 401: $ref: '#/components/responses/Unauthorized' /file/metadata: get: tags: - File summary: Get metadata of files description: | Get information about files in the current User Home folder. parameters: - $ref: '#/components/parameters/FileContentFlag' responses: 200: description: File metadata object content: application/json: schema: $ref: '#/components/schemas/FileMetadataGetResp' 401: $ref: '#/components/responses/Unauthorized' post: tags: - File summary: Modify file metadata description: | Update file metadata with the given payload. requestBody: content: application/json: schema: title: FileMetadataPostReq required: - id type: object properties: id: type: string format: uuid mtime: type: number format: timestamp required: true responses: 200: description: File metadata content: application/json: schema: title: FileMetadataPostResp type: object properties: id: type: string description: File ID format: uuid parent_id: type: string description: File parent ID format: uuid name: type: string description: File name created: type: number description: File creation timestamp modified: type: number description: File modification timestamp modified_ms: type: number description: File modification timestamp with microseconds format: timestamp size: type: number description: File size in bytes format: int type: type: string description: File type gid: type: number description: Unix group id format: int uid: type: number description: Unix user id format: int metadata: type: object properties: {} description: File metadata json operations: type: number description: File operations bitmask format: int /file/metadata/{id}: get: tags: - File summary: Get all file metadata description: | Retrieve all metadata associated with a given file. If ID endpoint is not provided, get the metadata of a current Use Home folder. parameters: - $ref: '#/components/parameters/FileId' - $ref: '#/components/parameters/FileContentFlag' responses: 200: description: File metadata object content: application/json: schema: $ref: '#/components/schemas/FileMetadataGetResp' 401: $ref: '#/components/responses/Unauthorized' /file/info/{id}: get: tags: - File summary: Get file info description: | Retrieve the file information by the specified ID. parameters: - $ref: '#/components/parameters/FileId' responses: 200: description: File info object content: application/json: schema: title: FileInfoResp type: object properties: id: type: string description: File ID format: uuid created: type: number description: File creation timestamp modified: type: number description: File modification timestamp content_modified: type: number description: File content modification timestamp name: type: string description: File name size: type: number description: File size in bytes format: int type: type: string description: File type file_owner: type: object properties: {} description: Owner of the file action_role: type: object properties: {} description: User role who created or uploaded the file paths: type: object properties: {} description: Path and type of path to the file antivirus_check: type: string description: Antivirus check result. Null if file is not infected widget_metadata: type: object properties: {} description: The data is submitted with the file, if it was uploaded via widget 401: $ref: '#/components/responses/Unauthorized' /file/size/{id}: get: tags: - File summary: Get file size description: | Get details about the file size by the given ID. parameters: - $ref: '#/components/parameters/FileId' responses: 200: description: File size content: application/json: schema: title: FileSizeResp type: object properties: size: type: number description: File size in bytes format: int 401: $ref: '#/components/responses/Unauthorized' /file/copy: post: tags: - File summary: Copy files description: | Creates a copy of a file or a folder. The original version of the file will not be changed. On success 202 response it returns “job_id”. To check the result, see the API call “job/status". requestBody: content: application/json: schema: $ref: '#/components/schemas/CopyMoveFilesReq' required: true responses: 202: description: Job response object content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/delete: post: tags: - File summary: Delete files description: | Move a file or folder to Trash. If you delete less than 10 files, it returns 200 and the IDs of the deleted files. In case you delete more than 10 files, the API returns 202 response. requestBody: content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 200: description: File ids if requested ids <= 10 content: application/json: schema: $ref: '#/components/schemas/IdsResp' 202: description: Job response object if requested ids > 10 content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/empty-trash/{id}: post: tags: - File summary: Empty trash description: | Permanently delete all files from Trash by the given Trash ID. If the ID is not provided, empty the Trash of the logged-in user. parameters: - $ref: '#/components/parameters/FileId' responses: 200: description: Empty trash response content: application/json: schema: title: EmptyTrashResp type: array items: title: EmptyTrashRespItems type: object properties: id: type: string format: uuid source_id: type: string format: uuid dest_id: type: string format: uuid 401: $ref: '#/components/responses/Unauthorized' /file/move: post: tags: - File summary: Move files description: | Move a file or folder from one location to another. requestBody: content: application/json: schema: $ref: '#/components/schemas/CopyMoveFilesReq' required: true responses: 200: description: File ids if requested ids <= 10 content: application/json: schema: $ref: '#/components/schemas/IdsResp' 202: description: Job response object if requested ids > 10 content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/makedir: post: tags: - File summary: Create a new folder description: | Create a new folder requestBody: content: application/json: schema: title: MakeDirReq type: object properties: target: type: string format: uuid name: type: string format: filename resolve: type: boolean default: true required: true responses: 201: description: File metadata object content: application/json: schema: $ref: '#/components/schemas/FileResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/csv/{id}: get: tags: - File summary: Download CSV file with Folder Content description: | Return CSV file with information containing file metadata. It contains the path for each file displaying the hierarchy of files. parameters: - name: id in: path description: File action ID required: true schema: type: string format: uuid responses: 200: description: Folder Map content: text/csv: schema: title: FileCsvResp type: object properties: Path: type: string description: File Path Name: type: string description: File name Size: type: number description: File Size Type: type: string description: File Type (F-file, D-directory, T-trash) enum: - D - F - T Created: type: string description: File creation time Modified: type: string description: File modification time Content_modified: type: string description: File content modification time Created_by: type: object properties: {} description: Who created a file Owner: type: object properties: {} description: Who owns a file description: File content 400: description: Parameter Error content: text/csv: schema: $ref: '#/components/schemas/ErrorModel' 401: description: Unauthorized content: text/csv: schema: $ref: '#/components/schemas/ErrorModel' /file/rename/{id}: post: tags: - File summary: Rename a file description: | Change a file name. parameters: - $ref: '#/components/parameters/FileId' requestBody: content: application/json: schema: title: FileRenameReq type: object properties: name: type: string format: filename resolve: type: boolean default: true required: true responses: 200: description: File metadata object content: application/json: schema: title: FileRenameResp type: object properties: id: type: string description: File ID format: uuid created: type: number description: File creation timestamp modified: type: number description: File modification timestamp name: type: string description: File name parent_id: type: string description: File parent ID format: uuid size: type: number description: File size in bytes format: int type: type: string description: File type metadata: type: object properties: {} description: File metadata json operations: type: number description: File operations bitmask format: int old_name: type: string description: File name before rename 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/tags/{id}: get: tags: - File - Tags summary: Get a list of file tags description: | Retrieve a list of available file tags. operationId: getTagsByFileID parameters: - $ref: '#/components/parameters/FileId' responses: 200: description: List of file tags content: application/json: schema: type: array items: $ref: '#/components/schemas/FileTagResp' 401: $ref: '#/components/responses/Unauthorized' /file/add-tag/{id}: post: tags: - File - Tags summary: Add a file tag description: | Add a tag to filter the file list. operationId: addTagByFileID parameters: - $ref: '#/components/parameters/FileId' requestBody: content: application/json: schema: title: FileAddTagReq type: object properties: type: type: string value: type: string required: true responses: 200: description: File tag content: application/json: schema: $ref: '#/components/schemas/FileTagResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/tags/parent/{id}: post: tags: - File - Tags summary: Get a list of tags for files in folder description: | Retrieve a list of available file tags. operationId: getTagsByParentID parameters: - name: id in: path description: ID of a parent(folder) required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: FileTagTypes type: object properties: tag_types: type: array items: type: string enum: - text - from - to default: - text required: false responses: 200: description: List of file tags content: application/json: schema: type: array items: $ref: '#/components/schemas/FileTagByParentResp' 401: $ref: '#/components/responses/Unauthorized' /file/download-link: post: tags: - File summary: Get download link description: | Get a unique key for downloading files. requestBody: content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 200: description: Download link id content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/download/{id}: get: tags: - File summary: Download file description: | Download a file or files by given ID. Multiple file download returns files in Zip format. parameters: - name: id in: path description: ID of a file download link required: true schema: type: string format: uuid responses: 200: description: File content 401: description: Unauthorized content: application/octet-stream: schema: $ref: '#/components/schemas/ErrorModel' /file/search: post: tags: - File summary: Search files description: | Search any file by the given directory. requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchReq' required: true responses: 200: description: Files list content: application/json: schema: type: array items: $ref: '#/components/schemas/FileSearchResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/preview/{id}: get: tags: - File - Preview summary: Get a file preview description: | Retrieve a file preview by the given ID of the file. parameters: - $ref: '#/components/parameters/FileId' responses: 200: description: Preview metadata content: application/json: schema: title: FilePreviewResp type: object properties: type: type: string enum: - image - video - document uri: type: string description: URI to get file preview by a preview type. 401: $ref: '#/components/responses/Unauthorized' /file/diff/{id}: get: tags: - File summary: Display changes of the file description: | Get file changes for specified period. parameters: - $ref: '#/components/parameters/FileId' - name: from in: query required: true schema: type: number - name: to in: query schema: type: number responses: 200: description: File diffs list content: application/json: schema: title: FileDiffResp type: object properties: from: type: number to: type: number data: type: array items: type: object properties: id: type: string format: uuid action: type: string parent_id: type: string format: uuid name: type: string type: type: string size: type: number format: int64 modified: type: number operations: type: number format: int metadata: type: object properties: {} 401: $ref: '#/components/responses/Unauthorized' /file/modify: post: tags: - File - Upload summary: Get file modification link description: | Get file modification link requestBody: content: application/json: schema: title: FileModifyReq required: - id type: object properties: id: type: string format: uuid truncate: type: number format: integer required: true responses: 200: description: Modify link metadata content: application/json: schema: title: FileModifyResp type: object properties: name: type: string file_id: type: string format: uuid parent_id: type: string format: uuid upload_key: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /group: get: tags: - Group summary: List available user groups description: | Get a list of available contact groups. responses: 200: description: Group list content: application/json: schema: type: array items: $ref: '#/components/schemas/GroupResp' 401: $ref: '#/components/responses/Unauthorized' /group/metadata/{id}: get: tags: - Group summary: Get group metadata description: | Retrieve information about the group by the specified group ID. parameters: - name: id in: path description: ID of a group required: true schema: type: string format: uuid responses: 200: description: Group metadata content: application/json: schema: $ref: '#/components/schemas/GroupResp' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/recipients: post: tags: - PGP summary: Get recipients' PGP keys description: | Get public PGP keys for given recipients requestBody: content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 200: description: PGP keys list content: application/json: schema: title: PgpKeyRecipientsResp type: array items: title: PgpKeyRecipientsRespItems type: object properties: id: type: string format: uuid name: type: string created: type: integer format: timestamp modified: type: integer format: timestamp public: type: string format: base64 recipient_id: type: string format: uuid email: type: string format: email 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/metadata/{id}: get: tags: - PGP summary: Get PGP key metadata description: | Retrieve information about PGP key containing the ID, name and email of the creator, date it was created and modified, public and private keys. parameters: - name: id in: path description: ID of a PGP key required: true schema: type: string format: uuid responses: 200: description: PGP key metadata content: application/json: schema: $ref: '#/components/schemas/PgpKeyResp' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/create: post: tags: - PGP summary: Create PGP key description: | Generate a new PGP key requestBody: content: application/json: schema: title: PgpCreateReq required: - name - public type: object properties: name: type: string public: type: string private: type: string required: true responses: 201: description: PGP key metadata content: application/json: schema: $ref: '#/components/schemas/PgpKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/edit/{id}: post: tags: - PGP summary: Edit PGP key description: | Edit an existing PGP key. parameters: - name: id in: path description: ID of a PGP key required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: PgpEditReq type: object properties: name: type: string public: type: string private: type: string required: false responses: 200: description: PGP key metadata content: application/json: schema: $ref: '#/components/schemas/PgpKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/delete/{id}: get: tags: - PGP summary: Delete PGP key description: | Delete an existing PGP key. parameters: - name: id in: path description: ID of a PGP key required: true schema: type: string format: uuid responses: 200: description: PGP key id content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' /pgp-key/request: post: tags: - PGP summary: Request PGP key description: | Send PGP key generation request to a user or a contact. requestBody: content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 202: description: Jobs response object content: application/json: schema: type: object properties: jobs: type: array items: type: object properties: role_id: type: string description: ID of the user receiving the request format: uuid id: type: string description: the corresponding job ID format: uuid 401: $ref: '#/components/responses/Unauthorized' /key-request/metadata/{id}: get: tags: - PGP summary: Get PGP key request metadata description: | Retrieve details about PGP key generation request. parameters: - name: id in: path description: ID of the PGP key request required: true schema: type: string format: uuid responses: 200: description: PGP key request metadata content: application/json: schema: title: KeyRequestMetadataResp type: object properties: id: type: string format: uuid sender_name: type: string sender_email: type: string user_name: type: string user_email: type: string locale: type: string is_contact: type: boolean 401: $ref: '#/components/responses/Unauthorized' /key-request/respond/{id}: post: tags: - PGP summary: Respond to PGP key request description: | Respond to PGP key request with PGP key parameters: - name: id in: path description: ID of a PGP key request required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: KeyRequestRespondReq required: - name - public type: object properties: name: type: string public: type: string private: type: string required: true responses: 202: description: Job response object content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /reset-password/request: post: security: [] tags: - Password Reset summary: Request password reset description: | Send an email with the request to reset password (including the link) to the user. requestBody: content: application/json: schema: title: ResetPasswordRequestReq required: - email type: object properties: email: type: array items: type: string required: true responses: 200: description: Response object for anonymous user content: application/json: schema: title: ResetPasswordRequestResp type: object properties: email: type: array items: type: string 202: description: Job response object for authorized user content: application/json: schema: type: object properties: status: type: string 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /reset-password/metadata/{id}: get: security: [] tags: - Password Reset summary: Get password reset request metadata description: | Retrieve information about the password reset request. parameters: - name: id in: path description: ID of the password reset request required: true schema: type: string format: uuid responses: 200: description: Password reset request id content: application/json: schema: title: ResetPasswordMetadataResp type: object properties: id: type: string format: uuid multiple_accounts: type: boolean 401: $ref: '#/components/responses/Unauthorized' /reset-password/reset/{id}: post: security: [] tags: - Password Reset summary: Reset password description: | Change the password based on the existing password reset request. parameters: - name: id in: path description: ID of a password reset request required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: ResetPasswordResetReq required: - password type: object properties: password: type: string required: true responses: 200: description: Password reset request id content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /preview/{id}: get: tags: - Preview summary: Get binary preview data description: | Get a preview with the response content type based on the file type e.g. image/jpeg for images. parameters: - name: id in: path description: File ID required: true schema: type: string format: uuid responses: 200: description: Binary preview data 401: description: Unauthorized content: image/jpeg: schema: $ref: '#/components/schemas/ErrorModel' video/mp4: schema: $ref: '#/components/schemas/ErrorModel' application/pdf: schema: $ref: '#/components/schemas/ErrorModel' /profile: get: tags: - Profile summary: Get profile metadata description: | Retrieve profile information of the current user. responses: 200: description: Profile metadata content: application/json: schema: title: ProfileResp type: object properties: id: type: string format: uuid name: type: string email: type: string super_admin: type: string home_id: type: string format: uuid operations: type: number format: integer max_file_size: type: number format: integer max_files_per_share: type: number format: integer plan: type: string is_contact: type: boolean language: type: string channel_id: type: string format: uuid account_id: type: string format: uuid storage_id: type: string format: uuid created: type: number modified: type: number quota: type: number format: integer status: type: string uid: type: number format: integer gid: type: number format: integer has_key: type: boolean pgp_enabled: type: boolean message_signature: type: string outgoing_id: type: string incoming_id: type: string services: type: array items: $ref: '#/components/schemas/ShortUserService' share_types: type: object properties: restricted_share: type: boolean public_share: type: boolean tracked_share: type: boolean unique_login: type: string sftp_login: type: string auth_methods: type: array items: type: string account_status: type: string enum: - A - S sftp_url: type: string forced_auth: type: array items: type: string 401: $ref: '#/components/responses/Unauthorized' /profile/set: post: tags: - Profile summary: Update profile metadata description: | Edit profile information of the current user including name, email, language and message signature. requestBody: content: application/json: schema: title: ProfileSetReq type: object properties: name: type: string email: type: string language: type: string message_signature: type: string required: false responses: 200: description: Updated profile metadata content: application/json: schema: title: ProfileSetResp type: object properties: name: type: string email: type: string language: type: string message_signature: type: string 401: $ref: '#/components/responses/Unauthorized' /profile/set-password: post: tags: - Profile summary: Change profile password description: | Change the account password for the logged-in user. requestBody: content: application/json: schema: title: ProfileSetPasswordReq required: - new_password - password type: object properties: password: type: string description: current password in base64 new_password: type: string description: new password in base64 required: true responses: 200: description: Change profile password content: application/json: schema: title: ProfileSetPasswordResp type: object properties: email: type: string 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /profile/info: get: tags: - Profile summary: Retrieve additional profile info description: | Get additional details about the account e.g. number of used and available user licenses. responses: 200: description: Profile info content: application/json: schema: title: ProfileInfoResp type: object properties: user_used: type: number format: integer user_limit: type: number format: integer acc_used: type: number format: integer acc_limit: type: number format: integer 401: $ref: '#/components/responses/Unauthorized' /profile/2fa/generate: get: tags: - Profile summary: Generate a new 2FA code description: | Generate a new verification code for 2FA with QR code. responses: 200: description: Image in base64 with QR code 401: description: Unauthorized content: application/octet-stream: schema: $ref: '#/components/schemas/ErrorModel' /profile/set-mfa: post: tags: - Profile - MFA summary: Enable MFA for the logged-in user description: | Turn on MFA (multifactor authentication) for the user who requested 2FA activation while editing their profile. MFA adds an additional secure step on the way to log in to the account by using one more authentication method beyond the email and password. requestBody: content: application/json: schema: title: ProfileSetMfaReq required: - auth_type - code type: object properties: auth_type: type: string enum: - 2FA - PIN code: type: string description: Auth code for MFA required: true responses: 200: description: IDs of closed sessions content: application/json: schema: title: ProfileSetMfaResp type: object properties: session_ids: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /profile/remove-mfa: post: tags: - Profile - MFA summary: Disable MFA for the logged-in user description: | Turn off MFA (multifactor authentication) for the user who requested 2FA deactivation while editing their profile. This operation is possible if it was not forced by the administrator. requestBody: content: application/json: schema: title: ProfileRemoveMfaReq required: - auth_type type: object properties: auth_type: type: string enum: - 2FA - PIN required: true responses: 200: description: success response content: application/json: schema: title: ProfileRemoveMfaResp type: object properties: status: type: string description: Action status enum: - success 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder: get: tags: - Project Folder summary: List available project folders for a logged-in user description: | Retrieve a list of all project folders of a current logged-in user. responses: 200: description: Project folders list content: application/json: schema: title: ProjectFoldersListResp type: array items: title: ProjectFoldersListRespItem type: object properties: owner: $ref: '#/components/schemas/ProjectOwner' project_id: type: string format: uuid ctime: type: number format: integer name: type: string file_id: type: string format: uuid 401: $ref: '#/components/responses/Unauthorized' /project-folder/create: post: tags: - Project Folder summary: Create a project folder description: | Create a new project folder for a user. Learn more how to create a project folder in our [API guide](https://docs.maytech.net/display/MD/Creating+Project+Folders). requestBody: content: application/json: schema: title: PfCreateReq required: - file_id - name - users_permissions type: object properties: created: type: number name: type: string file_id: type: string format: uuid users_permissions: type: array items: $ref: '#/components/schemas/UserPermissionReq' notify: type: boolean default: false required: true responses: 201: description: Project Folder content: application/json: schema: title: PfCreateResp type: object properties: id: type: string format: uuid name: type: string 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder/project-users: post: tags: - Project Folder summary: List all project folders for given users description: | Get a list of all project folders for given users. requestBody: content: application/json: schema: title: PfUsersListReq required: - ids type: object properties: ids: type: array items: type: string format: uuid required: true responses: 200: description: Project Folder content: application/json: schema: title: PfUsersListResp type: array items: title: PfUsersListRespItems type: object properties: operations: type: number format: integer owner: type: boolean project_id: type: string format: uuid user_id: type: string format: uuid notify: type: boolean 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder/users/{id}: get: tags: - Project Folder summary: List users of the project folder description: | Retrieve a list of users by given project folder ID. parameters: - name: id in: path description: project folder ID required: true schema: type: string format: uuid responses: 200: description: Project Folder Users List content: application/json: schema: title: PfUsersResp type: array items: $ref: '#/components/schemas/UserPermissionResp' 401: $ref: '#/components/responses/Unauthorized' /project-folder/set-users: post: tags: - Project Folder summary: Add users to project folders. description: | Add users to specified project folders. If the users exist in the given project folder, their permissions will be updated based on given parameters. requestBody: content: application/json: schema: title: PfSetUsersReq required: - users type: object properties: users: type: array items: type: object properties: user_id: type: string format: uuid params: type: array items: type: object properties: operations: type: number format: integer project_id: type: string format: uuid notify: type: boolean default: true required: true responses: 200: description: Set users content: application/json: schema: title: PfSetUsersResp type: array items: title: PfSetUsersRespItems type: object properties: operations: type: number description: File operations bitmask format: int project_id: type: string format: uuid user_id: type: string format: uuid notify: type: boolean 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: Users not set to project folders content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /project-folder/metadata/{id}: get: tags: - Project Folder summary: Get project folder metadata description: | Retrieve the metadata of the project folder. parameters: - name: id in: path description: project folder ID required: true schema: type: string format: uuid responses: 200: description: Project folder metadata content: application/json: schema: title: PfMetadataResp type: object properties: folder_name: type: string format: text created: type: number creator: type: object properties: {} users: type: array items: $ref: '#/components/schemas/UserPermissionResp' 401: $ref: '#/components/responses/Unauthorized' /project-folder/add-users/{id}: post: tags: - Project Folder summary: Add users to the project folder description: | Add users to the specified project folder. parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: PfAddUsersReq required: - users_permissions type: object properties: users_permissions: type: array items: $ref: '#/components/schemas/UserPermissionReq' required: true responses: 200: description: Project Folder Users List content: application/json: schema: title: PfAddUsersResp type: array items: $ref: '#/components/schemas/UserPermissionResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder/edit-users/{id}: post: tags: - Project Folder summary: Update users’ permissions of the project folder description: | Edit users’ permissions of the given project folder. parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: PfEditUsersReq required: - users_permissions type: object properties: users_permissions: type: array items: $ref: '#/components/schemas/UserPermissionReq' notify: type: boolean default: false required: true responses: 200: description: Project Folder Users List content: application/json: schema: title: PfEditUsersResp type: array items: $ref: '#/components/schemas/UserPermissionResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder/delete-users/: post: tags: - Project Folder summary: Remove project folder users description: | Delete users of the given project folder. requestBody: content: application/json: schema: title: PfDeleteUsersReq required: - users type: object properties: users: title: PfDeleteUsersReqItems type: array items: type: object properties: user_id: type: string format: uuid project_id: type: array items: type: string format: uuid required: true responses: 200: description: Project Folder Users IDs content: application/json: schema: title: PfDeleteUsersResp type: array items: title: PfDeleteUsersRespItems type: object properties: user_id: type: string format: uuid project_id: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /project-folder/delete/{id}: get: tags: - Project Folder summary: Convert a project folder to a folder description: | Convert the project folder to regular folder keeping the same name and location. parameters: - name: id in: path required: true schema: type: string format: uuid responses: 200: description: Project Folder content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' /settings: get: tags: - Site Settings summary: Get site settings description: | Retrieve information about the service settings adjusted for the account e.g. language, banner text, email footer, billing emails, PGP, permitted share types. responses: 200: description: Site Settings content: application/json: schema: $ref: '#/components/schemas/SettingsResp' 401: $ref: '#/components/responses/Unauthorized' /settings/set: post: tags: - Site Settings summary: Set site settings description: | Update service settings for the account e.g. enable or disable PGP, force 2FA for all users of the account. requestBody: content: application/json: schema: title: SettingsSetReq type: object properties: title: type: string bcc: type: array items: type: string billing_emails: type: array items: type: string email_footer: type: string language: type: string pgp_enabled: type: boolean share_types: type: object properties: public_share: type: boolean tracked_share: type: boolean restricted_share: type: boolean auth_methods: type: array items: type: string enum: - IP - 2FA ip_whitelist: type: array description: Available formats 1.1.1.1, 1.1.1.1\32, 1.1.1.1-255 items: type: string required: true responses: 200: description: Site Settings content: application/json: schema: $ref: '#/components/schemas/SettingsResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /settings/upload-logo-link: get: tags: - Site Settings - Upload summary: Get a new logo upload link description: | Get a unique key for uploading a new logo responses: 200: description: Upload logo link id content: application/json: schema: title: SettingsUploadLogoLinkResp type: object properties: upload_key: type: string format: uuid 401: $ref: '#/components/responses/Unauthorized' /settings/auth-methods: get: tags: - Site Settings summary: Get available authentication methods description: | Get available authentication methods that can be set for the account. responses: 200: description: Account auth-methods settings content: application/json: schema: title: SettingsAuthMethodsResp type: array items: title: SettingsAuthMethodsRespItems type: object properties: rank: type: integer id: type: string format: uuid key: type: string 401: $ref: '#/components/responses/Unauthorized' /upload/link: post: tags: - Upload summary: Get file upload link description: | Retrieve a link for uploading a file. requestBody: content: application/json: schema: title: UploadLinkReq required: - name - parent_id type: object properties: name: type: string format: filename parent_id: type: string description: File parent ID format: uuid resolve: type: boolean default: true file_size: type: number required: true responses: 200: description: Upload link metadata content: application/json: schema: title: UploadLinkResp type: object properties: name: type: string file_id: type: string format: uuid parent_id: type: string format: uuid upload_key: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /upload/finalize/{id}: get: tags: - Upload summary: Finalize chunked file upload description: | Complete the chunked upload of a file. parameters: - name: id in: path description: Upload key required: true schema: type: string format: uuid - name: mtime in: query description: File modification timestamp schema: type: number format: timestamp responses: 200: description: Upload link metadata content: application/json: schema: title: UploadFinalizeResp type: object properties: id: type: string format: uuid parent_id: type: string format: uuid size: type: number format: integer modified: type: number description: File modification timestamp format: timestamp 401: $ref: '#/components/responses/Unauthorized' /user: get: tags: - User summary: List users description: | Retrieve a list of users responses: 200: description: Users list content: application/json: schema: type: array items: $ref: '#/components/schemas/UserResp' 401: $ref: '#/components/responses/Unauthorized' /user/metadata/{id}: get: tags: - User summary: Get user metadata description: | Retrieve user’s metadata by given user ID. parameters: - name: id in: path description: ID of a user required: true schema: type: string format: uuid responses: 200: description: User metadata content: application/json: schema: $ref: '#/components/schemas/UserResp' 401: $ref: '#/components/responses/Unauthorized' /user/create: post: tags: - User summary: Create a user description: | Add a new user to the account. The user receives an email where the password can be set. requestBody: content: application/json: schema: title: UserCreateReq required: - email - name type: object properties: name: type: string email: type: string parent_id: type: string format: uuid quota: type: number format: integer status: type: string enum: - A - D super_admin: type: string enum: - Y - N home_id: type: string format: uuid user_operations: type: number format: integer home_operations: type: number format: integer language: type: string groups: type: array items: type: string format: uuid services: type: array items: type: string format: uuid sftp_login: type: string notes: type: string required: true responses: 201: description: User metadata content: application/json: schema: $ref: '#/components/schemas/UserResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' example: msg: Email is already taken code: 31 details: {} 401: $ref: '#/components/responses/Unauthorized' /user/edit: post: tags: - User summary: Update metadata of users description: | Edit the existing users’ metadata. An email can be edited only for one user using one API call. In this case both old and new emails will be notified about the change. requestBody: content: application/json: schema: title: UserEditReq required: - ids type: object properties: ids: type: array items: type: string format: uuid name: type: string email: type: string parent_id: type: string format: uuid quota: type: number format: integer status: type: string enum: - A - D super_admin: type: string enum: - Y - N home_id: type: string format: uuid user_operations: type: number format: integer home_operations: type: number format: integer language: type: string groups: type: array items: type: string format: uuid services: type: array items: type: string format: uuid sftp_login: type: string notes: type: string required: true responses: 200: description: User metadata content: application/json: schema: title: UserEditResp type: array items: $ref: '#/components/schemas/UserResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /user/delete: post: tags: - User summary: Delete users description: | Remove users from the account by specified user IDs. requestBody: content: application/json: schema: title: UserDeleteReq required: - ids type: object properties: ids: type: array items: type: string format: uuid delete_home: type: boolean required: true responses: 202: description: Job response object content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /user/pgp-key/{id}: get: tags: - User - PGP summary: Get user's PGP key description: | Use to retrieve PGP key generated by the user. parameters: - name: id in: path description: ID of a user required: true schema: type: string format: uuid responses: 200: description: PGP key metadata object content: application/json: schema: $ref: '#/components/schemas/PgpKeyResp' 401: $ref: '#/components/responses/Unauthorized' /user/group: get: tags: - User - Group summary: List all user groups description: | Retrieve a list of all user groups that can be set for users. responses: 200: description: Groups list content: application/json: schema: title: UserGroupResp type: array items: $ref: '#/components/schemas/Group' 401: $ref: '#/components/responses/Unauthorized' /user/signup: post: security: [] tags: - User summary: Register a new user description: | Set password for a new user. requestBody: content: application/json: schema: title: UserSignupReq required: - email - password type: object properties: email: type: string password: type: string format: base64 required: true responses: 200: description: Successful signup 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' example: msg: Email is already taken code: 31 details: {} /user/set-mfa: post: tags: - User - MFA summary: Enable MFA for users description: | Activate MFA for a user by specified user ID. If auth type is 2FA, the user will be forced to use MFA. All logged-in sessions of users will be stopped. requestBody: content: application/json: schema: title: UserSetMfaReq required: - auth_type - code - ids type: object properties: ids: type: array items: type: string format: uuid auth_type: type: string enum: - 2FA - PIN code: type: string description: Auth code for MFA required: true responses: 200: description: success response content: application/json: schema: title: UserSetMfaResp type: object properties: status: type: string description: Action status enum: - success 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /user/remove-mfa: post: tags: - User - MFA summary: Disable MFA for users description: | Deactivate MFA for a user by specified user ID. If 2FA is forced for the account, the user won’t be able to deactivate it using this API call. requestBody: content: application/json: schema: title: UserRemoveMfaReq required: - auth_type - ids type: object properties: ids: type: array items: type: string format: uuid auth_type: type: string enum: - 2FA - PIN required: true responses: 200: description: success response content: application/json: schema: title: UserRemoveMfaResp type: object properties: status: type: string description: Action status enum: - success 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /user/reset-mfa: post: tags: - User - MFA summary: Update existing MFA settings for users description: | Remove already set MFA code values, the MFA will be left activated. All logged-in sessions of users will be stopped. On the next login the user should set MFA again. requestBody: content: application/json: schema: title: UserResetMfaReq required: - auth_type - ids type: object properties: ids: type: array items: type: string format: uuid auth_type: type: string enum: - 2FA required: true responses: 200: description: success response content: application/json: schema: title: UserResetMfaResp type: object properties: status: type: string description: Action status enum: - success 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /widget/metadata/{id}: get: security: [] tags: - Widget summary: Get all widget metadata description: | Retrieve available metadata of the widget. parameters: - $ref: '#/components/parameters/WidgetId' responses: 200: description: Successful response content: application/json: schema: title: WidgetMetadataResp type: object properties: id: type: string description: Action status format: uuid captcha_passed: type: boolean description: Is captcha passed in current session files_remaining: type: integer description: Session upload files limit 404: description: Widget does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /widget/makedir/{id}: post: security: [] tags: - Widget summary: Create a subfolder in the widget folder description: | Creates a new folder in the widget directory and returns the ID that can be used to upload a file or create a subfolder. If the folder exists already under the selected parent, it will return the existing ID. Required passed captcha parameters: - $ref: '#/components/parameters/WidgetId' requestBody: content: application/json: schema: title: WidgetMakedirReq type: object properties: name: type: string description: folder name parent_id: type: string description: parent folder id, if none - widget directory is used format: uuid required: true responses: 200: description: Successful response content: application/json: schema: title: WidgetMakedirResp type: object properties: id: type: string format: uuid parent_id: type: string description: File parent ID format: uuid modified: type: number description: File modification timestamp name: type: string description: File name /widget/upload-link/{id}: post: security: [] tags: - Widget summary: Get widget upload link description: | Retrieve a link for uploading the file via widget. Required passed captcha parameters: - $ref: '#/components/parameters/WidgetId' requestBody: content: application/json: schema: title: WidgetUploadLinkReq type: object properties: file_size: type: number name: type: string parent_id: type: string format: uuid payload: type: object properties: {} required: true responses: 200: description: Upload link metadata content: application/json: schema: title: WidgetUploadLinkResp type: object properties: upload_key: type: string format: uuid /widget/finalize-upload/{id}: get: security: [] tags: - Widget summary: Finalize chunked upload of the widget description: | Complete the chunked upload of the widget. parameters: - name: id in: path description: Upload key required: true schema: type: string format: uuid responses: 200: description: Upload link metadata content: application/json: schema: title: WidgetFinalizeUploadResp type: object properties: id: type: string format: uuid parent_id: type: string format: uuid size: type: number format: integer /widget/unblock-captcha/{id}: post: tags: - Widget summary: Unblock the widget CAPTCHA description: | Unblock the widget CAPTCHA parameters: - $ref: '#/components/parameters/WidgetId' requestBody: content: application/json: schema: title: WidgetUnblockCaptchaReq type: object properties: token: type: string required: true responses: 200: description: Successful response content: application/json: schema: title: WidgetMakedirResp type: object properties: valid: type: boolean files_remaining: type: integer /share/recipients: get: tags: - Share summary: List all contacts for the share description: | Retrieve a list of all recipients that can receive the share. parameters: - name: email in: query description: Search emails by the specified beginning. schema: type: string responses: 200: description: Recipient list content: application/json: schema: title: ShareRecipientsResp type: object properties: id: type: string format: uuid name: type: string email: type: string has_key: type: boolean 401: $ref: '#/components/responses/Unauthorized' /share/create: post: tags: - Share summary: Create a file share description: | Create a share with files. File share types: - P (public) - Anyone can download. Limited tracking - IP address only. - T (tracked) - Any registered user/recipient can download. Full tracking. - C (restricted) - Only the registered email recipient(s) can download. Full tracking. requestBody: content: application/json: schema: title: ShareCreateReq required: - contacts - files - folder_id type: object properties: folder_id: type: string files: type: array items: type: string format: uuid contacts: type: array items: type: string format: uuid subject: type: string message: type: string expires: type: number description: it should be larger than the "activates" parameter. format: timestamp activates: type: number format: timestamp return_files: type: boolean request_auth: type: boolean description: Defines if return files will require authentication for public share default: true pgp_encrypted: type: boolean description: for PGP encrypted shares PGP keys should be generated by the sender and the recipient. PGP encryption is disabled for public shares. return_pgp_encrypted: type: boolean message_signature: type: string notify: type: boolean share_type: type: string default: T enum: - P - T - C pin: type: string format: base64 send_email: type: boolean description: create a share with sending an email or just create a share default: false required: true responses: 201: description: Share ID content: application/json: schema: title: ShareCreateResp type: object properties: id: type: string format: uuid activates: type: number 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /share/login-pin: post: tags: - Share summary: Log in with PIN to access a share description: | Log in using a previously generated PIN that was sent while creating the share to have access to it. requestBody: content: application/json: schema: title: ShareLoginPinReq required: - id - pin type: object properties: id: type: string format: uuid pin: type: string format: base64 required: true responses: 200: description: Logged in with PIN successfully 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /quicklink/create: post: tags: - Share summary: Create a quicklink description: | Create a quicklink with the usage behavior the same as a public share. requestBody: content: application/json: schema: title: QuicklinkCreateReq required: - files type: object properties: subject: type: string files: type: array items: type: string format: uuid pin: type: string format: base64 required: true responses: 201: description: Share ID, expires content: application/json: schema: title: QuicklinkCreateResp type: object properties: id: type: string format: uuid expires: type: number format: timestamp activates: type: number format: timestamp files: type: array items: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /quicklink/revoke/{id}: get: tags: - Share summary: Revoke a quicklink description: | Disable access to a quicklink. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: Revoked share action ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' /quicklink/login-pin: post: tags: - Share summary: Log in with PIN to access a quicklink description: | Log in using a previously generated PIN that was sent while creating the quicklink to have access to it. requestBody: content: application/json: schema: title: QuicklinkLoginPinReq required: - id - pin type: object properties: id: type: string format: uuid pin: type: string format: base64 required: true responses: 200: description: Logged in with PIN successfully 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /tracking/activity: get: tags: - ActivityLog summary: Get activity log description: | Retrieve the history of actions by the specified user (all visible users) for a given period. parameters: - name: id in: query description: Log ID schema: type: string format: uuid - name: user_id in: query description: User ID schema: type: string format: uuid - name: limit in: query description: Rows per page schema: maximum: 1000 minimum: 1 type: number default: 100 - name: from in: query description: UTC timestamp schema: type: number default: 0 - name: to in: query description: UTC timestamp schema: type: number responses: 200: description: Activity log list content: application/json: schema: title: TrackingActivityResp type: array items: title: TrackingActivityRespItems type: object properties: id: type: string format: uuid email: type: string user_name: type: string description: User name user_status: type: string enum: - A - D - R timestamp: type: number format: integer protocol: type: string enum: - web - SFTP event: type: string enum: - share - file - files-return action: type: string enum: - create - revoke - created-link - sent-email - replied - upload - download - move-rename - delete - makedir share_status: type: string enum: - A - D - null payload: type: object properties: {} description: other information(share id, files, etc) duration: type: number description: duration in seconds format: float 401: $ref: '#/components/responses/Unauthorized' /tracking/csv: get: tags: - ActivityLog summary: Download CSV file with activity log description: | Download a file with full activity log in the CSV format by given user ID. If the user ID is not specified, the activity of all manageable users should be displayed. The content of the file will display all actions performed in the account for a specified period. parameters: - name: user_id in: query description: User ID schema: type: string format: uuid - name: from in: query description: UTC timestamp schema: type: number - name: to in: query description: UTC timestamp schema: type: number responses: 200: description: File content content: text/csv: schema: title: TrackingCSVResp type: array items: title: TrackingCSVRespItems type: object properties: Time: type: string Event: type: string enum: - share - file - files-return Action: type: string enum: - create - revoke - created-link - sent-email - replied - upload - download - move-rename - rename - delete - makedir - copy Client IPs: type: string User name: type: string Email: type: string User status: type: string enum: - A - D - R Protocol: type: string enum: - web - SFTP Payload: type: object properties: {} description: other information(share id, files, etc) 401: description: Unauthorized content: text/csv: schema: $ref: '#/components/schemas/ErrorModel' /tracking/files/{id}: get: tags: - ActivityLog summary: Get share action files description: | Retrieve a list of shared files by specified share action ID with the number of downloads. parameters: - name: id in: path description: Share ID required: true schema: type: string format: uuid responses: 200: description: List of shared files content: application/json: schema: title: TrackingFilesResp type: array items: title: TrackingFilesRespItems type: object properties: id: type: string format: uuid name: type: string size: type: number type: type: string downloads: type: number 401: $ref: '#/components/responses/Unauthorized' /tracking/downloads/{id}: get: tags: - ActivityLog summary: Get shared file downloads description: | Retrieve information about download actions of the file. parameters: - name: id in: path description: Shared file ID - File ID from /tacking/files/id required: true schema: type: string format: uuid responses: 200: description: List of share file downloads content: application/json: schema: title: TrackingDownloadsResp type: array items: title: TrackingDownloadsRespItems type: object properties: ip: type: string name: type: string size: type: number duration: type: number time: type: number recipient: type: string 401: $ref: '#/components/responses/Unauthorized' /tracking/: get: tags: - Share summary: List share actions metadata for all users description: | Retrieve the metadata of created shares and quicklinks of all users that can be managed by a logged-in user. parameters: - name: date in: query description: Share date timestamp schema: type: number responses: 200: description: List of shares content: application/json: schema: title: TrackingResp type: array items: title: TrackingRespItems type: object properties: id: type: string format: uuid subject: type: string type: type: string is_reply: type: boolean release_date: type: number expire_date: type: number created: type: number status: type: string email: type: string emails: type: array items: type: string owner_id: type: string is_request: type: boolean can_reply: type: boolean folder: type: string 401: $ref: '#/components/responses/Unauthorized' /tracking/{id}: get: tags: - Share summary: List share actions metadata for a user description: | Retrieve the metadata of created shares and quicklinks of a user by given user ID. parameters: - name: id in: path description: User ID required: true schema: type: string - name: date in: query description: Share date timestamp schema: type: number responses: 200: description: List of shares content: application/json: schema: title: TrackingIdResp type: array items: title: TrackingIdRespItems type: object properties: id: type: string format: uuid subject: type: string type: type: string is_reply: type: boolean release_date: type: number expire_date: type: number created: type: number status: type: string email: type: string emails: type: array items: type: string owner_id: type: string 401: $ref: '#/components/responses/Unauthorized' /files-return/send: post: tags: - Share summary: Return files in the created share description: | Return files to the share sender. requestBody: content: application/json: schema: title: FilesReturnSendReq required: - files - id type: object properties: id: type: string description: already created share ID. files: type: array items: type: string format: uuid message: type: string required: true responses: 201: description: Sent files IDs content: application/json: schema: title: FilesReturnSendResp type: object properties: file_ids: type: array items: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /files-return/metadata/{id}: get: tags: - Share summary: Get return files metadata description: | Get the metadata of returning files. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: Share metadata content: application/json: schema: title: FilesReturnMetadataResp type: object properties: id: type: string description: already created share ID. format: uuid subject: type: string sender_name: type: string sender_key: type: string sender_email: type: string user_name: type: string user_email: type: string locale: type: string return_pgp_encrypted: type: boolean title: type: string pgp_enabled: type: boolean share_type: type: string folder_id: type: string activates: type: number expires: type: number files_per_share: type: number message: type: string 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /files-return/upload-link/{id}: post: tags: - Share summary: Get return files upload link description: | Get the upload link to return files to the share sender. parameters: - name: id in: path description: Share action ID required: true schema: type: string requestBody: content: application/json: schema: title: FilesReturnUploadLinkReq required: - name type: object properties: parent_id: type: string format: uuid file_size: type: number name: type: string required: true responses: 200: description: File upload info content: application/json: schema: title: FilesReturnUploadLinkResp type: object properties: file_id: type: string format: uuid upload_key: type: string format: uuid parent_id: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /files-return/makedir/{id}: post: tags: - Share summary: Create a directory for returned files description: | Add a directory for returned files in the sender’s file tree. In order to return a file tree structure, you should duplicate it on the server side, that is send this API call to create each folder separately. This call returns the ID response that can be used as the parent ID for creating a new folder in the already created folder. parameters: - name: id in: path description: Share action ID required: true schema: type: string requestBody: content: application/json: schema: title: FilesReturnMakedirReq required: - name type: object properties: name: type: string parent_id: type: string format: uuid required: true responses: 201: description: Folder metadata content: application/json: schema: title: FilesReturnMakedirResp type: object properties: id: type: string format: uuid parent_id: type: string format: uuid modified: type: number 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /share/download-info/{id}: get: tags: - Share summary: Get share download info description: | Get the share metadata by the given share action iD. File share types: - P (public) - Anyone can download. Limited tracking - IP address only. - T (tracked) - Any registered user/recipient can download. Full tracking. - C (restricted) - Only the registered email recipient(s) can download. Full tracking. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: Share download info content: application/json: schema: title: ShareDownloadInfoResp type: object properties: id: type: string format: uuid message: type: string subject: type: string activates: type: number format: timestamp expires: type: number format: timestamp sender_name: type: string sender_email: type: string user_name: type: string description: user name from current session user_email: type: string description: user email from current session locale: type: string user_id: type: string format: uuid pgp_encrypted: type: boolean description: PGP protected share private_key: type: string description: for PGP pgp_enabled: type: boolean description: It shows that the user from the current session has PGP key. If True - the user will get his private_key. status: type: string share_type: type: string enum: - P - C - T title: type: string expired: type: boolean is_reply: type: boolean pin_protected: type: boolean 401: $ref: '#/components/responses/Unauthorized' /share/files/{id}: get: tags: - Share summary: List shared files description: | Retrieve a list of shared files. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: Share download info content: application/json: schema: title: ShareFilesResp type: array items: title: ShareFilesRespItems type: object properties: id: type: string format: uuid size: type: number count: type: number name: type: string type: type: string download_locked: type: boolean 401: $ref: '#/components/responses/Unauthorized' /share/download-link/{id}: get: tags: - Share summary: Get download link for all files description: | Retrieve a link for downloading all files. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: All shared files download link ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' post: tags: - Share summary: Get download link for specified files description: | Retrieve a link for downloading specified files. parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: ShareDownloadLinkReq type: object properties: files: type: array items: type: string description: File ID format: uuid required: false responses: 200: description: Selected share files download link ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /share/download/{id}: get: tags: - Share summary: Download share files description: | Download files requested in the share/download-link call. parameters: - name: id in: path description: Download link ID required: true schema: type: string format: uuid responses: 200: description: Share files content /share/revoke/{id}: get: tags: - Share summary: Revoke a share description: | Revoke access to a share parameters: - name: id in: path description: Share action ID required: true schema: type: string format: uuid responses: 200: description: Revoked share action ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' /share/preview/{id}: get: tags: - Share summary: Preview a shared file description: | Preview a shared file by given share file ID. parameters: - name: id in: path description: Share file ID required: true schema: type: string format: uuid - name: size in: query schema: type: string enum: - small - large responses: 200: description: File preview data 401: description: Unauthorized content: image/png: schema: $ref: '#/components/schemas/ErrorModel' /share/request: post: tags: - Share summary: Send a request to share files description: | Send a file sharing request. requestBody: content: application/json: schema: title: ShareRequestReq required: - ids type: object properties: return_pgp_encrypted: type: boolean description: if PGP keys were generated by the sender or the recipient. default: false request_auth: type: boolean description: Defines if return files will require authentication default: true send_email: type: boolean default: true ids: type: array description: List of recipient IDs items: type: string format: uuid message: type: string folder_id: type: string description: Target folder ID for requested files format: uuid required: true responses: 200: description: Return page metadata content: application/json: schema: title: ShareRequestResp type: object properties: id: type: string format: uuid url: type: string job_id: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /share/send-request/{id}: post: deprecated: true tags: - Share summary: Request files. Use /share/request API call instead. description: | Send a file sharing request. parameters: - name: id in: path description: Share Request ID required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: ShareSendRequestReq type: object properties: message: type: string required: false responses: 202: description: Job response object content: application/json: schema: $ref: '#/components/schemas/JobResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /service: get: tags: - Service summary: List available services description: | Retrieve a list of all available services. responses: 200: description: List of services content: application/json: schema: type: array items: $ref: '#/components/schemas/ServiceResp' 401: $ref: '#/components/responses/Unauthorized' /service/metadata/{id}: get: tags: - Service summary: Get service metadata description: | Retrieve information about the service by given ID. parameters: - name: id in: path description: Service ID required: true schema: type: string format: uuid responses: 200: description: Service metadata content: application/json: schema: $ref: '#/components/schemas/ServiceResp' 401: $ref: '#/components/responses/Unauthorized' /automation: get: tags: - Automation summary: List all automations description: | Retrieve a list of all automations of the user. responses: 200: description: List of automations content: application/json: schema: type: array items: $ref: '#/components/schemas/AutomationResp' 401: $ref: '#/components/responses/Unauthorized' /automation/metadata/{id}: get: tags: - Automation summary: Get automation metadata description: | Get the automation metadata by the specified automation ID. parameters: - name: id in: path description: automation ID required: true schema: type: string format: uuid responses: 200: description: Automation metadata content: application/json: schema: $ref: '#/components/schemas/AutomationResp' 401: $ref: '#/components/responses/Unauthorized' /automation/create: post: tags: - Automation summary: Create a new automation description: | Add a new automatic operation. requestBody: content: application/json: schema: title: AutomationCreateReq required: - action - file_id type: object properties: file_id: type: string format: uuid action: type: string enum: - autodelete - video_upload status: type: string enum: - A - D options: $ref: '#/components/schemas/AutomationOptions' comment: type: string expires: type: number format: integer email: type: array items: type: string required: true responses: 201: description: Automation metadata content: application/json: schema: $ref: '#/components/schemas/AutomationResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /automation/edit/: post: tags: - Automation summary: Edit an existing automation description: | Update an existing rule for a specified automatic operation. requestBody: content: application/json: schema: title: AutomationEditReq required: - ids type: object properties: ids: type: array items: type: string format: uuid action: type: string enum: - autodelete - video_upload file_id: type: string format: uuid status: type: string enum: - A - D options: $ref: '#/components/schemas/AutomationOptions' comment: type: string expires: type: number format: integer email: type: array items: type: string required: true responses: 200: description: Automation metadata content: application/json: schema: type: array items: $ref: '#/components/schemas/AutomationResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /automation/delete: post: tags: - Automation summary: Delete automations description: | Delete a rule set for automatic operations. requestBody: content: application/json: schema: $ref: '#/components/schemas/IdsReq' required: true responses: 200: description: Deleted automation IDs content: application/json: schema: title: AutomationDeleteResp type: object properties: ids: type: array items: type: string format: uuid 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /inbox: get: tags: - Inbox summary: Get contact's share tracking description: | Retrieve the tracking of actions where the contact was the recipient. parameters: - name: id in: query description: Inbox ID schema: type: string format: uuid - name: limit in: query description: Rows per page schema: type: number maximum: 1000 minimum: 1 default: 100 - name: from in: query description: UTC timestamp schema: type: number default: 0 - name: to in: query description: UTC timestamp schema: type: number responses: 200: description: Activity log list content: application/json: schema: title: InboxResp type: array items: title: InboxRespItems type: object properties: id: type: string format: uuid sender_name: type: string description: Sender name activates: type: number format: integer is_reply: type: boolean replied: type: boolean subject: type: string type: type: string enum: - P - C - T file_request: type: boolean expires: type: number format: integer protected: type: boolean 401: $ref: '#/components/responses/Unauthorized' /ssh-key/: get: tags: - SSH-Key summary: List all available SSH keys description: | Get SSH keys of all available users that the current logged-in user can manage. responses: 200: description: SSH-Key list content: application/json: schema: type: array items: $ref: '#/components/schemas/SshKeyResp' 401: $ref: '#/components/responses/Unauthorized' /ssh-key/{id}: get: tags: - SSH-Key summary: List available SSH keys by the given user ID. description: | Get user's SSH keys by given user ID. parameters: - name: id in: path description: SSH key ID required: true schema: type: string format: uuid responses: 200: description: SSH-Key list content: application/json: schema: type: array items: $ref: '#/components/schemas/SshKeyResp' 401: $ref: '#/components/responses/Unauthorized' /ssh-key/metadata/{id}: get: tags: - SSH-Key summary: Get SSH key metadata description: | Retrieve the metadata of SSH key by the given ID. parameters: - name: id in: path description: SSH key ID required: true schema: type: string format: uuid responses: 200: description: SSH key metadata content: application/json: schema: $ref: '#/components/schemas/SshKeyResp' 401: $ref: '#/components/responses/Unauthorized' /ssh-key/create: post: tags: - SSH-Key summary: Create a new SSH key description: | Generate a new SSH key. requestBody: content: application/json: schema: title: SshKeyCreateReq required: - caption - key type: object properties: caption: type: string minLength: 1 maxLength: 255 key: type: string minLength: 256 maxLength: 16384 expires: type: number format: integer user_id: type: string format: uuid description: If it is not provided, it will be a logged-in user ID. required: true responses: 200: description: SSH key metadata content: application/json: schema: $ref: '#/components/schemas/SshKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /ssh-key/edit: post: tags: - SSH-Key summary: Edit SSH key metadata description: | Update the metadata of SSH key. requestBody: content: application/json: schema: title: SshKeyEditReq required: - id type: object properties: id: type: string format: uuid caption: type: string maxLength: 255 minLength: 1 status: type: string enum: - A - D expires: type: number format: integer required: true responses: 200: description: SSH key metadata content: application/json: schema: $ref: '#/components/schemas/SshKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /ssh-key/delete: post: tags: - SSH-Key summary: Delete SSH key description: | Remove the key specified by SSH key ID. requestBody: content: application/json: schema: title: SshKeyDeleteReq required: - id type: object properties: id: type: string format: uuid required: true responses: 200: description: SSH Key ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key: get: tags: - API-Key summary: Get all user's API keys description: | Get all manageable user's API keys responses: 200: description: List of API keys content: application/json: schema: type: array items: $ref: '#/components/schemas/APIKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key/{id}: get: tags: - API-Key summary: Get user's API keys description: | Retrieve all API keys for a specified user. parameters: - name: id in: path description: ID of a user required: true schema: type: string format: uuid responses: 200: description: List of API keys content: application/json: schema: type: array items: $ref: '#/components/schemas/APIKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key/metadata/{id}: get: tags: - API-Key summary: Get API key details description: | Retrieve API key metadata by the ID of the key. parameters: - name: id in: path description: ID of a key required: true schema: type: string format: uuid responses: 200: description: API key metadata content: application/json: schema: $ref: '#/components/schemas/APIKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key/create: post: tags: - API-Key summary: Create API Key description: | Create API key for a specified user. requestBody: content: application/json: schema: title: APIKeyCreateReq type: object properties: name: type: string default: "" status: type: string default: A enum: - A - D role_id: type: string format: uuid default: "current user id" required: true responses: 200: description: API key metadata content: application/json: schema: $ref: '#/components/schemas/APIKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key/update/{id}: post: tags: - API-Key summary: Update API key description: | Update API key metadata by ID of the key parameters: - name: id in: path description: ID of the key required: true schema: type: string format: uuid requestBody: content: application/json: schema: title: APIKeyUpdateReq type: object properties: name: type: string status: type: string enum: - A - D required: true responses: 200: description: API key metadata content: application/json: schema: $ref: '#/components/schemas/APIKeyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /api-key/delete/{id}: get: tags: - API-Key summary: Delete API key description: | Delete API key by the given ID parameters: - name: id in: path description: ID of a key required: true schema: type: string format: uuid responses: 200: description: API key ID content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /branding: get: tags: - Branding summary: Get branding for account description: | Returns branding for account(based on logged role) responses: 200: description: Account branding content: application/json: schema: $ref: '#/components/schemas/AccountBranding' 401: $ref: '#/components/responses/Unauthorized' post: tags: - Branding summary: Create or update branding for account description: | Create or update branding for account. Returns account branding requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountBrandingReq' required: true responses: 200: description: Account branding content: application/json: schema: $ref: '#/components/schemas/AccountBranding' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /branding/preview: post: tags: - Branding summary: Render html from markdown description: | Render markdown and sanitize output html requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountBrandingPreview' required: true responses: 200: description: Rendered HTML parts content: application/json: schema: $ref: '#/components/schemas/AccountBrandingPreview' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /file/comment/{id}: get: tags: - File - Comment summary: Get comments added to the file description: Get comments added to the file operationId: getCommentsByFileID parameters: - name: id in: path description: file id required: true schema: type: string format: uuid responses: 200: description: Comments added to the file content: application/json: schema: title: comments type: array items: $ref: '#/components/schemas/CommentResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: File does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' post: tags: - File - Comment summary: Add comment to the file description: Add comment to the file operationId: addCommentByFileID parameters: - name: id in: path description: file id required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CommentReq' required: true responses: 200: description: Created comment content: application/json: schema: $ref: '#/components/schemas/CommentModifyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: File does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /file/comment/parent/{id}: get: tags: - File - Comment summary: Get comments for files in parent folder description: Get comments for files in parent folder operationId: getCommentsByParentID parameters: - name: id in: path description: id of parent folder required: true schema: type: string format: uuid responses: 200: description: Comments for files in parent folder content: application/json: schema: title: comments type: array items: $ref: '#/components/schemas/CommentGroupedResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: File does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /comment/edit/{id}: post: tags: - Comment summary: Edit comment description: Edit comment operationId: editCommentByID parameters: - name: id in: path description: comment id required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CommentReq' required: true responses: 200: description: Edited comment content: application/json: schema: $ref: '#/components/schemas/CommentModifyResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: Comment does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /comment/delete/{id}: post: tags: - Comment summary: Delete comment description: Delete comment operationId: deleteCommentByID parameters: - name: id in: path description: comment id required: true schema: type: string format: uuid responses: 200: description: ID of successfully deleted comment content: application/json: schema: $ref: '#/components/schemas/IdResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' 404: description: Comment does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /comment/preview: post: tags: - Comment summary: Preview comment description: Render markdown to html operationId: previewComment requestBody: content: application/json: schema: $ref: '#/components/schemas/CommentReq' required: true responses: 200: description: Rendered comment content: application/json: schema: $ref: '#/components/schemas/CommentPreviewResp' 400: description: Parameter Error content: application/json: schema: $ref: '#/components/schemas/ErrorModel' 401: $ref: '#/components/responses/Unauthorized' /tags/delete/{id}: post: tags: - File - Tags summary: Delete tag description: | Delete tag. operationId: deleteTagByID parameters: - name: id in: path description: ID of a tag required: true schema: type: string format: uuid responses: 200: description: ID of successfully deleted tag content: application/json: schema: $ref: '#/components/schemas/IdResp' 401: $ref: '#/components/responses/Unauthorized' 404: description: Tag does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' /tags/list: get: tags: - File - Tags summary: List of all tags description: | Returns list of tag values with tag_type 'text' for all available files. operationId: getTagsList responses: 200: description: List of tags content: application/json: schema: title: tags type: array items: type: string 401: $ref: '#/components/responses/Unauthorized' 404: description: Tag does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorModel' components: schemas: SessionLoginResp: type: object properties: session_id: type: string description: New session id format: uuid SessionUnblockCaptchaResp: type: object properties: valid: type: boolean IdsReq: required: - ids type: object properties: ids: type: array items: type: string description: UUID format: uuid IdResp: type: object properties: id: type: string description: UUID format: uuid IdsResp: type: object properties: ids: type: array items: type: string format: uuid CopyMoveFilesReq: required: - ids - target type: object properties: ids: type: array items: type: string format: uuid target: type: string format: uuid resolve: type: boolean default: true FileResp: type: object properties: id: type: string description: File ID format: uuid created: type: number description: File creation timestamp modified: type: number description: File modification timestamp name: type: string description: File name parent_id: type: string description: File parent ID format: uuid size: type: number description: File size in bytes format: int modified_ms: type: number description: File modification timestamp format: timestamp type: type: string description: File type metadata: type: object format: json description: File metadata json operations: type: number description: File operations bitmask format: int sub_type: type: string description: File origin info FileSearchResp: type: object properties: id: type: string description: File ID format: uuid created: type: number description: File creation timestamp modified: type: number description: File modification timestamp name: type: string description: File name parent_id: type: string description: File parent ID format: uuid size: type: number description: File size in bytes format: int type: type: string description: File type metadata: type: object format: json description: File metadata json operations: type: number description: File operations bitmask format: int sub_type: type: string description: File origin info tags: title: File tags type: array items: $ref: '#/components/schemas/FileTagResp' comments_number: type: integer description: number of comments available for the file FileMetadataGetResp: type: object properties: id: type: string description: File ID format: uuid gid: type: number description: Unix group id format: int uid: type: number description: Unix user id format: int created: type: number description: File creation timestamp modified: type: number description: File modification timestamp name: type: string description: File name parent_id: type: string description: File parent ID format: uuid size: type: number description: File size in bytes format: int type: type: string description: File type metadata: type: object format: json description: File metadata json operations: type: number description: File operations bitmask format: int sub_type: type: string description: File origin info content: type: array items: $ref: '#/components/schemas/FileResp' UserResp: type: object properties: id: type: string format: uuid parent_id: type: string format: uuid home_id: type: string format: uuid home_name: type: string super_admin: type: string enum: - Y - N name: type: string email: type: string format: email status: type: string quota: type: number format: integer created: type: number format: timestamp modified: type: number format: timestamp groups: type: array items: $ref: '#/components/schemas/Group' user_operations: type: number format: integer effective_operations: type: number format: integer home_operations: type: number format: integer language: type: string has_key: type: boolean services: type: array items: $ref: '#/components/schemas/ShortUserService' unique_login: type: string sftp_login: type: string sftp_home: type: string readonly: type: boolean auth_methods: type: array items: type: string last_login: type: number format: timestamp storage_used: type: number format: integer forced_auth: type: array items: type: string notes: type: string ShortUserService: type: object properties: id: type: string format: uuid service_key: type: string ContactResp: type: object properties: id: type: string format: uuid name: type: string email: type: string format: email type: type: string status: type: string created: type: integer format: timestamp owner_id: type: string format: uuid readonly: type: boolean has_key: type: boolean groups: type: array items: $ref: '#/components/schemas/Group' ContactUpgradeResp: type: object properties: id: type: string format: uuid parent_id: type: string format: uuid home_id: type: string format: uuid home_name: type: string super_admin: type: string enum: - Y - N name: type: string email: type: string format: email status: type: string quota: type: number format: integer created: type: number format: timestamp modified: type: number format: timestamp groups: type: array items: $ref: '#/components/schemas/Group' user_operations: type: number format: integer effective_operations: type: number format: integer home_operations: type: number format: integer language: type: string storage_id: type: string format: uuid has_key: type: boolean services: type: array items: $ref: '#/components/schemas/ShortUserService' unique_login: type: string readonly: type: boolean auth_methods: type: array items: type: string PgpKeyResp: type: object properties: id: type: string format: uuid name: type: string created: type: integer format: timestamp modified: type: integer format: timestamp public: type: string format: base64 private: type: string format: base64 email: type: string format: email JobResp: type: object properties: job_id: type: string format: uuid FileTagResp: type: object properties: id: type: string format: uuid type: type: string value: type: string FileTagByParentResp: type: object properties: file_id: type: string format: uuid tags: $ref: '#/components/schemas/FileTagResp' SearchReq: type: object properties: _and: type: array items: $ref: '#/components/schemas/SearchQuery' _or: type: array items: $ref: '#/components/schemas/SearchQuery' SearchQuery: type: object properties: tag: $ref: '#/components/schemas/TagSearchQueryElement' name: $ref: '#/components/schemas/StringSearchQueryElement' created: $ref: '#/components/schemas/TimestampSearchQueryElement' modified: $ref: '#/components/schemas/TimestampSearchQueryElement' SearchTag: type: object properties: type: type: string enum: - text - from - to value: type: string TagSearchQueryElement: type: object properties: _and: type: array items: $ref: '#/components/schemas/SearchTag' _or: type: array items: $ref: '#/components/schemas/SearchTag' StringSearchQueryElement: type: object properties: _and: type: array items: type: string _or: type: array items: type: string TimestampSearchQueryElement: type: object properties: _and: type: array items: type: number format: timestamp _or: type: array items: type: number format: timestamp GroupMetadata: type: object properties: is_system: type: boolean translation_id: type: string format: uuid visual_order: type: number format: integer Group: type: object properties: id: type: string format: uuid metadata: $ref: '#/components/schemas/GroupMetadata' name: type: string GroupResp: type: object properties: id: type: string format: uuid parent_id: type: string format: uuid parent_name: type: string name: type: string type: type: string operations: type: number format: integer users: type: array items: $ref: '#/components/schemas/IdName' groups: type: array items: $ref: '#/components/schemas/IdName' metadata: $ref: '#/components/schemas/GroupMetadata' IdName: type: object properties: id: type: string format: uuid name: type: string ProjectOwner: type: object properties: email: type: string name: type: string id: type: string format: uuid UserPermissionReq: type: object properties: user_id: type: string format: uuid operations: type: number format: integer notify: type: boolean default: false UserPermissionResp: type: object properties: user_id: type: string format: uuid operations: type: number format: integer owns: type: boolean notify: type: boolean SettingsResp: type: object properties: title: type: string bcc: type: array items: type: string billing_emails: type: array items: type: string email_footer: type: string modified: type: number language: type: string pgp_enabled: type: boolean share_types: type: object properties: {} ServiceResp: type: object properties: id: type: string format: uuid key: type: string base: type: boolean properties: type: object properties: {} users: type: array items: type: object properties: id: type: string name: type: string forced_auth: type: array items: type: string AutomationResp: type: object properties: id: type: string format: uuid owner_id: type: string format: uuid file_id: type: string format: uuid created: type: number format: integer modified: type: number format: integer status: type: string enum: - A - D action: type: string enum: - autodelete options: $ref: '#/components/schemas/AutomationOptions' email: type: array items: type: string file_path: type: string rule_num: type: number format: integer AutomationOptions: type: object properties: expire: type: number format: integer keep_folder_structure: type: boolean protected_folder_ids: type: array items: type: string format: uuid skip_home_folders: type: boolean skip_shared_folders: type: boolean super_trash: type: boolean oauth_code: type: string description: automation metadata json format: json SshKeyResp: type: object properties: id: type: string format: uuid user_id: type: string format: uuid email: type: string unique_login: type: string sftp_login: type: string caption: type: string fingerprint: type: string modified: type: number format: integer expires: type: number format: integer status: type: string enum: - A - D APIKeyResp: type: object properties: id: type: string format: uuid role_id: type: string format: uuid email: type: string key: type: string hint: type: string created: type: number format: integer modified: type: number format: integer status: type: string enum: - A - D AccountBranding: type: object properties: banner_text: type: string sender_name: type: string sender_email: type: string email_validated: type: boolean email_title_prefix: type: string body_header: type: string body_footer: type: string status: type: string enum: - A - D AccountBrandingReq: type: object properties: banner_text: type: string sender_name: type: string sender_email: type: string email_title_prefix: type: string body_header: type: string body_footer: type: string AccountBrandingPreview: type: object properties: body_header: type: string body_footer: type: string CommentResp: type: object properties: id: type: string description: comment id format: uuid message: type: string description: rendered message raw_message: type: string description: raw message with markdown role_id: type: string description: role id format: uuid role_name: type: string description: name of user role_status: type: string enum: - A - D - R created: type: string format: dateTime modified: type: string format: dateTime file_id: type: string format: uuid CommentGroupedResp: type: object properties: file_id: type: string description: file id format: uuid number: type: integer description: number of comments comments: title: comments type: array items: $ref: '#/components/schemas/CommentResp' CommentReq: type: object properties: message: maxLength: 1000 type: string CommentModifyResp: type: object properties: id: type: string description: comment id format: uuid message: type: string description: rendered message raw_message: type: string description: raw message with markdown created: type: string format: dateTime modified: type: string format: dateTime file_id: type: string format: uuid CommentPreviewResp: type: object properties: message: type: string ErrorModel: required: - code - msg type: object properties: msg: type: string description: error details code: minimum: -1 maximum: 100 type: integer details: type: object description: additional information per call responses: Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorModel' parameters: ContactId: name: id in: path description: ID of a contact required: true schema: type: string format: uuid FileId: name: id in: path description: ID of a file required: true schema: type: string format: uuid FileContentFlag: name: content in: query description: Return content flag required: false schema: type: number format: int default: 1 enum: - 0 - 1 WidgetId: name: id in: path description: ID of a widget required: true schema: type: string format: uuid securitySchemes: session_id: description: Value returned in /session/login type: apiKey name: X-Auth-Token in: header basicAuth: type: http description: HTTP Basic Authentication. Works over `HTTP` and `HTTPS`. scheme: basic bearerAuth: description: Value returned in /api-key/create type: http scheme: bearer