← API reference
CANONICAL TYPE REFERENCE

Folder

A tenant-scoped, named storage location: a name bound to exactly one transport plus a root path/prefix within it, so files, workflow nodes and scripts can choose where bytes live without knowing how they get there. The binding is flattened here to a kind discriminator plus the at-most-one matching reference ID.

TypeID of this folder (e.g. "fld_01K…"); stable file handles reference it.

TypeID of the owning tenant (e.g. "ten_01K…"); folders are tenant-scoped.

nameString!

Human-facing folder name. Unique per tenant.

Optional free-text note about the folder's purpose (max 1000 characters); null when unset.

Discriminator for the folder's binding; tells you which of storageBackendId / controllerId is populated.

TypeID of the bound storage backend (e.g. "sbk_01K…"). Non-null only when kind is STORAGE_BACKEND; null otherwise.

TypeID of the bound edge controller (e.g. "ctl_01K…"). Non-null only when kind is CONTROLLER; null otherwise. The controller always belongs to this tenant.

rootPathString!

Location within the bound transport. For cloud bindings (CONTROL_CLOUD, STORAGE_BACKEND) this is a key prefix — possibly empty, never leading "/". For CONTROLLER it is an absolute filesystem path starting with "/". Never contains a ".." segment.

isDefaultBoolean!

True for the single folder per tenant that receives files stored without an explicit folder selection. Exactly one folder per tenant carries this flag.

createdAtString!

ISO-8601 timestamp of when the folder was created.

updatedAtString!

ISO-8601 timestamp of the folder's last modification; equals createdAt until first update.

View exact SDL
"""
A tenant-scoped, named storage location: a name bound to exactly one transport plus a root path/prefix within it, so files, workflow nodes and scripts can choose *where* bytes live without knowing *how* they get there. The binding is flattened here to a kind discriminator plus the at-most-one matching reference ID.
"""
type Folder @iac_resource(name: "folder") @iac_ops(create: "createFolder", read: "folder", update: "updateFolder", delete: "deleteFolder") {
  """
  TypeID of this folder (e.g. "fld_01K…"); stable file handles reference it.
  """
  id: FolderID! @iac_identity(assignedBy: SERVER) @iac_computed
  """
  TypeID of the owning tenant (e.g. "ten_01K…"); folders are tenant-scoped.
  """
  tenantId: TenantID! @iac_computed
  """Human-facing folder name. Unique per tenant."""
  name: String!
  """
  Optional free-text note about the folder's purpose (max 1000 characters); null when unset.
  """
  description: String
  """
  Discriminator for the folder's binding; tells you which of storageBackendId / controllerId is populated.
  """
  kind: FolderBindingKind!
  """
  TypeID of the bound storage backend (e.g. "sbk_01K…"). Non-null only when kind is STORAGE_BACKEND; null otherwise.
  """
  storageBackendId: StorageBackendID @iac_ref(resource: "storage_backend")
  """
  TypeID of the bound edge controller (e.g. "ctl_01K…"). Non-null only when kind is CONTROLLER; null otherwise. The controller always belongs to this tenant.
  """
  controllerId: ControllerID @iac_ref(resource: "controller")
  """
  Location within the bound transport. For cloud bindings (CONTROL_CLOUD, STORAGE_BACKEND) this is a key prefix — possibly empty, never leading "/". For CONTROLLER it is an absolute filesystem path starting with "/". Never contains a ".." segment.
  """
  rootPath: String!
  """
  True for the single folder per tenant that receives files stored without an explicit folder selection. Exactly one folder per tenant carries this flag.
  """
  isDefault: Boolean!
  """ISO-8601 timestamp of when the folder was created."""
  createdAt: String! @iac_computed
  """
  ISO-8601 timestamp of the folder's last modification; equals createdAt until first update.
  """
  updatedAt: String! @iac_computed
}

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