Skip to main content

Management Endpoints

This document covers the Management endpoints of the Amove Click API. These endpoints drive the desktop agent itself — reading agent status, configuring cloud drives / backups / SMB / NFS mounts, performing local file-system operations, checking for app updates, and broadcasting notifications over WebSocket.

This API is bound to http://localhost:29123 on a machine running the Amove desktop agent. It is not a hosted service.

Unlike most other Click API controllers, the majority of /management/* endpoints operate on the locally-configured agent state and do not require a token query parameter; the few that do are called out explicitly below. The sole exception among commands is /management/command/start, which accepts a token to load the signed-in user.

Endpoints

Agent Status

  1. Get Agent Status
  2. Send Command

Cloud Backups

  1. Get Cloud Backups
  2. Insert Cloud Backup
  3. Update Cloud Backup
  4. Delete Cloud Backup
  5. Open Cloud Backup

Cloud Drives

  1. Get Cloud Drives
  2. Exist Cloud Drive
  3. Insert Cloud Drive
  4. Update Cloud Drive
  5. Change Cloud Drive Cache
  6. Open Cloud Drive
  7. Delete Cloud Drive
  8. Sync Shared Drive
  9. Sync Cloud Drive Objects

SMB / NFS Mounts

  1. Get SMB Clients
  2. Insert SMB Client
  3. Update SMB Client
  4. Delete SMB Client
  5. Get NFS Clients
  6. Insert NFS Client
  7. Update NFS Client
  8. Delete NFS Client

File System Operations

  1. List Local Drives
  2. List Available Local Drives
  3. List Local Directories
  4. List Local Files And Directories
  5. Make Directory
  6. Get Object Status
  7. Get Object Info
  8. Get Objects Info
  9. Download Object
  10. Make Object Offline
  11. Remove Object From Cache
  12. Remove Object Offline
  13. Delete Object
  14. Read Object
  15. Get Object Stream
  16. Generate Presigned URLs
  17. Get Directory Rename Status

App Updates

  1. Check Update
  2. Apply Update

Notifications

  1. Notify

Agent Status

Get Agent Status

Returns the current lifecycle state of the agent.

  • URL: /management/agent_status
  • Method: GET
  • Auth Required: No

Response

Returns the agent status as an integer enum:

1
ValueNameMeaning
0CreatedAgent instance created, user not yet signed in.
1StartedAgent running with a signed-in user.
2StoppedAgent stopped.
4PausedAgent paused; drives suspended.
8DisposedAgent disposed; a new login is required.

Send Command

Sends a lifecycle command to the agent. Start requires a token in order to load the signed-in user; the other commands operate on the current in-memory user.

  • URL: /management/command/{cmd}
  • Method: POST
  • Auth Required: Only for Start

Path Parameters

ParameterTypeDescription
cmdinteger (enum)Start=0, Dispose=1, Pause=2, Resume=4, Exit=8.

Query Parameters

ParameterTypeDescription
tokenstringRequired only for Start. JWT token of the signed-in user.

Response

HTTP 200 on success.

Cloud Backups

A cloud backup is a one-way, upload-only sync from a local folder to a cloud bucket (or prefix).

Get Cloud Backups

Returns every configured cloud backup on this agent.

  • URL: /management/cloudbackup
  • Method: GET
  • Auth Required: No

Response

Returns an array of CloudBackupModel:

[
{
"id": "00000000-0000-0000-0000-000000000000",
"active": true,
"name": "Daily photos",
"localPath": "C:/Users/me/Pictures",
"prefix": "photos/",
"storageId": "",
"storageName": "my-bucket",
"syncIntervalSeconds": 3600,
"maximumCacheSize": 0,
"localCacheEncrypted": false,
"cloudObjectsEncrypted": false,
"keepFileAfterUpload": true,
"sharedDrive": false,
"rotationalCache": false,
"permissionType": 2,
"transferOptions": { "chunkSize": 5242880, "retryCount": 5, "concurrentChunks": 5, "concurrentFiles": 5 },
"account": { "id": "00000000-0000-0000-0000-000000000000", "cloudType": 1 }
}
]

Insert Cloud Backup

Registers a new cloud backup. The agent overrides the request with a standard TransferOptions profile (5 MB chunks, 5 retries, 5 concurrent chunks and files) and always sets keepFileAfterUpload = true.

  • URL: /management/cloudbackup
  • Method: POST
  • Auth Required: No

Request Body

{
"name": "Daily photos",
"localPath": "C:/Users/me/Pictures",
"prefix": "photos/",
"storageName": "my-bucket",
"syncIntervalSeconds": 3600,
"localCacheEncrypted": false,
"cloudObjectsEncrypted": false,
"account": { "id": "00000000-0000-0000-0000-000000000000" }
}

Response

Returns the stored CloudBackupModel.

Update Cloud Backup

Replaces the configuration of an existing cloud backup.

  • URL: /management/cloudbackup/{id}
  • Method: PUT
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-backup id.

Request Body

Full CloudBackupModel.

Response

Returns the updated model.

Delete Cloud Backup

Removes a cloud backup from the agent.

  • URL: /management/cloudbackup/{id}
  • Method: DELETE
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-backup id.

Response

HTTP 200 on success.

Open Cloud Backup

Opens the backup's local folder in the OS file explorer.

  • URL: /management/cloudbackup_open/{id}
  • Method: POST
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-backup id.

Response

HTTP 200 on success.

Cloud Drives

A cloud drive is a bidirectional virtual-drive or local-path sync with encryption and cache options.

Get Cloud Drives

Returns configured cloud drives. When a path query is supplied, returns only the drive that owns that path (or an empty array).

  • URL: /management/clouddrive
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringOptional filter — a local filesystem path or mapped drive path.

Response

Returns an array of CloudDriveModel:

[
{
"id": "00000000-0000-0000-0000-000000000000",
"sharedDriveId": "",
"active": true,
"name": "Team Drive",
"localPath": "C:/.../cache/00000000-0000-0000-0000-000000000000",
"permanentLocalPath": "C:/.../cache/00000000-0000-0000-0000-000000000000",
"prefix": "",
"storageName": "my-bucket",
"driveName": "G",
"syncIntervalSeconds": 60,
"objectsPerFolder": 1000,
"maximumCacheSize": 0,
"allowDelete": true,
"sharedDrive": false,
"rotationalCache": false,
"localCacheEncrypted": false,
"cloudObjectsEncrypted": false,
"keepFileAfterUpload": true,
"permissionType": 2,
"driveType": 1,
"syncType": 1,
"transferOptions": { "chunkSize": 5242880, "retryCount": 5, "concurrentChunks": 5, "concurrentFiles": 5 },
"account": { "id": "00000000-0000-0000-0000-000000000000", "cloudType": 1 }
}
]

Key enumerations:

  • driveType: 1 = VirtualDrive, 2 = LocalPath.
  • syncType: 1 = Stream (files kept in cloud; download on demand), 2 = Mirror (all files kept locally).
  • permissionType: 1 = Read, 2 = ReadWrite.

Exist Cloud Drive

Checks whether the provided filesystem path is owned by a configured cloud drive.

  • URL: /management/exist_clouddrive
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringLocal filesystem path.

Response

Returns the string "1" when a drive owns the path, otherwise "0".

Insert Cloud Drive

Registers a new cloud drive. The agent resolves and creates the local and permanent cache folders according to the platform:

  • macOS: ~/Library/Containers/com.amove.AmoveExtension.Ext/Data/Library/Application Support/Cache/{id}
  • Windows: {AgentCwd}/cache/{id} (when the caller sends permanentLocalPath = "$$$" the agent allocates it automatically).

The agent always overrides keepFileAfterUpload = true and applies a standard TransferOptions profile (5 MB chunks, 5 retries, 5 concurrent chunks and files).

  • URL: /management/clouddrive
  • Method: POST
  • Auth Required: No

Request Body

{
"name": "Team Drive",
"storageName": "my-bucket",
"prefix": "",
"driveName": "G",
"driveType": 1,
"syncType": 1,
"permissionType": 2,
"localCacheEncrypted": false,
"cloudObjectsEncrypted": false,
"allowDelete": true,
"maximumCacheSize": 0,
"permanentLocalPath": "$$$",
"account": { "id": "00000000-0000-0000-0000-000000000000" }
}

Response

Returns the stored CloudDriveModel with final localPath and permanentLocalPath populated.

Update Cloud Drive

Replaces the configuration of an existing cloud drive.

  • URL: /management/clouddrive/{id}
  • Method: PUT
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-drive id.

Request Body

Full CloudDriveModel.

Response

Returns the updated model.

Change Cloud Drive Cache

Moves or reconfigures the local cache of an existing cloud drive.

  • URL: /management/clouddrive_change_cache/{id}
  • Method: PUT
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-drive id.

Request Body

CloudDriveModel with the new cache fields (permanentLocalPath, localCacheEncrypted, maximumCacheSize, rotationalCache).

Response

Returns the updated model.

Open Cloud Drive

Opens the drive's mount point / local folder in the OS file explorer.

  • URL: /management/clouddrive_open/{id}
  • Method: POST
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-drive id.

Response

HTTP 200 on success.

Delete Cloud Drive

Unregisters a cloud drive.

  • URL: /management/clouddrive/{id}
  • Method: DELETE
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-drive id.

Response

HTTP 200 on success.

Sync Shared Drive

Fetches the list of shared cloud drives assigned to the signed-in user from the Amove Web API and adds/removes local cloud drives to match.

  • URL: /management/sync_shareddrive
  • Method: POST
  • Auth Required: No (uses the signed-in user's token)

Response

HTTP 200 on success.

Sync Cloud Drive Objects

Triggers an immediate sync pass on a specific cloud drive starting from the specified path.

  • URL: /management/clouddrive/sync/{id}
  • Method: GET
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)Cloud-drive id.

Query Parameters

ParameterTypeDefaultDescription
pathstring/Prefix within the bucket to sync. When the drive has a configured prefix, the agent uses that instead.

Response

HTTP 200 on success. HTTP 404 when the drive id is unknown.

SMB / NFS Mounts

Get SMB Clients

Returns every configured SMB mount on this agent.

  • URL: /management/smbclient
  • Method: GET
  • Auth Required: No

Response

[
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Design share",
"smbShare": "\\\\server\\share",
"version": "3.0",
"localPath": "Z:",
"active": true,
"isAuthenticated": true,
"username": "user@example.com",
"domain": "WORKGROUP"
}
]

Note: password is part of the model on write but is omitted from responses.

Insert SMB Client

Adds a new SMB mount.

  • URL: /management/smbclient
  • Method: POST
  • Auth Required: No

Request Body

{
"name": "Design share",
"smbShare": "\\\\server\\share",
"version": "3.0",
"localPath": "Z:",
"isAuthenticated": true,
"username": "user@example.com",
"password": "EXAMPLE_PASSWORD",
"domain": "WORKGROUP"
}

Response

Returns the stored SMBClientModel.

Update SMB Client

Replaces the configuration of an SMB mount.

  • URL: /management/smbclient/{id}
  • Method: PUT
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)SMB client id.

Request Body

Full SMBClientModel.

Response

Returns the updated model.

Delete SMB Client

Removes an SMB mount.

  • URL: /management/smbclient/{id}
  • Method: DELETE
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)SMB client id.

Response

HTTP 200 on success.

Get NFS Clients

Returns every configured NFS mount on this agent.

  • URL: /management/nfsclient
  • Method: GET
  • Auth Required: No

Response

[
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Media NAS",
"nfsShare": "nas.example.com:/media",
"version": "4",
"localPath": "/mnt/media",
"active": true
}
]

Insert NFS Client

Adds a new NFS mount.

  • URL: /management/nfsclient
  • Method: POST
  • Auth Required: No

Request Body

{
"name": "Media NAS",
"nfsShare": "nas.example.com:/media",
"version": "4",
"localPath": "/mnt/media"
}

Response

Returns the stored NFSClientModel.

Update NFS Client

Replaces the configuration of an NFS mount.

  • URL: /management/nfsclient/{id}
  • Method: PUT
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)NFS client id.

Request Body

Full NFSClientModel.

Response

Returns the updated model.

Delete NFS Client

Removes an NFS mount.

  • URL: /management/nfsclient/{id}
  • Method: DELETE
  • Auth Required: No

Path Parameters

ParameterTypeDescription
idstring (uuid)NFS client id.

Response

HTTP 200 on success.

File System Operations

These endpoints operate on the local filesystem and on objects inside cloud drives. Paths sent to object-level endpoints are validated against the owning drive's cache boundary; a request that escapes the boundary returns HTTP 499 with code SECURITY.

List Local Drives

Returns every logical drive on the machine (Windows drive letters, Unix mount points).

  • URL: /management/list_drives
  • Method: GET
  • Auth Required: No

Response

["C:\\", "D:\\"]

List Available Local Drives

Returns unused single-letter drive labels — letters CZ minus those already in use by the OS or by an existing Amove virtual drive.

  • URL: /management/list_available_drives
  • Method: GET
  • Auth Required: No

Response

["F", "G", "H"]

List Local Directories

Returns immediate sub-directories of the supplied path. When path is empty or /, the user's home directory is used; at root, mounted volumes under /Volumes are appended.

  • URL: /management/list_directories
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringLocal directory path.

Response

["/Users/me/Documents", "/Users/me/Downloads"]

List Local Files And Directories

Returns files and directories at a given path.

  • URL: /management/list_files_directories
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringLocal directory path. Empty / / falls back to the user home.

Response

[
{ "fileName": "notes.txt", "fullPath": "/Users/me/Documents/notes.txt", "objectType": 1 },
{ "fileName": "Projects", "fullPath": "/Users/me/Documents/Projects", "objectType": 2 }
]
ValueName
1File
2Folder

Make Directory

Creates a new folder inside a pre-existing base path. The agent rejects directory names containing path-traversal characters with HTTP 499 / SECURITY.

  • URL: /management/make_directory
  • Method: POST
  • Auth Required: No

Request Body

{
"path": "/Users/me/Documents",
"directoryName": "New Folder"
}

Response

HTTP 200 on success.

Get Object Status

Returns the lifecycle state of a cached object on a cloud drive.

  • URL: /management/object_status
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path to a file inside a cloud drive's cache.

Response

Returns the FileState value as an integer:

ValueName
0Normal
1Uploading
2Downloading
3Reading
4Deleting
5Deleted
6Ignore
7Encrypting
8Decrypting
9RenameDeleting
10Error

HTTP 404 is returned if the path does not belong to any cloud drive.

Get Object Info

Returns metadata for a single file in a cloud drive.

  • URL: /management/object_info
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

{
"driveName": "G",
"bucketName": "my-bucket",
"path": "C:/.../folder/file.txt",
"size": 1234,
"lastModifiedDate": "2026-01-01T00:00:00Z",
"state": 0,
"isDirectory": false,
"id": ""
}

Get Objects Info

Returns metadata for all objects inside a directory in a cloud drive.

  • URL: /management/objects_info
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute directory path inside a cloud drive.

Response

Array of ObjectInfoModel (same shape as Get Object Info).

Download Object

Tells the agent to download the specified object from the cloud into the local cache. For folders of known project types (.postlabteam, .fcpbundle, .aep, .aepx, .prproj) the whole bundle is downloaded.

  • URL: /management/object_download
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 when the command is queued. HTTP 404 if no drive owns the path.

Make Object Offline

Marks an object (or all objects in a directory-style bundle) to be downloaded and kept available offline.

  • URL: /management/object_make_offline
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 on success.

Remove Object From Cache

Evicts an object from the local cache (when it is in Temporary state). The cloud copy is untouched.

  • URL: /management/object_remove_from_cache
  • Method: POST
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 on success.

Remove Object Offline

Reverses "make offline" — removes the local copy, clears any encrypted cache, and re-marks the object as Temporary. For directories the operation is applied recursively.

  • URL: /management/object_remove_offline
  • Method: POST
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 on success.

Delete Object

Deletes an object in a cloud drive. The drive must be configured with allowDelete = true and the permission type must be ReadWrite; otherwise HTTP 403 is returned. Objects currently in Uploading state are left in place.

  • URL: /management/object_delete
  • Method: POST
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 on success.

Read Object

Triggers the agent's "read" pipeline on an object — used by the desktop shell integration to materialize a file from cache or request a download.

  • URL: /management/read_object
  • Method: POST
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.

Response

HTTP 200 on success.

Get Object Stream

Streams a byte range of an object directly from the cloud provider.

  • URL: /management/get_object_stream
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute path inside a cloud drive.
startinteger (long)First byte to read (inclusive).
endinteger (long)Last byte to read (inclusive).

Response

Streams the bytes as application/octet-stream. HTTP 404 when no drive owns the path.

Generate Presigned URLs

Generates a paired download and upload presigned URL for an object in a cloud drive, each valid for 24 hours.

  • URL: /management/generate_presigned_urls
  • Method: POST
  • Auth Required: No

Request Body

{
"driveName": "Team Drive",
"relativePath": "folder/file.txt",
"uploadKey": "folder/file.txt"
}
FieldTypeDescription
driveNamestringHuman-readable drive name (matches CloudDriveModel.name).
relativePathstringRelative path from the root of the drive, used for the download URL.
uploadKeystringObject key within the same bucket, used for the upload URL.

Response

{
"downloadUrl": "https://...",
"uploadUrl": "https://..."
}

HTTP 404 when no drive matches driveName.

Get Directory Rename Status

Returns true when a directory rename in the cloud drive has completed (i.e. the old prefix contains no remaining objects).

  • URL: /management/get_directory_rename_status
  • Method: GET
  • Auth Required: No

Query Parameters

ParameterTypeDescription
pathstringAbsolute directory path inside a cloud drive.

Response

Returns true when rename is complete (no remaining objects under the old prefix), false otherwise. HTTP 404 when no drive owns the path.

App Updates

Check Update

Checks the configured update feed for a newer release of the agent.

  • URL: /management/check_update
  • Method: GET
  • Auth Required: No

Response

{
"isUpdateRequired": true,
"currentVersion": "2.7.0",
"newVersion": "2.7.1"
}

Apply Update

Triggers the agent's self-update routine. The agent broadcasts an AppExit notification to connected clients and terminates so the updater can replace the binary.

  • URL: /management/update
  • Method: POST
  • Auth Required: No

Response

HTTP 200 once the update has been initiated.

Notifications

Notify

Publishes an application notification to every WebSocket client connected to /notification. Useful for bridging external UI events into the agent's notification channel.

  • URL: /management/notify
  • Method: POST
  • Auth Required: No

Request Body

{
"operation": 2,
"endpointAddress": "http://localhost:29123/cloud/upload_object",
"httpMethod": "POST",
"origion": "my-integration",
"data": "optional payload string"
}
FieldTypeDescription
operationinteger (enum)AppExit=1, EndpointExecution=2.
endpointAddressstringArbitrary URL describing the origin of the event.
httpMethodstringHTTP verb to report.
origionstringOriginating app / integration name (field spelling matches the model).
datastringOptional payload forwarded to WebSocket clients.

Response

HTTP 200 on success.

Sample Code

Check agent status

Python
import requests

status = requests.get("http://localhost:29123/management/agent_status").json()
print(status)
JavaScript
const res = await fetch("http://localhost:29123/management/agent_status");
console.log(await res.json());

List configured cloud drives

Python
import requests

drives = requests.get("http://localhost:29123/management/clouddrive").json()
for d in drives:
print(d["name"], d["localPath"])
C#
using var client = new HttpClient();
string json = await client.GetStringAsync("http://localhost:29123/management/clouddrive");
Console.WriteLine(json);

Start the agent for a signed-in user

Python
import requests

requests.post(
"http://localhost:29123/management/command/0",
params={"token": "EXAMPLE_TOKEN"},
)

For error handling, see Error Model.