RingCentral · Arazzo Workflow

RingCentral Create a Webinar, Schedule a Session, and Register an Attendee

Version 1.0.0

Create a webinar, add a scheduled session to it, register an attendee, and read the registrant back for their join link.

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

Provider

ringcentral

Workflows

create-webinar-register-attendee
Create a webinar with a scheduled session and register an attendee for it.
Creates a webinar in the Configuration service, adds a scheduled session to it, registers an attendee against that session in the Registration service, and reads the registrant back for their personalized join and cancellation links.
4 steps inputs: description, email, externalId, firstName, hostAccountId, hostDomain, hostUserId, lastName, localeCode, scheduledDuration, scheduledStartTime, timeZone, title outputs: cancellationUri, joinUri, registrantId, sessionId, webinarId
1
createWebinar
rcwConfigCreateWebinar
Create the webinar configuration container. This does not schedule anything on its own — a webinar has no time until a session is added to it.
2
createSession
rcwConfigCreateSession
Add a scheduled session to the webinar. The session carries the actual start time, duration, and timezone, and its id is what registration attaches to.
3
registerAttendee
rcwRegCreateRegistrant
Register the attendee against the session. This call is served by the Webinar Registration service, and a 409 here means the email is already registered for this session.
4
readRegistrant
rcwRegGetRegistrant
Read the registrant back with their questionnaire answers included, confirming the registration persisted and capturing the personalized join and cancellation links to send in the confirmation email.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: RingCentral Create a Webinar, Schedule a Session, and Register an Attendee
  summary: Create a webinar, add a scheduled session to it, register an attendee, and read the registrant back for their join link.
  description: >-
    RingCentral Webinars splits what most platforms conflate: a *webinar* is the
    configuration container (title, host, settings), while a *session* is a
    scheduled occurrence of it, and registration always attaches to a session
    rather than to the webinar. That split is the single most important thing for an
    integrator to get right, and it is why this flow is worth wiring end to end. The
    workflow spans two RingCentral Webinar services — Configuration for the webinar
    and session, Registration for the registrant — creates a session with a start
    time, duration, and IANA timezone, registers an attendee, and reads them back
    to capture the personalized `joinUri` and `cancellationUri` that get emailed
    out. 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: create-webinar-register-attendee
  summary: Create a webinar with a scheduled session and register an attendee for it.
  description: >-
    Creates a webinar in the Configuration service, adds a scheduled session to it,
    registers an attendee against that session in the Registration service, and
    reads the registrant back for their personalized join and cancellation links.
  inputs:
    type: object
    required:
    - title
    - scheduledStartTime
    - firstName
    - lastName
    - email
    properties:
      title:
        type: string
        description: Webinar title (e.g. "Q3 Product Launch").
      description:
        type: string
        description: User-friendly description of the webinar.
      hostUserId:
        type: string
        description: >-
          User ID of the RingCentral user hosting the webinar. Omit to host as the
          authorized user.
      hostAccountId:
        type: string
        description: Account ID of the host user.
      hostDomain:
        type: string
        default: pbx
        description: >-
          Identity domain the host user belongs to. One of "pbx" or "ilm".
      scheduledStartTime:
        type: string
        format: date-time
        description: Session scheduled start time (ISO 8601).
      scheduledDuration:
        type: integer
        default: 3600
        description: >-
          Session duration in seconds. Must be between 30 and 43200.
      timeZone:
        type: string
        default: America/New_York
        description: >-
          IANA-compatible timezone name for the session (see
          https://www.iana.org/time-zones).
      localeCode:
        type: string
        default: en-US
        description: Session locale code.
      firstName:
        type: string
        description: Registrant's first (given) name.
      lastName:
        type: string
        description: Registrant's last (family) name.
      email:
        type: string
        format: email
        description: Registrant's email address.
      externalId:
        type: string
        description: >-
          Your system's identifier for this registrant, echoed back on reads so the
          registration can be reconciled against a CRM record.
  steps:
  - stepId: createWebinar
    description: >-
      Create the webinar configuration container. This does not schedule anything on
      its own — a webinar has no time until a session is added to it.
    operationId: rcwConfigCreateWebinar
    requestBody:
      contentType: application/json
      payload:
        title: $inputs.title
        description: $inputs.description
        host:
          linkedUser:
            userId: $inputs.hostUserId
            accountId: $inputs.hostAccountId
            domain: $inputs.hostDomain
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      webinarId: $response.body#/id
      title: $response.body#/title
      creationTime: $response.body#/creationTime
  - stepId: createSession
    description: >-
      Add a scheduled session to the webinar. The session carries the actual start
      time, duration, and timezone, and its id is what registration attaches to.
    operationId: rcwConfigCreateSession
    parameters:
    - name: webinarId
      in: path
      value: $steps.createWebinar.outputs.webinarId
    requestBody:
      contentType: application/json
      payload:
        scheduledStartTime: $inputs.scheduledStartTime
        scheduledDuration: $inputs.scheduledDuration
        timeZone: $inputs.timeZone
        localeCode: $inputs.localeCode
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      sessionId: $response.body#/id
      scheduledStartTime: $response.body#/scheduledStartTime
      videoBridgeId: $response.body#/videoBridgeId
      attendeeJoinUri: $response.body#/attendeeJoinUri
  - stepId: registerAttendee
    description: >-
      Register the attendee against the session. This call is served by the Webinar
      Registration service, and a 409 here means the email is already registered for
      this session.
    operationId: rcwRegCreateRegistrant
    parameters:
    - name: sessionId
      in: path
      value: $steps.createSession.outputs.sessionId
    requestBody:
      contentType: application/json
      payload:
        firstName: $inputs.firstName
        lastName: $inputs.lastName
        email: $inputs.email
        externalId: $inputs.externalId
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      registrantId: $response.body#/id
      joinUri: $response.body#/joinUri
      cancellationUri: $response.body#/cancellationUri
      registrationTime: $response.body#/registrationTime
  - stepId: readRegistrant
    description: >-
      Read the registrant back with their questionnaire answers included, confirming
      the registration persisted and capturing the personalized join and
      cancellation links to send in the confirmation email.
    operationId: rcwRegGetRegistrant
    parameters:
    - name: sessionId
      in: path
      value: $steps.createSession.outputs.sessionId
    - name: registrantId
      in: path
      value: $steps.registerAttendee.outputs.registrantId
    - name: includeQuestionnaire
      in: query
      value: true
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      joinUri: $response.body#/joinUri
      cancellationUri: $response.body#/cancellationUri
      email: $response.body#/email
      externalId: $response.body#/externalId
      questionnaire: $response.body#/questionnaire
  outputs:
    webinarId: $steps.createWebinar.outputs.webinarId
    sessionId: $steps.createSession.outputs.sessionId
    registrantId: $steps.registerAttendee.outputs.registrantId
    joinUri: $steps.readRegistrant.outputs.joinUri
    cancellationUri: $steps.readRegistrant.outputs.cancellationUri