Authentication endpoints. Most of the endpoints require authentication.
There are two methods of authentication:
- Clients, such as the web interface or Ayon launcher use
Authorization
header withBearer <token>
value. Token is obtained by calling the/auth/login
endpoint. When not in use, the token expires after one day. - Services use x-api-key header with the API key value. API key is generated in the user settings and can be revoked at any time.
Services can additionally use x-as-user
header to impersonate another user.
This is useful for services that need to create data on behalf of another user.
Login
Login using name/password credentials.
Returns access token and user information. The token is used for authentication in other endpoints. It is valid for 24 hours, but it is extended automatically when the user is active.
Token may be revoked by calling the logout endpoint or using session manager.
Returns 401 response if the credentials are invalid.
Request Body schema: application/json
name required | string (User name) Username |
password required | string (Password) Password |
Responses
Request samples
- Payload
{- "name": "admin",
- "password": "SecretPassword.123"
}
Response samples
- 200
- 422
{- "detail": "Logged in as NAME",
- "error": "Unauthorized",
- "token": "TOKEN",
- "user": {
- "name": "awesome_user",
- "attrib": {
- "fullName": "Jane Doe",
- "email": "jane.doe@ayon.cloud",
- "avatarUrl": "string",
- "developerMode": true
}, - "data": { },
- "active": true,
- "ownAttrib": [
- "frameStart",
- "frameEnd"
], - "createdAt": "2023-01-01T00:00:00+00:00",
- "updatedAt": "2023-01-01T00:00:00+00:00"
}
}
Response samples
- 200
- 422
[- {
- "user": {
- "name": "awesome_user",
- "attrib": {
- "fullName": "Jane Doe",
- "email": "jane.doe@ayon.cloud",
- "avatarUrl": "string",
- "developerMode": true
}, - "data": { },
- "active": true,
- "ownAttrib": [
- "frameStart",
- "frameEnd"
], - "createdAt": "2023-01-01T00:00:00+00:00",
- "updatedAt": "2023-01-01T00:00:00+00:00"
}, - "token": "string",
- "created": 0,
- "lastUsed": 0,
- "isService": false,
- "clientInfo": {
- "ip": "string",
- "languages": [
- "string"
], - "location": {
- "country": "string",
- "subdivision": "string",
- "city": "string"
}, - "agent": {
- "platform": "string",
- "client": "string",
- "device": "string"
}, - "site_id": "string"
}
}
]
Project is a collection of folders and other entities. Each project has a unique name, which is used as its identifier.
To address an entity within the project, you need to provide both the project name and the entity ID.
Operations
Process multiple operations (create / update / delete) in a single request.
All operations are processed in the order they are provided in the request. If can_fail is set to False, the processing stops on the first error and all previous operations are rolled back. If can_fail is set to True, the processing continues and all operations are committed.
The response contains the list of operations with their success status. In case of failure, the error message is provided for each operation.
This endpoint normally does not return error response, unless there is a problem with the request itself or an unhandled exception. Do not rely on a status code to determine if the operation was successful.
Always check the success
field of the response.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
Array of objects (Operations) | |
canFail | boolean (Canfail) Default: false |
Responses
Request samples
- Payload
{- "operations": [
- {
- "id": "string",
- "type": "create",
- "entityType": "folder",
- "entityId": "string",
- "data": { },
- "force": false
}
], - "canFail": false
}
Response samples
- 200
- 422
{- "operations": [
- {
- "id": "string",
- "type": "create",
- "success": true,
- "status": 0,
- "detail": "string",
- "entityType": "folder",
- "entityId": "string"
}
], - "success": true
}
Get Project Anatomy
Retrieve a project anatomy.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Responses
Response samples
- 200
- 422
{- "roots": [
- {
- "name": "work",
- "windows": "C:/projects",
- "linux": "/mnt/share/projects",
- "darwin": "/Volumes/projects"
}
], - "templates": {
- "version_padding": 3,
- "version": "v{version:0>{@version_padding}}",
- "frame_padding": 4,
- "frame": "{frame:0>{@frame_padding}}",
- "work": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "publish": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "hero": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "delivery": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "staging": [
- {
- "name": "string",
- "directory": ""
}
], - "others": [
- {
- "name": "string",
- "value": ""
}
]
}, - "attributes": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "folder_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "folder",
- "original_name": "string"
}
], - "task_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "task_alt",
- "original_name": "string"
}
], - "link_types": [
- {
- "link_type": "string",
- "input_type": "folder",
- "output_type": "folder",
- "color": "string",
- "style": "solid"
}
], - "statuses": [
- {
- "name": "string",
- "shortName": "",
- "state": "not_started",
- "icon": "",
- "color": "#cacaca",
- "original_name": "string"
}
], - "tags": [
- {
- "name": "string",
- "color": "#cacaca",
- "original_name": "string"
}
]
}
Set Project Anatomy
Set a project anatomy.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
Array of objects (Roots) Default: [{"name":"work","windows":"C:/projects","linux":"/mnt/share/projects","darwin":"/Volumes/projects"}] Setup root paths for the project | |
object (Templates) Path templates configuration | |
object (Attributes) Attributes configuration | |
Array of objects (Folder types) Folder types configuration | |
Array of objects (Task types) Task types configuration | |
Array of objects (Link types) Link types configuration | |
Array of objects (Statuses) Statuses configuration | |
Array of objects (Tags) Tags configuration |
Responses
Request samples
- Payload
{- "roots": [
- {
- "name": "work",
- "windows": "C:/projects",
- "linux": "/mnt/share/projects",
- "darwin": "/Volumes/projects"
}
], - "templates": {
- "version_padding": 3,
- "version": "v{version:0>{@version_padding}}",
- "frame_padding": 4,
- "frame": "{frame:0>{@frame_padding}}",
- "work": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "publish": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "hero": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "delivery": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "staging": [
- {
- "name": "string",
- "directory": ""
}
], - "others": [
- {
- "name": "string",
- "value": ""
}
]
}, - "attributes": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "folder_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "folder",
- "original_name": "string"
}
], - "task_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "task_alt",
- "original_name": "string"
}
], - "link_types": [
- {
- "link_type": "string",
- "input_type": "folder",
- "output_type": "folder",
- "color": "string",
- "style": "solid"
}
], - "statuses": [
- {
- "name": "string",
- "shortName": "",
- "state": "not_started",
- "icon": "",
- "color": "#cacaca",
- "original_name": "string"
}
], - "tags": [
- {
- "name": "string",
- "color": "#cacaca",
- "original_name": "string"
}
]
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
List Projects
Return a list of available projects.
query Parameters
page | integer (Page) >= 1 Default: 1 |
length | integer (Records per page) If not provided, the result will not be limited |
library | boolean (Show library projects) If not provided, return projects regardless the flag |
active | boolean (Show active projects) If not provided, return projects regardless the flag |
order | string (Attribute to order the list by) Enum: "name" "createdAt" "updatedAt" |
desc | boolean (Sort in descending order) Default: false |
name | string (Filter by name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... Example: name=forest Limit the result to project with the matching name, or its part. % character may be used as a wildcard |
Responses
Response samples
- 200
- 422
{- "detail": "Showing LENGTH of COUNT projects",
- "count": 1,
- "projects": [
- {
- "name": "Example project",
- "code": "ex",
- "active": true,
- "createdAt": "2024-07-26T15:07:27.471270",
- "updatedAt": "2024-07-26T15:07:27.471281"
}
]
}
Deploy Project
Create a new project using the provided anatomy object.
Main purpose is to take an anatomy object and transform its contents to the project entity (along with additional data such as the project name).
Request Body schema: application/json
name required | string (Name) Project name |
code required | string (Code) Project code |
required | object (Anatomy) Project anatomy |
library | boolean (Library) Default: false Library project |
Responses
Request samples
- Payload
{- "name": "string",
- "code": "string",
- "anatomy": {
- "roots": [
- {
- "name": "work",
- "windows": "C:/projects",
- "linux": "/mnt/share/projects",
- "darwin": "/Volumes/projects"
}
], - "templates": {
- "version_padding": 3,
- "version": "v{version:0>{@version_padding}}",
- "frame_padding": 4,
- "frame": "{frame:0>{@frame_padding}}",
- "work": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "publish": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "hero": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "delivery": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "staging": [
- {
- "name": "string",
- "directory": ""
}
], - "others": [
- {
- "name": "string",
- "value": ""
}
]
}, - "attributes": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "folder_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "folder",
- "original_name": "string"
}
], - "task_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "task_alt",
- "original_name": "string"
}
], - "link_types": [
- {
- "link_type": "string",
- "input_type": "folder",
- "output_type": "folder",
- "color": "string",
- "style": "solid"
}
], - "statuses": [
- {
- "name": "string",
- "shortName": "",
- "state": "not_started",
- "icon": "",
- "color": "#cacaca",
- "original_name": "string"
}
], - "tags": [
- {
- "name": "string",
- "color": "#cacaca",
- "original_name": "string"
}
]
}, - "library": false
}
Response samples
- 201
- 422
null
Get Project
Retrieve a project by its name.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Responses
Response samples
- 200
- 422
{- "name": "awesome_project",
- "code": "prj",
- "library": false,
- "folderTypes": [
- {
- "name": "Folder",
- "icon": "folder"
}, - {
- "name": "Asset",
- "icon": "folder"
}, - {
- "name": "Shot",
- "icon": "folder"
}
], - "taskTypes": [
- {
- "name": "Rigging",
- "icon": "rig"
}, - {
- "name": "Modeling",
- "icon": "model"
}
], - "linkTypes": [
- {
- "name": "reference|version|version",
- "link_type": "reference",
- "input_type": "version",
- "output_type": "version",
- "data": {
- "color": "#ff0000"
}
}
], - "statuses": [
- {
- "name": "Unknown"
}
], - "tags": [
- {
- "name": "Unknown"
}
], - "config": { },
- "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "data": { },
- "active": true,
- "ownAttrib": [
- "frameStart",
- "frameEnd"
], - "createdAt": "2023-01-01T00:00:00+00:00",
- "updatedAt": "2023-01-01T00:00:00+00:00"
}
Create Project
Create a new project.
Since project has no ID, and a unique name is used as its identifier, use PUT request with the name provided in the URL to create a new project.
This is different from the rest of the entities, which use POST requests to create new entities with a unique ID.
Important: this endpoint only creates a project entity. It does
not handle creating its anatomy and assigning users to the project,
so it should be used only in special cases, when you need a granular
control over a project creation process. Use Deploy project
([POST] /api/projects) for general usage.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Request Body schema: application/json
code required | string (Project code) ^[a-zA-Z0-9_]*$ |
library | boolean (Library) Default: false |
folderTypes | Array of any (Folder types) |
taskTypes | Array of any (Task types) |
Array of objects (Link types) | |
statuses | Array of any (Statuses) |
tags | Array of any (Tags) List of tags available to set on entities. |
config | object (Project config) Default: {} |
object (Project attributes) | |
data | object (Project auxiliary data) |
active | boolean (Project active) Default: true Whether the project is active |
Responses
Request samples
- Payload
{- "code": "prj",
- "library": false,
- "folderTypes": [
- {
- "name": "Folder",
- "icon": "folder"
}, - {
- "name": "Asset",
- "icon": "folder"
}, - {
- "name": "Shot",
- "icon": "folder"
}
], - "taskTypes": [
- {
- "name": "Rigging",
- "icon": "rig"
}, - {
- "name": "Modeling",
- "icon": "model"
}
], - "linkTypes": [
- {
- "name": "reference|version|version",
- "link_type": "reference",
- "input_type": "version",
- "output_type": "version",
- "data": {
- "color": "#ff0000"
}
}
], - "statuses": [
- {
- "name": "Unknown"
}
], - "tags": [
- {
- "name": "Unknown"
}
], - "config": { },
- "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "data": { },
- "active": true
}
Response samples
- 201
- 422
null
Update Project
Patch a project.
Use a PATCH request to partially update a project. For example change the name or a particular key in 'data'.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
code | string (Project code) ^[a-zA-Z0-9_]*$ |
library | boolean (Library) Default: false |
folderTypes | Array of any (Folder types) |
taskTypes | Array of any (Task types) |
Array of objects (Link types) | |
statuses | Array of any (Statuses) |
tags | Array of any (Tags) List of tags available to set on entities. |
config | object (Project config) Default: {} |
object (Project attributes) | |
data | object (Project auxiliary data) |
active | boolean (Project active) Default: true Whether the project is active |
Responses
Request samples
- Payload
{- "code": "prj",
- "library": false,
- "folderTypes": [
- {
- "name": "Folder",
- "icon": "folder"
}, - {
- "name": "Asset",
- "icon": "folder"
}, - {
- "name": "Shot",
- "icon": "folder"
}
], - "taskTypes": [
- {
- "name": "Rigging",
- "icon": "rig"
}, - {
- "name": "Modeling",
- "icon": "model"
}
], - "linkTypes": [
- {
- "name": "reference|version|version",
- "link_type": "reference",
- "input_type": "version",
- "output_type": "version",
- "data": {
- "color": "#ff0000"
}
}
], - "statuses": [
- {
- "name": "Unknown"
}
], - "tags": [
- {
- "name": "Unknown"
}
], - "config": { },
- "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "data": { },
- "active": true
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Get Project Roots Overrides
Return overrides for project roots.
This endpoint is used to get overrides for project roots. The result is an a dictionary with site_id as a key and a dictionary with root names as keys and root paths as values.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Responses
Response samples
- 200
- 422
{- "property1": {
- "property1": "string",
- "property2": "string"
}, - "property2": {
- "property1": "string",
- "property2": "string"
}
}
Set Project Roots Overrides
Set overrides for project roots.
path Parameters
site_id required | string (Site Id) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Request Body schema: application/json
property name* additional property | string |
Responses
Request samples
- Payload
{- "property1": "string",
- "property2": "string"
}
Response samples
- 200
- 422
null
Get Project Site Roots
Return roots for a project on a specific site.
Thist takes in account roots declared in the project anatomy as well as site overrides. The result is combined and returned as a dictionary with root names as keys and root paths as values.
As the site also defines the platform, the result is specific to the platform of the site.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
platform | string (Platform) Enum: "windows" "linux" "darwin" |
header Parameters
x-ayon-site-id | string (Site ID) Site ID may be specified either as a query parameter ( |
Responses
Response samples
- 200
- 422
{- "property1": "string",
- "property2": "string"
}
Get Folder
Retrieve a folder by its ID.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
folder_id required | string (Folder ID) = 32 characters ^[0-9a-f]{32}$ Example: af10c8f0e9b111e9b8f90242ac130003 |
Responses
Response samples
- 200
- 422
{- "id": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "name": "bush",
- "label": "bush",
- "folderType": "Asset",
- "parentId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "thumbnailId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "path": "/assets/characters/xenomorph",
- "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 0,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}, - "toto": "string"
}, - "data": { },
- "active": true,
- "ownAttrib": [
- "frameStart",
- "frameEnd"
], - "status": "In progress",
- "tags": [
- "flabadob",
- "blip",
- "blop",
- "blup"
], - "createdAt": "2023-01-01T00:00:00+00:00",
- "updatedAt": "2023-01-01T00:00:00+00:00"
}
Delete Folder
Delete a folder.
Returns 409 error in there's a published product in the folder or any of its subfolders. Otherwise, deletes the folder and all its subfolders.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
folder_id required | string (Folder ID) = 32 characters ^[0-9a-f]{32}$ Example: af10c8f0e9b111e9b8f90242ac130003 |
query Parameters
force | boolean (Force) Default: false Allow recursive deletion |
header Parameters
x-sender | string (X-Sender) |
Responses
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Update Folder
Patch (partially update) a folder.
Once there is a version published, the folder's name and hierarchy cannot be changed.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
folder_id required | string (Folder ID) = 32 characters ^[0-9a-f]{32}$ Example: af10c8f0e9b111e9b8f90242ac130003 |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
name | string (Folder name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
label | string (Folder label) ^[^';]*$ |
folderType | string (Folder type) |
parentId | string (Parent ID) ^[0-f]{32}$ Parent folder ID in the hierarchy |
thumbnailId | string (Thumbnail ID) ^[0-f]{32}$ |
status | string (Folder status) Status of the folder |
tags | Array of strings (Folder tags) Tags assigned to the the folder |
object (Folder attributes) | |
data | object (Folder auxiliary data) |
active | boolean (Folder active) Default: true Whether the folder is active |
Responses
Request samples
- Payload
{- "name": "bush",
- "label": "bush",
- "folderType": "Asset",
- "parentId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "thumbnailId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "status": "In progress",
- "tags": [
- "flabadob",
- "blip",
- "blop",
- "blup"
], - "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 0,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}, - "toto": "string"
}, - "data": { },
- "active": true
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Get Folder List
Return all folders in the project. Fast.
This is a similar endpoint to /hierarchy, but the result is a flat list. additionally, this endpoint should be faster since it uses a cache. The cache is updated every time a folder is created, updated, or deleted.
The endpoint handles ACL and also returns folder attributes.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
attrib | boolean (Attrib) Default: false |
Responses
Response samples
- 200
- 422
{- "detail": "string",
- "folders": [
- {
- "id": "string",
- "path": "string",
- "parentId": "string",
- "parents": [
- "string"
], - "name": "string",
- "label": "string",
- "folderType": "string",
- "hasTasks": false,
- "hasChildren": false,
- "taskNames": [
- "string"
], - "status": "string",
- "attrib": { },
- "ownAttrib": [
- "string"
], - "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create Folder
Create a new folder.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
id | string (Entity ID) ^[0-f]{32}$ Explicitly set the ID of the entity |
name required | string (Folder name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
label | string (Folder label) ^[^';]*$ |
folderType | string (Folder type) |
parentId | string (Parent ID) ^[0-f]{32}$ Parent folder ID in the hierarchy |
thumbnailId | string (Thumbnail ID) ^[0-f]{32}$ |
status | string (Folder status) Status of the folder |
tags | Array of strings (Folder tags) Tags assigned to the the folder |
object (Folder attributes) | |
data | object (Folder auxiliary data) |
active | boolean (Folder active) Default: true Whether the folder is active |
Responses
Request samples
- Payload
{- "id": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "name": "bush",
- "label": "bush",
- "folderType": "Asset",
- "parentId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "thumbnailId": "c10d5bc73dcab7da4cba0f3e0b3c0aea",
- "status": "In progress",
- "tags": [
- "flabadob",
- "blip",
- "blop",
- "blup"
], - "attrib": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 0,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}, - "toto": "string"
}, - "data": { },
- "active": true
}
Response samples
- 201
- 422
{- "id": "af10c8f0e9b111e9b8f90242ac130003"
}
Get Folder Hierarchy
Return a folder hierarchy of a project.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
search | string (Search query) Default: "" Example: search=forest Full-text search query used to limit the result |
types | string (Type filter) Default: "" Example: types=AssetBuild,Shot,Sequence Comma separated list of folder_types to show |
Responses
Response samples
- 200
- 422
{- "detail": "string",
- "projectName": "string",
- "hierarchy": [
- {
- "id": "af10c8f0e9b111e9b8f90242ac130003",
- "name": "Tree",
- "label": "Tree",
- "status": "Tree",
- "folderType": "AssetBuild",
- "hasTasks": true,
- "taskNames": [
- "Modeling",
- "Rigging"
], - "parents": [
- "string"
], - "parentId": "string",
- "children": [
- { }
]
}
]
}
Endpoints related to attribute configuration.
Warning: data does not reflect the active configuration of the attributes. The server needs to be restarted in order the changes become active.
Response samples
- 200
- 422
{- "attributes": [
- {
- "name": "my_attribute",
- "position": 12,
- "scope": [
- "folder",
- "task"
], - "builtin": false,
- "data": {
- "type": "string",
- "title": "My attribute",
- "description": "Value of my attribute",
- "example": "value1",
- "default": null,
- "gt": 0,
- "ge": 0,
- "lt": 0,
- "le": 0,
- "minLength": 0,
- "maxLength": 0,
- "minItems": 0,
- "maxItems": 0,
- "regex": "^[a-zA-Z0-9_]+$",
- "enum": [
- {
- "value": "value1",
- "label": "Value 1"
}, - {
- "value": "value2",
- "label": "Value 2"
}, - {
- "value": "value3",
- "label": "Value 3"
}
], - "inherit": true
}
}
]
}
Set Attribute List
Set the attribute configuration for all (or ao of) attributes
Request Body schema: application/json
Array of objects (Attributes configuration) | |
deleteMissing | boolean (Delete missing) Default: false Delete custom attributes not includedin the payload from the database. |
Responses
Request samples
- Payload
{- "attributes": [
- {
- "name": "my_attribute",
- "position": 12,
- "scope": [
- "folder",
- "task"
], - "builtin": false,
- "data": {
- "type": "string",
- "title": "My attribute",
- "description": "Value of my attribute",
- "example": "value1",
- "default": null,
- "gt": 0,
- "ge": 0,
- "lt": 0,
- "le": 0,
- "minLength": 0,
- "maxLength": 0,
- "minItems": 0,
- "maxItems": 0,
- "regex": "^[a-zA-Z0-9_]+$",
- "enum": [
- {
- "value": "value1",
- "label": "Value 1"
}, - {
- "value": "value2",
- "label": "Value 2"
}, - {
- "value": "value3",
- "label": "Value 3"
}
], - "inherit": true
}
}
], - "deleteMissing": false
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Get Attribute Config
Return the configuration for a single attribute.
path Parameters
attribute_name required | string (Attribute name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
Responses
Response samples
- 200
- 422
{- "name": "my_attribute",
- "position": 12,
- "scope": [
- "folder",
- "task"
], - "builtin": false,
- "data": {
- "type": "string",
- "title": "My attribute",
- "description": "Value of my attribute",
- "example": "value1",
- "default": null,
- "gt": 0,
- "ge": 0,
- "lt": 0,
- "le": 0,
- "minLength": 0,
- "maxLength": 0,
- "minItems": 0,
- "maxItems": 0,
- "regex": "^[a-zA-Z0-9_]+$",
- "enum": [
- {
- "value": "value1",
- "label": "Value 1"
}, - {
- "value": "value2",
- "label": "Value 2"
}, - {
- "value": "value3",
- "label": "Value 3"
}
], - "inherit": true
}
}
Set Attribute Config
Update attribute configuration
path Parameters
attribute_name required | string (Attribute name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
Request Body schema: application/json
position required | integer (Positon) Default order |
Array of strings or strings (Scope) List of entity types the attribute is available on | |
builtin | boolean (Builtin) Default: false Is attribute builtin. Built-in attributes cannot be removed. |
required | object (AttributeData) Base API model. |
Responses
Request samples
- Payload
{- "position": 12,
- "scope": [
- "folder",
- "task"
], - "builtin": false,
- "data": {
- "type": "string",
- "title": "My attribute",
- "description": "Value of my attribute",
- "example": "value1",
- "default": null,
- "gt": 0,
- "ge": 0,
- "lt": 0,
- "le": 0,
- "minLength": 0,
- "maxLength": 0,
- "minItems": 0,
- "maxItems": 0,
- "regex": "^[a-zA-Z0-9_]+$",
- "enum": [
- {
- "value": "value1",
- "label": "Value 1"
}, - {
- "value": "value2",
- "label": "Value 2"
}, - {
- "value": "value3",
- "label": "Value 3"
}
], - "inherit": true
}
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Get Addon Project Settings Schema
Return the JSON schema of the addon settings.
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Get Addon Project Settings
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
as | string (As) |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Set Addon Project Settings
Set the project overrides of the given addon.
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Get Addon Project Overrides
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
as | string (As) |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 401
- 403
- 422
null
Modify Project Overrides
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Request Body schema: application/json
action required | string (Action) Enum: "delete" "pin" |
path required | Array of strings (Path) |
Responses
Request samples
- Payload
{- "action": "delete",
- "path": [
- "string"
]
}
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Delete Addon Project Overrides
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Get Raw Addon Project Overrides
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Set Raw Addon Project Overrides
Set raw studio overrides for an addon.
Warning: this endpoint is not intended for general use and should only be used by administrators. It bypasses the normal validation and processing that occurs when modifying studio overrides through the normal API.
It won't trigger any events or validation checks, and may result in unexpected behaviour if used incorrectly.
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
query Parameters
variant | string (Variant) Default: "production" |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Get Addon Site Settings
Return the JSON schema of the addon site settings.
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
query Parameters
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Set Addon Site Settings
path Parameters
addon_name required | string (Addon Name) |
version required | string (Version) |
query Parameters
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Get Addon Settings Schema
Return the JSON schema of the addon settings.
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
query Parameters
variant | string (Variant) Default: "production" |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Get Addon Studio Settings
Return the settings (including studio overrides) of the given addon.
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
query Parameters
variant | string (Variant) Default: "production" |
as | string (As) |
Responses
Response samples
- 200
- 401
- 403
- 422
{ }
Set Addon Studio Settings
Set the studio overrides for the given addon.
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
query Parameters
variant | string (Variant) Default: "production" |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Modify Studio Overrides
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
query Parameters
variant | string (Variant) Default: "production" |
Request Body schema: application/json
action required | string (Action) Enum: "delete" "pin" |
path required | Array of strings (Path) |
Responses
Request samples
- Payload
{- "action": "delete",
- "path": [
- "string"
]
}
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
Set Raw Addon Studio Overrides
Set raw studio overrides for an addon.
Warning: this endpoint is not intended for general use and should only be used by administrators. It bypasses the normal validation and processing that occurs when modifying studio overrides through the normal API.
It won't trigger any events or validation checks, and may result in unexpected behaviour if used incorrectly.
path Parameters
addon_name required | string (Addon Name) |
addon_version required | string (Addon Version) |
query Parameters
variant | string (Variant) Default: "production" |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 401
- 403
- 422
{- "code": 401,
- "detail": "Not logged in"
}
List Addons
List all available addons.
query Parameters
details | boolean (Show details) Default: false |
Responses
Response samples
- 200
- 401
- 403
- 422
{- "addons": [
- {
- "name": "string",
- "title": "string",
- "versions": {
- "property1": {
- "hasSettings": false,
- "hasSiteSettings": false,
- "frontendScopes": { },
- "clientPyproject": { },
- "clientSourceInfo": [
- {
- "type": "filesystem",
- "path": {
- "windows": "",
- "linux": "",
- "darwin": ""
}
}
], - "services": { },
- "isBroken": false,
- "reason": {
- "property1": "string",
- "property2": "string"
}
}, - "property2": {
- "hasSettings": false,
- "hasSiteSettings": false,
- "frontendScopes": { },
- "clientPyproject": { },
- "clientSourceInfo": [
- {
- "type": "filesystem",
- "path": {
- "windows": "",
- "linux": "",
- "darwin": ""
}
}
], - "services": { },
- "isBroken": false,
- "reason": {
- "property1": "string",
- "property2": "string"
}
}
}, - "description": "string",
- "productionVersion": "string",
- "stagingVersion": "string",
- "addonType": "server",
- "system": true
}
]
}
Configure Addons
Request Body schema: application/json
object (VariantCopyRequest) Base API model. | |||||||
|
Responses
Request samples
- Payload
{- "copyVariant": {
- "addonName": "string",
- "copyFrom": "production",
- "copyTo": "staging"
}
}
Response samples
- 200
- 401
- 403
- 422
null
Get All Addons Settings Deprecated
Return all addon settings for the project.
query Parameters
variant | string (Settings variant) Default: "production" Enum: "production" "staging" |
project | string (Project) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
site | string (Site) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
Responses
Response samples
- 200
- 422
{- "settings": {
- "my-addon": {
- "my-setting": "my-value",
- "my-other-setting": "my-other-value"
}
}, - "versions": {
- "my-addon": "1.0.0"
}
}
Get All Site Settings Deprecated
Return site settings for all enabled addons.
Those are 'global' site settings (from addon.site_settings_model) with no project overrides. When site is not specified, it will return the default settings provided by the model.
query Parameters
variant | string (Settings variant) Default: "production" Enum: "production" "staging" |
site | string (Site) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
Responses
Response samples
- 200
- 422
{- "settings": {
- "my-addon": {
- "my-setting": "my-value",
- "my-other-setting": "my-other-value"
}
}, - "versions": {
- "my-addon": "1.0.0"
}
}
Get All Settings
query Parameters
bundle_name | string (Bundle name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... Production if not set |
project_name | string (Project name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... Studio settings if not set |
variant | string (Variant) Default: "production" |
summary | boolean (Summary) Default: false Summary mode |
site_id | string (Site ID) Site ID may be specified a query parameter. Both |
Responses
Response samples
- 200
- 422
{- "bundleName": "string",
- "addons": [
- {
- "name": "my-addon",
- "version": "1.0.0",
- "title": "My Addon",
- "hasSettings": false,
- "hasProjectSettings": false,
- "hasProjectSiteSettings": false,
- "hasSiteSettings": false,
- "hasStudioOverrides": true,
- "hasProjectOverrides": true,
- "hasProjectSiteOverrides": true,
- "settings": { },
- "siteSettings": { },
- "isBroken": false,
- "reason": {
- "property1": "string",
- "property2": "string"
}
}
]
}
Sensitive information, like passwords or API keys, can be securely stored in secrets, which are only accessible by administrators and services. This makes them an ideal location for storing this type of data.
For addons needing access to secrets, using the 'secret name' in settings instead of the actual value is recommended. Consequently, updating secrets won't require any changes to the addon configuration.
Save Secret
Create or update a secret value
path Parameters
secret_name required | string (Secret name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
Request Body schema: application/json
name | string (Secret name) |
value | string (Secret value) |
Responses
Request samples
- Payload
{- "name": "string",
- "value": "string"
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Get Access Group
Get an access group definition
path Parameters
access_group_name required | string (Access group name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
project_name required | string (Project name) |
Responses
Response samples
- 200
- 422
{- "create": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "read": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "update": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "publish": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "delete": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "attrib_read": {
- "enabled": false,
- "attributes": [
- "string"
]
}, - "attrib_write": {
- "enabled": false,
- "attributes": [
- "string"
]
}, - "endpoints": {
- "enabled": false,
- "endpoints": [
- "string"
]
}
}
Save Access Group
Create or update an access group.
Use _
as a project name to save a global access group.
path Parameters
access_group_name required | string (Access group name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
project_name required | string (Project name) |
Request Body schema: application/json
object (Restrict folder creation) Whitelist folders a user can create | |
object (Restrict folder read) Whitelist folders a user can read | |
object (Restrict folder update) Whitelist folders a user can update | |
object (Restrict publishing) Whitelist folders a user can publish to | |
object (Restrict folder delete) Whitelist folders a user can delete | |
object (Restrict attribute read) Whitelist attributes a user can read | |
object (Restrict attribute update) Whitelist attributes a user can write | |
object (Restrict REST endpoints) Whitelist REST endpoints a user can access |
Responses
Request samples
- Payload
{- "create": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "read": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "update": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "publish": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "delete": {
- "enabled": false,
- "access_list": [
- {
- "access_type": "assigned",
- "path": "/assets/characters"
}
]
}, - "attrib_read": {
- "enabled": false,
- "attributes": [
- "string"
]
}, - "attrib_write": {
- "enabled": false,
- "attributes": [
- "string"
]
}, - "endpoints": {
- "enabled": false,
- "endpoints": [
- "string"
]
}
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
Delete Access Group
Delete an access group
path Parameters
access_group_name required | string (Access group name) ^[a-zA-Z0-9_]([a-zA-Z0-9_\.\-]*[a-zA-Z0-9_])?... |
project_name required | string (Project name) |
Responses
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
List Available Actions For Context
Get available actions for a context.
This endpoint is used to get a list of actions that can be performed on a given context. The context is defined by the project name, entity type, and entity ids. The resulting list is then displayed to the user, who can choose to run one of the actions.
Simple actions are actions that do not require any additional computation, so the list may be returned relatively quickly.
Dynamic actions are actions that require additional computation to determine if they are available, so they cannot be listed as quickly as simple actions.
Simple actions may be pinned to the entity sidebar.
query Parameters
mode | string (Action List Mode) Default: "simple" Enum: "simple" "dynamic" "all" |
Request Body schema: application/json
projectName required | string (Projectname) The name of the project |
entityType required | string (Entitytype) Enum: "folder" "product" "version" "representation" "task" "workfile" The type of the entity |
entitySubtypes | Array of strings (Entitysubtypes) List of subtypes present in the entity list |
entityIds required | Array of strings (Entity IDs) The IDs of the entities |
Responses
Request samples
- Payload
{- "projectName": "my_project",
- "entityType": "folder",
- "entitySubtypes": [
- "asset"
], - "entityIds": [
- "1a3bfe33-1b1b-4b1b-8b1b-1b1b1b1b1b1b"
]
}
Response samples
- 200
- 422
{- "actions": [
- {
- "identifier": "maya.launch",
- "label": "Launch Maya",
- "category": "Launch",
- "order": 100,
- "icon": {
- "type": "material-symbols",
- "name": "launch"
}, - "featured": false,
- "addonName": "maya",
- "addonVersion": "1.5.6",
- "variant": "production"
}
]
}
List All Actions
Get a list of all available actions.
This endpoint is used to get a list of all available actions, regardless the context they are available in. In order to get this list, addon has to implement "get_all_actions" method.
This endpoint is used for managing actions (e.g. enable/disable/statistics...)
Responses
Response samples
- 200
- 422
[- {
- "identifier": "maya.launch",
- "label": "Launch Maya",
- "category": "Launch",
- "order": 100,
- "icon": {
- "type": "material-symbols",
- "name": "launch"
}, - "featured": false,
- "addonName": "maya",
- "addonVersion": "1.5.6",
- "variant": "production"
}
]
Execute Action
Run an action.
This endpoint is used to run an action on a context. This is called from the frontend when the user selects an action to run.
query Parameters
addonName required | string (Addon Name) |
addonVersion required | string (Addon Version) |
variant | string (Action Variant) Default: "production" |
identifier required | string (Action Identifier) |
Request Body schema: application/json
projectName required | string (Projectname) The name of the project |
entityType required | string (Entitytype) Enum: "folder" "product" "version" "representation" "task" "workfile" The type of the entity |
entitySubtypes | Array of strings (Entitysubtypes) List of subtypes present in the entity list |
entityIds required | Array of strings (Entity IDs) The IDs of the entities |
Responses
Request samples
- Payload
{- "projectName": "my_project",
- "entityType": "folder",
- "entitySubtypes": [
- "asset"
], - "entityIds": [
- "1a3bfe33-1b1b-4b1b-8b1b-1b1b1b1b1b1b"
]
}
Response samples
- 200
- 422
{- "type": "launcher",
- "success": true,
- "message": "Action executed successfully",
- "uri": "ayon-launcher://action?server_url=http%3A%2F%2Flocalhost%3A8000%2F&token=eyJaaaa"
}
Take Action
called by launcher
This is called by the launcher when it is started via
ayon-launcher://action?server_url=...&token=...
URI
Launcher connects to the server using the server url and uses the token to get the action event (token is the event.hash)
The server then gets the event payload and updates the event status to in_progress and returns the event payload to the launcher.
Launcher is then responsible for executing the action based on the payload and updating the event status to finished or failed
path Parameters
token required | string (Action Token) [a-f0-9]{64} |
Responses
Response samples
- 200
- 422
{- "eventId": "aae4b3d4-7b7b-4b7b-8b7b-7b7b7b7b7b7b",
- "actionIdentifier": "launch-maya",
- "args": [
- "-file",
- "path/to/file.ma"
], - "context": {
- "projectName": "my_project",
- "entityType": "folder",
- "entitySubtypes": [
- "asset"
], - "entityIds": [
- "1a3bfe33-1b1b-4b1b-8b1b-1b1b1b1b1b1b"
]
}, - "addonName": "maya",
- "addonVersion": "1.5.6",
- "variant": "production",
- "userName": "john.doe"
}
Post Project Activity
Create an activity.
Comment on an entity for example. Or subscribe for updates (later)
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
entity_type required | string (Entity Type) |
entity_id required | string (Entity ID) = 32 characters ^[0-9a-f]{32}$ Example: af10c8f0e9b111e9b8f90242ac130003 |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
id | string (Id) Explicitly set the ID of the activity |
activityType required | string (Activitytype) Enum: "comment" "reviewable" "status.change" "assignee.add" "assignee.remove" "version.publish" |
body | string (Body) Default: "" |
files | Array of strings (Files) |
timestamp | string <date-time> (Timestamp) |
data | object (Data) Additional data |
Responses
Request samples
- Payload
{- "id": "string",
- "activityType": "comment",
- "body": "This is a comment",
- "files": [
- "file1",
- "file2"
], - "timestamp": "2021-01-01T00:00:00Z",
- "data": {
- "key": "value"
}
}
Response samples
- 201
- 422
{- "id": "123"
}
Delete Project Activity
Delete an activity.
Only the author or an administrator of the activity can delete it.
path Parameters
activity_id required | string (Activity Id) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Responses
Response samples
- 200
- 422
null
Patch Project Activity
Edit an activity.
Only the author of the activity can edit it.
path Parameters
activity_id required | string (Activity Id) |
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
header Parameters
x-sender | string (X-Sender) |
Request Body schema: application/json
body required | string (Body) |
files | Array of strings (Files) |
Responses
Request samples
- Payload
{- "body": "This is a comment",
- "files": [
- "file1",
- "file2"
]
}
Response samples
- 200
- 422
null
Suggest Entity Mention
Suggests entity mentions based on the given entity type.
This is triggered when the user begins commenting on a task, folder, or version. It populates the suggestions dropdown with relevant entities that the user can mention.
path Parameters
project_name required | string (Project name) ^[a-zA-Z0-9_]*$ |
Request Body schema: application/json
entityType required | string (Entitytype) Enum: "folder" "task" "version" |
entityId required | string (Entityid) |
Responses
Request samples
- Payload
{- "entityType": "task",
- "entityId": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b"
}
Response samples
- 200
- 422
{- "users": [
- {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "name": "john",
- "fullName": "John Doe"
}
], - "tasks": [
- {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "id": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b",
- "taskType": "Modeling",
- "name": "modeling",
- "label": "string",
- "thumbnailId": "string",
- "parent": {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "id": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b",
- "folderType": "Asset",
- "name": "my_character",
- "label": "My Character",
- "thumbnailId": "string"
}
}
], - "versions": [
- {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "id": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b",
- "version": 1,
- "parent": {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "id": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b",
- "name": "model_main",
- "productType": "Model",
- "parent": {
- "createdAt": "2023-01-01T12:00:00Z",
- "relevance": 0.85,
- "id": "af3e4b3e-1b1b-4b3b-8b3b-3b3b3b3b3b3b",
- "folderType": "Asset",
- "name": "my_character",
- "label": "My Character",
- "thumbnailId": "string"
}
}, - "name": "string"
}
]
}
Response samples
- 200
- 401
- 403
- 422
{- "items": [
- {
- "id": "string",
- "topic": "addon.install",
- "description": "string",
- "addonName": "string",
- "addonVersion": "string",
- "user": "string",
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "restartRequired": true
}
Get Anatomy Preset
Returns the anatomy preset with the given name.
- Use
__builtin__
character as a preset name to return the builtin preset. - Use
__primary__
character as a preset name to return the primary preset. _
is an alias for built in preset (deprecated, kept for backward compatibility).
path Parameters
preset_name required | string (Preset Name) |
Responses
Response samples
- 200
- 422
{- "roots": [
- {
- "name": "work",
- "windows": "C:/projects",
- "linux": "/mnt/share/projects",
- "darwin": "/Volumes/projects"
}
], - "templates": {
- "version_padding": 3,
- "version": "v{version:0>{@version_padding}}",
- "frame_padding": 4,
- "frame": "{frame:0>{@frame_padding}}",
- "work": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "publish": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "hero": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "delivery": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "staging": [
- {
- "name": "string",
- "directory": ""
}
], - "others": [
- {
- "name": "string",
- "value": ""
}
]
}, - "attributes": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "folder_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "folder",
- "original_name": "string"
}
], - "task_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "task_alt",
- "original_name": "string"
}
], - "link_types": [
- {
- "link_type": "string",
- "input_type": "folder",
- "output_type": "folder",
- "color": "string",
- "style": "solid"
}
], - "statuses": [
- {
- "name": "string",
- "shortName": "",
- "state": "not_started",
- "icon": "",
- "color": "#cacaca",
- "original_name": "string"
}
], - "tags": [
- {
- "name": "string",
- "color": "#cacaca",
- "original_name": "string"
}
]
}
Update Anatomy Preset
Create/update an anatomy preset with the given name.
path Parameters
preset_name required | string (Preset Name) |
Request Body schema: application/json
Array of objects (Roots) Default: [{"name":"work","windows":"C:/projects","linux":"/mnt/share/projects","darwin":"/Volumes/projects"}] Setup root paths for the project | |
object (Templates) Path templates configuration | |
object (Attributes) Attributes configuration | |
Array of objects (Folder types) Folder types configuration | |
Array of objects (Task types) Task types configuration | |
Array of objects (Link types) Link types configuration | |
Array of objects (Statuses) Statuses configuration | |
Array of objects (Tags) Tags configuration |
Responses
Request samples
- Payload
{- "roots": [
- {
- "name": "work",
- "windows": "C:/projects",
- "linux": "/mnt/share/projects",
- "darwin": "/Volumes/projects"
}
], - "templates": {
- "version_padding": 3,
- "version": "v{version:0>{@version_padding}}",
- "frame_padding": 4,
- "frame": "{frame:0>{@frame_padding}}",
- "work": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "publish": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "hero": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "delivery": [
- {
- "name": "string",
- "directory": "string",
- "file": "string"
}
], - "staging": [
- {
- "name": "string",
- "directory": ""
}
], - "others": [
- {
- "name": "string",
- "value": ""
}
]
}, - "attributes": {
- "fps": 25,
- "resolutionWidth": 1920,
- "resolutionHeight": 1080,
- "pixelAspect": 1,
- "clipIn": 1,
- "clipOut": 1,
- "frameStart": 1001,
- "frameEnd": 1001,
- "handleStart": 0,
- "handleEnd": 0,
- "startDate": "2021-01-01T00:00:00+00:00",
- "endDate": "2021-01-01T00:00:00+00:00",
- "description": "A very nice entity",
- "applications": {
- "value": "adsk_3dsmax/2023",
- "label": "3ds Max 2023"
}, - "tools": {
- "value": "mtoa/3-1",
- "label": "Autodesk Arnold 3.1"
}
}, - "folder_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "folder",
- "original_name": "string"
}
], - "task_types": [
- {
- "name": "string",
- "shortName": "",
- "icon": "task_alt",
- "original_name": "string"
}
], - "link_types": [
- {
- "link_type": "string",
- "input_type": "folder",
- "output_type": "folder",
- "color": "string",
- "style": "solid"
}
], - "statuses": [
- {
- "name": "string",
- "shortName": "",
- "state": "not_started",
- "icon": "",
- "color": "#cacaca",
- "original_name": "string"
}
], - "tags": [
- {
- "name": "string",
- "color": "#cacaca",
- "original_name": "string"
}
]
}
Response samples
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}