Skip to content

Workspaces

CompozyOS Workspaces HTTP endpoints.

For people running agent work32 pages in this section

List workspace terminals

GET
/api/terminals

Query Parameters

all_workspaces?boolean

Read all projects and User rows

workspace_ids?array<string>

Repeatable project IDs or @user; requires all_workspaces=true

profile?string

Read one profile's rows by name

all_profiles?boolean

Read the owner-labeled all-profiles aggregate

Response Body

OK

application/json
  1. response
terminals*array<>
curl -X GET "https://example.com/api/terminals"
{  "terminals": [    {      "bound_run": {        "generation": 0,        "run_id": "string",        "session_id": "string"      },      "capabilities": {        "interactive": true      },      "created_at": "2019-08-24T14:15:22Z",      "cwd": "string",      "exit": {        "at": "2019-08-24T14:15:22Z",        "cause": "exited",        "code": 0,        "signal": "INT"      },      "id": "string",      "mode": "pty",      "profile_id": "string",      "profile_name": "string",      "shell": "string",      "state": "running",      "title": "string",      "viewers": 0,      "workspace_id": "string"    }  ]}
GET
/api/terminals/catalog-stream

Query Parameters

all_workspaces?boolean

Read all projects and User rows

workspace_ids?array<string>

Repeatable project IDs or @user; requires all_workspaces=true

profile?string

Act as this profile by name

Header Parameters

Last-Event-ID?string

Resume after the last terminal catalog event

Response Body

Terminal catalog event stream

text/event-stream
  1. response
terminals*array<>
curl -X GET "https://example.com/api/terminals/catalog-stream"
{  "terminals": [    {      "bound_run": {        "generation": 0,        "run_id": "string",        "session_id": "string"      },      "capabilities": {        "interactive": true      },      "created_at": "2019-08-24T14:15:22Z",      "cwd": "string",      "exit": {        "at": "2019-08-24T14:15:22Z",        "cause": "exited",        "code": 0,        "signal": "INT"      },      "id": "string",      "mode": "pty",      "profile_id": "string",      "profile_name": "string",      "shell": "string",      "state": "running",      "title": "string",      "viewers": 0,      "workspace_id": "string"    }  ]}
GET
/api/workspaces

Query Parameters

archived?boolean

List archived projects instead of active projects

Response Body

OK

application/json
  1. response
workspaces*array<>
curl -X GET "https://example.com/api/workspaces"
{  "workspaces": [    {      "add_dirs": [        "string"      ],      "archived_at": "2019-08-24T14:15:22Z",      "created_at": "2019-08-24T14:15:22Z",      "default_agent": "string",      "id": "string",      "name": "string",      "root_dir": "string",      "root_missing": true,      "updated_at": "2019-08-24T14:15:22Z"    }  ]}

Register a workspace

POST
/api/workspaces

Request Body

JSON request body

application/json
  1. body
add_dirs?array<string>
default_agent?string
Match^(?:|[a-z][a-z0-9_-]{0,105})$
Lengthlength <= 106
name?string
root_dir*string

Response Body

Created

application/json
  1. response
workspace*
curl -X POST "https://example.com/api/workspaces" \  -H "Content-Type: application/json" \  -d '{    "root_dir": "string"  }'
{  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}
POST
/api/workspaces/resolve

Request Body

JSON request body

application/json
  1. body
path*string

Response Body

OK

application/json
  1. response
workspace*
curl -X POST "https://example.com/api/workspaces/resolve" \  -H "Content-Type: application/json" \  -d '{    "path": "string"  }'
{  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}
GET
/api/workspaces/{id}

Path Parameters

id*string

Workspace id or path

Response Body

OK

application/json
  1. response
agents?array<>
profile_hints?array<>
providers?array<>
sessions?array<>
skills?array<>
workspace*
curl -X GET "https://example.com/api/workspaces/string"
{  "agents": [    {      "acp_options": [        {          "bool_value": true,          "id": "string",          "value_id": "string"        }      ],      "category_path": [        "string"      ],      "command": "string",      "definition_digest": "string",      "deny_tools": [        "string"      ],      "diagnostics": [        {          "error_kind": "string",          "message": "string",          "path": "string"        }      ],      "effective_runtime": {        "acp_options": [          {            "bool_value": true,            "id": "string",            "value_id": "string"          }        ],        "model": "string",        "provider": "string",        "reasoning_effort": "string",        "session_env": {          "property1": {            "ref": "string",            "required": true          },          "property2": {            "ref": "string",            "required": true          }        },        "session_env_status": [          {            "kind": "string",            "name": "string",            "present": true,            "required": true,            "secret_ref": "string",            "source": "string",            "target_env": "string"          }        ],        "sources": {          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "speed": "string"        },        "speed": "normal"      },      "fallback_chain": [        {          "acp_options": [            {              "bool_value": true,              "id": "string",              "value_id": "string"            }          ],          "command": "string",          "command_fingerprint": "string",          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "session_env": {            "property1": {              "ref": "string",              "required": true            },            "property2": {              "ref": "string",              "required": true            }          },          "speed": "normal"        }      ],      "layer": "string",      "mcp_servers": [        {          "args": [            "string"          ],          "auth": {            "client_id": "string",            "client_secret_configured": true,            "issuer_url": "string",            "registration": "string",            "scopes": [              "string"            ]          },          "command": "string",          "env": {            "property1": "string",            "property2": "string"          },          "name": "string",          "secret_env": {            "property1": "string",            "property2": "string"          },          "transport": "string",          "url": "string"        }      ],      "model": "string",      "name": "string",      "origin": "global",      "permissions": "string",      "prompt": "string",      "provider": "string",      "reasoning_effort": "string",      "session_env": {        "property1": {          "ref": "string",          "required": true        },        "property2": {          "ref": "string",          "required": true        }      },      "shadows": [        {          "layer": "string",          "path": "string"        }      ],      "skills": {        "disabled": [          "string"        ]      },      "speed": "normal",      "tools": [        "string"      ],      "toolsets": [        "string"      ],      "workspace_access": "string",      "workspace_id": "string"    }  ],  "profile_hints": [    {      "action": "string",      "message": "string",      "name": "string",      "path": "string"    }  ],  "providers": [    {      "auth_mode": "string",      "display_name": "string",      "env_policy": "string",      "harness": "string",      "home_policy": "string",      "name": "string",      "runtime_provider": "string",      "runtime_strategy": "session_config"    }  ],  "sessions": [    {      "activity": {        "current_tool": "string",        "deadline_at": "2019-08-24T14:15:22Z",        "elapsed_ms": 0,        "elapsed_seconds": 0,        "idle_seconds": 0,        "iteration_current": 0,        "iteration_max": 0,        "last_activity_at": "2019-08-24T14:15:22Z",        "last_activity_detail": "string",        "last_activity_kind": "string",        "last_progress_at": "2019-08-24T14:15:22Z",        "tool_call_id": "string",        "turn_id": "string",        "turn_source": "string",        "turn_started_at": "2019-08-24T14:15:22Z"      },      "agent_name": "string",      "archived_at": "2019-08-24T14:15:22Z",      "attach_expires_at": "2019-08-24T14:15:22Z",      "attachable": true,      "attached_to": "string",      "attention": "string",      "attention_changed_at": "2019-08-24T14:15:22Z",      "available_commands": [        {          "description": "string",          "input": {            "hint": "string"          },          "name": "string"        }      ],      "badge": "running",      "board_column": "needs_you",      "branch": "string",      "busy_input": {        "default_mode": "string",        "steer_capability": "steer_ext",        "steer_delivery": "injected"      },      "children": {        "done": 0,        "in_review": 0,        "needs_you": 0,        "total": 0,        "working": 0      },      "created_at": "2019-08-24T14:15:22Z",      "derivation": {        "first_prompt": "string",        "kind": "",        "native_fork_error": "string",        "native_state": "string",        "seed": "string",        "source_session_id": "string"      },      "diagnostics": [        {          "category": "string",          "code": "string",          "data_freshness": "string",          "doc_url": "string",          "evidence": {            "property1": null,            "property2": null          },          "id": "string",          "message": "string",          "severity": "string",          "suggested_command": "string",          "title": "string"        }      ],      "effective_workspace_access": "string",      "escalated": true,      "failure": {        "crash_bundle_path": "string",        "kind": "string",        "reason_code": "string",        "summary": "string"      },      "folder_id": "string",      "health": {        "active_prompt": true,        "agent_name": "string",        "attachable": true,        "attention": "string",        "eligible_for_wake": true,        "escalated": true,        "health": "healthy",        "ineligibility_reason": "session_prompt_active",        "last_activity_at": "2019-08-24T14:15:22Z",        "last_error": "string",        "last_presence_at": "2019-08-24T14:15:22Z",        "lifecycle_state": "starting",        "session_id": "string",        "state": "idle",        "updated_at": "2019-08-24T14:15:22Z",        "verified": true,        "workspace_id": "string"      },      "id": "string",      "lineage": {        "auto_stop_on_parent": true,        "kind": "",        "notify_creator": true,        "origin_agent_name": "string",        "origin_message_id": "string",        "parent_session_id": "string",        "permission_policy": {          "mcp_servers": [            "string"          ],          "skills": [            "string"          ],          "tools": [            "string"          ],          "workspace_paths": [            "string"          ]        },        "root_session_id": "string",        "spawn_budget": {          "max_active_per_workspace": 0,          "max_children": 0,          "max_depth": 0,          "ttl_seconds": 0        },        "spawn_depth": 0,        "spawn_role": "string",        "ttl_expires_at": "2019-08-24T14:15:22Z"      },      "monitor_summary": {        "active": 0      },      "name": "string",      "parent_title": "string",      "pending_interactions": [        {          "choices": [            "string"          ],          "created_at": "2019-08-24T14:15:22Z",          "decisions": [            "string"          ],          "interaction_id": "string",          "kind": "string",          "provider_request_id": "string",          "resolution": "string",          "resolved_at": "2019-08-24T14:15:22Z",          "resolved_by": "string",          "status": "string",          "title": "string",          "tool_id": "string",          "turn_id": "string"        }      ],      "profile_archived": true,      "profile_color": "string",      "profile_emoji": "string",      "profile_icon": "string",      "profile_id": "string",      "profile_name": "string",      "pull_request": {        "checks": {          "failed": 0,          "failed_names": [            "string"          ],          "passed": 0,          "pending": 0,          "state": "passing"        },        "draft": true,        "head_sha": "string",        "mergeable": "mergeable",        "number": 0,        "provider": "string",        "ready_to_merge": true,        "review_decision": "approved",        "state": "open",        "url": "string"      },      "pull_request_lookup": {        "cause": "string",        "observed_at": "2019-08-24T14:15:22Z",        "stale": true,        "state": "ok"      },      "queue": {        "cap": 0,        "entries": 0      },      "reply_watches": [        {          "created_at": "2019-08-24T14:15:22Z",          "id": "string",          "message_id": "string",          "state": "string",          "target_session_id": "string"        }      ],      "runtime": {        "acp_caps": {          "config_options": [            {              "category": "string",              "current_bool": true,              "current_value_id": "string",              "description": "string",              "id": "string",              "kind": "string",              "label": "string",              "values": [                {                  "description": "string",                  "group_id": "string",                  "group_label": "string",                  "label": "string",                  "value": "string"                }              ]            }          ],          "prompt_audio": true,          "prompt_embedded_context": true,          "prompt_image": true,          "supported_modes": [            "string"          ],          "supports_fork_session": true,          "supports_load_session": true,          "supports_resume_session": true        },        "acp_session_id": "string",        "effective": {          "acp_options": [            {              "bool_value": true,              "id": "string",              "value_id": "string"            }          ],          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "speed": "normal",          "speed_resolution": {            "reason": "capability_absent",            "requested": "normal",            "status": "applied"          }        },        "failure": "string",        "generation": 0,        "last_known": {          "acp_options": [            {              "bool_value": true,              "id": "string",              "value_id": "string"            }          ],          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "speed": "normal",          "speed_resolution": {            "reason": "capability_absent",            "requested": "normal",            "status": "applied"          }        },        "recovery": {          "attempt": 0,          "generation": 0,          "last_attempt_at": "2019-08-24T14:15:22Z",          "last_error": "string",          "max_attempts": 0,          "next_attempt_at": "2019-08-24T14:15:22Z",          "started_at": "2019-08-24T14:15:22Z"        },        "requested": {          "acp_options": [            {              "bool_value": true,              "id": "string",              "value_id": "string"            }          ],          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "speed": "normal"        },        "selected": {          "acp_options": [            {              "bool_value": true,              "id": "string",              "value_id": "string"            }          ],          "model": "string",          "provider": "string",          "reasoning_effort": "string",          "speed": "normal"        },        "selection_revision": 0,        "status": "string",        "transition": "string"      },      "scope": "string",      "state": "starting",      "stop_cause": "string",      "stop_detail": "string",      "stop_reason": "completed",      "subagent_summary": {        "attention": 0,        "failed": 0,        "live": 0,        "most_urgent": "string",        "total": 0      },      "supervision": {        "quiet_warning": {          "quiet_since": "2019-08-24T14:15:22Z",          "stop_at": "2019-08-24T14:15:22Z",          "warned_at": "2019-08-24T14:15:22Z"        },        "sources": [          {            "error": "string",            "kind": "agent_progress",            "ref": "string",            "state": "string"          }        ],        "work_signals": [          {            "kind": "agent_progress",            "ref": "string",            "since": "2019-08-24T14:15:22Z"          }        ]      },      "transcript_epoch": 0,      "type": "user",      "updated_at": "2019-08-24T14:15:22Z",      "verified": true,      "waiting_on": "sessions",      "workspace_id": "string",      "workspace_path": "string",      "worktree_binding": {        "available": true,        "unavailable_reason": "string"      },      "worktree_id": "string"    }  ],  "skills": [    {      "dir": "string",      "name": "string",      "source": "string"    }  ],  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}
PATCH
/api/workspaces/{id}

Path Parameters

id*string

Workspace id

Request Body

JSON request body

application/json
  1. body
add_dirs*array<string>|null
default_agent*|
Match^(?:|[a-z][a-z0-9_-]{0,105})$
Lengthlength <= 106
name*string|null

Response Body

OK

application/json
  1. response
workspace*
curl -X PATCH "https://example.com/api/workspaces/string" \  -H "Content-Type: application/json" \  -d '{    "add_dirs": [      "string"    ],    "default_agent": "string",    "name": "string"  }'
{  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}
DELETE
/api/workspaces/{id}

Path Parameters

id*string

Workspace id

Response Body

No Content

curl -X DELETE "https://example.com/api/workspaces/string"
Empty
POST
/api/workspaces/{id}/archive

Path Parameters

id*string

Workspace name or id

Response Body

OK

application/json
  1. response
workspace*
curl -X POST "https://example.com/api/workspaces/string/archive"
{  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}
POST
/api/workspaces/{id}/unarchive

Path Parameters

id*string

Workspace name or id

Response Body

OK

application/json
  1. response
workspace*
curl -X POST "https://example.com/api/workspaces/string/unarchive"
{  "workspace": {    "add_dirs": [      "string"    ],    "archived_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "default_agent": "string",    "id": "string",    "name": "string",    "root_dir": "string",    "root_missing": true,    "updated_at": "2019-08-24T14:15:22Z"  }}

List workspace terminals

GET
/api/workspaces/{workspace_id}/terminals

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Read one profile's rows by name

all_profiles?boolean

Read the owner-labeled all-profiles aggregate

Response Body

OK

application/json
  1. response
terminals*array<>
curl -X GET "https://example.com/api/workspaces/string/terminals"
{  "terminals": [    {      "bound_run": {        "generation": 0,        "run_id": "string",        "session_id": "string"      },      "capabilities": {        "interactive": true      },      "created_at": "2019-08-24T14:15:22Z",      "cwd": "string",      "exit": {        "at": "2019-08-24T14:15:22Z",        "cause": "exited",        "code": 0,        "signal": "INT"      },      "id": "string",      "mode": "pty",      "profile_id": "string",      "profile_name": "string",      "shell": "string",      "state": "running",      "title": "string",      "viewers": 0,      "workspace_id": "string"    }  ]}
POST
/api/workspaces/{workspace_id}/terminals

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Header Parameters

X-Compozy-Client-Token?string

Registered browser client attachment token

X-Compozy-Client-Workspace?string

Browser client registration partition (project id, global, or user); defaults to the terminal workspace

Request Body

JSON request body

application/json
  1. body
client_id?string
cols?integer
Range0 <= value <= 65535
cwd?string
rows?integer
Range0 <= value <= 65535
shell?string
title?string

Response Body

Created

application/json
  1. response
terminal*
curl -X POST "https://example.com/api/workspaces/string/terminals" \  -H "Content-Type: application/json" \  -d '{}'
{  "terminal": {    "bound_run": {      "generation": 0,      "run_id": "string",      "session_id": "string"    },    "capabilities": {      "interactive": true    },    "created_at": "2019-08-24T14:15:22Z",    "cwd": "string",    "exit": {      "at": "2019-08-24T14:15:22Z",      "cause": "exited",      "code": 0,      "signal": "INT"    },    "id": "string",    "mode": "pty",    "profile_id": "string",    "profile_name": "string",    "shell": "string",    "state": "running",    "title": "string",    "viewers": 0,    "workspace_id": "string"  }}
GET
/api/workspaces/{workspace_id}/terminals/artifacts/{id}

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Response Body

Artifact bytes

response?unknown*/*
curl -X GET "https://example.com/api/workspaces/string/terminals/artifacts/string"
null
POST
/api/workspaces/{workspace_id}/terminals/exec

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
args?array<string>
command*string
cwd?string
env?
output?
visible?boolean
yield_ms?integer

Response Body

Command finished

application/json
  1. response
command_id*string
duration_ms*integer
Formatint64
exit_code*integer|null
output*string
signal*|
Value in"INT""TERM""KILL""HUP"
spill?|
still_running?boolean
terminal_id*string|null
truncated*boolean
untrusted*boolean
curl -X POST "https://example.com/api/workspaces/string/terminals/exec" \  -H "Content-Type: application/json" \  -d '{    "command": "string"  }'
{  "command_id": "string",  "duration_ms": 0,  "exit_code": 0,  "output": "string",  "signal": "INT",  "spill": {    "artifact_id": "string",    "bytes": 0  },  "still_running": true,  "terminal_id": "string",  "truncated": true,  "untrusted": true}
GET
/api/workspaces/{workspace_id}/terminals/input-requests

Path Parameters

workspace_id*string

Workspace id

Query Parameters

terminal_id?string

Filter by terminal id

profile?string

Read one profile's rows by name

all_profiles?boolean

Read the owner-labeled all-profiles aggregate

Response Body

OK

application/json
  1. response
pending*array<>
resolved*array<>
curl -X GET "https://example.com/api/workspaces/string/terminals/input-requests"
{  "pending": [    {      "id": "string",      "profile_id": "string",      "profile_name": "string",      "prompt_excerpt": "string",      "reason": "string",      "redacted": true,      "requested_at": "2019-08-24T14:15:22Z",      "requester": {        "id": "string",        "kind": "human"      },      "terminal_id": "string",      "workspace_id": "string"    }  ],  "resolved": [    {      "id": "string",      "length": 0,      "outcome": "answered",      "profile_id": "string",      "profile_name": "string",      "reason": "string",      "redacted": true,      "requested_at": "2019-08-24T14:15:22Z",      "requester": {        "id": "string",        "kind": "human"      },      "resolved_at": "2019-08-24T14:15:22Z",      "resolved_by": {        "id": "string",        "kind": "human"      },      "terminal_id": "string",      "workspace_id": "string"    }  ]}
GET
/api/workspaces/{workspace_id}/terminals/journal

Path Parameters

workspace_id*string

Workspace id

Query Parameters

actor?string

Filter by actor kind

Value in"human""agent"
since?string

Filter by relative duration

failed?boolean

Only failed commands

terminal_id?string

Filter by terminal id

limit?integer

Page size

Formatint32
cursor?string

Opaque page cursor

profile?string

Read one profile's rows by name

all_profiles?boolean

Read the owner-labeled all-profiles aggregate

Response Body

OK

application/json
  1. response
entries*array<>
next*string|null
curl -X GET "https://example.com/api/workspaces/string/terminals/journal"
{  "entries": [    {      "actor": {        "id": "string",        "kind": "human"      },      "approval": "approved_once",      "argv_digest": "string",      "command": "string",      "command_id": "string",      "cwd": "string",      "detected_by": "exact",      "duration_ms": 0,      "exit_cause": "exited",      "exit_code": 0,      "output_bytes": 0,      "profile_id": "string",      "profile_name": "string",      "recording": "string",      "signal": "INT",      "started_at": "2019-08-24T14:15:22Z",      "terminal_id": "string",      "truncated": true    }  ],  "next": "string"}
GET
/api/workspaces/{workspace_id}/terminals/recordings/{id}

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Response Body

Artifact bytes

response?unknownapplication/x-asciicast
curl -X GET "https://example.com/api/workspaces/string/terminals/recordings/string"
null
GET
/api/workspaces/{workspace_id}/terminals/stream

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Header Parameters

Last-Event-ID?string

Resume after the last terminal catalog event

Response Body

Terminal catalog event stream

text/event-stream
  1. response
terminals*array<>
curl -X GET "https://example.com/api/workspaces/string/terminals/stream"
{  "terminals": [    {      "bound_run": {        "generation": 0,        "run_id": "string",        "session_id": "string"      },      "capabilities": {        "interactive": true      },      "created_at": "2019-08-24T14:15:22Z",      "cwd": "string",      "exit": {        "at": "2019-08-24T14:15:22Z",        "cause": "exited",        "code": 0,        "signal": "INT"      },      "id": "string",      "mode": "pty",      "profile_id": "string",      "profile_name": "string",      "shell": "string",      "state": "running",      "title": "string",      "viewers": 0,      "workspace_id": "string"    }  ]}

Read one terminal

GET
/api/workspaces/{workspace_id}/terminals/{id}

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
terminal*
curl -X GET "https://example.com/api/workspaces/string/terminals/string"
{  "terminal": {    "bound_run": {      "generation": 0,      "run_id": "string",      "session_id": "string"    },    "capabilities": {      "interactive": true    },    "created_at": "2019-08-24T14:15:22Z",    "cwd": "string",    "exit": {      "at": "2019-08-24T14:15:22Z",      "cause": "exited",      "code": 0,      "signal": "INT"    },    "id": "string",    "mode": "pty",    "profile_id": "string",    "profile_name": "string",    "shell": "string",    "state": "running",    "title": "string",    "viewers": 0,    "workspace_id": "string"  }}

Terminate one terminal

DELETE
/api/workspaces/{workspace_id}/terminals/{id}

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
signal*string
Value in"INT""TERM""KILL""HUP"

Response Body

Terminated

application/json
  1. response
exit*|
curl -X DELETE "https://example.com/api/workspaces/string/terminals/string" \  -H "Content-Type: application/json" \  -d '{    "signal": "INT"  }'
{  "exit": {    "at": "2019-08-24T14:15:22Z",    "cause": "exited",    "code": 0,    "signal": "INT"  }}
POST
/api/workspaces/{workspace_id}/terminals/{id}/attach-ticket

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Header Parameters

X-Compozy-Client-Token?string

Registered browser client attachment token

X-Compozy-Client-Workspace?string

Browser client registration partition (project id, global, or user); defaults to the terminal workspace

Request Body

JSON request body

application/json
  1. body
client_id?string
mode*string
Value in"read""write"

Response Body

Created

application/json
  1. response
expires_at*string
Formatdate-time
ticket*string
curl -X POST "https://example.com/api/workspaces/string/terminals/string/attach-ticket" \  -H "Content-Type: application/json" \  -d '{    "mode": "read"  }'
{  "expires_at": "2019-08-24T14:15:22Z",  "ticket": "string"}
POST
/api/workspaces/{workspace_id}/terminals/{id}/input-requests/{request_id}/answer

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

request_id*string

Terminal input request id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
input*string

Response Body

Delivered

application/json
  1. response
delivered_bytes*integer
redacted*boolean
curl -X POST "https://example.com/api/workspaces/string/terminals/string/input-requests/string/answer" \  -H "Content-Type: application/json" \  -d '{    "input": "string"  }'
{  "delivered_bytes": 0,  "redacted": true}
POST
/api/workspaces/{workspace_id}/terminals/{id}/input-requests/{request_id}/reject

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

request_id*string

Terminal input request id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
reason*string

Response Body

Rejected

application/json
  1. response
outcome*"rejected"
Value in"rejected"
curl -X POST "https://example.com/api/workspaces/string/terminals/string/input-requests/string/reject" \  -H "Content-Type: application/json" \  -d '{    "reason": "string"  }'
{  "outcome": "rejected"}
GET
/api/workspaces/{workspace_id}/terminals/{id}/read

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

view?string

Terminal read view

Value in"screen""tail""lines"
max_bytes?integer

Maximum returned bytes

Formatint32
grep?string

Optional regular expression

since_seq?string

Decimal uint64 after the last consumed sequence

Match^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$
Lengthlength <= 20
from?integer

First scrollback line

Formatint32
to?integer

Last scrollback line

Formatint32
profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
busy*boolean
content*string
seq*string
Match^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$
Lengthlength <= 20
spill?|
truncated*boolean
untrusted*boolean
curl -X GET "https://example.com/api/workspaces/string/terminals/string/read"
{  "busy": true,  "content": "string",  "seq": "string",  "spill": {    "artifact_id": "string",    "bytes": 0  },  "truncated": true,  "untrusted": true}
POST
/api/workspaces/{workspace_id}/terminals/{id}/recording

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
action*string
Value in"start""stop"

Response Body

Recording state

application/json
  1. response
recording*
curl -X POST "https://example.com/api/workspaces/string/terminals/string/recording" \  -H "Content-Type: application/json" \  -d '{    "action": "start"  }'
{  "recording": {    "bytes": 0,    "digest": "string",    "expires_at": "2019-08-24T14:15:22Z",    "id": "string",    "profile_id": "string",    "started_at": "2019-08-24T14:15:22Z",    "state": "recording",    "stopped_at": "2019-08-24T14:15:22Z",    "terminal_id": "string"  }}
POST
/api/workspaces/{workspace_id}/terminals/{id}/signal

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
signal*string
Value in"INT""TERM""KILL""HUP"

Response Body

Delivered

application/json
  1. response
delivered*boolean
curl -X POST "https://example.com/api/workspaces/string/terminals/string/signal" \  -H "Content-Type: application/json" \  -d '{    "signal": "INT"  }'
{  "delivered": true}
GET
/api/workspaces/{workspace_id}/terminals/{id}/stream

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

ticket*string

Single-use attach ticket

mode?string

Attach mode

Value in"read""write"
cols?integer

Proposed terminal columns

Formatint32
rows?integer

Proposed terminal rows

Formatint32
after_seq?string

Decimal uint64 after the last parsed terminal sequence

Match^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$
Lengthlength <= 20
flow?string

Flow-control mode

Value in"ack""drop"

Response Body

WebSocket upgrade using the binary compozy.terminal.v3 subprotocol. Server frames: OUTPUT=0x01, ATTACHED=0x02, EXIT=0x03, ERROR=0x04, TITLE=0x05, RESIZED=0x06, GAP=0x07, PRESENCE=0x08, REDACTED_INPUT=0x09. Client frames: INPUT=0x01, ACK=0x02, RESIZE=0x03, SIGNAL=0x04, DETACH=0x05. OUTPUT is one opcode byte, one u64 big-endian sequence, then raw bytes; every control frame is one opcode byte followed by JSON.

curl -X GET "https://example.com/api/workspaces/string/terminals/string/stream?ticket=string"
Empty
POST
/api/workspaces/{workspace_id}/terminals/{id}/wait

Path Parameters

workspace_id*string

Workspace id

id*string

Terminal or retained artifact id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
pattern?string
timeout_ms?integer
until*string

Response Body

Wait result

application/json
  1. response
exit_code?integer|null
reason*string
screen*string
untrusted*boolean
curl -X POST "https://example.com/api/workspaces/string/terminals/string/wait" \  -H "Content-Type: application/json" \  -d '{    "until": "string"  }'
{  "exit_code": 0,  "reason": "string",  "screen": "string",  "untrusted": true}
GET
/api/workspaces/{workspace_id}/window-manager

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
closed_entry_count*integer
desktops*array<>
overrides*
revision*integer
Range0 <= value <= 9007199254740991
updated_at*string
Formatdate-time
version*integer
Range0 <= value <= 4294967295
windows*
workspace_id*string
curl -X GET "https://example.com/api/workspaces/string/window-manager"
{  "closed_entry_count": 0,  "desktops": [    {      "floating": [        "string"      ],      "floating_stacks": [        {          "active_id": "string",          "id": "string",          "minimized": true,          "rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "window_ids": [            "string"          ]        }      ],      "groups": [        {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        }      ],      "id": "string",      "name": "string",      "order": 0    }  ],  "overrides": {    "bindings": {      "bottom_center": "string",      "top_center": "string"    },    "closed_entry_limit": 0,    "desktop_transition": "string",    "drag_away_policy": "string",    "focus_follows_pointer": true,    "focus_policy": "string",    "focus_wrap": true,    "gaps": {      "bottom": 0.1,      "inner": 0.1,      "left": 0.1,      "right": 0.1,      "top": 0.1    },    "group_move_modifier": "string",    "history_limit": 0,    "nav_stack_limit": 0,    "new_window_policy": "string",    "raise_on_focus": true,    "shortcuts": {      "property1": "string",      "property2": "string"    },    "small_viewport_policy": "string",    "snap": {      "corner_reach": 0.1,      "edge_band": 0.1,      "exit_slack": 0.1,      "repeat_ratios": [        0.1      ]    },    "swap_modifier": "string"  },  "revision": 0,  "updated_at": "2019-08-24T14:15:22Z",  "version": 0,  "windows": {    "property1": {      "app": "string",      "desktop_id": "string",      "floating_rect": {        "height": 0.1,        "width": 0.1,        "x": 0.1,        "y": 0.1      },      "id": "string",      "instance_key": "string",      "minimized": true,      "nav_stack": [        {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        }      ],      "pinned": true,      "placement": "tiled",      "return_anchor": {        "child_index": 0,        "desktop_id": "string",        "group_id": "string",        "neighbor_ids": [          "string"        ],        "parent_split_id": "string",        "source_group": {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        },        "source_revision": 0,        "weight": 0,        "zoomed": true      },      "route": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "zoomed": true    },    "property2": {      "app": "string",      "desktop_id": "string",      "floating_rect": {        "height": 0.1,        "width": 0.1,        "x": 0.1,        "y": 0.1      },      "id": "string",      "instance_key": "string",      "minimized": true,      "nav_stack": [        {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        }      ],      "pinned": true,      "placement": "tiled",      "return_anchor": {        "child_index": 0,        "desktop_id": "string",        "group_id": "string",        "neighbor_ids": [          "string"        ],        "parent_split_id": "string",        "source_group": {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        },        "source_revision": 0,        "weight": 0,        "zoomed": true      },      "route": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "zoomed": true    }  },  "workspace_id": "string"}
GET
/api/workspaces/{workspace_id}/window-manager/clients

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
clients*array<>
workspace_id*string
curl -X GET "https://example.com/api/workspaces/string/window-manager/clients"
{  "clients": [    {      "active_desktop_id": "string",      "attachment_token": "string",      "client_id": "string",      "connected_at": "2019-08-24T14:15:22Z",      "context_revision": 0,      "focus_order": [        "string"      ],      "focused_window_id": "string",      "global_shortcuts": [        {          "active_chord": "string",          "command_id": "string",          "intended_chord": "string",          "reason": "string",          "settings_url": "string",          "status": "string"        }      ],      "kind": "string",      "palette_context": {        "desktop_window_count": 0,        "destination_intent": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "focused_session_state": "string",        "scope_global": true,        "shell_desktop": true,        "window_floating": true,        "window_focused": true,        "window_stacked": true,        "workspace_trusted": true      },      "presentation_revision": 0,      "stack_active": {        "property1": "string",        "property2": "string"      },      "workspace_id": "string"    }  ],  "workspace_id": "string"}
POST
/api/workspaces/{workspace_id}/window-manager/clients

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
active_desktop_id?string
client_id?string
context*
kind?string
workspace_id*string

Response Body

Registered

application/json
  1. response
active_desktop_id*string
attachment_token?string
client_id*string
connected_at*string
Formatdate-time
context_revision*integer
Range0 <= value <= 9007199254740991
focus_order*array<string>
focused_window_id?string|null
global_shortcuts*array<>
kind*string
palette_context*
presentation_revision*integer
Range0 <= value <= 9007199254740991
stack_active*
workspace_id*string
curl -X POST "https://example.com/api/workspaces/string/window-manager/clients" \  -H "Content-Type: application/json" \  -d '{    "context": {      "global_shortcuts": [        {          "command_id": "string",          "intended_chord": "string",          "status": "string"        }      ],      "scope_global": true,      "workspace_trusted": true    },    "workspace_id": "string"  }'
{  "active_desktop_id": "string",  "attachment_token": "string",  "client_id": "string",  "connected_at": "2019-08-24T14:15:22Z",  "context_revision": 0,  "focus_order": [    "string"  ],  "focused_window_id": "string",  "global_shortcuts": [    {      "active_chord": "string",      "command_id": "string",      "intended_chord": "string",      "reason": "string",      "settings_url": "string",      "status": "string"    }  ],  "kind": "string",  "palette_context": {    "desktop_window_count": 0,    "destination_intent": {      "pathname": "string",      "search": {        "property1": null,        "property2": null      }    },    "focused_session_state": "string",    "scope_global": true,    "shell_desktop": true,    "window_floating": true,    "window_focused": true,    "window_stacked": true,    "workspace_trusted": true  },  "presentation_revision": 0,  "stack_active": {    "property1": "string",    "property2": "string"  },  "workspace_id": "string"}
DELETE
/api/workspaces/{workspace_id}/window-manager/clients/{client_id}

Path Parameters

workspace_id*string

Workspace id

client_id*string

Connected window-manager client id

Query Parameters

profile?string

Act as this profile by name

Response Body

No Content

curl -X DELETE "https://example.com/api/workspaces/string/window-manager/clients/string"
Empty
POST
/api/workspaces/{workspace_id}/window-manager/commands

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
actor*
client_id?string|null
command_id*string
Value in"desktop.create""desktop.update""desktop.reorder""desktop.switch""desktop.delete""window.open""window.navigate""window.close""window.focus""window.move""window.resize""window.swap""window.toggle_floating""window.zoom""window.stack.group""window.stack.reorder""window.stack.set_active""window.pin""window.reopen""layout.arrange""layout.resize""layout.frame_resize""layout.balance""layout.undo""layout.redo""layout.replace"
expected_revision*integer
Range0 <= value <= 9007199254740991
origin*string
payload*unknown
rebase?|
workspace_id*string

Response Body

OK

application/json
  1. response
applied*boolean
changes*
client?|
diagnostics?array<>
rebased_from?integer
Range0 <= value <= 9007199254740991
snapshot*
curl -X POST "https://example.com/api/workspaces/string/window-manager/commands" \  -H "Content-Type: application/json" \  -d '{    "actor": {},    "command_id": "desktop.create",    "expected_revision": 0,    "origin": "string",    "payload": null,    "workspace_id": "string"  }'
{  "applied": true,  "changes": {    "client_ids": [      "string"    ],    "desktop_ids": [      "string"    ],    "group_ids": [      "string"    ],    "node_ids": [      "string"    ],    "stack_grouped": [      "string"    ],    "stack_ungrouped": [      "string"    ],    "window_ids": [      "string"    ]  },  "client": {    "active_desktop_id": "string",    "attachment_token": "string",    "client_id": "string",    "connected_at": "2019-08-24T14:15:22Z",    "context_revision": 0,    "focus_order": [      "string"    ],    "focused_window_id": "string",    "global_shortcuts": [      {        "active_chord": "string",        "command_id": "string",        "intended_chord": "string",        "reason": "string",        "settings_url": "string",        "status": "string"      }    ],    "kind": "string",    "palette_context": {      "desktop_window_count": 0,      "destination_intent": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "focused_session_state": "string",      "scope_global": true,      "shell_desktop": true,      "window_floating": true,      "window_focused": true,      "window_stacked": true,      "workspace_trusted": true    },    "presentation_revision": 0,    "stack_active": {      "property1": "string",      "property2": "string"    },    "workspace_id": "string"  },  "diagnostics": [    {      "code": "string",      "message": "string",      "path": "string"    }  ],  "rebased_from": 0,  "snapshot": {    "closed_entry_count": 0,    "desktops": [      {        "floating": [          "string"        ],        "floating_stacks": [          {            "active_id": "string",            "id": "string",            "minimized": true,            "rect": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "window_ids": [              "string"            ]          }        ],        "groups": [          {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          }        ],        "id": "string",        "name": "string",        "order": 0      }    ],    "overrides": {      "bindings": {        "bottom_center": "string",        "top_center": "string"      },      "closed_entry_limit": 0,      "desktop_transition": "string",      "drag_away_policy": "string",      "focus_follows_pointer": true,      "focus_policy": "string",      "focus_wrap": true,      "gaps": {        "bottom": 0.1,        "inner": 0.1,        "left": 0.1,        "right": 0.1,        "top": 0.1      },      "group_move_modifier": "string",      "history_limit": 0,      "nav_stack_limit": 0,      "new_window_policy": "string",      "raise_on_focus": true,      "shortcuts": {        "property1": "string",        "property2": "string"      },      "small_viewport_policy": "string",      "snap": {        "corner_reach": 0.1,        "edge_band": 0.1,        "exit_slack": 0.1,        "repeat_ratios": [          0.1        ]      },      "swap_modifier": "string"    },    "revision": 0,    "updated_at": "2019-08-24T14:15:22Z",    "version": 0,    "windows": {      "property1": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      },      "property2": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      }    },    "workspace_id": "string"  }}
GET
/api/workspaces/{workspace_id}/window-manager/layout

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
desktops*array<>
overrides*
version*integer
Range0 <= value <= 4294967295
windows*
workspace_id*string
curl -X GET "https://example.com/api/workspaces/string/window-manager/layout"
{  "desktops": [    {      "floating": [        "string"      ],      "floating_stacks": [        {          "active_id": "string",          "id": "string",          "minimized": true,          "rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "window_ids": [            "string"          ]        }      ],      "groups": [        {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        }      ],      "id": "string",      "name": "string",      "order": 0    }  ],  "overrides": {    "bindings": {      "bottom_center": "string",      "top_center": "string"    },    "closed_entry_limit": 0,    "desktop_transition": "string",    "drag_away_policy": "string",    "focus_follows_pointer": true,    "focus_policy": "string",    "focus_wrap": true,    "gaps": {      "bottom": 0.1,      "inner": 0.1,      "left": 0.1,      "right": 0.1,      "top": 0.1    },    "group_move_modifier": "string",    "history_limit": 0,    "nav_stack_limit": 0,    "new_window_policy": "string",    "raise_on_focus": true,    "shortcuts": {      "property1": "string",      "property2": "string"    },    "small_viewport_policy": "string",    "snap": {      "corner_reach": 0.1,      "edge_band": 0.1,      "exit_slack": 0.1,      "repeat_ratios": [        0.1      ]    },    "swap_modifier": "string"  },  "version": 0,  "windows": {    "property1": {      "app": "string",      "desktop_id": "string",      "floating_rect": {        "height": 0.1,        "width": 0.1,        "x": 0.1,        "y": 0.1      },      "id": "string",      "instance_key": "string",      "minimized": true,      "nav_stack": [        {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        }      ],      "pinned": true,      "placement": "tiled",      "return_anchor": {        "child_index": 0,        "desktop_id": "string",        "group_id": "string",        "neighbor_ids": [          "string"        ],        "parent_split_id": "string",        "source_group": {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        },        "source_revision": 0,        "weight": 0,        "zoomed": true      },      "route": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "zoomed": true    },    "property2": {      "app": "string",      "desktop_id": "string",      "floating_rect": {        "height": 0.1,        "width": 0.1,        "x": 0.1,        "y": 0.1      },      "id": "string",      "instance_key": "string",      "minimized": true,      "nav_stack": [        {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        }      ],      "pinned": true,      "placement": "tiled",      "return_anchor": {        "child_index": 0,        "desktop_id": "string",        "group_id": "string",        "neighbor_ids": [          "string"        ],        "parent_split_id": "string",        "source_group": {          "frame": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "root": {            "active_id": "string",            "axis": "horizontal",            "children": [              {}            ],            "id": "string",            "kind": "leaf",            "weights": [              0.1            ],            "window_id": "string",            "window_ids": [              "string"            ]          }        },        "source_revision": 0,        "weight": 0,        "zoomed": true      },      "route": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "zoomed": true    }  },  "workspace_id": "string"}
PUT
/api/workspaces/{workspace_id}/window-manager/layout

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
actor*
client_id?string|null
document*
expected_revision*integer
Range0 <= value <= 9007199254740991
origin*string
workspace_id*string

Response Body

Applied

application/json
  1. response
applied*boolean
changes*
client?|
diagnostics?array<>
rebased_from?integer
Range0 <= value <= 9007199254740991
snapshot*
curl -X PUT "https://example.com/api/workspaces/string/window-manager/layout" \  -H "Content-Type: application/json" \  -d '{    "actor": {},    "document": {      "desktops": [        {          "floating": [            "string"          ],          "floating_stacks": [            {              "id": "string",              "minimized": true,              "rect": {                "height": 0.1,                "width": 0.1,                "x": 0.1,                "y": 0.1              },              "window_ids": [                "string"              ]            }          ],          "groups": [            {              "frame": {                "height": 0.1,                "width": 0.1,                "x": 0.1,                "y": 0.1              },              "id": "string",              "root": {                "id": "string",                "kind": "leaf"              }            }          ],          "id": "string",          "name": "string",          "order": 0        }      ],      "overrides": {},      "version": 0,      "windows": {        "property1": {          "app": "string",          "desktop_id": "string",          "floating_rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "minimized": true,          "nav_stack": [            {              "pathname": "string",              "search": {                "property1": null,                "property2": null              }            }          ],          "pinned": true,          "placement": "tiled",          "route": {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          },          "zoomed": true        },        "property2": {          "app": "string",          "desktop_id": "string",          "floating_rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "minimized": true,          "nav_stack": [            {              "pathname": "string",              "search": {                "property1": null,                "property2": null              }            }          ],          "pinned": true,          "placement": "tiled",          "route": {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          },          "zoomed": true        }      },      "workspace_id": "string"    },    "expected_revision": 0,    "origin": "string",    "workspace_id": "string"  }'
{  "applied": true,  "changes": {    "client_ids": [      "string"    ],    "desktop_ids": [      "string"    ],    "group_ids": [      "string"    ],    "node_ids": [      "string"    ],    "stack_grouped": [      "string"    ],    "stack_ungrouped": [      "string"    ],    "window_ids": [      "string"    ]  },  "client": {    "active_desktop_id": "string",    "attachment_token": "string",    "client_id": "string",    "connected_at": "2019-08-24T14:15:22Z",    "context_revision": 0,    "focus_order": [      "string"    ],    "focused_window_id": "string",    "global_shortcuts": [      {        "active_chord": "string",        "command_id": "string",        "intended_chord": "string",        "reason": "string",        "settings_url": "string",        "status": "string"      }    ],    "kind": "string",    "palette_context": {      "desktop_window_count": 0,      "destination_intent": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "focused_session_state": "string",      "scope_global": true,      "shell_desktop": true,      "window_floating": true,      "window_focused": true,      "window_stacked": true,      "workspace_trusted": true    },    "presentation_revision": 0,    "stack_active": {      "property1": "string",      "property2": "string"    },    "workspace_id": "string"  },  "diagnostics": [    {      "code": "string",      "message": "string",      "path": "string"    }  ],  "rebased_from": 0,  "snapshot": {    "closed_entry_count": 0,    "desktops": [      {        "floating": [          "string"        ],        "floating_stacks": [          {            "active_id": "string",            "id": "string",            "minimized": true,            "rect": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "window_ids": [              "string"            ]          }        ],        "groups": [          {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          }        ],        "id": "string",        "name": "string",        "order": 0      }    ],    "overrides": {      "bindings": {        "bottom_center": "string",        "top_center": "string"      },      "closed_entry_limit": 0,      "desktop_transition": "string",      "drag_away_policy": "string",      "focus_follows_pointer": true,      "focus_policy": "string",      "focus_wrap": true,      "gaps": {        "bottom": 0.1,        "inner": 0.1,        "left": 0.1,        "right": 0.1,        "top": 0.1      },      "group_move_modifier": "string",      "history_limit": 0,      "nav_stack_limit": 0,      "new_window_policy": "string",      "raise_on_focus": true,      "shortcuts": {        "property1": "string",        "property2": "string"      },      "small_viewport_policy": "string",      "snap": {        "corner_reach": 0.1,        "edge_band": 0.1,        "exit_slack": 0.1,        "repeat_ratios": [          0.1        ]      },      "swap_modifier": "string"    },    "revision": 0,    "updated_at": "2019-08-24T14:15:22Z",    "version": 0,    "windows": {      "property1": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      },      "property2": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      }    },    "workspace_id": "string"  }}
GET
/api/workspaces/{workspace_id}/window-manager/layout-profiles

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Response Body

OK

application/json
  1. response
records*array<>
curl -X GET "https://example.com/api/workspaces/string/window-manager/layout-profiles"
{  "records": [    {      "created_at": "2019-08-24T14:15:22Z",      "id": "string",      "kind": "string",      "owner": {        "id": "string",        "kind": "string"      },      "scope": {        "id": "string",        "kind": "user"      },      "source": {        "id": "string",        "kind": "string"      },      "spec": null,      "updated_at": "2019-08-24T14:15:22Z",      "version": 0    }  ]}
DELETE
/api/workspaces/{workspace_id}/window-manager/layout-profiles/{profile_id}

Path Parameters

workspace_id*string

Workspace id

profile_id*string

Layout profile id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
expected_version*integer
Formatint64

Response Body

No Content

curl -X DELETE "https://example.com/api/workspaces/string/window-manager/layout-profiles/string" \  -H "Content-Type: application/json" \  -d '{    "expected_version": 0  }'
Empty
PUT
/api/workspaces/{workspace_id}/window-manager/layout-profiles/{profile_id}

Path Parameters

workspace_id*string

Workspace id

profile_id*string

Layout profile id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
expected_version?integer
Formatint64
scope*
spec*unknown

Response Body

Updated

application/json
  1. response
record*
curl -X PUT "https://example.com/api/workspaces/string/window-manager/layout-profiles/string" \  -H "Content-Type: application/json" \  -d '{    "scope": {      "kind": "user"    },    "spec": null  }'
{  "record": {    "created_at": "2019-08-24T14:15:22Z",    "id": "string",    "kind": "string",    "owner": {      "id": "string",      "kind": "string"    },    "scope": {      "id": "string",      "kind": "user"    },    "source": {      "id": "string",      "kind": "string"    },    "spec": null,    "updated_at": "2019-08-24T14:15:22Z",    "version": 0  }}
POST
/api/workspaces/{workspace_id}/window-manager/layout/validate

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
document*
workspace_id*string

Response Body

Validation result

application/json
  1. response
diagnostics?array<>
valid*boolean
workspace_id*string
curl -X POST "https://example.com/api/workspaces/string/window-manager/layout/validate" \  -H "Content-Type: application/json" \  -d '{    "document": {      "desktops": [        {          "floating": [            "string"          ],          "floating_stacks": [            {              "id": "string",              "minimized": true,              "rect": {                "height": 0.1,                "width": 0.1,                "x": 0.1,                "y": 0.1              },              "window_ids": [                "string"              ]            }          ],          "groups": [            {              "frame": {                "height": 0.1,                "width": 0.1,                "x": 0.1,                "y": 0.1              },              "id": "string",              "root": {                "id": "string",                "kind": "leaf"              }            }          ],          "id": "string",          "name": "string",          "order": 0        }      ],      "overrides": {},      "version": 0,      "windows": {        "property1": {          "app": "string",          "desktop_id": "string",          "floating_rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "minimized": true,          "nav_stack": [            {              "pathname": "string",              "search": {                "property1": null,                "property2": null              }            }          ],          "pinned": true,          "placement": "tiled",          "route": {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          },          "zoomed": true        },        "property2": {          "app": "string",          "desktop_id": "string",          "floating_rect": {            "height": 0.1,            "width": 0.1,            "x": 0.1,            "y": 0.1          },          "id": "string",          "minimized": true,          "nav_stack": [            {              "pathname": "string",              "search": {                "property1": null,                "property2": null              }            }          ],          "pinned": true,          "placement": "tiled",          "route": {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          },          "zoomed": true        }      },      "workspace_id": "string"    },    "workspace_id": "string"  }'
{  "diagnostics": [    {      "code": "string",      "message": "string",      "path": "string"    }  ],  "valid": true,  "workspace_id": "string"}
POST
/api/workspaces/{workspace_id}/window-manager/preview

Path Parameters

workspace_id*string

Workspace id

Query Parameters

profile?string

Act as this profile by name

Request Body

JSON request body

application/json
  1. body
actor*
client_id?string|null
command_id*string
Value in"desktop.create""desktop.update""desktop.reorder""desktop.switch""desktop.delete""window.open""window.navigate""window.close""window.focus""window.move""window.resize""window.swap""window.toggle_floating""window.zoom""window.stack.group""window.stack.reorder""window.stack.set_active""window.pin""window.reopen""layout.arrange""layout.resize""layout.frame_resize""layout.balance""layout.undo""layout.redo""layout.replace"
expected_revision*integer
Range0 <= value <= 9007199254740991
origin*string
payload*unknown
rebase?|
workspace_id*string

Response Body

OK

application/json
  1. response
changed*boolean
changes*
client?|
diagnostics?array<>
snapshot*
curl -X POST "https://example.com/api/workspaces/string/window-manager/preview" \  -H "Content-Type: application/json" \  -d '{    "actor": {},    "command_id": "desktop.create",    "expected_revision": 0,    "origin": "string",    "payload": null,    "workspace_id": "string"  }'
{  "changed": true,  "changes": {    "client_ids": [      "string"    ],    "desktop_ids": [      "string"    ],    "group_ids": [      "string"    ],    "node_ids": [      "string"    ],    "stack_grouped": [      "string"    ],    "stack_ungrouped": [      "string"    ],    "window_ids": [      "string"    ]  },  "client": {    "active_desktop_id": "string",    "attachment_token": "string",    "client_id": "string",    "connected_at": "2019-08-24T14:15:22Z",    "context_revision": 0,    "focus_order": [      "string"    ],    "focused_window_id": "string",    "global_shortcuts": [      {        "active_chord": "string",        "command_id": "string",        "intended_chord": "string",        "reason": "string",        "settings_url": "string",        "status": "string"      }    ],    "kind": "string",    "palette_context": {      "desktop_window_count": 0,      "destination_intent": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "focused_session_state": "string",      "scope_global": true,      "shell_desktop": true,      "window_floating": true,      "window_focused": true,      "window_stacked": true,      "workspace_trusted": true    },    "presentation_revision": 0,    "stack_active": {      "property1": "string",      "property2": "string"    },    "workspace_id": "string"  },  "diagnostics": [    {      "code": "string",      "message": "string",      "path": "string"    }  ],  "snapshot": {    "closed_entry_count": 0,    "desktops": [      {        "floating": [          "string"        ],        "floating_stacks": [          {            "active_id": "string",            "id": "string",            "minimized": true,            "rect": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "window_ids": [              "string"            ]          }        ],        "groups": [          {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          }        ],        "id": "string",        "name": "string",        "order": 0      }    ],    "overrides": {      "bindings": {        "bottom_center": "string",        "top_center": "string"      },      "closed_entry_limit": 0,      "desktop_transition": "string",      "drag_away_policy": "string",      "focus_follows_pointer": true,      "focus_policy": "string",      "focus_wrap": true,      "gaps": {        "bottom": 0.1,        "inner": 0.1,        "left": 0.1,        "right": 0.1,        "top": 0.1      },      "group_move_modifier": "string",      "history_limit": 0,      "nav_stack_limit": 0,      "new_window_policy": "string",      "raise_on_focus": true,      "shortcuts": {        "property1": "string",        "property2": "string"      },      "small_viewport_policy": "string",      "snap": {        "corner_reach": 0.1,        "edge_band": 0.1,        "exit_slack": 0.1,        "repeat_ratios": [          0.1        ]      },      "swap_modifier": "string"    },    "revision": 0,    "updated_at": "2019-08-24T14:15:22Z",    "version": 0,    "windows": {      "property1": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      },      "property2": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      }    },    "workspace_id": "string"  }}
GET
/api/workspaces/{workspace_id}/window-manager/stream

Path Parameters

workspace_id*string

Workspace id

Query Parameters

after_revision?integer

Last applied window-manager revision

Formatint64
Rangevalue <= 9007199254740991
client_id?string

Optional connected client bound to presentation updates

profile?string

Act as this profile by name

Response Body

WebSocket upgrade and frame contract

application/json
  1. response
client?|
revision*integer
Range0 <= value <= 9007199254740991
snapshot*
type*"snapshot"
Value in"snapshot"
workspace_id*string
curl -X GET "https://example.com/api/workspaces/string/window-manager/stream"
{  "client": {    "active_desktop_id": "string",    "attachment_token": "string",    "client_id": "string",    "connected_at": "2019-08-24T14:15:22Z",    "context_revision": 0,    "focus_order": [      "string"    ],    "focused_window_id": "string",    "global_shortcuts": [      {        "active_chord": "string",        "command_id": "string",        "intended_chord": "string",        "reason": "string",        "settings_url": "string",        "status": "string"      }    ],    "kind": "string",    "palette_context": {      "desktop_window_count": 0,      "destination_intent": {        "pathname": "string",        "search": {          "property1": null,          "property2": null        }      },      "focused_session_state": "string",      "scope_global": true,      "shell_desktop": true,      "window_floating": true,      "window_focused": true,      "window_stacked": true,      "workspace_trusted": true    },    "presentation_revision": 0,    "stack_active": {      "property1": "string",      "property2": "string"    },    "workspace_id": "string"  },  "revision": 0,  "snapshot": {    "closed_entry_count": 0,    "desktops": [      {        "floating": [          "string"        ],        "floating_stacks": [          {            "active_id": "string",            "id": "string",            "minimized": true,            "rect": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "window_ids": [              "string"            ]          }        ],        "groups": [          {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          }        ],        "id": "string",        "name": "string",        "order": 0      }    ],    "overrides": {      "bindings": {        "bottom_center": "string",        "top_center": "string"      },      "closed_entry_limit": 0,      "desktop_transition": "string",      "drag_away_policy": "string",      "focus_follows_pointer": true,      "focus_policy": "string",      "focus_wrap": true,      "gaps": {        "bottom": 0.1,        "inner": 0.1,        "left": 0.1,        "right": 0.1,        "top": 0.1      },      "group_move_modifier": "string",      "history_limit": 0,      "nav_stack_limit": 0,      "new_window_policy": "string",      "raise_on_focus": true,      "shortcuts": {        "property1": "string",        "property2": "string"      },      "small_viewport_policy": "string",      "snap": {        "corner_reach": 0.1,        "edge_band": 0.1,        "exit_slack": 0.1,        "repeat_ratios": [          0.1        ]      },      "swap_modifier": "string"    },    "revision": 0,    "updated_at": "2019-08-24T14:15:22Z",    "version": 0,    "windows": {      "property1": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      },      "property2": {        "app": "string",        "desktop_id": "string",        "floating_rect": {          "height": 0.1,          "width": 0.1,          "x": 0.1,          "y": 0.1        },        "id": "string",        "instance_key": "string",        "minimized": true,        "nav_stack": [          {            "pathname": "string",            "search": {              "property1": null,              "property2": null            }          }        ],        "pinned": true,        "placement": "tiled",        "return_anchor": {          "child_index": 0,          "desktop_id": "string",          "group_id": "string",          "neighbor_ids": [            "string"          ],          "parent_split_id": "string",          "source_group": {            "frame": {              "height": 0.1,              "width": 0.1,              "x": 0.1,              "y": 0.1            },            "id": "string",            "root": {              "active_id": "string",              "axis": "horizontal",              "children": [                {}              ],              "id": "string",              "kind": "leaf",              "weights": [                0.1              ],              "window_id": "string",              "window_ids": [                "string"              ]            }          },          "source_revision": 0,          "weight": 0,          "zoomed": true        },        "route": {          "pathname": "string",          "search": {            "property1": null,            "property2": null          }        },        "zoomed": true      }    },    "workspace_id": "string"  },  "type": "snapshot",  "workspace_id": "string"}