RingCentral Voice API

The RingCentral Voice API enables developers to incorporate voice and phone functionality into applications. It supports placing calls (RingOut, WebRTC, URI scheme), call control (active call manipulation, transfer, hold, recording), call routing rules, monitoring, supervision, conferencing, and call log retrieval.

OpenAPI Specification

ringcentral-platform-openapi.yml Raw ↑
openapi: "3.0.3"
info:
  title: "RingCentral API"
  description: "RingCentral API specification"
  version: "1.0.58-20240529-47eda8bd"
  contact:
    name: "RingCentral Developers Support"
    url: "https://developers.ringcentral.com/support"
  termsOfService: "https://www.ringcentral.com/legal/apilitos.html"
  license:
    name: "RingCentral API License Agreement"
    url: "https://www.ringcentral.com/legal/apilitos.html"
servers:
- url: "https://platform.ringcentral.com"
  description: "Production API entry point"
- url: "https://media.ringcentral.com"
  description: "Production Media entry point"
- url: "https://platform.devtest.ringcentral.com"
  description: "Developer sandbox API entry point"
- url: "https://platform.devtest.ringcentral.com"
  description: "Developer sandbox Media entry point"
x-tagGroups:
- name: "Voice"
  popular: true
  tags:
  - "Business Hours"
  - "Call Blocking"
  - "Call Control"
  - "Call Forwarding"
  - "Call Handling Rules"
  - "Interaction Rules"
  - "State-based Rules"
  - "Call Flip"
  - "Call Log"
  - "Call History"
  - "Call Log Export"
  - "Call Monitoring Groups"
  - "Call Queues"
  - "Call Recordings"
  - "Call Recording Settings"
  - "Device SIP Registration"
  - "Greetings"
  - "IVR"
  - "RingOut"
  - "Verification Calls"
- name: "SMS and Fax"
  popular: true
  tags:
  - "Fax"
  - "Message Exports"
  - "Message Store"
  - "Pager Messages"
  - "SMS"
  - "High Volume SMS"
  - "SMS Log Export"
  - "SMS Templates"
  - "Voicemail Broadcasting"
- name: "Social Messaging"
  popular: true
  tags:
  - "Identities"
  - "Contents"
- name: "Team Messaging"
  popular: true
  tags:
  - "Adaptive Cards"
  - "Bots"
  - "Calendar Events"
  - "Chats"
  - "Conversations"
  - "Compliance Exports"
  - "Contacts"
  - "Incoming Webhooks"
  - "Notes"
  - "Posts"
  - "Profile"
  - "Tasks"
  - "Teams"
- name: "Video"
  popular: true
  tags:
  - "Bridge Management"
  - "Delegation Management"
  - "Meetings History"
  - "Meeting Recordings"
  - "RCM Meetings (Legacy)"
  - "RCM Webinars (Legacy)"
- name: "Webinar"
  popular: true
  tags:
  - "Webinars and Sessions"
  - "Invitees"
  - "Historical Webinars"
  - "Historical Recordings"
  - "Registration Management"
  - "Registrants"
  - "Webinar Analytics"
  - "Webinar Subscriptions"
- name: "Analytics"
  popular: true
  tags:
  - "Business Analytics"
- name: "Artificial Intelligence"
  popular: true
  tags:
  - "Insights"
  - "Audio"
  - "Text"
  - "Status"
- name: "Authentication"
  tags:
  - "OAuth 2.0 / OpenID Connect"
  - "Interoperability"
- name: "Account"
  tags:
  - "Company"
  - "Custom Fields"
  - "Features"
  - "Licenses"
  - "Tax Locations"
  - "Cost Centers"
  - "Multi-Site"
  - "Phone Numbers"
  - "Presence"
  - "Regional Settings"
  - "User Permissions"
  - "User Settings"
  - "Audit Trail"
  - "Calling Rates"
  - "Appearance Customization"
  - "Account Integrations"
- name: "Provisioning"
  tags:
  - "Automatic Location Updates"
  - "Devices"
  - "Extensions"
  - "Paging Only Groups"
  - "Park Locations"
  - "Phone Lines"
  - "SCIM"
  - "Shared Lines"
  - "Group Call Pickup"
  - "Delegated Lines Groups"
  - "Directed Call Pickup"
  - "IVR Apps"
  - "Video Configuration"
  - "Number Porting"
  - "SMB"
  - "Account Federation"
  - "Integrations"
  - "Enterprise Portal API"
  - "Push to Talk Provisioning"
  - "BYOC"
- name: "Address Book"
  tags:
  - "External Contacts"
  - "Internal Contacts"
  - "Hybrid Directory Contacts"
  - "Overlay Contacts"
  - "External Shared Directory"
- name: "Roles and Permissions"
  tags:
  - "Permissions"
  - "Role Management"
  - "Site Administration"
  - "User Groups"
- name: "Events & Notifications"
  tags:
  - "Subscriptions"
- name: "User Integrations"
  tags:
  - "Token Management"
  - "Calendar Management"
  - "Calendar Event Management"
  - "Calendar Presence Link"
  - "Cloud Personal Contacts"
  - "Cloud Shared Contacts"
  - "Cloud Directory"
  - "Deprecated Calendar API"
- name: "Rooms"
  tags:
  - "Rooms Client API"
  - "Rooms Management API"
- name: "App Management"
  tags:
  - "App Gallery"
  - "App Rating Review"
  - "Bot Provisioning"
- name: "Workflow Builder"
  tags:
  - "Flows"
  - "Flow Editor"
  - "Flow Log"
  - "Flow Templates"
- name: "Utilities"
  tags:
  - "API Info"
  - "Application Settings"
  - "Async Tasks"
  - "User Notifications"
  - "Client Versions"
  - "End-to-End Encryption"
security:
- OAuth2: []
tags:
- name: "Registration Management"
  description: "External APIs for registration flow management"
- name: "Message Exports"
  description: "External interface to export user's messages"
- name: "Message Store"
- name: "Call Forwarding"
- name: "Device SIP Registration"
- name: "Call Queues"
- name: "Compliance Exports"
- name: "Phone Numbers"
- name: "Invitees"
  description: "External APIs to manage webinar invitees and invitations"
- name: "API Info"
- name: "Tasks"
- name: "User Permissions"
- name: "Internal Contacts"
- name: "Identities"
- name: "Devices"
- name: "Call Control"
- name: "Company"
- name: "Call Log"
- name: "Fax"
- name: "User Settings"
- name: "Text"
  description: "Conversational AI text processing APIs"
- name: "External Contacts"
- name: "RingOut"
- name: "Regional Settings"
- name: "Webinar Subscriptions"
  description: "General interface to manage webinar subscriptions"
- name: "Paging Only Groups"
- name: "Subscriptions"
  description: "General interface to manage subscriptions"
- name: "Multi-Site"
- name: "Presence"
- name: "Features"
- name: "Notes"
- name: "Automatic Location Updates"
- name: "Extensions"
- name: "Role Management"
- name: "IVR"
- name: "SMS"
- name: "Greetings"
- name: "Audit Trail"
- name: "Incoming Webhooks"
- name: "Meeting Recordings"
- name: "Call Monitoring Groups"
- name: "SMS Templates"
- name: "Business Hours"
- name: "Registrants"
  description: "External APIs for registrants management"
- name: "Contents"
- name: "Posts"
- name: "Call Handling Rules"
- name: "Business Analytics"
- name: "High Volume SMS"
- name: "Webinars and Sessions"
  description: "External APIs for webinar and session management"
- name: "Chats"
- name: "Delegation Management"
- name: "Calendar Events"
- name: "Conversations"
- name: "Call Recording Settings"
- name: "Video Configuration"
- name: "Audio"
  description: "Conversational AI audio processing APIs"
- name: "Site Administration"
- name: "Insights"
  description: "Conversational AI insight APIs"
- name: "Pager Messages"
- name: "Custom Fields"
- name: "Bridge Management"
- name: "Adaptive Cards"
- name: "Call Blocking"
- name: "Historical Webinars"
  description: "Historical webinars and sessions information"
- name: "OAuth 2.0 / OpenID Connect"
  description: "Public OAuth 2.0 and OpenID Connect Resources"
- name: "Teams"
- name: "RCM Meetings (Legacy)"
- name: "SCIM"
- name: "Meetings History"
- name: "Call Recordings"
- name: "Historical Recordings"
  description: "Historical webinar recordings management (host and admin interfaces)"
- name: "Status"
  description: "Conversational AI async job status"
- name: "Profile"
paths:
  /webinar/notifications/v1/subscriptions:
    get:
      tags:
      - "Webinar Subscriptions"
      summary: "List Webinar Subscriptions"
      description: "Returns a list of webinar subscriptions created by the user for the current authorized client application."
      operationId: "rcwN11sListSubscriptions"
      responses:
        "200":
          description: "List of Subscriptions"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionListResource"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Light"
    post:
      tags:
      - "Webinar Subscriptions"
      summary: "Create Webinar Subscription"
      description: "Creates a new webinar subscription for the current authorized user / client application."
      operationId: "rcwN11sCreateSubscription"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateWebhookSubscriptionRequest"
        required: true
      responses:
        "201":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Medium"
  /webinar/notifications/v1/subscriptions/{subscriptionId}:
    get:
      tags:
      - "Webinar Subscriptions"
      summary: "Get Webinar Subscription"
      description: "Returns the webinar subscription by ID"
      operationId: "rcwN11sGetSubscription"
      parameters:
      - $ref: "#/components/parameters/SubscriptionId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Light"
    put:
      tags:
      - "Webinar Subscriptions"
      summary: "Update Webinar Subscription"
      description: |
        Updates the existing subscription. The client application can extend/narrow
        the list of events for which it receives notifications within this subscription.
        If event filters are specified, calling this method modifies them for the
        existing subscription. The method also allows setting the subscription expiration time.
        If other than `events` and `expiresIn` parameters are passed in the request they will be ignored.
        If the request body is empty then the specified subscription will be just renewed without any
        event filter modifications and with default expiration time.
      operationId: "rcwN11sUpdateSubscription"
      parameters:
      - $ref: "#/components/parameters/SubscriptionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateSubscriptionRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Medium"
    delete:
      tags:
      - "Webinar Subscriptions"
      summary: "Cancel Webinar Subscription"
      description: "Cancels the existing webinar subscription."
      operationId: "rcwN11sDeleteSubscription"
      parameters:
      - $ref: "#/components/parameters/SubscriptionId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Medium"
  /webinar/notifications/v1/subscriptions/{subscriptionId}/renew:
    post:
      tags:
      - "Webinar Subscriptions"
      summary: "Renew Webinar Subscription"
      description: "Renews the existing webinar subscription."
      operationId: "rcwN11sRenewSubscription"
      parameters:
      - $ref: "#/components/parameters/SubscriptionId"
      responses:
        "200":
          description: "Subscription renewed successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Light"
  /webinar/history/v1/webinars/{webinarId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    get:
      tags:
      - "Historical Webinars"
      summary: "Get Historical Webinar"
      description: "Returns a historical webinar information by ID (host interface)"
      operationId: "rcwHistoryGetWebinar"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebinarResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    get:
      tags:
      - "Historical Webinars"
      summary: "Get Historical Webinar Session"
      description: "Returns a historical webinar Session by ID. Access allowed to participants with original role as Host or CoHost."
      operationId: "rcwHistoryGetSession"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionResource"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}/participants:
    get:
      tags:
      - "Historical Webinars"
      summary: "List Session Participants"
      description: |
        Returns the list of participants of a given Webinar Session (host interface).
      operationId: "rcwHistoryListParticipants"
      parameters:
      - $ref: "#/components/parameters/RcwWebinarId"
      - $ref: "#/components/parameters/RcwSessionId"
      - $ref: "#/components/parameters/Role"
      - $ref: "#/components/parameters/OriginalRole"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ParticipantListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}/participants/self:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    get:
      tags:
      - "Historical Webinars"
      summary: "Get Participant Information"
      description: |
        Returns the participant information specific to a webinar session. Accessible by any authenticated participant.
        For a non-authenticated participant, API returns error.
      operationId: "rcwHistoryGetParticipantInfo"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ParticipantReducedModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}/invitees:
    get:
      tags:
      - "Historical Webinars"
      summary: "List Session Invitees"
      description: |
        Returns the list of Invitees (co-hosts and panelists) of a given Webinar Session (host interface).
        An implicit record created for a Webinar 'Host' is always returned.
      operationId: "rcwHistoryListInvitees"
      parameters:
      - $ref: "#/components/parameters/RcwWebinarId"
      - $ref: "#/components/parameters/RcwSessionId"
      - $ref: "#/components/parameters/Role"
      - $ref: "#/components/parameters/OriginalRole"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InviteeListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}/invitees/{inviteeId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    - $ref: "#/components/parameters/RcwInviteeId"
    get:
      tags:
      - "Historical Webinars"
      summary: "Get Session Invitee"
      description: "Returns a historical session invitee information by ID (host interface)."
      operationId: "rcwHistoryGetInvitee"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InviteeModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/company/recordings:
    get:
      tags:
      - "Historical Recordings"
      summary: "List Webinar Recordings (Admin)"
      description: |
        Returns the list of webinar recordings (Administrator's interface).
        The user must have "WebinarSettings" permission granted otherwise the API returns HTTP 403.
      operationId: "rcwHistoryAdminListRecordings"
      parameters:
      - name: "nameFragment"
        in: "query"
        description: "Filter to return only webinar recordings containing particular substring within their names"
        required: false
        explode: true
        schema:
          type: "string"
        example: "All-hands"
      - $ref: "#/components/parameters/CreationTimeFrom"
      - $ref: "#/components/parameters/CreationTimeTo"
      - $ref: "#/components/parameters/RecordingStatus"
      - $ref: "#/components/parameters/HostUserId"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecordingAdminListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/company/recordings/{recordingId}:
    get:
      tags:
      - "Historical Recordings"
      summary: "Get Webinar Recording (Admin)"
      description: |
        Returns the webinar recording by ID (Administrator's interface).

        The user must have "WebinarSettings" permission granted otherwise the API returns HTTP 403.
      operationId: "rcwHistoryAdminGetRecording"
      parameters:
      - $ref: "#/components/parameters/RecordingId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecordingAdminExtendedItemModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/company/sessions:
    get:
      tags:
      - "Historical Webinars"
      summary: "List Historical Webinar Sessions across Multiple Webinars / Hosts"
      description: |
        Returns the list of historical Webinar Sessions hosted by particular user(s) or all company users
        sorted by 'endTime' in the descending order. Depending on a session status 'endTime' can
        represent actual end time or scheduled end time.
        The user must have "WebinarSettings" permission granted otherwise the API returns HTTP 403.
      operationId: "rcwHistoryListAllCompanySessions"
      parameters:
      - $ref: "#/components/parameters/HostUserId"
      - $ref: "#/components/parameters/SessionStatus"
      - $ref: "#/components/parameters/EndTimeFrom"
      - $ref: "#/components/parameters/EndTimeTo"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionGlobalListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/recordings:
    get:
      tags:
      - "Historical Recordings"
      summary: "List Webinar Recordings"
      description: |
        Returns the list of webinar recordings for a given webinar host user
      operationId: "rcwHistoryListRecordings"
      parameters:
      - $ref: "#/components/parameters/CreationTimeFrom"
      - $ref: "#/components/parameters/CreationTimeTo"
      - $ref: "#/components/parameters/RecordingStatus"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecordingListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/recordings/{recordingId}:
    get:
      tags:
      - "Historical Recordings"
      summary: "Get Webinar Recording"
      description: |
        Returns the webinar recording by ID (Webinar host's interface).
        This API also returns sharing link if sharing is enabled.
      operationId: "rcwHistoryGetRecording"
      parameters:
      - $ref: "#/components/parameters/RecordingId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecordingItemExtendedModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/recordings/{recordingId}/download:
    get:
      tags:
      - "Historical Recordings"
      summary: "Get Webinar Recording Download Resource"
      description: |
        Returns the webinar recording download link (both Webinar host's and admin interface).

        If called by a webinar host, the API returns error (403) if recording downloading is prohibited by company settings.
        The admin user who has "WebinarSettings" permission should be able to download recording regardless of current company settings.
      operationId: "rcwHistoryGetRecordingDownload"
      parameters:
      - $ref: "#/components/parameters/RecordingMediaType"
      - $ref: "#/components/parameters/RecordingId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecordingDownloadModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/history/v1/sessions:
    get:
      tags:
      - "Historical Webinars"
      summary: "List Historical Webinar Sessions across Multiple Webinars"
      description: |
        Returns the list of historical Webinar Sessions hosted by a current authorized user
        sorted by 'endTime' in the descending order. Depending on a session status 'endTime' can
        represent actual end time or scheduled end time.
      operationId: "rcwHistoryListAllSessions"
      parameters:
      - name: "nameFragment"
        in: "query"
        description: "Filter to return only webinar sessions containing particular substring within their names"
        required: false
        explode: true
        schema:
          type: "string"
        example: "All-hands"
      - $ref: "#/components/parameters/SessionStatus"
      - $ref: "#/components/parameters/EndTimeFrom"
      - $ref: "#/components/parameters/EndTimeTo"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionGlobalListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/registration/v1/sessions/{sessionId}:
    get:
      tags:
      - "Registration Management"
      summary: "Get Registration Session Info"
      description: |
        Returns a registration Session information by ID.

        A caller must be an authorized user: either a host of the webinar or an IT Admin:
        a user from host's account with "WebinarSettings" permission.
      operationId: "rcwRegGetSession"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegSessionModel"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
    patch:
      tags:
      - "Registration Management"
      summary: "Update Registration Session"
      description: |
        Updates a Session by ID.

        This is a PARTIAL update (PATCH), client may call it providing only attributes which are to be changed.

        A caller must be an authorized user: either a host of the webinar or an IT Admin:
        a user from host's account with "WebinarSettings" permission.

        If a session record with given ID doesn't exist on Registration Service side the API should return HTTP 404.
      operationId: "rcwRegUpdateSession"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegSessionModel"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegSessionModel"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/registration/v1/sessions/{sessionId}/registrants:
    get:
      tags:
      - "Registrants"
      summary: "List Session Registrants"
      description: |
        Returns the list of Registrants ordered by "id" ascending.

        A caller must be an authorized user: either a host of the webinar or an IT Admin:
        a user from host's account with "WebinarSettings" permission.
      operationId: "rcwRegListRegistrants"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      - $ref: "#/components/parameters/IncludeQuestionnaire"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegistrantListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
    post:
      tags:
      - "Registrants"
      summary: "Create Registrant"
      description: |
        Creates a new Registrant for a given session.

        Registration MUST be open for the session for this call to succeed (otherwise it should return HTTP 403).

        A caller must be an authorized user: either a host of the webinar or an IT Admin:
        a user from host's account with "WebinarSettings" permission.
      operationId: "rcwRegCreateRegistrant"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegistrantBaseModelWithQuestionnaire"
      response

# --- truncated at 32 KB (1502 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ringcentral/refs/heads/main/openapi/ringcentral-platform-openapi.yml