# File Sync & Share API **Base URL**: https://dev-cloud.acronis.com/fc/api/v1 ## Security ### OAuth 2.0 Supported grant types: * `password` * `authorization_code` Authorization URI example: `https://dev-cloud.acronis.com/api/2/idp/authorize` Access token URI example: `https://dev-cloud.acronis.com/api/2/idp/token` ### Request parameters #### Headers | Name | Description | |------|-------------| | `Authorization` | (Required) Used to send a valid OAuth 2 access token

**Type**: String
**Pattern**: `^Bearer [0-9a-zA-Z\-\._~+/]*=$` | ### Responses | Code | Description | |------|-------------| | `401` | Missing or invalid token | ## Endpoints ### GET /audit_log Gets a list of audit log entries #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `filter_user` | (Optional) Filter by user UUID

Set to `"-"` to return log entries not associated with a user

**Type**: String | | `filter_share` | (Optional) Filter by shared folder UUID

Set to `"-"` to return log entries not associated with a shared folder

**Type**: String | | `filter_node_uuid` | (Optional) Filter by node UUID

Set to `"-"` to return log entries not associated with a node

**Type**: String | | `filter_severity` | (Optional) Filter by severity level

Severity levels are:

- `1` - Info
- `2` - Warning
- `3` - Error
- `4` - Fatal

**Type**: Integer
**Allowed values**:
- `1`
- `2`
- `3`
- `4` | | `filter_text` | (Optional) Filter by text

**Type**: String | | `filter_from` | (Optional) Filter by date and time (on or after the specified datetime)

**Type**: DateTime | | `filter_to` | (Optional) Filter by date and time (on or before the specified datetime)

**Type**: DateTime | | `per_page` | (Optional) The number of items to be retrieved

**Type**: Integer | | `page` | (Optional) The page to return

Starts from 1

**Type**: Integer | | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the list of audit log entries | | `206` | Successfully retrieved part of the list | | `403` | Administrative permissions required | ### GET /devices Gets a list of devices #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `per_page` | (Optional) The number of items to be retrieved

**Type**: Integer | | `page` | (Optional) The page to return

Starts from 1

**Type**: Integer | | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the list of devices | | `206` | Successfully retrieved part of the list | | `403` | Administrative permissions required | ### GET /devices/{device_uuid} Gets information about a device #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the device | | `404` | Resource was not found | | `403` | Administrative permissions required | ### PUT /devices/{device_uuid} Updates a device #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `device` | **Type**: Object | **Example**: ```json { "device": { "notes": "Example notes" } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the device | | `404` | Resource was not found | | `403` | Administrative permissions required | ### DELETE /devices/{device_uuid} Deletes a device #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `204` | Successfully deleted the device | | `404` | Resource was not found | | `403` | Administrative permissions required | ### POST /sync_and_share_nodes Creates a folder by name or path If a folder with the same name, but different letter case exists in the same location it will be renamed #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `sync_and_share_node` | **Type**: Object | **Example**: ```json { "sync_and_share_node": { "name": "Folder", "parent_uuid": "2644085b-6431-4751-a09a-dcb8bd6489a1" } } ``` #### Responses | Code | Description | |------|-------------| | `201` | - | | `409` | Name conflict | | `404` | Resource was not found | | `403` | Node permissions required | ### PUT /sync_and_share_nodes/{node_uuid} Updates a file/folder #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `sync_and_share_node` | **Type**: Object | **Example**: ```json { "sync_and_share_node": { "name": "new_name.txt" } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the file/folder | | `403` | Node permissions required | ### GET /sync_and_share_nodes/{node_uuid}/contents Gets a list of files and folders within a folder #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `per_page` | (Optional) The number of items to be retrieved

**Type**: Integer | | `page` | (Optional) The page to return

Starts from 1

**Type**: Integer | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the list of files and folders | | `206` | Successfully retrieved part of the list | | `403` | Node permissions required | ### POST /sync_and_share_nodes/{node_uuid}/upload Uploads a file If a file with same name exists in the target folder a new revision will be created #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Headers | Name | Description | |------|-------------| | `Content-Type` | (Required) **Type**: String
**Allowed values**:
- `application/octet-stream` | | `Transfer-Encoding` | (Required) **Type**: String
**Allowed values**:
- `chunked` | ##### Query parameters | Name | Description | |------|-------------| | `filename` | (Required) Name of the file

**Type**: String
**Min length**: 1 | | `size` | (Required) Size of the file, in bytes

**Type**: Long
**Format**: int64 | | `checksum` | (Optional) MD5 digest of the file's contents

When present, this checksum will be used to verify the integrity of the uploaded data

**Type**: String | ##### Request body **Media type**: application/octet-stream **Schema definition**: | Name | Description | |------|-------------| #### Responses | Code | Description | |------|-------------| | `201` | Successfully uploaded the file | | `400` | Failed to upload the file | | `404` | Resource was not found | | `403` | Node permissions required | ### POST /sync_and_share_nodes/{node_uuid}/copy Copies a file/folder #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `parent_uuid` | UUID of the target parent folder

**Type**: String
**Pattern**: `^0$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | **Example**: ```json { "parent_uuid": "b8ccbf27-4e92-41a9-8b66-d78108985321" } ``` #### Responses | Code | Description | |------|-------------| | `200` | Successfully copied the file/folder | | `400` | Validation failed | | `409` | Name conflict | | `403` | Node permissions required | ### POST /sync_and_share_nodes/{node_uuid}/move Moves a file/folder #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `parent_uuid` | UUID of the target parent folder

**Type**: String
**Pattern**: `^0$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | **Example**: ```json { "parent_uuid": "b8ccbf27-4e92-41a9-8b66-d78108985321" } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully moved the file/folder | | `400` | Validation failed | | `409` | Name conflict | | `403` | Node permissions required | ### POST /sync_and_share_nodes/{node_uuid}/links Creates a file link File links can optionally be sent to multiple persons by email #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `link` | **Type**: Object | **Example**: ```json { "link": { "recipients": [ { "email": "user1@example.com" }, { "email": "user2@example.com" } ], "access_restriction": "shared", "locale": "en", "message": "An example message", "ttl": 7, "single_use": false } } ``` #### Responses | Code | Description | |------|-------------| | `201` | Successfully created the file link | | `400` | Validation failed | | `403` | Node permissions required | ### PUT /sync_and_share_nodes/{node_uuid}/links/{link_id} Updates a file link #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `ttl` | Expiration period in days

Set it to `null` to modify the link to never expire (if this is allowed by the server configuration)

**Type**: Union
**May be any of**:
1. **Type**: Integer

2. **Type**: null | | `access_restriction` | The type of access for the link

- `public` - link can be accessed by anyone
- `access` - link can be accessed only by authenticated users
- `shared` - link can be accessed only by the users it has been shared to

**Type**: String
**Allowed values**:
- `public`
- `access`
- `shared` | | `single_use` | Whether the link will expire after single use

**Type**: Boolean | **Example**: ```json { "ttl": 7, "access_restriction": "shared", "single_use": false } ``` #### Responses | Code | Description | |------|-------------| | `200` | Successfully updated the file link | | `400` | Validation failed | | `403` | Node permissions required | ### GET /sync_and_share_nodes/{node_uuid}/members Gets a list of folder members #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `per_page` | (Optional) The number of items to be retrieved

**Type**: Integer | | `page` | (Optional) The page to return

Starts from 1

**Type**: Integer | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the list of members | | `206` | Successfully retrieved part of the list | | `403` | Node permissions required | ### POST /sync_and_share_nodes/{node_uuid}/members Creates a folder member #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `member` | **Type**: Object | **Example**: ```json { "member": { "email": "user@example.com", "read_only": false, "can_invite": true, "can_view_members": true } } ``` #### Responses | Code | Description | |------|-------------| | `201` | Successfully created the member | | `400` | Validation failed | | `403` | Node permissions required | ### PUT /sync_and_share_nodes/{node_uuid}/members/{member_id} Updates a member #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `member` | **Type**: Object | **Example**: ```json { "member": { "read_only": false, "can_view_members": false, "can_invite": false } } ``` #### Responses | Code | Description | |------|-------------| | `200` | Successfully updated the member | | `400` | Validation failed | | `403` | Node permissions required | ### GET /settings/purging_policies Gets the purging policies settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the purging policies settings | | `403` | Administrative permissions required | ### PUT /settings/purging_policies Updates purging policies settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `purging_policies_settings` | **Type**: Object | **Example**: ```json { "purging_policies_settings": { "purge_deleted_files_older_than_n": 2, "only_keep_n_revisions": 10, "allow_users_to_selectively_purge_revisions": true, "only_keep_n_revisions_enabled": true, "purge_deleted_files_older_than_enabled": true, "keep_at_least_n_revisions": 3, "purge_deleted_files_older_than_units": "weeks", "keep_at_least_n_revisions_enabled": true, "purge_revisions_older_than_units": "months", "purge_revisions_older_than_enabled": true, "purge_revisions_older_than_n": 1 } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the purging policies settings | | `400` | Validation failed | | `403` | Administrative permissions required | ### GET /settings/server Gets the server settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the server settings | | `403` | Administrative permissions required | ### PUT /settings/server Updates the server settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `server_settings` | **Type**: Object | **Example**: ```json { "server_settings": { "server_name": "Acronis Files Protect", "notification_admin_email": "administrator1@example.com;administrator2@example.com", "notification_admin_enabled": true, "default_locale": "de", "notification_admin_frequency": 120, "root_web_address": "https://dev-cloud.acronis.com", "session_timeout_in_minutes": 120 } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the server settings | | `400` | Validation failed | | `403` | Administrative permissions required | ### GET /settings/audit_log Gets the audit log settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the audit log settings | | `403` | Administrative permissions required | ### PUT /settings/audit_log Updates the audit log settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `audit_log_settings` | Audit log settings

**Type**: Object | **Example**: ```json { "audit_log_settings": { "purge_logs_older_than_enabled": "true", "purge_logs_older_than_units": "days", "purge_logs_older_than_n": 7 } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the audit log settings | | `400` | Validation failed | | `403` | Administrative permissions required | ### GET /settings/security Gets the security settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the security settings | | `403` | Administrative permissions required | ### PUT /settings/security Updates the security settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `security_settings` | **Type**: Object | **Example**: ```json { "security_settings": { "node_share_link_enable": "true", "allow_collaborators_to_invite": "true", "node_share_link_single_use_only": "false", "shared_folder_expiration_required": "true", "node_share_link_ttl_range_enable": "true", "node_share_link_allow_login_links": "true", "node_share_link_ttl_max": 30, "node_share_link_allow_public_links": "false", "shared_folder_expiration_max_days": 30 } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the security settings | | `400` | Validation failed | | `403` | Administrative permissions required | ### GET /settings/web_preview Gets the web preview settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the web preview settings | | `403` | Administrative permissions required | ### PUT /settings/web_preview Updates the web preview settings #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | ##### Request body **Media type**: application/json **Schema definition**: | Name | Description | |------|-------------| | `settings` | **Type**: Object | **Example**: ```json { "settings": { "office_online_integration_enabled": true, "max_cache_size_mb": 10000, "only_allow_not_converted": false, "servlet_allow_self_signed_certificates": false, "office_online_type_of_use": "viewing-editing", "office_online_wopi_url": "https://office-online.com", "generation_max_concurrent_calls": 1, "web_preview_enabled": true, "office_online_allow_self_signed_certificates": false, "office_online_additional_services_enabled": true } } ``` #### Responses | Code | Description | |------|-------------| | `204` | Successfully updated the web preview settings | | `400` | Validation failed | | `403` | Administrative permissions required | ### GET /users/{user_uuid} Gets information about a user #### Security The endpoint supports the following authorization methods: `OAuth 2.0` #### Request parameters ##### Query parameters | Name | Description | |------|-------------| | `tenant_id` | (Optional) UUID of a tenant in which context to perform the request in

If not specified the request is executed in the current user's tenant context

**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` | #### Responses | Code | Description | |------|-------------| | `200` | Successfully retrieved the user | | `404` | Resource was not found | | `403` | Administrative permissions required |