# 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 |