← API reference
CANONICAL TYPE REFERENCE

Journey

An instance-served journey: a guided, multi-step workflow the runner executes. The container record joined with the version it currently serves (published when one exists, else the open draft). Who may see and author it is decided by scope.

Monotonic authoring revision used as the expectedRevision precondition for concurrent edits.

TypeID of the journey container record (prefix jny, e.g. "jny_01K…"). Stable across publishes; the individual versions have their own jnv ids.

handleString!

Stable, tenant-unique slug taken from the definition's id — never supplied separately, and never reassigned once the journey exists. Used for deep links and anchored launches (getJourneyByHandle).

Computed lifecycle status: PUBLISHED when a live published version exists, otherwise DRAFT. Not stored on the journey — derived from its versions.

Version number (1-based) of the version definition was taken from: the published version when published, else the open draft. 0 for a journey with no versions.

TypeID of the live published version (prefix jnv); null while the journey 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 caller must hold to be offered this journey, lifted out of the definition so unauthorised journeys are filtered server-side. Empty means no extra domain is required beyond the journey's scope.

Distribution scope, which drives authorization: PERSONAL is visible to and authored by its owner alone (journey:personal, self-service); TEAM is visible to members of teamIds; INSTANCE is offered to the whole tenant. Authoring TEAM or INSTANCE requires journey:write.

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

Teams a TEAM-scoped journey is assigned to.

definitionString!

Compiled Journey JSON for the Surfaces runtime.

sourceXMLString

Exact authoring XML, available only to authors. On a Journey, the newest open draft takes precedence over the published version.

sourceString

XML source envelope, available only to authors.

hasDraftBoolean!

True when an unpublished draft exists for this journey.

ISO-8601 timestamp of when the journey was first created (its first draft).

ISO-8601 timestamp of the last change to the journey — an edited draft, a publish, or a scope / team-assignment change.

View exact SDL
"""
An instance-served journey: a guided, multi-step workflow the runner executes. The container record joined with the version it currently serves (published when one exists, else the open draft). Who may see and author it is decided by `scope`.
"""
type Journey @iac_resource(name: "journey") @iac_precondition(field: "revision", input: "expectedRevision") @iac_guide(ref: "journey-authoring-guide") @iac_ops(create: "createJourneyFromSource", read: "getJourney", update: "updateJourneyFromSource", delete: "deleteJourney") @iac_replace(strategy: DESTROY_BEFORE_CREATE) {
  """
  Monotonic authoring revision used as the expectedRevision precondition for concurrent edits.
  """
  revision: Int! @iac_computed
  """
  TypeID of the journey container record (prefix `jny`, e.g. "jny_01K…"). Stable across publishes; the individual versions have their own `jnv` ids.
  """
  id: JourneyID! @iac_identity(assignedBy: SERVER) @iac_computed
  """
  Stable, tenant-unique slug taken from the definition's `id` — never supplied separately, and never reassigned once the journey exists. Used for deep links and anchored launches (`getJourneyByHandle`).
  """
  handle: String! @iac_computed
  """
  Computed lifecycle status: PUBLISHED when a live published version exists, otherwise DRAFT. Not stored on the journey — derived from its versions.
  """
  status: JourneyStatus! @iac_computed
  """
  Version number (1-based) of the version `definition` was taken from: the published version when published, else the open draft. 0 for a journey with no versions.
  """
  version: Int! @iac_computed
  """
  TypeID of the live published version (prefix `jnv`); null while the journey 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: JourneyVersionID @iac_ref(resource: "journey_version") @iac_writtenBy(operation: "publishJourney", argument: "versionId")
  """
  Permission domains the caller must hold to be offered this journey, lifted out of the definition so unauthorised journeys are filtered server-side. Empty means no extra domain is required beyond the journey's scope.
  """
  requiredDomains: [String!]! @iac_computed
  """
  Distribution scope, which drives authorization: PERSONAL is visible to and authored by its owner alone (journey:personal, self-service); TEAM is visible to members of `teamIds`; INSTANCE is offered to the whole tenant. Authoring TEAM or INSTANCE requires journey:write.
  """
  scope: JourneyScope!
  """Owner of a PERSONAL journey; null for TEAM / INSTANCE."""
  ownerUserId: UserID @iac_ref(resource: "service_account") @iac_computed
  """Teams a TEAM-scoped journey is assigned to."""
  teamIds: [TeamID!]! @iac_ref(resource: "team")
  """Compiled Journey JSON for the Surfaces runtime."""
  definition: String! @iac_computed
  """
  Exact authoring XML, available only to authors. On a Journey, the newest open draft takes precedence over the published version.
  """
  sourceXML: String @iac_artifact(language: XML, validators: ["journey-source"])
  """XML source envelope, available only to authors."""
  source: String @iac_computed
  """True when an unpublished draft exists for this journey."""
  hasDraft: Boolean! @iac_computed
  """
  ISO-8601 timestamp of when the journey was first created (its first draft).
  """
  createdAt: ISO8601! @iac_computed
  """
  ISO-8601 timestamp of the last change to the journey — an edited draft, a publish, or a scope / team-assignment change.
  """
  updatedAt: ISO8601! @iac_computed
}

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