Bentley Systems · Arazzo Workflow

Bentley Start an iModel Authoring Session

Version 1.0.0

Acquire a briefcase, take element locks, and push a changeset to author an iModel.

1 workflow 1 source API 1 provider
View Spec View on GitHub Infrastructure EngineeringDigital TwinBIMCADReality CaptureConstructionAsset ManagementGeospatialiTwiniModelArazzoWorkflows

Provider

bentley-systems

Workflows

authoring-session
Acquire a briefcase, lock elements, and push a changeset.
Acquires a briefcase for an iModel, applies element locks for that briefcase, and pushes a changeset that captures the authored modifications.
3 steps inputs: iModelId, locks outputs: briefcaseId, changesetId
1
acquireBriefcase
AcquireBriefcase
Acquire a briefcase for the iModel. The briefcase id identifies this authoring session and owns any locks taken during it.
2
takeLocks
UpdateLocks
Apply element locks for the acquired briefcase so the elements about to be edited cannot be modified concurrently by another session.
3
pushChangeset
CreateChangeset
Push a changeset that records the modifications authored during the session under the acquired briefcase.

Source API Descriptions

Arazzo Workflow Specification

bentley-systems-authoring-session-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Bentley Start an iModel Authoring Session
  summary: Acquire a briefcase, take element locks, and push a changeset to author an iModel.
  description: >-
    Authoring an iModel requires a briefcase — a local checkout identity — and
    element-level locks so concurrent editors do not collide. This workflow
    acquires a briefcase, takes the requested locks against that briefcase, and
    then creates a changeset that records the edits made during the session.
    Each step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: imodelsApi
  url: ../openapi/itwin-imodels-openapi.yml
  type: openapi
workflows:
- workflowId: authoring-session
  summary: Acquire a briefcase, lock elements, and push a changeset.
  description: >-
    Acquires a briefcase for an iModel, applies element locks for that briefcase,
    and pushes a changeset that captures the authored modifications.
  inputs:
    type: object
    required:
    - iModelId
    - locks
    properties:
      iModelId:
        type: string
        description: The iModel being authored.
      locks:
        type: object
        description: The lock update payload describing which elements to lock and at what level.
  steps:
  - stepId: acquireBriefcase
    description: >-
      Acquire a briefcase for the iModel. The briefcase id identifies this
      authoring session and owns any locks taken during it.
    operationId: AcquireBriefcase
    parameters:
    - name: iModelId
      in: path
      value: $inputs.iModelId
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      briefcaseId: $response.body#/briefcase/briefcaseId
  - stepId: takeLocks
    description: >-
      Apply element locks for the acquired briefcase so the elements about to be
      edited cannot be modified concurrently by another session.
    operationId: UpdateLocks
    parameters:
    - name: iModelId
      in: path
      value: $inputs.iModelId
    requestBody:
      contentType: application/json
      payload: $inputs.locks
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      locks: $response.body#/lock
  - stepId: pushChangeset
    description: >-
      Push a changeset that records the modifications authored during the
      session under the acquired briefcase.
    operationId: CreateChangeset
    parameters:
    - name: iModelId
      in: path
      value: $inputs.iModelId
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      changesetId: $response.body#/changeset/id
  outputs:
    briefcaseId: $steps.acquireBriefcase.outputs.briefcaseId
    changesetId: $steps.pushChangeset.outputs.changesetId