RingCentral · Arazzo Workflow

RingCentral Create a Video Bridge and Manage Its Lifecycle

Version 1.0.0

Create a RingCentral Video bridge, read its join URI and Web PIN, resolve it by PIN, update its security, and delete it.

1 workflow 1 source API 1 provider
View Spec View on GitHub CommunicationsUCaaSVoiceVideoContact CenterSMSMessagingFaxArazzoWorkflows

Provider

ringcentral

Workflows

video-bridge-lifecycle
Create a video bridge, capture its join details, resolve it by PIN, rotate its password, and delete it.
Creates a scheduled RingCentral Video bridge for an extension, reads it back for the Web PIN and join URI, looks the bridge up by its Web PIN, updates the meeting password, and removes the bridge.
5 steps inputs: accountId, bridgeName, extensionId, password, rotatedPassword, waitingRoomRequired outputs: bridgeId, joinUri, pstnPins, updatedSecurity, webPin
1
createBridge
createBridge
Create a Scheduled bridge for the extension. Scheduled bridges survive across multiple meetings, unlike Instant bridges which are deleted right after their single use. RingCentral generates the Web PIN when one is not supplied.
2
readBridge
getBridge
Read the bridge back to capture the join URI. discovery.web only carries the embedded password parameter when the caller is the bridge owner, a delegate, or a Super Admin, so this read is what produces a distributable join link.
3
resolveBridgeByPin
getBridgeByWebPin
Look the bridge up by its Web PIN. This is the lookup behind a join-by-code screen, where a participant supplies only the meeting code.
4
rotatePassword
updateBridge
Update the bridge to rotate the meeting password. Note the update operation is a PATCH and cannot change the Web PIN — the spec routes PIN changes to a dedicated endpoint instead.
5
deleteBridge
deleteBridge
Delete the bridge when the recurring meeting series ends so the Web PIN and join URI stop resolving.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: RingCentral Create a Video Bridge and Manage Its Lifecycle
  summary: Create a RingCentral Video bridge, read its join URI and Web PIN, resolve it by PIN, update its security, and delete it.
  description: >-
    Bridges are the current RingCentral Video meeting primitive, and this flow is
    what a scheduling or booking integration actually wires up. A `Scheduled`
    bridge is created with password protection and waiting-room preferences, read
    back to capture the generated Web PIN and the `discovery.web` join URI — the
    URI is only returned with its password parameter to the bridge owner or a
    delegate, which is exactly why the read-back cannot be skipped — then resolved
    by Web PIN the way a join-by-code screen does, updated to rotate the meeting
    password, and finally deleted. This flow deliberately uses the `/rcvideo/v2`
    bridge operations rather than the older `createMeeting` surface, which the spec
    marks deprecated. Every 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: ringcentralPlatform
  url: ../openapi/ringcentral-platform-openapi.yml
  type: openapi
workflows:
- workflowId: video-bridge-lifecycle
  summary: Create a video bridge, capture its join details, resolve it by PIN, rotate its password, and delete it.
  description: >-
    Creates a scheduled RingCentral Video bridge for an extension, reads it back
    for the Web PIN and join URI, looks the bridge up by its Web PIN, updates the
    meeting password, and removes the bridge.
  inputs:
    type: object
    required:
    - bridgeName
    properties:
      accountId:
        type: string
        default: '~'
        description: >-
          Internal identifier of the RingCentral account. Use "~" for the account
          associated with the current authorization session.
      extensionId:
        type: string
        default: '~'
        description: >-
          Internal identifier of the extension that owns the bridge. Use "~" for
          the extension associated with the current authorization session.
      bridgeName:
        type: string
        description: Custom name of the bridge (e.g. "Weekly Design Review").
      password:
        type: string
        description: >-
          Meeting password. When passwordProtected is true and this is omitted,
          RingCentral generates one.
      rotatedPassword:
        type: string
        description: The replacement meeting password applied by the update step.
      waitingRoomRequired:
        type: string
        default: Everybody
        description: >-
          Waiting room policy before the host starts the meeting. One of Nobody,
          Everybody, GuestsOnly, OtherAccount.
  steps:
  - stepId: createBridge
    description: >-
      Create a Scheduled bridge for the extension. Scheduled bridges survive across
      multiple meetings, unlike Instant bridges which are deleted right after their
      single use. RingCentral generates the Web PIN when one is not supplied.
    operationId: createBridge
    parameters:
    - name: accountId
      in: path
      value: $inputs.accountId
    - name: extensionId
      in: path
      value: $inputs.extensionId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.bridgeName
        type: Scheduled
        security:
          passwordProtected: true
          password: $inputs.password
        preferences:
          join:
            audioMuted: true
            videoMuted: true
            waitingRoomRequired: $inputs.waitingRoomRequired
          playTones: EnterOnly
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      bridgeId: $response.body#/id
      webPin: $response.body#/pins/web
      bridgeType: $response.body#/type
      host: $response.body#/host
  - stepId: readBridge
    description: >-
      Read the bridge back to capture the join URI. discovery.web only carries the
      embedded password parameter when the caller is the bridge owner, a delegate,
      or a Super Admin, so this read is what produces a distributable join link.
    operationId: getBridge
    parameters:
    - name: bridgeId
      in: path
      value: $steps.createBridge.outputs.bridgeId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      joinUri: $response.body#/discovery/web
      webPin: $response.body#/pins/web
      pstnPins: $response.body#/pins/pstn
      security: $response.body#/security
      preferences: $response.body#/preferences
  - stepId: resolveBridgeByPin
    description: >-
      Look the bridge up by its Web PIN. This is the lookup behind a join-by-code
      screen, where a participant supplies only the meeting code.
    operationId: getBridgeByWebPin
    parameters:
    - name: pin
      in: path
      value: $steps.readBridge.outputs.webPin
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      resolvedBridgeId: $response.body#/id
      resolvedName: $response.body#/name
      passwordProtected: $response.body#/security/passwordProtected
  - stepId: rotatePassword
    description: >-
      Update the bridge to rotate the meeting password. Note the update operation is
      a PATCH and cannot change the Web PIN — the spec routes PIN changes to a
      dedicated endpoint instead.
    operationId: updateBridge
    parameters:
    - name: bridgeId
      in: path
      value: $steps.createBridge.outputs.bridgeId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.bridgeName
        security:
          passwordProtected: true
          password: $inputs.rotatedPassword
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      updatedSecurity: $response.body#/security
      updatedName: $response.body#/name
  - stepId: deleteBridge
    description: >-
      Delete the bridge when the recurring meeting series ends so the Web PIN and
      join URI stop resolving.
    operationId: deleteBridge
    parameters:
    - name: bridgeId
      in: path
      value: $steps.createBridge.outputs.bridgeId
    successCriteria:
    - condition: $statusCode == 204
  outputs:
    bridgeId: $steps.createBridge.outputs.bridgeId
    webPin: $steps.readBridge.outputs.webPin
    joinUri: $steps.readBridge.outputs.joinUri
    pstnPins: $steps.readBridge.outputs.pstnPins
    updatedSecurity: $steps.rotatePassword.outputs.updatedSecurity