Asset Hub API - State
Server
State
The server has the following per-show state:
{
"State": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
Properties:
Repositories- Settings by repositories. If repository name contains.(dot), encode/decode it using string[dot]. See also commandCreateRepository.AutoPull- Default automatic pull of workspaces linked to the repository.
To read and/or update the state, use commands Get, Set and Reset. The server will respond with command Update. Command Startup is sent by the server on startup.
Get topic
{"Type":"Get","Target":"AssetHubServer","Name":"State","RespondTo":"Explorer"}
Get message
{}
Set topic
{"Type":"Set","Target":"AssetHubServer","Name":"State"}
Set message
{
"Value": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
Reset topic
{"Type":"Reset","Target":"AssetHubServer"}
Reset message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "AssetHubServer",
"Name": "State"
}
Update message
{
"Value": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
WorkspaceInfo
The server has the following per-machine state:
{
"WorkspaceInfo": {
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Clients": {
"MSI-AssetHubClient": {
"Name": "MSI-AssetHubClient",
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Engine": {
"Running": true,
"Type": "Editor",
"Dirty": false,
"Workspace": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"AutoPull": false,
"Reload": false
}
}
}
}
}
Properties:
Status- System info of the service.Incoming-trueif there are remote changes, otherwisefalse.Outcoming-trueif there are local changes, otherwisefalse.Activity- One ofIdleorSync.Stage- One ofInitiating,InProgressorFinalizing.Current- Current step.Total- Total number of steps.Progress- Progress information.
Clients- System info of client services. If client service name contains.(dot), encode/decode it using string[dot].Name- Name of the client service.Status- System info of the service in respect to all active workspaces.Incoming-trueif there are remote changes, otherwisefalse.Outcoming-trueif there are local changes, otherwisefalse.Activity- One ofIdleorSync.Stage- One ofInitiating,InProgressorFinalizing.Current- Current step.Total- Total number of steps.Progress- Progress information.
Engine- System info of the service in respect to Engine.Running-trueif Engine (Editor or launched level) is running, otherwisefalse.Type- One ofEditor,PIEorGame.Dirty-trueif there are unsaved changes in Editor, otherwisefalse. If the Engine is not running, it is not provided.Workspace- Name of workspace if the Engine is running from one of them, otherwise not provided.Repository- Name of repository ifWorkspaceis provided, otherwise not provided.Branch- Name of branch ifWorkspaceis provided, otherwise not provided.AutoPull- Value ofAutoPullflag ifWorkspaceis provided, otherwise not provided.Reload-trueif Engine (Editor or launched level) is expected to be reloaded when new changes are pushed to the repository and branch, otherwisefalse. ifWorkspaceis not provided, it is not provided.
To read the state, use command Get. The server will respond with command Update.
Get topic
{"Type":"Get","Target":"AssetHubServer","Name":"WorkspaceInfo","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "AssetHubServer",
"Name": "WorkspaceInfo"
}
Update message
{
"Value": {
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Clients": [
{
"Name": "MSI-AssetHubClient",
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Engine": {
"Running": true,
"Type": "Editor",
"Dirty": false,
"Workspace": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"AutoPull": false,
"Reload": false
}
}
]
}
}
PersistentState
The server has the following per-machine state:
{
"PersistentState": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"Name": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branches": [
{
"Name": "Main",
"Commits": [
{
"ID": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Author": "MSI",
"Comment": "Root commit.",
"CreatedAt": "2022-01-01T13:55:05.000Z",
"Tags": ["v1.0"]
}
]
}
]
}
}
}
}
Properties:
Repositories- Repositories. If repository name contains.(dot), encode/decode it using string[dot]. See also commandsCreateRepositoryandCreateBranch.Name- Name of the repository.Branches- Branches in the repository.Name- Name of the branch.Commits- All commits related to the branch.ID- ID of the commit.Author- Author (machine name).Comment- Comment.CreatedAt- Creation timestamp.Tags- Tags.
To read the state, use command Get. The server will respond with command Update.
Get topic
{"Type":"Get","Target":"AssetHubServer","Name":"PersistentState","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "AssetHubServer",
"Name": "PersistentState"
}
Update message
{
"Value": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"Name": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branches": [
{
"Name": "Main",
"Commits": [
{
"ID": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Author": "MSI",
"Comment": "Root commit.",
"CreatedAt": "2022-01-01T13:55:05.000Z",
"Tags": ["v1.0"]
}
]
}
]
}
}
}
}
AssetInfo
The server has the following per-machine state:
{
"AssetInfo": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"Name": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branches": [
{
"Name": "Main",
"Claims": [
{
"URI": "FileSystem:/pixotope.mp4",
"Owner": "MSI",
"CreatedAt": "2022-01-01T13:55:05.000Z"
}
]
}
]
}
}
}
}
Properties:
Repositories- Repositories. If repository name contains.(dot), encode/decode it using string[dot]. See also commandsCreateRepositoryandCreateBranch.Name- Name of the repository.Branches- Branches in the repository.Name- Name of the branch.Claims- All claims related to the branch.URI- URI identifying the asset. All files and directories start with schemaFileSystem:/. Other kinds of assets may start with different schema in the future.Owner- Owner (machine name).CreatedAt- Creation timestamp.
To read the state, use command Get. The server will respond with command Update.
Get topic
{"Type":"Get","Target":"AssetHubServer","Name":"AssetInfo","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "AssetHubServer",
"Name": "AssetInfo"
}
Update message
{
"Value": {
"Repositories": {
"%SYNCED_STORAGE%\\Projects\\Project Alpha": {
"Name": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branches": [
{
"Name": "Main",
"Claims": [
{
"URI": "FileSystem:/pixotope.mp4",
"Owner": "MSI",
"CreatedAt": "2022-01-01T13:55:05.000Z"
}
]
}
]
}
}
}
}
Client
State
The client has the following per-show state:
{
"State": {
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
Properties:
Workspaces- Settings by workspaces. If workspace name contains.(dot), encode/decode it using string[dot]. See also commandCreateWorkspace.AutoPull- Automatic pull of workspace. Workspace is pulled:when Asset Hub client starts up and the
AutoPullflag is enabled,when there is a new commit on the server and the
AutoPullflag is enabled,when state has changed either using
SetorResetcommand and theAutoPullflag is enabled.
To read and/or update the state, use commands Get, Set and Reset. The client will respond with command Update. Command Startup is sent by the client on startup.
Get topic
{"Type":"Get","Target":"MSI-AssetHubClient","Name":"State","RespondTo":"Explorer"}
Get message
{}
Set topic
{"Type":"Set","Target":"MSI-AssetHubClient","Name":"State"}
Set message
{
"Value": {
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
Reset topic
{"Type":"Reset","Target":"MSI-AssetHubClient"}
Reset message
{}
Update topic
{
"Type": "Update",
"Target": "BROADCAST",
"Source": "MSI-AssetHubClient",
"Name": "State"
}
Update message
{
"Value": {
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"AutoPull": true
}
}
}
}
WorkspaceInfo
The client has the following per-machine state:
{
"WorkspaceInfo": {
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Engine": {
"Running": true,
"Type": "Editor",
"Dirty": false,
"Workspace": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"AutoPull": false,
"Reload": false
},
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Active": true,
"Status": {
"Attached": true,
"Incoming": false,
"Outcoming": false,
"Activity": "Pull",
"Stage": "Finalizing",
"Auto": false,
"Current": 100,
"Total": 100,
"Progress": 1.0,
"Message": "Done."
}
}
}
}
}
Properties:
Status- System info of the service in respect to all active workspaces.Incoming-trueif there are remote changes, otherwisefalse.Outcoming-trueif there are local changes, otherwisefalse.Activity- One ofIdleorSync.Stage- One ofInitiating,InProgressorFinalizing.Current- Current step.Total- Total number of steps.Progress- Progress information.
Engine- System info of the service in respect to Engine.Running-trueif Engine (Editor or launched level) is running, otherwisefalse.Type- One ofEditor,PIEorGame.Dirty-trueif there are unsaved changes in Editor, otherwisefalse. If the Engine is not running, it is not provided.Workspace- Name of workspace if the Engine is running from one of them, otherwise not provided.Repository- Name of repository ifWorkspaceis provided, otherwise not provided.Branch- Name of branch ifWorkspaceis provided, otherwise not provided.AutoPull- Value ofAutoPullflag ifWorkspaceis provided, otherwise not provided.Reload-trueif Engine (Editor or launched level) is expected to be reloaded when new changes are pushed to the repository and branch, otherwisefalse. ifWorkspaceis not provided, it is not provided.
Workspaces- System info by workspaces. If workspace name contains.(dot), encode/decode it using string[dot]. See also commandCreateWorkspace.Name- Name of the workspace.Active-trueif it is aCommon filesworkspace orConfig filesworkspace or respective project is linked to current show, otherwisefalse.Status- Status of the workspace.Attached-trueif the client is connected to server with matching workspace history, otherwisefalse.Incoming-trueif there are remote changes, otherwisefalse.Outcoming-trueif there are local changes, otherwisefalse.Activity- One ofIdle,PullorPush.Stage- One ofInitiating,InProgressorFinalizing.Auto-trueif the activity has been started automatically, otherwisefalse.Current- Current step.Total- Total number of steps.Progress- Progress information.Message- Message.
To read the state, use command Get. The server will respond with command Update.
Get topic
{"Type":"Get","Target":"MSI-AssetHubClient","Name":"WorkspaceInfo","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "MSI-AssetHubClient",
"Name": "WorkspaceInfo"
}
Update message
{
"Value": {
"Status": {
"Incoming": false,
"Outcoming": false,
"Activity": "Sync",
"Stage": "Finalizing",
"Current": 100,
"Total": 100,
"Progress": 1.0
},
"Engine": {
"Running": true,
"Type": "Editor",
"Dirty": false,
"Workspace": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"AutoPull": false,
"Reload": false
},
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Active": true,
"Status": {
"Attached": true,
"Incoming": false,
"Outcoming": false,
"Activity": "Pull",
"Stage": "Finalizing",
"Auto": false,
"Current": 100,
"Total": 100,
"Progress": 1.0,
"Message": "Done."
}
}
}
}
}
PersistentState
The client has the following per-machine state:
{
"PersistentState": {
"SyncedConfigPath": "C:\\Pixotope\\23.2.0\\Synced Config",
"SyncedStoragePath": "C:\\Pixotope\\Synced Storage",
"SyncedCommonPath": "C:\\Pixotope\\Synced Storage\\Common",
"SyncedProjectsPath": "C:\\Pixotope\\Synced Storage\\Projects",
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"AbsolutePath": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"DisplayPath": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"Commit": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Commits": [
{
"ID": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Author": "MSI",
"Comment": "Root commit.",
"CreatedAt": "2022-01-01T13:55:05.000Z",
"Tags": ["v1.0"]
}
]
}
}
}
}
Properties:
SyncedConfigPath- Location, whereConfig filesworkspace is stored on file system.SyncedStoragePath- Location, where all other synchronized workspaces are stored on file system.SyncedCommonPath- Location, whereCommon filesworkspace is stored on file system.SyncedProjectsPath- Location, where all synchronized projects are stored on file system.Workspaces- Workspaces. If workspace name contains.(dot), encode/decode it using string[dot]. See also commandCreateWorkspace.Name- Name of the workspace.AbsolutePath- Absolute path of the workspace directory.DisplayPath- Display path of the workspace directory. If it is subdirectory of directory referenced by settingPersistentState.SyncedStoragePath, it will follow the pattern%SYNCED_STORAGE%\**\<Workspace name>. Otherwise, it will be an absolute path.Repository- Name of the repository.Branch- Name of the branch.Commit- ID of the last pulled commit if exists, otherwisenull.Commits- All commits related to the workspace if respective repository and branch exists on the server, otherwisenull. Notice the commits may not contain the last pulled commit if the workspace is not attached to the server.ID- ID of the commit.Author- Author (machine name).Comment- Comment.CreatedAt- Creation timestamp.Tags- Tags.
To read the state, use command Get. The client will respond with command Update.
Get topic
{"Type":"Get","Target":"MSI-AssetHubClient","Name":"PersistentState","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "BROADCAST",
"Source": "MSI-AssetHubClient",
"Name": "PersistentState"
}
Update message
{
"Value": {
"SyncedStoragePath": "C:\\Pixotope\\Synced Storage",
"SyncedCommonPath": "C:\\Pixotope\\Synced Storage\\Common",
"SyncedProjectsPath": "C:\\Pixotope\\Synced Storage\\Projects",
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"AbsolutePath": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"DisplayPath": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Repository": "%SYNCED_STORAGE%\\Projects\\Project Alpha",
"Branch": "Main",
"Commit": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Commits": [
{
"ID": "f99a16c5-4a1a-4797-8a0c-d5eb5485b8a4",
"Author": "MSI",
"Comment": "Root commit.",
"CreatedAt": "2022-01-01T13:55:05.000Z",
"Tags": ["v1.0"]
}
]
}
}
}
}
AssetInfo
The client has the following per-machine state:
{
"AssetInfo": {
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Scan": false,
"IgnoredURIs": [
"FileSystem:/Saved",
"FileSystem:/Saved/Settings.ini"
],
"LocalChanges": [
{
"Type": "PutFile",
"URI": "FileSystem:/pixotope.mp4",
"New": true
},
{
"Type": "PutDirectory",
"URI": "FileSystem:/textures",
"New": true
},
{
"Type": "Delete",
"URI": "FileSystem:/meshes"
}
],
"RemoteChanges": [
{
"Type": "PutFile",
"URI": "FileSystem:/pixotope.mp4",
"New": true
},
{
"Type": "PutDirectory",
"URI": "FileSystem:/textures",
"New": true
},
{
"Type": "Delete",
"URI": "FileSystem:/meshes"
}
],
"ConflictURIs": [
"FileSystem:/pixotope.mp4",
"FileSystem:/textures",
"FileSystem:/meshes"
],
"Claims": [
{
"URI": "FileSystem:/pixotope.mp4",
"Owner": "MSI",
"CreatedAt": "2022-01-01T13:55:05.000Z"
}
]
}
}
}
}
Properties:
Repositories- Workspaces. If workspace name contains.(dot), encode/decode it using string[dot]. See also commandCreateWorkspace.Name- Name of the repository.Scan-trueif workspace is being scanned for file system for changes, otherwisefalse.IgnoredURIs- URIs of ignored assets.LocalChanges- Local changes.Type- One ofPutFile,PutDirectoryorDelete.URI- URI identifying the asset. All files and directories start with schemaFileSystem:/. Other kinds of assets may start with different schema in the future.New-trueif the asset did not exist before, otherwisefalse. Only applicable ifTypeisPutFileorPutDirectory.
RemoteChanges- Remote changes.Type- One ofPutFile,PutDirectoryorDelete.URI- URI identifying the asset. All files and directories start with schemaFileSystem:/. Other kinds of assets may start with different schema in the future.New-trueif the asset did not exist before, otherwisefalse. Only applicable ifTypeisPutFileorPutDirectory.
ConflictURIs- URIs of assets with both local and remote changes.Claims- All claims related to the workspace.URI- URI identifying the asset. All files and directories start with schemaFileSystem:/. Other kinds of assets may start with different schema in the future.Owner- Owner (machine name).CreatedAt- Creation timestamp.
To read the state, use command Get. The server will respond with command Update.
Get topic
{"Type":"Get","Target":"MSI-AssetHubClient","Name":"AssetInfo","RespondTo":"Explorer"}
Get message
{}
Update topic
{
"Type": "Update",
"Target": "Explorer",
"Source": "MSI-AssetHubClient",
"Name": "AssetInfo"
}
Update message
{
"Value": {
"Workspaces": {
"C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha": {
"Name": "C:\\Pixotope\\Synced Storage\\Projects\\Project Alpha",
"Scan": false,
"IgnoredURIs": [
"FileSystem:/Saved",
"FileSystem:/Saved/Settings.ini"
],
"LocalChanges": [
{
"Type": "PutFile",
"URI": "FileSystem:/pixotope.mp4"
},
{
"Type": "PutDirectory",
"URI": "FileSystem:/textures"
},
{
"Type": "Delete",
"URI": "FileSystem:/meshes"
}
],
"RemoteChanges": [
{
"Type": "PutFile",
"URI": "FileSystem:/pixotope.mp4"
},
{
"Type": "PutDirectory",
"URI": "FileSystem:/textures"
},
{
"Type": "Delete",
"URI": "FileSystem:/meshes"
}
],
"ConflictURIs": [
"FileSystem:/pixotope.mp4",
"FileSystem:/textures",
"FileSystem:/meshes"
],
"Claims": [
{
"URI": "FileSystem:/pixotope.mp4",
"Owner": "MSI",
"CreatedAt": "2022-01-01T13:55:05.000Z"
}
]
}
}
}
}