NAV
Shell

Introduction

Welcome to FileAgo v3.0 API.

This document assumes that a FileAgo installation is running on https://fileago.mydomain.com/, and the examples are also based on this host. You must modify the CURL commands so that you are referring to your FileAgo server.

Authentication

To authorize, use this code:

curl -X POST \
  'https://fileago.mydomain.com/auth' \
  -d '{"username":"<EMAIL ADDRESS>", "password": "<PASSWORD>"}'

A successfull response will be like:

Status Code: 200 OK

{
    "uuid": "a805ae1b-5bde-454d-9c2e-4b171aa04c17",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzg3MDYwMjIsInVzZXJuYW1lIjoiam9obmRvZUBnbWFpbC5jb20iLCJ1dWlkIjoiYTgwNWFlMWItNWJkZS00NTRkLTljMmUtNGIxNzFhYTA0YzE3In0.fSYkeR4LBEp_Z2n7vIWvUIl_Y_EJd01MT9UFiziij-w",
    "status": "success",
    "msg": "Login successful.",
    "is_admin": true,
    "fullname": "Vimal Kumar",
    "fileaccesskey": "6dba6924-ad66-42de-8ed2-8008f2c7c06e-3a18c571-2638-475f-ae4b-62211395cab3",
    "avatar": "/images/default_avatar.png"
}

The first step is to authenticate with the server, and grab the token and fileaccesskey. The token is valid for next 24 hours.

HTTP Request

POST /auth

POST Parameters

Parameter Description
username Email address of the user, or admin (if admin is trying to login)
password Password of the user

HTTP Response

Parameter Description
uuid UUID of the user
token JWT token for this session. All subsequent API calls must contain this token in the Authorization header. Keep this handy
status success when the authentication is successful
msg Message
is_admin true if the user has administrator privileges
fullname Name of the user
fileaccesskey This key is necessary for downloading files
avatar URL of the avatar image of this user

File Actions

Files & Folders Concepts

All files and folders has a unique identity (UUID) associated with it. In order to access details of a file or folder, the corresponding API call will almost always include this UUID.

Like files and folders, users and groups also has UUID associated to it. In order to access top level directories, the UUID of the owner (user or group) has to be included as well.

For example, if a user wants to access the top level directories of a group (UUID = 3d768c52-a685-4f15-a487-3b5fdaa333a4), then the values will be like:

Folder Value in API call
home home:3d768c52-a685-4f15-a487-3b5fdaa333a4
incoming incoming:3d768c52-a685-4f15-a487-3b5fdaa333a4
trash trash:3d768c52-a685-4f15-a487-3b5fdaa333a4
public_shares public_shares:3d768c52-a685-4f15-a487-3b5fdaa333a4
private_shares private_shares:3d768c52-a685-4f15-a487-3b5fdaa333a4
favorites favorites:3d768c52-a685-4f15-a487-3b5fdaa333a4
shared_with_you shared_with_you:3d768c52-a685-4f15-a487-3b5fdaa333a4

Example API calls:

GET /api/nodes/home:3d768c52-a685-4f15-a487-3b5fdaa333a4

GET /api/nodes/trash:3d768c52-a685-4f15-a487-3b5fdaa333a4/dirlist

.. and so on. However, to access his own home or trash folder, a user does not need to include own user UUID in URL. For example,

GET /api/nodes/home

GET /api/nodes/trash/dirlist

.. is enough.

Create folder

To create a new folder, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"new_dir": DIRNAME
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder in which new folder should be created
DIRNAME String Name of the new folder

Get node access permissions

To retrieve access permissions for a node, use this API call:

curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/myaccess' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

Successful response:

{
    "status": "success", 
    "msg": "Details fetched successfully",
    "data": [
        "read",
        "write", 
        "delete",
        "download"
    ]
}

Path Parameters

Parameter Type Description
NODEUUID String UUID of the node to retrieve access permissions for

Response Parameters

Parameter Type Description
status String Operation status (“success” or “error”)
msg String Human-readable message describing the result
data String[] Array of access permissions available for the node (read, write, delete, download)

Rename a node

To rename a node, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"new_name": NEWNAME
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file
NEWNAME String New name to be set

Delete a node

curl -X DELETE \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN'

On success, the server returns:

Status Code: 204 No Content

Request Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file which is to be deleted

Mark as favorite

To mark a node as favorite, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"starred": BOOL
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file
BOOL Boolean true will add the node to favorites list, while false will remove it from favorites

Copy node to another folder

To copy a node to another folder, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"copy_to": TARGETNODEUUID
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file
TARGETNODEUUID String UUID of the target folder

Move node to another folder

To move a node to another folder, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"move_to": TARGETNODEUUID
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file
TARGETNODEUUID String UUID of the target folder

Share a copy of node with other users/groups

To share a copy of a node with other users or groups, the API call will be like:

curl -X POST \
  'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  		"share_copy_with": [TARGET]
  	}'

On success, the server returns:

Status Code: 204 No Content

POST Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file
TARGET String UUID of the target user or group. Mention more UUIDs within the list if the node is being shared with multiple users or groups, e.g.: [UUID_OF_USER1, UUID_OF_USER2, UUID_OF_GROUP1]

Create new file

  • Request an upload token
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/upload' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

On success, the server returns:

Status Code: 200 OK

{
	"token":UPLOADTOKEN,
	"status":"success",
	"msg":"This token is valid for next 5 seconds only"
}
  • Upload file using the upload endpoint
curl 'https://fileago.mydomain.com/upload/UPLOADTOKEN' \
  -F 'file=@filename.txt'

On success, the server returns:

Status Code: 200 OK

{
	"status":"success",
	"msg":"File(s) uploaded successfully"
}

Creating a new file consists of 2 steps:

Request Parameters

Parameter Type Description
NODEUUID String UUID of the folder

Response Parameters

Parameter Type Description
token String Upload token

POST Parameters

Parameter Type Description
UPLOADTOKEN String Upload token
file String Path of the filename to upload

Create new file revision

  • Request an upload token
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/upload' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

On success, the server returns:

Status Code: 200 OK

{
	"token":UPLOADTOKEN,
	"status":"success",
	"msg":"This token is valid for next 5 seconds only"
}
  • Upload file using the upload endpoint
curl 'https://fileago.mydomain.com/upload/UPLOADTOKEN' \
  -F 'file=@filename.txt'

On success, the server returns:

Status Code: 200 OK

{
	"status":"success",
	"msg":"File(s) uploaded successfully"
}

Creating a new file revision consists of 2 steps:

Request Parameters

Parameter Type Description
NODEUUID String UUID of the file

Response Parameters

Parameter Type Description
token String Upload token

POST Parameters

Parameter Type Description
UPLOADTOKEN String Upload token
file String Path of the filename to upload

View a file

To view a file, use this API call:

curl 'https://fileago.mydomain.com/resources/auth/view/FILEACCESSKEY/FILEUUID/VERSION/FILENAME'

Successful response will return the file content with headers:

Status Code: 200 OK

<file binary content>

Request Parameters

Parameter Type Description
FILEACCESSKEY String File access key issued for the current session
FILEUUID String UUID of the specific file
VERSION String File version identifier (999999999999999 for latest version)
FILENAME String Name of the file for download

Response Description

Download a file

To download a file, use this API call:

curl 'https://fileago.mydomain.com/resources/auth/download/FILEACCESSKEY/FILEUUID/VERSION/FILENAME'

Successful response will return the file content with headers:

Status Code: 200 OK

<file binary content>

Request Parameters

Parameter Type Description
FILEACCESSKEY String File access key issued for the current session
FILEUUID String UUID of the specific file
VERSION String File version identifier (999999999999999 for latest version)
FILENAME String Name of the file for download

Response Description

Get details of a node

To fetch the detail of a node, the API call will be like:

curl 'https://fileago.mydomain.com/api/nodes/NODEUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

On success, the server returns (example result given below):

Status Code: 200 OK

{
	"status": "success",
	"msg": "Node info fetched successfully",
	"data": {
		"name": "Misc",
		"type": "Dir",
		"uuid": "d27fd3e2-2a5e-40c2-abc3-74f6734b190f",
		"owner_type": "User",
		"owner_uuid": "db1990e6-519c-4596-8778-37fd2d959691",
		"owner_fullname": "John Doe",
		"created": 1503597685574,
		"updated": 1533281990916
	}
}

Request Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file

Response Parameters

Parameter Type Description
status String success if no errors
msg String Message
name String Name of the node
type String Dir if the node is a folder, else File
uuid String UUID of the node
owner_type String User if the owner is a user, else Group
owner_uuid String UUID of the owner of the node
owner_fullname String Name of the owner
created Integer Created time in epoch (milliseconds)
updated Integer Updated time in epoch (milliseconds)

Get path of a node

To find the path of a node, the API call will be like:

curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/path' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

On success, the server returns (example result given below):

Status Code: 200 OK

{
	"status":"success",
	"msg":"Node path fetched successfully",
	"data":[
		{"name": "Home", "uuid": "home"},
		{"name": "Misc", "uuid": "d27fd3e2-2a5e-40c2-abc3-74f6734b190f"}
	]
}

Request Parameters

Parameter Type Description
NODEUUID String UUID of the folder or file

Response Parameters

Parameter Type Description
status String success if no errors
msg String Message
data List List of node names and its UUID starting from the top level directory

List contents of a folder

To list the items inside a folder, the API call will be like:

curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/dirlist' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

On success, the server returns (example result given below):

Status Code: 200 OK

{
	"status": "success", 
	"msg": "Directory contents fetched successfully",
	"data": [
		{
			"is_starred": false,
			"public_shares": 0,
			"name": "My Documents", 
			"size": 4,
			"comment_count": 13,
			"uuid": "50a3495d-9da5-469a-a971-57f2fe97a6fa",
			"private_shares": 0,
			"updated": 1522740152809,
			"type": "Dir"
		}, {
			"is_starred": true,
			"public_shares": 0,
			"name": "Invoice.docx",
			"size": 493135,
			"comment_count": 0,
			"uuid": "1339025b-d6e4-4c1e-9c62-85fc65ee0118",
			"private_shares": 0,
			"revision": 1,
			"updated": 1538224353000,
			"type": "File"
		}
	]
}

Request Parameters

Parameter Type Description
NODEUUID String UUID of the folder

Response Parameters

Parameter Type Description
status String success if no errors
msg String Message
data List List of nodes that are present in this folder

User and Group Actions

The endpoints in this section are available to authenticated users. Some group endpoints require the authenticated user to be a member of the group, and some write operations require the user to be a group administrator.

All examples assume that the Authorization header contains the JWT token returned by the authentication API.

Common Headers

Header Description
Authorization Bearer TOKEN
Content-Type application/json for requests with a JSON body

Permission Values

Permission Allowed Values
node_permissions read, write, delete, download
tag_permissions create, delete
share_permissions public_create, public_delete, private_create, private_delete, upload_link_create, upload_link_delete

Get current user profile

To fetch the profile of the authenticated user:

curl 'https://fileago.mydomain.com/api/user' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

Successful response:

{
    "status": "success",
    "msg": "User details fetched successfully",
    "data": {
        "uuid": "a805ae1b-5bde-454d-9c2e-4b171aa04c17",
        "fullname": "John Doe",
        "email": "john@example.com",
        "is_active": true,
        "is_admin": false,
        "avatar": "/images/default_avatar.png",
        "disk_quota": 1073741824,
        "disk_used": 1048576,
        "twofa": false,
        "created": 1522740152809
    }
}

HTTP Request

GET /api/user

Response Parameters

Parameter Type Description
uuid String UUID of the authenticated user
fullname String Full name of the user
email String Email address of the user
is_active Boolean Indicates whether the user account is active
is_admin Boolean Indicates whether the user has administrator privileges
avatar String Path to the user’s avatar
disk_quota Integer Disk quota in bytes. 0 means unlimited
disk_used Integer Disk space used in bytes
twofa Boolean Indicates whether two-factor authentication is enabled
created Integer Account creation timestamp in milliseconds
pass_expires Integer Password expiry timestamp, when local password expiry applies

Update current user profile

To update the current user’s name, password, or avatar:

curl -X PUT 'https://fileago.mydomain.com/api/user' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "fullname": "John Doe",
    "password": "Newpass123",
    "avatar": ""
  }'

HTTP Request

PUT /api/user

PUT Parameters

Parameter Type Description
fullname String Optional. New full name. Must be at least 3 characters
password String Optional. New password. Must be at least 8 characters and include lowercase, uppercase, and numeric characters
avatar String Optional. Base64 data URL for PNG/JPEG avatar. Pass an empty string to reset to the default avatar

Get notification settings

To fetch notification settings for the authenticated user:

curl 'https://fileago.mydomain.com/api/user/notifications' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

Successful response:

{
    "status": "success",
    "msg": "User notification settings fetched successfully",
    "data": {
        "email_alert_owned": true,
        "email_alert_group_owned": true,
        "email_alert_shared_with_me": true,
        "email_alert_shared_with_my_groups": true,
        "realtime_alert_owned": true,
        "realtime_alert_group_owned": true,
        "realtime_alert_shared_with_me": true,
        "realtime_alert_shared_with_my_groups": true
    }
}

HTTP Request

GET /api/user/notifications

Update notification settings

To update notification settings:

curl -X PUT 'https://fileago.mydomain.com/api/user/notifications' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "email_alert_owned": true,
    "realtime_alert_shared_with_me": false
  }'

HTTP Request

PUT /api/user/notifications

PUT Parameters

Parameter Type Description
email_alert_owned Boolean Email alerts for resources owned by the user
email_alert_group_owned Boolean Email alerts for resources owned by groups of the user
email_alert_shared_with_me Boolean Email alerts for resources shared with the user
email_alert_shared_with_my_groups Boolean Email alerts for resources shared with groups of the user
realtime_alert_owned Boolean Real-time alerts for resources owned by the user
realtime_alert_group_owned Boolean Real-time alerts for resources owned by groups of the user
realtime_alert_shared_with_me Boolean Real-time alerts for resources shared with the user
realtime_alert_shared_with_my_groups Boolean Real-time alerts for resources shared with groups of the user

Get 2FA status

To check whether two-factor authentication is enabled:

curl 'https://fileago.mydomain.com/api/user/2fa' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

Successful response:

{
    "status": "success",
    "msg": "User 2FA details fetched successfully",
    "data": {
        "twofa": false
    }
}

HTTP Request

GET /api/user/2fa

Enable or disable 2FA

To enable two-factor authentication:

curl -X POST 'https://fileago.mydomain.com/api/user/2fa' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"twofa": true}'

When enabling 2FA, the server returns the TOTP secret:

{
    "status": "success",
    "msg": "User 2FA details fetched successfully",
    "data": {
        "twofa": true,
        "secret_twofa": "JBSWY3DPEHPK3PXP"
    }
}

HTTP Request

POST /api/user/2fa

POST Parameters

Parameter Type Description
twofa Boolean true to enable 2FA, false to disable 2FA

Get login history

To fetch recent login and logout activity:

curl 'https://fileago.mydomain.com/api/user/login_history' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/user/login_history

Response Parameters

Parameter Type Description
action String login or logout
action_args String Additional event details
error_details String Error details, when present
ip_address String Client IP address
status String Event status
timestamp Integer Event timestamp in milliseconds

Logout

To close the current API session:

curl 'https://fileago.mydomain.com/api/user/logout' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/user/logout

Query Parameters

Parameter Type Description
chat_token String Optional. Chat auth token to close the chat session also

List users

To list users in the authenticated user’s organization:

curl 'https://fileago.mydomain.com/api/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/users

Query Parameters

Parameter Type Description
format String Optional. Use short for basic user fields or short_active for basic fields of active users only

Response Parameters

Parameter Type Description
status String Operation status
msg String Human-readable message
data Object[] List of user objects

List groups

To list groups available to the authenticated user:

curl 'https://fileago.mydomain.com/api/groups' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

Successful response:

{
    "status": "success",
    "msg": "Details fetched successfully",
    "data": [
        {
            "group_uuid": "e9b25524-a6ba-4649-b5ec-4a29b8cc8c03",
            "group_name": "Sales",
            "is_admin": true,
            "node_permissions": ["read", "write", "delete", "download"],
            "tag_permissions": ["create", "delete"],
            "share_permissions": ["public_create", "public_delete", "private_create", "private_delete"],
            "avatar": "/images/group_avatar.png"
        }
    ]
}

HTTP Request

GET /api/groups

Query Parameters

Parameter Type Description
show String Optional. Use all to list all groups in the organization when the server setting allows sharing with all groups

Response Parameters

Parameter Type Description
group_uuid String UUID of the group
group_name String Name of the group
is_admin Boolean Indicates whether the current user is an administrator of this group
node_permissions String[] Node permissions granted through this group
tag_permissions String[] Tag permissions granted through this group
share_permissions String[] Share permissions granted through this group
avatar String Path to the group avatar

Get group details

To fetch details of a group that the authenticated user belongs to:

curl 'https://fileago.mydomain.com/api/groups/GROUPUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/groups/GROUPUUID

Path Parameters

Parameter Type Description
GROUPUUID String UUID of the group

Update group details

Group administrators can update group profile fields:

curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Sales Team",
    "description": "Sales team workspace",
    "accept_incoming": "admins",
    "private_shares_notify": "members"
  }'

HTTP Request

PUT /api/groups/GROUPUUID

PUT Parameters

Parameter Type Description
name String Optional. New group name. Must be at least 3 characters
description String Optional. Description between 3 and 1024 characters
avatar String Optional. Base64 data URL for PNG/JPEG avatar. Pass an empty string to reset to the default avatar
broadcast_message String Optional. Message to email to group members. Requires email notifications to be enabled
accept_incoming String Optional. Who can accept incoming shares for the group: members or admins
private_shares_notify String Optional. Who should be notified for private shares: members or admins

List group members

To list members of a group:

curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/groups/GROUPUUID/users

Add a group member

Group administrators can add users to a group:

curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "user": "USERUUID",
    "permissions": {
        "is_admin": false,
        "node_permissions": ["read", "write", "download"],
        "tag_permissions": ["create"],
        "share_permissions": ["private_create", "private_delete"]
    }
  }'

HTTP Request

POST /api/groups/GROUPUUID/users

POST Parameters

Parameter Type Description
user String UUID of the user to add
permissions Object Permission object for the user’s membership in this group
is_admin Boolean Whether the user should be a group administrator
node_permissions String[] Node permissions
tag_permissions String[] Tag permissions
share_permissions String[] Share permissions

Get group member permissions

To fetch one member’s permissions in a group:

curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/groups/GROUPUUID/users/USERUUID

Update group member permissions

Group administrators can update a member’s group permissions:

curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "is_admin": true,
    "node_permissions": ["read", "write", "delete", "download"],
    "tag_permissions": ["create", "delete"],
    "share_permissions": ["public_create", "public_delete", "private_create", "private_delete"]
  }'

HTTP Request

PUT /api/groups/GROUPUUID/users/USERUUID

Remove a group member

Group administrators can remove a member from a group:

curl -X DELETE 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/groups/GROUPUUID/users/USERUUID

List group tags

To list tags owned by a group:

curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/tags' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/groups/GROUPUUID/tags

Query Parameters

Parameter Type Description
limit Integer Optional. Maximum number of tags to return. Use 0 or omit for the default behavior

Create group tag

To create a tag owned by a group:

curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/tags' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Important", "class": "red"}'

HTTP Request

POST /api/groups/GROUPUUID/tags

POST Parameters

Parameter Type Description
name String Name of the tag
class String Tag class. Must be one of the server’s configured valid tag classes

Configure user WebDrive endpoint

To create or replace the authenticated user’s WebDrive endpoint:

curl -X POST 'https://fileago.mydomain.com/api/user/webdrive' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"endpoint": "johnhome"}'

HTTP Requests

Method Endpoint Description
GET /api/user/webdrive Get the current user’s WebDrive endpoint
POST /api/user/webdrive Create or replace the current user’s WebDrive endpoint
DELETE /api/user/webdrive Delete the current user’s WebDrive endpoint

POST Parameters

Parameter Type Description
endpoint String WebDrive endpoint name. Must be 3-10 lowercase alphanumeric characters

Configure group WebDrive endpoint

Group administrators can create or replace a group’s WebDrive endpoint:

curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/webdrive' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"endpoint": "salesdocs", "show_url_to_group_members": true}'

HTTP Requests

Method Endpoint Description
GET /api/groups/GROUPUUID/webdrive Get the group’s WebDrive endpoint
POST /api/groups/GROUPUUID/webdrive Create or replace the group’s WebDrive endpoint
DELETE /api/groups/GROUPUUID/webdrive Delete the group’s WebDrive endpoint

POST Parameters

Parameter Type Description
endpoint String WebDrive endpoint name. Must be 3-10 lowercase alphanumeric characters
show_url_to_group_members Boolean Whether non-admin group members can view the WebDrive URL

List pending incoming shares for current user

To list incoming shares waiting for the authenticated user to accept or reject:

curl 'https://fileago.mydomain.com/api/user/pending_incoming' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/user/pending_incoming

Accept or reject pending incoming share for current user

To accept a pending incoming share:

curl -X PUT 'https://fileago.mydomain.com/api/user/pending_incoming' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"uuid": "NODEUUID", "action": "accept"}'

HTTP Request

PUT /api/user/pending_incoming

PUT Parameters

Parameter Type Description
uuid String UUID of the pending node returned by the list endpoint
action String accept or reject

List pending incoming shares for a group

To list pending incoming shares for a group:

curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/pending_incoming' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/groups/GROUPUUID/pending_incoming

Accept or reject pending incoming share for a group

To accept a pending incoming share for a group:

curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID/pending_incoming' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"uuid": "NODEUUID", "action": "accept"}'

HTTP Request

PUT /api/groups/GROUPUUID/pending_incoming

PUT Parameters

Parameter Type Description
uuid String UUID of the pending node returned by the list endpoint
action String accept or reject

Admin User and Group Actions

The endpoints in this section require administrator privileges. The built-in admin user can operate on the default organization or pass org_id where supported. Other administrator users operate only inside their own organization.

List users as admin

To list users with their group memberships:

curl 'https://fileago.mydomain.com/api/admin/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/users

Query Parameters

Parameter Type Description
org_id String Optional. Available to the built-in admin user to select an organization

Create user

To create a new user:

curl -X POST 'https://fileago.mydomain.com/api/admin/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "fullname": "John Doe",
    "email": "john@example.com",
    "password": "Passw0rd123",
    "disk_quota": 1073741824,
    "is_active": true,
    "is_admin": false,
    "comment": "Created using API"
  }'

HTTP Request

POST /api/admin/users

Query Parameters

Parameter Type Description
org_id String Optional. Available to the built-in admin user to select an organization

POST Parameters

Parameter Type Description
fullname String Full name. Must be at least 3 characters and must not contain numbers
email String Email address. Must be unique
password String Password. Must be at least 8 characters and include lowercase, uppercase, and numeric characters
disk_quota Integer Disk quota in bytes. Use 0 for unlimited or -1 where organization policy allows
is_active Boolean Whether the user account is active
is_admin Boolean Whether the user is an administrator
comment String Optional admin comment

Get user as admin

To fetch details of a user:

curl 'https://fileago.mydomain.com/api/admin/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/users/USERUUID

Update user as admin

To update a user:

curl -X PUT 'https://fileago.mydomain.com/api/admin/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "fullname": "John Doe",
    "email": "john@example.com",
    "disk_quota": 2147483648,
    "is_active": true,
    "is_admin": false,
    "twofa": false,
    "comment": "Updated using API"
  }'

HTTP Request

PUT /api/admin/users/USERUUID

PUT Parameters

Parameter Type Description
fullname String Optional. Full name
email String Optional. New unique email address
password String Optional. New password
disk_quota Integer Optional. Disk quota in bytes. Must be greater than current disk usage unless set to 0
is_active Boolean Optional. Whether the user account is active
is_admin Boolean Optional. Whether the user is an administrator
twofa Boolean Optional. Pass false to disable 2FA for the user
comment String Optional admin comment

Delete user

To delete a user:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID?confirm_delete=yes' \
  -H 'Authorization: Bearer TOKEN'

To delete a user and transfer owned data to another user or group:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID?confirm_delete=yes&transfer_data_to=TARGETUUID&delete_all_public_shares=true&delete_all_private_shares=true' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/admin/users/USERUUID

Query Parameters

Parameter Type Description
confirm_delete String Required. Must be yes
transfer_data_to String Optional. UUID of the user or group that should receive owned data
delete_all_public_shares Boolean Optional. When transferring data, set to true to delete public shares on transferred nodes
delete_all_private_shares Boolean Optional. When transferring data, set to true to delete private shares on transferred nodes

List groups of a user

To list groups assigned to a user:

curl 'https://fileago.mydomain.com/api/admin/users/USERUUID/groups' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/users/USERUUID/groups

Set groups for a user

To assign one or more groups to a user:

curl -X POST 'https://fileago.mydomain.com/api/admin/users/USERUUID/groups' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "groups": {
      "GROUPUUID": {
        "is_admin": false,
        "node_permissions": ["read", "write", "download"],
        "tag_permissions": ["create"],
        "share_permissions": ["private_create", "private_delete"]
      }
    }
  }'

HTTP Request

POST /api/admin/users/USERUUID/groups

POST Parameters

Parameter Type Description
groups Object Object keyed by group UUID. Each value contains the permissions for that group membership

List groups as admin

To list groups:

curl 'https://fileago.mydomain.com/api/admin/groups' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/groups

Query Parameters

Parameter Type Description
org_id String Optional. Available to the built-in admin user to select an organization

Create group

To create a group:

curl -X POST 'https://fileago.mydomain.com/api/admin/groups' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Sales", "disk_quota": 1073741824}'

HTTP Request

POST /api/admin/groups

Query Parameters

Parameter Type Description
org_id String Optional. Available to the built-in admin user to select an organization

POST Parameters

Parameter Type Description
name String Group name. Must be at least 3 characters
disk_quota Integer Disk quota in bytes. Use 0 for unlimited

Get group as admin

To fetch group details:

curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/groups/GROUPUUID

Update group as admin

To update group details:

curl -X PUT 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Sales Team",
    "description": "Sales workspace",
    "disk_quota": 2147483648
  }'

HTTP Request

PUT /api/admin/groups/GROUPUUID

PUT Parameters

Parameter Type Description
name String Optional. Group name
description String Optional. Description between 3 and 1024 characters
disk_quota Integer Optional. Disk quota in bytes. Must be greater than current disk usage unless set to 0

Delete group

To delete a group:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID?confirm_delete=yes' \
  -H 'Authorization: Bearer TOKEN'

To delete a group and transfer owned data to another user or group:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID?confirm_delete=yes&transfer_data_to=TARGETUUID&delete_all_public_shares=true&delete_all_private_shares=true' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/admin/groups/GROUPUUID

Query Parameters

Parameter Type Description
confirm_delete String Required. Must be yes
transfer_data_to String Optional. UUID of the user or group that should receive owned data
delete_all_public_shares Boolean Optional. When transferring data, set to true to delete public shares on transferred nodes
delete_all_private_shares Boolean Optional. When transferring data, set to true to delete private shares on transferred nodes

List group members as admin

To list members of a group:

curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/groups/GROUPUUID/users

Add group member as admin

To add a user to a group:

curl -X POST 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "user": "USERUUID",
    "permissions": {
        "is_admin": false,
        "node_permissions": ["read", "write", "download"],
        "tag_permissions": ["create"],
        "share_permissions": ["private_create", "private_delete"]
    }
  }'

HTTP Request

POST /api/admin/groups/GROUPUUID/users

Get group member as admin

To get one member’s group permissions:

curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/groups/GROUPUUID/users/USERUUID

Update group member as admin

To update a member’s group permissions:

curl -X PUT 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "is_admin": true,
    "node_permissions": ["read", "write", "delete", "download"],
    "tag_permissions": ["create", "delete"],
    "share_permissions": ["public_create", "public_delete", "private_create", "private_delete"]
  }'

HTTP Request

PUT /api/admin/groups/GROUPUUID/users/USERUUID

Remove group member as admin

To remove a user from a group:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/admin/groups/GROUPUUID/users/USERUUID

Share Approval Actions

List approvers for a user workspace

To list approvers configured for a user’s workspace:

curl 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/users/USERUUID/approvers

Add approver for a user workspace

To add an approver:

curl -X POST 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"approver_id": "APPROVERUSERUUID", "share_type": "public"}'

HTTP Request

POST /api/admin/users/USERUUID/approvers

Remove approver from a user workspace

To remove an approver:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers/APPROVERUSERUUID/public' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/admin/users/USERUUID/approvers/APPROVERUSERUUID/TYPE

List approvers for a group workspace

To list approvers configured for a group’s workspace:

curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/admin/groups/GROUPUUID/approvers

Add approver for a group workspace

To add an approver:

curl -X POST 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"approver_id": "APPROVERUSERUUID", "share_type": "private"}'

HTTP Request

POST /api/admin/groups/GROUPUUID/approvers

Remove approver from a group workspace

To remove an approver:

curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers/APPROVERUSERUUID/private' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/admin/groups/GROUPUUID/approvers/APPROVERUSERUUID/TYPE

Parameters

Parameter Type Description
approver_id String UUID of the user who can approve shares
share_type String public, private, upload, or share_copy
TYPE String Share type in the delete URL: public, private, upload, or share_copy

List shares pending my approval

To list pending share requests that the authenticated user can approve:

curl 'https://fileago.mydomain.com/api/pending_shares' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/pending_shares

Response Parameters

Parameter Type Description
pending_uuid String UUID of the pending approval request
workspace_id String UUID of the user or group workspace
workspace_name String Name of the workspace
share_type String public, private, upload, or share_copy
requested_at Integer Request timestamp in milliseconds
comment String Comment supplied by the requester
share_info Object Share-type specific details

Approve or reject pending share

To approve a pending share request:

curl -X PUT 'https://fileago.mydomain.com/api/pending_shares/PENDINGUUID/approval' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"status": "approved", "comment": "Approved"}'

To reject a pending share request:

curl -X PUT 'https://fileago.mydomain.com/api/pending_shares/PENDINGUUID/approval' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"status": "rejected", "comment": "Rejected"}'

HTTP Request

PUT /api/pending_shares/PENDINGUUID/approval

PUT Parameters

Parameter Type Description
status String approved or rejected
comment String Optional approval or rejection comment

List my submitted pending shares

To list pending share requests created by the authenticated user:

curl 'https://fileago.mydomain.com/api/my_pending_shares' \
  -H 'Authorization: Bearer TOKEN' \
  -H 'Content-Type: application/json'

HTTP Request

GET /api/my_pending_shares

Withdraw a submitted pending share

To withdraw a pending share request:

curl -X DELETE 'https://fileago.mydomain.com/api/my_pending_shares/PENDINGUUID' \
  -H 'Authorization: Bearer TOKEN'

HTTP Request

DELETE /api/my_pending_shares/PENDINGUUID