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.
versionInt!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.
sourceStringAuthor-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.