← API reference
CANONICAL TYPE REFERENCE

Workspace

An instance-served workspace: the container record joined with the relevant version's definition (the published version when published, else the open draft). A workspace is the standing surface a role works in — panels of live data plus one-tap actions that run mutations as the signed-in user. For a technical team's own monitoring board, with no actions, use a Dashboard instead.

TypeID of the workspace container record (prefix wks, e.g. "wks_01K…"). Stable across versions.

handleString!

Stable, tenant-unique handle, derived from the definition's id — never supplied separately. Used for deep links and anchored launches.

Computed lifecycle status: PUBLISHED when a live published version exists, else DRAFT.

Version number of the version definition came from: the published version when published, else the open draft. Starts at 1 and increments per authored draft.

TypeID of the live published version (prefix wsv); null while the workspace only has drafts. The same fact as version when published, as a reference — a version number is server-assigned, so only the id can be pointed at by configuration written before the version exists.

requiredDomains[String!]!

Permission domains the definition declares it needs (mirrored out of the latest version so unauthorised workspaces can be filtered server-side). Empty when the definition declares none.

Distribution scope, which drives authorization: PERSONAL (owner-only, self-service via workspace:personal), TEAM / INSTANCE (require workspace:write to author).

Owner of a PERSONAL workspace; null for TEAM / INSTANCE.

Teams a TEAM-scoped workspace is assigned to.

definitionString!

Internal compiled rendering contract. Never submit this field as authored source.

sourceString

Author-only cococo-workspace-source/1 envelope with exact sourceXML and serverLua. Latest authored version, including an open draft; null for non-authors.

revisionString!

Revision of the complete authoring snapshot. Empty for runtime-only readers; a non-empty observed revision is required for IaC updates.

hasDraftBoolean!

True when an unpublished draft exists for this workspace.

ISO-8601 timestamp when the workspace was first created (its first version authored).

ISO-8601 timestamp of the last change to the workspace container — a new draft, an edit, a scope/team change, or a publish.

View exact SDL
"""
An instance-served workspace: the container record joined with the relevant version's definition (the published version when published, else the open draft). A workspace is the standing surface a role works in — panels of live data plus one-tap actions that run mutations as the signed-in user. For a technical team's own monitoring board, with no actions, use a Dashboard instead.
"""
type Workspace @iac_resource(name: "workspace") @iac_precondition(field: "revision", input: "expectedRevision") @iac_guide(ref: "workspace-authoring-guide") @iac_ops(create: "createWorkspace", read: "getWorkspace", update: "updateWorkspaceSource", delete: "deleteWorkspace") @iac_replace(strategy: DESTROY_BEFORE_CREATE) {
  """
  TypeID of the workspace container record (prefix `wks`, e.g. "wks_01K…"). Stable across versions.
  """
  id: WorkspaceID! @iac_identity(assignedBy: SERVER) @iac_computed
  """
  Stable, tenant-unique handle, derived from the definition's `id` — never supplied separately. Used for deep links and anchored launches.
  """
  handle: String! @iac_computed
  """
  Computed lifecycle status: PUBLISHED when a live published version exists, else DRAFT.
  """
  status: WorkspaceStatus! @iac_computed
  """
  Version number of the version `definition` came from: the published version when published, else the open draft. Starts at 1 and increments per authored draft.
  """
  version: Int! @iac_computed
  """
  TypeID of the live published version (prefix `wsv`); null while the workspace only has drafts. The same fact as `version` when published, as a reference — a version number is server-assigned, so only the id can be pointed at by configuration written before the version exists.
  """
  publishedVersionId: WorkspaceVersionID @iac_ref(resource: "workspace_version") @iac_writtenBy(operation: "publishWorkspace", argument: "versionId")
  """
  Permission domains the definition declares it needs (mirrored out of the latest version so unauthorised workspaces can be filtered server-side). Empty when the definition declares none.
  """
  requiredDomains: [String!]! @iac_computed
  """
  Distribution scope, which drives authorization: PERSONAL (owner-only, self-service via workspace:personal), TEAM / INSTANCE (require workspace:write to author).
  """
  scope: WorkspaceScope!
  """Owner of a PERSONAL workspace; null for TEAM / INSTANCE."""
  ownerUserId: UserID @iac_ref(resource: "service_account") @iac_computed
  """Teams a TEAM-scoped workspace is assigned to."""
  teamIds: [TeamID!]! @iac_ref(resource: "team")
  """
  Internal compiled rendering contract. Never submit this field as authored source.
  """
  definition: String! @iac_computed
  """
  Author-only cococo-workspace-source/1 envelope with exact sourceXML and serverLua. Latest authored version, including an open draft; null for non-authors.
  """
  source: String @iac_artifact(language: JSON, validators: ["workspace-source", "workspace-source-structure"]) @iac_guide(ref: "workspace-authoring-guide")
  """
  Revision of the complete authoring snapshot. Empty for runtime-only readers; a non-empty observed revision is required for IaC updates.
  """
  revision: String! @iac_computed
  """True when an unpublished draft exists for this workspace."""
  hasDraft: Boolean! @iac_computed
  """
  ISO-8601 timestamp when the workspace was first created (its first version authored).
  """
  createdAt: ISO8601! @iac_computed
  """
  ISO-8601 timestamp of the last change to the workspace container — a new draft, an edit, a scope/team change, or a publish.
  """
  updatedAt: ISO8601! @iac_computed
}

One stable address across all schema views. Follow a field’s type to explore connections between domains.