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"
      responses:
        "201":
          description: "Successful response, new Registrant is created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegistrantModelResponsePostWithQuestionnaire"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/registration/v1/sessions/{sessionId}/registrants/{registrantId}:
    get:
      tags:
      - "Registrants"
      summary: "Get Registrant"
      description: |
        Returns a Registrant 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: "rcwRegGetRegistrant"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      - $ref: "#/components/parameters/RegistrantId"
      - $ref: "#/components/parameters/IncludeQuestionnaire"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegistrantModelWithQuestionnaire"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
    delete:
      tags:
      - "Registrants"
      summary: "Delete Registrant"
      description: |
        Deletes a Registrant by ID.

        Session must not be in finished state (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: "rcwRegDeleteRegistrant"
      parameters:
      - $ref: "#/components/parameters/RcwSessionId"
      - $ref: "#/components/parameters/RegistrantId"
      responses:
        "204":
          description: "The Registrant was successfully deleted"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/configuration/v1/webinars:
    post:
      tags:
      - "Webinars and Sessions"
      summary: "Create Webinar"
      description: |
        Creates a new webinar.

        If "host" parameter is NOT passed then the current authorized user will become a Host.
        If "host" parameter is passed then the caller must be a company administrator and have "WebinarSettings" permission.
        "host.linkedUser.accountId" must be the same as authorized user's account ID.

        The webinar settings which are not mandated at account level or are unlocked can be
        specified. All other settings are defaulted according to account policy.
      operationId: "rcwConfigCreateWebinar"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WebinarCreationRequest"
      responses:
        "201":
          description: "Successful response, new Webinar is created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsWebinarResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
    get:
      tags:
      - "Webinars and Sessions"
      summary: "List User's Webinars"
      description: |
        Returns the list of Webinars hosted by a current authorized user sorted by 'scheduledStartTime' or 'creationTime' in the ascending order.
      operationId: "rcwConfigListWebinars"
      parameters:
      - $ref: "#/components/parameters/WcsCreationTimeFrom"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebinarListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/configuration/v1/webinars/{webinarId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    get:
      tags:
      - "Webinars and Sessions"
      summary: "Get Webinar"
      description: |
        Returns a Webinar information by ID.
        Some webinar settings are returned basing on webinar-level overrides, other - from default settings defined at account level.
      operationId: "rcwConfigGetWebinar"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsWebinarResource"
        "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"
    patch:
      tags:
      - "Webinars and Sessions"
      summary: "Update Webinar"
      description: |
        Updates a Webinar. The payload may contain just changed fields of a Webinar resource (it is a partial update):
        - host cannot be changed, and host user information cannot be updated;
        - only the settings which are not mandated at account level or are unlocked can be
        changed;
        - in order to reset a webinar password it should be passed as an empty string;
        - "registrationStatus" cannot be changed.
      operationId: "rcwConfigUpdateWebinar"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WebinarBaseModel"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsWebinarResource"
        "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"
    delete:
      tags:
      - "Webinars and Sessions"
      summary: "Delete Webinar"
      description: |
        Deletes a Webinar by ID. All child objects (Sessions, Invitees) will be also deleted.
        It is disallowed to delete a Webinar which has at least one Session in 'Active' or 'Finished' state.
      operationId: "rcwConfigDeleteWebinar"
      responses:
        "204":
          description: "The Webinar was successfully deleted"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/configuration/v1/webinars/{webinarId}/sessions:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    post:
      tags:
      - "Webinars and Sessions"
      summary: "Create Webinar Session"
      description: "Creates a new Session for a given Webinar"
      operationId: "rcwConfigCreateSession"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WcsSessionWithLocaleCodeModel"
      responses:
        "201":
          description: "Successful response, new Session is created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsSessionResource"
        "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/configuration/v1/webinars/{webinarId}/sessions/{sessionId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    patch:
      tags:
      - "Webinars and Sessions"
      summary: "Update Webinar Session"
      description: |
        Updates a Webinar Session. The payload may contain certain attributes from the Session resource
        (it is a partial update). Changing the 'status' field usually invokes certain workflow actions.
        Updating a Session in 'Active' or 'Finished' status is prohibited.
        Some status transitions (for example, to 'Active" or 'Finished') may be prohibited.
      operationId: "rcwConfigUpdateSession"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WcsSessionWithLocaleCodeModel"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsSessionResource"
        "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"
    get:
      tags:
      - "Webinars and Sessions"
      summary: "Get Webinar Session"
      description: "Returns a Webinar Session by ID."
      operationId: "rcwConfigGetSession"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsSessionResource"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
    delete:
      tags:
      - "Webinars and Sessions"
      summary: "Delete Webinar Session"
      description: |
        Deletes a Webinar Session. All child objects (Invitees) will be also deleted.
        It is disallowed to delete a Session which is in 'Active' or 'Finished' state
      operationId: "rcwConfigDeleteSession"
      responses:
        "204":
          description: "The Session was successfully deleted"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/configuration/v1/webinars/{webinarId}/sessions/{sessionId}/invitees:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    patch:
      tags:
      - "Invitees"
      summary: "Bulk Add/Delete Session Invitees"
      description: |
        Adds, updates and deletes Webinar Session invitees in bulk (co-hosts and panelists in phase 1
        and also invited attendees in subsequent phases).
        The payload may contain multiple added, updated or deleted invitees.
        For each added record 'role' and either 'firstName'/'lastName'/'email' (for non-authenticated users)
        or 'linkedUser.*' (for authenticated users) must be specified, but not both.
        For updated invitees 'id'  and 'role' must be specified, 'linkedUser' change is not supported.
        For deleted invitees only there ids should be specified.
        The response contains added/updated records (full) and deleted records (ids only).

        Deleting an invitee for a Session in 'Active' or 'Finished' status is prohibited.
      operationId: "rcwConfigUpdateInvitees"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkUpdateInviteesRequest"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkUpdateInviteesResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
    get:
      tags:
      - "Invitees"
      summary: "List Session Invitees"
      description: |
        Returns the list of Invitees (co-hosts and panelists in phase 1
        and also invited attendees in subsequent phases) of a given Webinar Session.
        An implicit record created for a Webinar 'Host' is always returned.
      operationId: "rcwConfigListInvitees"
      parameters:
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsInviteeListResource"
        "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/configuration/v1/webinars/{webinarId}/sessions/{sessionId}/invitees/{inviteeId}:
    parameters:
    - $ref: "#/components/parameters/RcwWebinarId"
    - $ref: "#/components/parameters/RcwSessionId"
    - $ref: "#/components/parameters/RcwInviteeId"
    get:
      tags:
      - "Invitees"
      summary: "Get Session Invitee"
      description: "Returns a Session Invitee information by ID"
      operationId: "rcwConfigGetInvitee"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InviteeResource"
        "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"
    put:
      tags:
      - "Invitees"
      summary: "Update Session Invitee"
      description: |
        Updates a Session Invitee. 'role' is required (it can be changed from 'Panelist' to 'CoHost' or vise versa).
        It is disallowed to update 'linkedUser': it should be done by deleting then adding an invitee.
        For non-authenticated users 'firstName'/'lastName'/'email' can be specified, but not both.
        Implicit record created for a Webinar 'Host' cannot be modified.
        Also it is disallowed to change any other role to 'Host'.
      operationId: "rcwConfigUpdateInvitee"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateInviteeRequest"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InviteeResource"
        "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"
    delete:
      tags:
      - "Invitees"
      summary: "Delete Session Invitee"
      description: |
        Deletes a Session Invitee. Implicit record created for a Webinar 'Host' cannot be deleted.
        Deleting an invitee for a Session in 'Active' or 'Finished' status is prohibited (HTTP 403).
      operationId: "rcwConfigDeleteInvitee"
      responses:
        "204":
          description: "The Invitee was successfully deleted"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "EditWebinars"
  /webinar/configuration/v1/company/sessions:
    get:
      tags:
      - "Webinars and Sessions"
      summary: "List Sessions across Multiple Webinars/Hosts"
      description: |
        Returns the list of Webinar Sessions hosted by all company users or particular user(s) sorted by
        'scheduledStartTime' or 'creationTime' (if 'scheduledStartTime' is not set) in the ascending ordered.
        The user must have "WebinarSettings" permission granted otherwise the API returns HTTP 403.
      operationId: "rcwConfigListAllCompanySessions"
      parameters:
      - name: "status"
        in: "query"
        description: "Filter to return only webinar sessions in certain status. Multiple values are supported."
        required: false
        explode: true
        schema:
          $ref: "#/components/schemas/WcsSessionStatusModel"
        example: "Scheduled"
      - $ref: "#/components/parameters/WcsEndTimeFrom"
      - $ref: "#/components/parameters/HostUserId"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsSessionGlobalListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /webinar/configuration/v1/sessions:
    get:
      tags:
      - "Webinars and Sessions"
      summary: "List Sessions across Multiple Webinars"
      description: |
        Returns the list of Webinar Sessions hosted by a current authorized user sorted by
        'scheduledStartTime' or 'creationTime' (if 'scheduledStartTime' is not set) in the ascending order
      operationId: "rcwConfigListAllSessions"
      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"
      - name: "status"
        in: "query"
        description: "Filter to return only webinar sessions in certain status. Multiple values are supported."
        required: false
        explode: true
        schema:
          $ref: "#/components/schemas/WcsSessionStatusModel"
        example: "Scheduled"
      - $ref: "#/components/parameters/WcsEndTimeFrom"
      - $ref: "#/components/parameters/PerPage"
      - $ref: "#/components/parameters/PageToken"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WcsSessionGlobalListResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadWebinars"
  /restapi/v1.0/account/{accountId}/recording/{recordingId}/content:
    get:
      tags:
      - "Call Recordings"
      summary: "Get Call Recording Content"
      description: |
        Returns media content of a call recording (`audio/mpeg` or `audio/wav`)

        **This API must be called via media API entry point, e.g. https://media.ringcentral.com**
      operationId: "readCallRecordingContent"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallRecordingId"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "Successful response"
          content:
            audio/mpeg:
              schema:
                type: "string"
                format: "binary"
            audio/wav:
              schema:
                type: "string"
                format: "binary"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallRecording"
  /restapi/v1.0/account/{accountId}/greeting/{greetingId}/content:
    get:
      tags:
      - "Greetings"
      summary: "Get Account Greeting Media Content"
      description: |
        Returns account-level greeting media contents.

        **This API must be called via media API entry point, e.g. https://media.ringcentral.com**
      operationId: "readAccountGreetingContent"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/GreetingId"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "Successful response"
          content:
            audio/*:
              schema:
                type: "string"
                format: "binary"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/greeting/{greetingId}/content:
    get:
      tags:
      - "Greetings"
      summary: "Get Extension Greeting Media Content"
      description: |
        Returns extension-level greeting media contents.

        **This API must be called via media API entry point, e.g. https://media.ringcentral.com**
      operationId: "readGreetingContent"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/GreetingId"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "Successful response"
          content:
            audio/*:
              schema:
                type: "string"
                format: "binary"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/profile-image/{scaleSize}:
    get:
      tags:
      - "User Settings"
      summary: "Get Scaled Profile Image"
      description: |
        Returns the scaled profile image of an extension.

        **This API must be called via media API entry point, e.g. https://media.ringcentral.com**
      operationId: "readScaledProfileImage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ProfileImageScale"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "Successful response"
          content:
            image/*:
              schema:
                type: "string"
                format: "binary"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}/content/{attachmentId}:
    get:
      tags:
      - "Message Store"
      summary: "Get Message Attachment Content"
      description: |
        Returns media content of a message attachment.
        The content is typically an audio file (`audio/mpeg` or `audio/wav`) for voicemails,
        TIFF or PDF for faxes and image/audio/video for MMS.

        **This API must be called via media API entry point, e.g. https://media.ringcentral.com**
      operationId: "readMessageContent"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "messageId"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "attachmentId"
        in: "path"
        required: true
        schema:
          type: "string"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "Successful response"
          content:
            audio/*:
              schema:
                type: "string"
                format: "binary"
            image/*:
              schema:
                type: "string"
                format: "binary"
            video/*:
              schema:
                type: "string"
                format: "binary"
            application/pdf:
              schema:
                type: "string"
                format: "binary"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadMessages"
  /restapi/v1.0/account/{accountId}/ivr-prompts/{promptId}/content:
    get:
      tags:
      - "IVR"
      summary: "Get IVR Prompt Content"
      description: "Returns media content of an IVR prompt by ID."
      operationId: "readIVRPromptContent"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrPromptId"
      - $ref: "#/components/parameters/ContentDisposition"
      - $ref: "#/components/parameters/ContentDispositionFilename"
      responses:
        "200":
          description: "IVR Prompt Media Data"
          content:
            audio/*:
              schema:
                type: "string"
                format: "binary"
      x-media-api: true
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
  /rcvideo/v2/account/{accountId}/extension/{extensionId}/bridges:
    post:
      tags:
      - "Bridge Management"
      summary: "Create Bridge"
      description: |
        Creates a new bridge for the user specified by **accountId** and **extensionId** identifiers. The request body
        should contain JSON object which describes properties of the new bridge.
        The bridge can be created by a user himself, his delegate or any user who has the **Super Admin** privilege.
      operationId: "createBridge"
      parameters:
      - name: "accountId"
        in: "path"
        description: "Account identifier"
        required: true
        schema:
          type: "string"
      - name: "extensionId"
        in: "path"
        description: "Extension identifier"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON object that describes properties of the new bridge"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBridgeRequest"
        required: false
      responses:
        "201":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "406":
          description: "Not acceptable"
        "409":
          description: "Conflicting settings"
        "500":
          description: "Internal server error"
      x-throttling-group: "Heavy"
      x-websocket: true
      x-app-permission: "Video"
  /rcvideo/v2/account/{accountId}/extension/{extensionId}/bridges/default:
    get:
      tags:
      - "Bridge Management"
      summary: "Get User's Default Bridge"
      description: |
        Returns a default bridge (PMI) for the user specified by **accountId**
        and **extensionId** identifiers.
      operationId: "getDefaultBridge"
      parameters:
      - name: "accountId"
        in: "path"
        description: "Account identifier"
        required: true
        schema:
          type: "string"
      - name: "extensionId"
        in: "path"
        description: "Extension identifier"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "404":
          description: "Not found"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
  /rcvideo/v2/bridges/pin/pstn/{pin}:
    get:
      tags:
      - "Bridge Management"
      summary: "Search Bridge by PSTN PIN"
      description: "Finds a bridge by Host or Participant PSTN PIN."
      operationId: "getBridgeByPstnPin"
      parameters:
      - name: "pin"
        in: "path"
        description: "Host or Participant PSTN PIN"
        required: true
        schema:
          type: "string"
      - name: "phoneNumber"
        in: "query"
        description: |
          Phone number to find a phone group for PSTN PIN. If it is not specified, then the default phone group will be used.
        schema:
          type: "string"
      - name: "pw"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Bridge hash password"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "404":
          description: "Not found"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
  /rcvideo/v2/bridges/pin/web/{pin}:
    get:
      tags:
      - "Bridge Management"
      summary: "Search Bridge by Web PIN"
      description: |
        Finds a bridge by short identifier (Web PIN). Also it can be used to find a default bridge by the alias
        (personal meeting name).
      operationId: "getBridgeByWebPin"
      parameters:
      - name: "pin"
        in: "path"
        description: "Bridge short identifier (Web PIN) or alias (personal meeting name)"
        required: true
        schema:
          type: "string"
      - name: "pw"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Bridge hash password"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "404":
          description: "Not found"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
  /rcvideo/v2/bridges/{bridgeId}:
    get:
      tags:
      - "Bridge Management"
      summary: "Get Bridge"
      description: "Returns a bridge by **bridgeId** identifier."
      operationId: "getBridge"
      parameters:
      - name: "bridgeId"
        in: "path"
        description: "Bridge identifier"
        required: true
        schema:
          type: "string"
      - name: "pw"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Bridge hash password"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "404":
          description: "Not found"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
    patch:
      tags:
      - "Bridge Management"
      summary: "Update Bridge"
      description: |
        Updates a bridge by **bridgeId** identifier. The request body should contain JSON object with updating properties.
        Update can only be done by bridge owner, his delegate or any user who has the **Super Admin** privilege.
      operationId: "updateBridge"
      parameters:
      - name: "bridgeId"
        in: "path"
        description: "Bridge identifier"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON object with updating properties. Only specified properties will be updated."
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateBridgeRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BridgeResponse"
        "403":
          description: "Access denied"
        "404":
          description: "Not found"
        "406":
          description: "Not acceptable"
        "409":
          description: "Conflicting settings"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
    delete:
      tags:
      - "Bridge Management"
      summary: "Delete Bridge"
      description: |
        Deletes a bridge by **bridgeId** identifier.
        Deletion can only be done by bridge owner, his delegate or any user who has the **Super Admin** privilege.
      operationId: "deleteBridge"
      parameters:
      - name: "bridgeId"
        in: "path"
        description: "Bridge identifier"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "OK"
        "403":
          description: "Access denied"
        "404":
          description: "Not found"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-websocket: true
      x-app-permission: "Video"
  /rcvideo/v1/account/{accountId}/recordings:
    get:
      tags:
      - "Meeting Recordings"
      summary: "List Account Recordings"
      description: |
        Returns all account recordings.
        This endpoint is used in Admin recording service, not regular web
      operationId: "getAccountRecordings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/RcvPageToken"
      - $ref: "#/components/parameters/RcvPerPage"
      responses:
        "200":
          description: "Ok"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CloudRecordings"
        "403":
          $ref: "#/components/responses/RcvAccessForbidden"
        "404":
          $ref: "#/components/responses/RcvNotFound"
        "500":
          $ref: "#/components/responses/RcvInternalError"
      x-throttling-group: "Light"
      x-app-permission: "Video"
  /rcvideo/v1/account/{accountId}/extension/{extensionId}/recordings:
    get:
      tags:
      - "Meeting Recordings"
      summary: "List User Recordings"
      description: |
        Returns all recordings available for specific extension.
        This endpoint is used in admin recording service, not regular web
      operationId: "getExtensionRecordings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/RcvPageToken"
      - $ref: "#/components/parameters/RcvPerPage"
      responses:
        "200":
          description: "Ok"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CloudRecordings"
        "403":
          $ref: "#/components/responses/RcvAccessForbidden"
        "404":
          $ref: "#/components/responses/RcvNotFound"
        "500":
          $ref: "#/components/responses/RcvInternalError"
      x-throttling-group: "Light"
      x-app-permission: "Video"
  /rcvideo/v1/accounts/{accountId}/extensions/{extensionId}/delegators:
    get:
      tags:
      - "Delegation Management"
      summary: "Get Delegators"
      description: "Returns the list of users who can delegate bridge/meeting creation to the given user."
      operationId: "rcvListDelegators"
      parameters:
      - name: "accountId"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "extensionId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DelegatorsListResult"
        "403":
          description: "The calling user must be the owner of the extension to get delegators"
        "500":
          description: "Internal server error"
      x-throttling-group: "Medium"
      x-app-permission: "Video"
  /rcvideo/v1/history/meetings:
    get:
      tags:
      - "Meetings History"
      summary: "List Video Meetings"
      description: "Returns the list of user meetings."
      operationId: "listVideoMeetings"
      parameters:
      - name: "text"
        in: "query"
        description: "Search text"
        schema:
          type: "string"
      - name: "pageToken"
        in: "query"
        description: "Token to get the next page"
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: "Number of records returned"
        schema:
          type: "integer"
          format: "int32"
      - name: "type"
        in: "query"
        description: |
          Specify what kind of meeting should be returned. Possible values: All, My, Deleted, Shared
          Request type meaning in meeting search:
          `None` (not passed) - take meetings only where requested acc/ext is participant OR host OR deputy OR watcher.
          `ALL`- access rights of meeting is equal to Alive AND requested acc/ext  is in watchers list OR host OR deputy
          `My`- access rights of meeting is equal to Alive AND requested acc/ext is host OR deputy
          `Shared` - access rights of meeting is equal to Alive AND requested acc/ext is in watcher list AND not HOST
          `Deleted` - access rights of meeting is equal to Delete and requested acc/ext is host OR deputy
        schema:
          type: "string"
          enum:
          - "All"
          - "My"
          - "Deleted"
          - "Shared"
      - name: "startTime"
        in: "query"
        description: "Unix timestamp in milliseconds (inclusive) indicates the start time of meetings which should be included in response"
        schema:
          type: "integer"
          format: "int64"
      - name: "endTime"
        in: "query"
        description: "Unix timestamp in milliseconds (inclusive) indicates the end time of meetings which should be included in response"
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Returns meetings list with pagination"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingPage"
        "400":
          $ref: "#/components/responses/RcvBadRequest"
        "500":
          $ref: "#/components/responses/RcvInternalError"
        "504":
          $ref: "#/components/responses/RcvTimeout"
      x-throttling-group: "Light"
      x-app-permission: "Video"
  /rcvideo/v1/history/meetings/{meetingId}:
    get:
      tags:
      - "Meetings History"
      summary: "Get Video Meeting"
      description: "Returns a user meeting by ID."
      operationId: "getVideoMeeting"
      parameters:
      - $ref: "#/components/parameters/RcvMeetingId"
      responses:
        "200":
          description: "Return meeting"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Meeting"
        "400":
          $ref: "#/components/responses/RcvBadRequest"
        "403":
          $ref: "#/components/responses/RcvAccessForbidden"
        "500":
          $ref: "#/components/responses/RcvInternalError"
        "504":
          $ref: "#/components/responses/RcvTimeout"
      x-throttling-group: "Light"
      x-app-permission: "Video"
  /restapi:
    get:
      tags:
      - "API Info"
      summary: "Get API Versions"
      description: "Returns current API version(s) and server info."
      operationId: "readAPIVersions"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiVersionsList"
      x-availability: "High"
      x-throttling-group: "NoThrottling"
  /restapi/oauth/token:
    post:
      tags:
      - "OAuth 2.0 / OpenID Connect"
      summary: "OAuth 2.0 Token Endpoint"
      description: |
        Returns access (and potentially refresh) tokens for making API requests.

        For confidential client application types
        this endpoint requires client authentication using one of the supported
        methods (`client_secret_basic`, `client_secret_jwt` or `private_key_jwt`)

        For non-confidential client application types
        the client identifier must be provided via `client_id` request attribute.
      operationId: "getToken"
      security:
      - {}
      - OauthBasicScheme: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: "#/components/schemas/GetTokenRequest"
      responses:
        "200":
          description: "Access/Refresh Tokens"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenInfo"
        "400":
          $ref: "#/components/responses/OauthInvalidRequest"
        "415":
          description: "Unsupported Media Type"
        "429":
          description: "Request rate exceeded"
      x-throttling-group: "Auth"
  /restapi/oauth/authorize:
    get:
      tags:
      - "OAuth 2.0 / OpenID Connect"
      summary: "OAuth 2.0 Authorization Endpoint"
      description: |
        Performs Authentication of the End-User by sending the User Agent to the Authorization Server's
        Authorization Endpoint for Authentication and Authorization,
        using request parameters defined by OAuth 2.0 [RFC-6749](https://datatracker.ietf.org/doc/html/rfc6749#section-3.1)
        and additional parameters and parameter values defined by
        [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).

        This is the version that uses HTTP `GET` method.
      operationId: "authorize"
      parameters:
      - $ref: "#/components/parameters/OauthClientId"
      - name: "response_type"
        in: "query"
        required: true
        description: |
          Determines authorization flow type. The only supported value is `code` which corresponds to OAuth 2.0 "Authorization Code Flow"
        schema:
          type: "string"
          enum:
          - "code"
      - name: "redirect_uri"
        in: "query"
        required: false
        description: |
          This is the URI where the Authorization Server redirects the User Agent to at the end of the authorization flow.
          The value of this parameter must exactly match one of the URIs registered for this client application.
          This parameter is required if there are more than one redirect URIs registered for the app.
        schema:
          type: "string"
          format: "uri"
      - name: "state"
        in: "query"
        required: false
        description: |
          An opaque value used by the client to maintain state between the request and callback.
          The authorization server includes this value when redirecting the User Agent back
          to the client. The parameter SHOULD be used for preventing cross-site request forgery attacks.
        schema:
          type: "string"
      - name: "scope"
        in: "query"
        required: false
        description: "The list of space separated application permissions (OAuth scopes)"
        schema:
          type: "string"
      - name: "display"
        in: "query"
        required: false
        description: |
          Specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User.
        schema:
          $ref: "#/components/schemas/DisplayModesEnum"
      - name: "prompt"
        in: "query"
        required: false
        description: |
          Space-delimited, case-sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for
          re-authentication and consent. The defined values are:

          - `login` - RingCentral native login form,
          - `sso` - Single Sign-On login form,
          - `consent` - form to show the requested scope and prompt user for consent.

          Either `login` or `sso` (or both) must be specified. The default
          value is `login sso`
        schema:
          type: "string"
          default: "login sso"
      - name: "ui_locales"
        in: "query"
        required: false
        description: |
          End-User's preferred languages and scripts for the user interface, represented as a space-separated list of
          [RFC-5646](https://datatracker.ietf.org/doc/html/rfc5646) language tag values, ordered by preference.

          If this parameter is provided, its value overrides 'Accept-Language' header value and 'localeId' parameter value (if any)
        schema:
          type: "string"
          example: "en-US"
      - name: "localeId"
        in: "query"
        deprecated: true
        description: "DEPRECATED: `ui_locales` parameter should be used instead"
        schema:
          type: "string"
          example: "en-US"
      - name: "code_challenge"
        in: "query"
        required: false
        description: |
          The code challenge value as defined by the PKCE specification -
          [RFC-7636 "Proof Key for Code Exchange by OAuth Public Clients"](https://datatracker.ietf.org/doc/html/rfc7636)
        schema:
          type: "string"
      - name: "code_challenge_method"
        in: "query"
        required: false
        description: |
          The code challenge method as defined by by the PKCE specification -
          [RFC-7636 "Proof Key for Code Exchange by OAuth Public Clients"](https://datatracker.ietf.org/doc/html/rfc7636)
        schema:
          $ref: "#/components/schemas/CodeChallengeMethodEnum"
      - name: "nonce"
        in: "query"
        required: false
        description: |
          String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token.
        schema:
          type: "string"
      - name: "ui_options"
        in: "query"
        required: false
        description: |
          Login form user interface options (space-separated). By default, the UI options that are registered for this client application will be used
        schema:
          type: "string"
      - name: "login_hint"
        in: "query"
        required: false
        description: "Hint to the Authorization Server about the login identifier the End-User might use to log in."
        schema:
          type: "string"
      - $ref: "#/components/parameters/OauthBrandId"
      responses:
        "302":
          description: "Successful response, HTTP redirect to login form"
          headers:
            Location:
              description: "Full URL of the redirect target locations"
              schema:
                type: "string"
                format: "uri"
        "400":
          $ref: "#/components/responses/OauthInvalidRequest"
      callbacks:
        requestProcessed:
          '{$request.query.redirect_uri}':
            get:
              parameters:
              - $ref: "#/components/parameters/OauthRedirectCode"
              - $ref: "#/components/parameters/OauthRedirectState"
              - $ref: "#/components/parameters/OauthRedirectError"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Auth"
    post:
      tags:
      - "OAuth 2.0 / OpenID Connect"
      summary: "OAuth 2.0 Authorization Endpoint (POST)"
      description: |
        Performs Authentication of the End-User by sending the User Agent to the Authorization Server's
        Authorization Endpoint for Authentication and Authorization,
        using request parameters defined by OAuth 2.0 [RFC-6749](https://datatracker.ietf.org/doc/html/rfc6749#section-3.1)
        and additional parameters and parameter values defined by
        [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).

        This is the version that uses HTTP `POST` method.
      operationId: "authorize2"
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: "#/components/schemas/AuthorizeRequest"
      responses:
        "302":
          description: "Successful response, HTTP redirect to login form"
          headers:
            Location:
              description: "Full URL of the redirect target locations"
              schema:
                type: "string"
                format: "uri"
        "400":
          $ref: "#/components/responses/OauthInvalidRequest"
      callbacks:
        requestProcessed:
          '{$request.body#/redirect_uri}':
            get:
              parameters:
              - $ref: "#/components/parameters/OauthRedirectCode"
              - $ref: "#/components/parameters/OauthRedirectState"
              - $ref: "#/components/parameters/OauthRedirectError"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Auth"
  /restapi/oauth/revoke:
    post:
      tags:
      - "OAuth 2.0 / OpenID Connect"
      summary: "OAuth 2.0 Token Revocation Endpoint"
      description: |
        Revokes all active access/refresh tokens and invalidates the OAuth session basing on token provided.
        The `token` parameter may be passed in query string or body and may represent access or refresh token.

        This endpoint is defined by [RFC-7009 "OAuth 2.0 Token Revocation"](https://datatracker.ietf.org/doc/html/rfc7009)

        For confidential client application types
        this endpoint requires client authentication using one of the supported
        methods (`client_secret_basic`, `client_secret_jwt` or `private_key_jwt`)
      operationId: "revokeToken"
      parameters:
      - name: "token"
        in: "query"
        description: "Access or refresh token to be revoked (along with the entire OAuth session)"
        required: false
        schema:
          type: "string"
      security:
      - {}
      - OauthBasicScheme: []
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: "#/components/schemas/RevokeTokenRequest"
        required: false
      responses:
        "200":
          description: "Successful response"
        "400":
          $ref: "#/components/responses/OauthInvalidRequest"
      x-throttling-group: "Auth"
  /restapi/v2/accounts/{accountId}:
    get:
      tags:
      - "Company"
      summary: "Get Account Info"
      description: "Returns basic information about particular RingCentral account"
      operationId: "getAccountInfoV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountInfo"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v2/accounts/{accountId}/device-inventory:
    post:
      summary: "Add Phone to Inventory"
      description: "Adds an existing phone (customer provided device - BYOD) as an unassigned device to the account inventory."
      tags:
      - "Devices"
      operationId: "addDeviceToInventory"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddDeviceToInventoryRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddDeviceToInventoryResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountDevices"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
    delete:
      summary: "Delete Device from Inventory"
      description: |
        Deletes an existing unassigned (without digital line or phone number) device or multiple devices
        from the account inventory. It is possible to delete up to 10 devices per request.
      tags:
      - "Devices"
      operationId: "deleteDeviceFromInventory"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteDeviceFromInventoryRequest"
        required: true
      responses:
        "200":
          description: "Successful operation"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteDeviceFromInventoryResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "AddRemoveDevices"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
  /restapi/v2/accounts/{accountId}/send-welcome-email:
    post:
      tags:
      - "Company"
      summary: "Send/Resend Welcome Email"
      description: "Sends/resends welcome email to the system user of confirmed account"
      operationId: "sendWelcomeEmailV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                email:
                  type: "string"
                  format: "email"
                  example: "user@email.com"
      responses:
        "200":
          description: "Successful response"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "Users"
  /restapi/v2/accounts/{accountId}/phone-numbers:
    get:
      tags:
      - "Phone Numbers"
      summary: "List Account Phone Numbers"
      description: |
        Returns the list of phone numbers assigned to RingCentral customer
        account. Both company-level and extension-level numbers are returned.
        Conferencing numbers, hot desk and ELIN numbers are not returned.
      operationId: "listAccountPhoneNumbersV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "type"
        in: "query"
        description: "Types of phone numbers to be returned"
        required: false
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/PhoneNumberType"
      - name: "usageType"
        in: "query"
        description: "Usage type(s) of phone numbers to be returned"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/PhoneNumberUsageType"
      - name: "status"
        in: "query"
        required: false
        description: "Status of the phone number(s) to be returned"
        schema:
          $ref: "#/components/schemas/PhoneNumberStatus"
      - name: "tollType"
        in: "query"
        required: false
        description: "Toll type of phone numbers to return"
        schema:
          $ref: "#/components/schemas/PhoneNumberTollType"
      - name: "extensionStatus"
        in: "query"
        description: "Statuses of extensions to return phone numbers for"
        required: false
        schema:
          $ref: "#/components/schemas/ExtensionStatus"
      - name: "byocNumber"
        in: "query"
        description: "The parameter reflects whether this number is BYOC or not"
        required: false
        schema:
          type: "boolean"
      - name: "phoneNumber"
        in: "query"
        description: |
          Phone number in e.164 format to be searched for.
          Parameter value can include wildcards (e.g. "+165012345**")
          or be an exact number "+16501234500" - single number is searched in that case.
          Make sure you escape the "+" in the URL as "%2B"
        required: false
        schema:
          type: "string"
          maxLength: 18
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountPhoneNumberList"
              examples:
                ListAccountPhoneNumbersResponse:
                  $ref: "#/components/examples/ListAccountPhoneNumbersResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyPhoneNumbers"
    delete:
      tags:
      - "Phone Numbers"
      summary: "Delete Numbers from Inventory"
      description: |
        This method can only delete numbers that meet one of the following requirements:
          - numbers that have `"usageType": "Inventory"`
          - `"Forwarded"` numbers
          - `"Forwarded Company"` numbers

        In other words, this method will not delete numbers which are in use on the account - extension direct numbers,
        main number, etc. It is possible to indicate phone numbers to be deleted using their IDs or exact string values
        in e.164 format. However, the same lookup method (by ID or by value) must be used for all numbers within the same API call.
      operationId: "deleteNumbersFromInventoryV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeletePhoneNumbersRequest"
            examples:
              DeletePhoneNumbersRequest:
                $ref: "#/components/examples/DeletePhoneNumbersRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeletePhoneNumbersResponse"
              examples:
                DeletePhoneNumbersResponse:
                  $ref: "#/components/examples/DeletePhoneNumbersResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyPhoneNumbers"
  /restapi/v2/accounts/{accountId}/phone-numbers/{phoneNumberId}:
    patch:
      tags:
      - "Phone Numbers"
      summary: "Assign Phone Number"
      description: |
        Assigns or reassigns a phone number as a company or extension number.

        Assign scenarios supported:
        - from Inventory to a company number;
        - from Inventory to an extension number.

        Reassign scenarios supported:
        - from an extension to another extension;
        - from an extension to a company number;
        - from a company number to an extension.
      operationId: "assignPhoneNumberV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/PhoneNumberId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssignPhoneNumberRequest"
            examples:
              AssignPhoneNumberRequest:
                $ref: "#/components/examples/AssignPhoneNumberRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountPhoneNumberInfo"
              examples:
                AssignPhoneNumberResponse:
                  $ref: "#/components/examples/AssignPhoneNumberResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyPhoneNumbers"
  /restapi/v2/accounts/{accountId}/phone-numbers/{phoneNumberId}/replace:
    post:
      tags:
      - "Phone Numbers"
      summary: "Replace Phone Number"
      description: |
        Replaces (swaps) phone numbers from Inventory with the main, company, direct or company fax numbers.
        This method is used to replace temporary numbers when the porting process is complete.
      operationId: "replacePhoneNumberV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/PhoneNumberId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ReplacePhoneNumberRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountPhoneNumberInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyPhoneNumbers"
  /restapi/v2/accounts/{accountId}/phone-numbers/bulk-add:
    post:
      tags:
      - "Phone Numbers"
      summary: "Add Numbers to Inventory"
      description: |
        Adds phone numbers to the account Inventory as unassigned. Currently, we support the following values: `Inventory`,
        `InventoryPartnerBusinessMobileNumber` and `PartnerBusinessMobileNumber`. Later we may support some other values like `ForwardedNumber`, etc.
      operationId: "addNumbersToInventoryV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "List of phone numbers"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddPhoneNumbersRequest"
            examples:
              AddPhoneNumbersRequest:
                $ref: "#/components/examples/AddPhoneNumbersRequest"
        required: true
      responses:
        "200":
          description: "Successful response (synchronous operation)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddPhoneNumbersResponse"
              examples:
                AddPhoneNumbersResponse:
                  $ref: "#/components/examples/AddPhoneNumbersResponse"
        "202":
          description: "Successful response (asynchronous operation)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddPhoneNumbersTask"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyPhoneNumbers"
  /restapi/v2/accounts/{accountId}/phone-numbers/bulk-add/{taskId}:
    get:
      tags:
      - "Phone Numbers"
      summary: "Get Add Numbers Task Results"
      description: |
        Returns the result of asynchronous operation which adds phone numbers to the account Inventory.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "taskId"
        in: "path"
        description: "Identifier of a task returned by asynchronous bulk add operation"
        required: true
        schema:
          type: "string"
      operationId: "getBulkAddTaskResultsV2"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                oneOf:
                - $ref: "#/components/schemas/AddPhoneNumbersResponse"
                - $ref: "#/components/schemas/AddPhoneNumbersTask"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyPhoneNumbers"
  /restapi/v2/accounts/{accountId}/devices/{deviceId}:
    delete:
      tags:
      - "Devices"
      summary: "Remove phone line"
      description: |
        Disassociates a phone line (DL & Device) from an extension:

         - if the value of `keepAssetsInInventory` is `true`,
        the given device is moved to unassigned devices and the number is moved to the number inventory;
         - if the value of `keepAssetsInInventory` is `false`, the given device and number is removed from the account;
         - if the parameter `keepAssetsInInventory` is not set (empty body), default value `true` is set.
      operationId: "removeLineJWSPublic"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "deviceId"
        in: "path"
        description: "Internal identifier of a source device"
        required: true
        schema:
          type: "string"
        example: "65462346462"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RemoveLineRequest"
      responses:
        "200":
          description: |
            Successful response (when `keepAssetsInInventory` is `true`)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RemoveLineResponse"
        "204":
          description: |
            Successful response (when `keepAssetsInInventory` is `false`)
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditAccountDevices"
  /restapi/v2/accounts/{accountId}/devices/bulk-add:
    post:
      tags:
      - "Devices"
      summary: "Add BYOD Devices"
      description: "Adds multiple BYOD (customer provided) devices to an account."
      operationId: "bulkAddDevicesV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkAddDevicesRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkAddDevicesResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "AddRemoveDevices"
  /restapi/v2/accounts/{accountId}/send-activation-email:
    post:
      tags:
      - "Company"
      summary: "Send/Resend Activation Email"
      description: "Sends/resends activation email to the system user of unconfirmed account."
      operationId: "sendActivationEmailV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Successful response"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "AccountAdministration"
  /restapi/v2/accounts/{accountId}/batch-provisioning/users:
    post:
      tags:
      - "User Settings"
      summary: "Create Multiple User Extensions"
      description: |
        Creates multiple user extensions with BYOD (customer provided) devices.
        If "extensionNumber" is not specified, the next available extension number will be assigned.
      operationId: "postBatchProvisionUsers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BatchProvisionUsersRequest"
        required: true
      responses:
        "200":
          description: "Successful response (partial success is possible)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BatchProvisionUsersResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
  /restapi/v2/accounts/{accountId}/extensions:
    delete:
      tags:
      - "User Settings"
      summary: "Delete User Extensions"
      description: |
        Deletes user extension(s) and either keeps or destroys the assets - numbers and devices.
        Multiple extensions can be deleted with a single API call.

        **Please note:** This API cannot be tested on Sandbox.
      operationId: "bulkDeleteUsersV2"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkDeleteUsersRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkDeleteUsersResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditUsers"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "Users"
  /restapi/v2/accounts/{accountId}/extensions/{extensionId}/devices/{deviceId}/replace:
    post:
      tags:
      - "Devices"
      summary: "Swap Devices"
      description: |
        Replaces the user device with another device, which is assigned to an extension
        or is stored in the inventory of the same account.
        Currently, the following device types can be swapped - `HardPhone` and `OtherPhone`.

        Please note:

         - This method allows replacing a device itself, while a phone number,
           a digital Line and an emergency address associated with this device remain unchanged
           and will still work together in a chain with the replacement device.
         - If a target device is from the inventory, then a source device will be moved
           to the inventory, and a target device will be assigned to the current extension.
         - If a target device is currently assigned to another extension,
           then the devices will be just swapped.
      operationId: "replaceDevicesJWSPublic"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "deviceId"
        in: "path"
        description: "Internal identifier of a source device that is currently assigned to the given extension"
        required: true
        schema:
          type: "string"
        example: "65462346462"
      responses:
        "204":
          description: "No content"
        "400":
          $ref: "#/components/responses/InvalidRequest"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SwapDeviceRequest"
        required: true
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditUserDevices"
  /restapi/v1.0/account/{accountId}:
    get:
      tags:
      - "Company"
      summary: "Get Account Info"
      description: |
        Returns basic information about a particular RingCentral customer account.
      operationId: "readAccountInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Account information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetAccountInfoResponse"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/business-hours:
    get:
      tags:
      - "Business Hours"
      summary: "Get Company Business Hours"
      description: "Returns the company business hours schedule. Business hours (and After hours - all the remaining time) schedules are commonly used for setting call handling rules - `business-hours-rule` and `after-hours-rule` correspondingly."
      operationId: "readCompanyBusinessHours"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyBusinessHours"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensionAnsweringRules"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyAnsweringRules"
    put:
      tags:
      - "Business Hours"
      summary: "Update Company Business Hours"
      description: "Updates the company business hours schedule."
      operationId: "updateCompanyBusinessHours"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyBusinessHoursUpdateRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyBusinessHours"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
  /restapi/v1.0/account/{accountId}/device/{deviceId}:
    get:
      tags:
      - "Devices"
      summary: "Get Device"
      description: "Returns account device(s) by their ID(s)."
      operationId: "readDevice"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/DeviceId"
      - name: "syncEmergencyAddress"
        in: "query"
        description: "Specifies if an emergency address should be synchronized or not"
        schema:
          type: "boolean"
          default: false
      responses:
        "200":
          description: "Account device(s) information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeviceResource"
      x-feature: "ReadAccountDevices"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyDevices"
    put:
      tags:
      - "Devices"
      summary: "Update Device"
      description: "Updates account device(s) by their ID(s)."
      operationId: "updateDevice"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/DeviceId"
      - name: "prestatement"
        in: "query"
        schema:
          type: "boolean"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountDeviceUpdate"
        required: true
      responses:
        "200":
          description: "Updated device(s) information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeviceResource"
      x-feature: "EditAccountDevices"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyDevices"
  /restapi/v1.0/account/{accountId}/device/{deviceId}/sip-info:
    get:
      tags:
      - "Devices"
      summary: "Get Device SIP Info"
      description: "Returns device SIP information."
      operationId: "readDeviceSipInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/DeviceId"
      responses:
        "200":
          description: "Device SIP information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SipInfoResource"
      x-feature: "ReadAccountDevices"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyDevices"
  /restapi/v1.0/account/{accountId}/device/{deviceId}/emergency:
    put:
      tags:
      - "Devices"
      summary: "Update Device Emergency Info"
      description: "Updates account device emergency information."
      operationId: "updateDeviceEmergency"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/DeviceId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountDeviceUpdate"
        required: true
      responses:
        "200":
          description: "Updated emergency information of a device"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeviceResource"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyDevices"
  /restapi/v1.0/account/{accountId}/custom-fields:
    get:
      tags:
      - "Custom Fields"
      summary: "Get Custom Field List"
      description: "Returns the list of created custom fields."
      operationId: "listCustomFields"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomFieldList"
      x-feature: "EditUsers"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserInfo"
    post:
      tags:
      - "Custom Fields"
      summary: "Create Custom Field"
      description: "Creates custom field attached to the object."
      operationId: "createCustomField"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CustomFieldCreateRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomFieldModel"
      x-feature: "EditUsers"
      x-throttling-group: "Medium"
      x-availability: "High"
      x-app-permission: "EditAccounts"
      x-user-permission: "Users"
  /restapi/v1.0/account/{accountId}/custom-fields/{fieldId}:
    put:
      tags:
      - "Custom Fields"
      summary: "Update Custom Field"
      description: "Updates custom field by ID specified in path."
      operationId: "updateCustomField"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/FieldId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CustomFieldUpdateRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomFieldModel"
      x-feature: "EditUsers"
      x-throttling-group: "Medium"
      x-availability: "High"
      x-app-permission: "EditAccounts"
      x-user-permission: "Users"
    delete:
      tags:
      - "Custom Fields"
      summary: "Delete Custom Field"
      description: "Deletes custom field(s) by ID(s) with the corresponding values."
      operationId: "deleteCustomField"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/FieldId"
      responses:
        "204":
          description: "Successful response"
      x-feature: "EditUsers"
      x-throttling-group: "Medium"
      x-availability: "High"
      x-app-permission: "EditAccounts"
      x-user-permission: "Users"
  /restapi/v1.0/account/{accountId}/call-recording:
    get:
      tags:
      - "Call Recording Settings"
      summary: "Get Call Recording Settings"
      description: "Returns call recording settings."
      operationId: "readCallRecordingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallRecordingSettingsResource"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
    put:
      tags:
      - "Call Recording Settings"
      summary: "Update Call Recording Settings"
      description: "Updates current call recording settings."
      operationId: "updateCallRecordingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallRecordingSettingsResource"
        required: false
      responses:
        "200":
          description: "OK: Updated Call Recording Settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallRecordingSettingsResource"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditCompanyInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyInfo"
  /restapi/v1.0/account/{accountId}/call-recording/custom-greetings:
    get:
      tags:
      - "Call Recording Settings"
      summary: "Get Call Recording Custom Greeting List"
      description: "Returns call recording custom greetings."
      operationId: "listCallRecordingCustomGreetings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "type"
        in: "query"
        schema:
          type: "string"
          enum:
          - "StartRecording"
          - "StopRecording"
          - "AutomaticRecording"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallRecordingCustomGreetings"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
    delete:
      tags:
      - "Call Recording Settings"
      summary: "Delete Call Recording Custom Greeting List"
      description: "Deletes call recording custom greetings."
      operationId: "deleteCallRecordingCustomGreetingList"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditCompanyInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyInfo"
  /restapi/v1.0/account/{accountId}/call-recording/custom-greetings/{greetingId}:
    delete:
      tags:
      - "Call Recording Settings"
      summary: "Delete Call Recording Custom Greeting"
      description: "Deletes call recording custom greeting(s)."
      operationId: "deleteCallRecordingCustomGreeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/GreetingId"
      responses:
        "200":
          description: "Success"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditCompanyInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyInfo"
  /restapi/v1.0/account/{accountId}/call-recording/bulk-assign:
    post:
      tags:
      - "Call Recording Settings"
      summary: "Update Call Recording Extension List"
      description: "Creates or updates the list of extensions to be recorded."
      operationId: "updateCallRecordingExtensionList"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkAccountCallRecordingsResource"
        required: true
      responses:
        "204":
          description: "Successful response"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadCompanyInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/call-recording/extensions:
    get:
      tags:
      - "Call Recording Settings"
      summary: "Get Call Recording Extension List"
      description: "Returns the list of extensions to be recorded."
      operationId: "listCallRecordingExtensions"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Extension List"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallRecordingExtensions"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/telephony/call-out:
    post:
      tags:
      - "Call Control"
      summary: "Make CallOut"
      description: "Creates a new outbound call out session. Currently this method is supported for Softphone/Hardphone only, since device IDs for WebRTC/Mobile apps cannot be obtained."
      operationId: "createCallOutCallSession"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MakeCallOutRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallSession"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Heavy"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/conference:
    post:
      tags:
      - "Call Control"
      summary: "Start Conference Call Session"
      description: "Initiates a conference call session."
      operationId: "createConferenceCallSession"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallSession"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Heavy"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}:
    get:
      tags:
      - "Call Control"
      summary: "Get Call Session Status"
      description: "Returns the status of a call session by ID."
      operationId: "readCallSessionStatus"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - name: "timestamp"
        in: "query"
        description: "The date and time of a call session latest change"
        schema:
          type: "string"
      - name: "timeout"
        in: "query"
        description: |
          The time frame of awaiting for a status change before sending
          the resulting one in response
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallSessionObject"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
      x-notifications:
      - $ref: "#/components/schemas/AccountTelephonySessionsEvent"
      - $ref: "#/components/schemas/ExtensionTelephonySessionsEvent"
    delete:
      tags:
      - "Call Control"
      summary: "Drop Call Session"
      description: "Drops a call session."
      operationId: "deleteCallSession"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      responses:
        "204":
          description: "No Content"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/bring-in:
    post:
      tags:
      - "Call Control"
      summary: "Bring-In Call Party"
      description: |
        Adds a new party to the call session by bringing in an established
        SIP call connection. The maximum number of parties to bring in is 10; only
        1 call party can be added per request. Currently, the method is supported for
        sessions of the `Conference` origin only.
      operationId: "createCallPartyWithBringIn"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddPartyRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}:
    get:
      tags:
      - "Call Control"
      summary: "Get Call Party Status"
      description: "Returns a call party status by ID."
      operationId: "readCallPartyStatus"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
    delete:
      tags:
      - "Call Control"
      summary: "Delete Call Party"
      description: "Deletes a party from a call session by ID. A party can be deleted only if supervised or parked. It is possible to delete only one conference participant per request."
      operationId: "deleteCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "204":
          description: "No Content"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
    patch:
      tags:
      - "Call Control"
      summary: "Update Call Party"
      description: "Modifies a call party by ID. There is a known limitation for Mute scenario - mute via REST API doesn't work with mute placed via RingCentral apps or HardPhone. It means that if you muted participant via Call Control API and RingCentral Desktop app you need to unmute both endpoints to bring the media back."
      operationId: "updateCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PartyUpdateRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/unhold:
    post:
      tags:
      - "Call Control"
      summary: "Un-hold Call Party"
      description: "Brings a party back into a call and stops to play Hold Music. There is a known limitation for Hold API - hold via REST API doesn't work with hold placed via RingCentral apps or HardPhone. It means that if you muted participant via Call Control API and RingCentral Desktop app, then you need to un-hold both endpoints to remove Hold Music and bring media back."
      operationId: "unholdCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/park:
    post:
      tags:
      - "Call Control"
      summary: "Call Park"
      description: "Parks a call to a virtual location from where it can further be retrieved by any user from any phone of the system. The call session and call party identifiers should be specified in path. Currently, the users can park only their own incoming calls. Up to 50 calls can be parked simultaneously. Park location starts with asterisk (*) and ranges 801-899."
      operationId: "callParkParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/flip:
    post:
      tags:
      - "Call Control"
      summary: "Call Flip on Party"
      description: "Performs call flip procedure by holding opposite party and calling to the specified target"
      operationId: "callFlipParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallPartyFlip"
        required: true
      responses:
        "200":
          description: "Success"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/reply:
    post:
      tags:
      - "Call Control"
      summary: "Reply with Text"
      description: "Replies with text/pattern without picking up a call."
      operationId: "replyParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallPartyReply"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReplyParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/bridge:
    post:
      tags:
      - "Call Control"
      summary: "Bridge Call Party"
      description: |
        Allows the user to connect multiple call session participants over a conference call bridge.
        The current active call session ID and party ID of the user within this session should be specified
        in path; the bridged call session ID and party ID of the user within that session should be specified
        in request body. Thus, the user connects participants of two sessions into the one conference call
        using his/her own party IDs from both sessions."
      operationId: "bridgeCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "Defines target call session and call party to be bridged"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BridgeTargetRequest"
        required: true
      responses:
        "200":
          description: "Bridged Call Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/ignore:
    post:
      tags:
      - "Call Control"
      summary: "Ignore Call in Queue"
      description: "Ignores a call to a call queue agent in `Setup` or `Proceeding` state."
      operationId: "ignoreCallInQueue"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IgnoreRequestBody"
        required: true
      responses:
        "204":
          description: "No Content"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/supervise:
    post:
      tags:
      - "Call Control"
      summary: "Supervise Call Party"
      description: |
        Allows to monitor a call party in 'Listen' mode. Input parameters
        are extension number of a monitored user and internal identifier of a supervisor's
        device. Call session and party identifiers should be specified in path. Please
        note that for this method dual channel audio flow is supported, which means
        that you need to make one more request for monitoring the second participant
        of a call. And as a result of each monitoring request the client receives
        SIP invite with the following header `p-rc-api-monitoring-ids` containing
        IDs of the monitored party and session. The flow is supported for calls with
        no more than 2 participants. Currently, this method is supported for Softphone/Hardphone devices
        only, since device IDs for WebRTC/Mobile apps cannot be obtained.
      operationId: "superviseCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PartySuperviseRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartySuperviseResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/reject:
    post:
      tags:
      - "Call Control"
      summary: "Reject Call Party"
      description: "Rejects an inbound call in a \"Setup\" or \"Proceeding\" state"
      operationId: "rejectParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "204":
          description: "No Content"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/recordings:
    post:
      tags:
      - "Call Control"
      summary: "Create Recording"
      description: "Starts a new call recording for the party"
      operationId: "startCallRecording"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      responses:
        "201":
          description: "Created"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/recordings/{recordingId}:
    patch:
      tags:
      - "Call Control"
      summary: "Pause/Resume Recording"
      description: "Pause/resume recording"
      operationId: "pauseResumeCallRecording"
      parameters:
      - name: "brandId"
        in: "query"
        description: "Identifies a brand of a logged-in user or a brand of a sign-up session"
        required: true
        schema:
          type: "string"
          default: "~"
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      - name: "recordingId"
        in: "path"
        description: "Internal identifier of a recording"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallRecordingUpdate"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallRecording"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/answer:
    post:
      tags:
      - "Call Control"
      summary: "Answer Call Party"
      description: "Answers a call on a certain device by passing the corresponding device ID in request body. Supported for call forwarding, call transfer, call flip and call queues."
      operationId: "answerCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "Distributes a non-answered call to the defined target. Only a single target is allowed"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AnswerTarget"
        required: true
      responses:
        "200":
          description: "Call Session Information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/transfer:
    post:
      tags:
      - "Call Control"
      summary: "Transfer Call Party"
      description: "Transfers an answered call to the specified call party. Applicable for a call session in \"Answered\" or \"Hold\" state."
      operationId: "transferCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "Specifies a call party to which the call will be transferred. Only a single call party is allowed."
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferTarget"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/hold:
    post:
      tags:
      - "Call Control"
      summary: "Hold Call Party"
      description: "Puts the party to stand-alone mode and starts to play Hold Music according to configuration & state to peers. There is a known limitation for Hold API - hold via REST API doesn't work with hold placed via RingCentral apps or HardPhone. It means that if you muted participant via Call Control API and RingCentral Desktop app, then you need to un-hold both endpoints to remove Hold Music and bring media back."
      operationId: "holdCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HoldCallPartyRequest"
        required: false
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/pickup:
    post:
      tags:
      - "Call Control"
      summary: "Pickup Call"
      description: "Picks up a call parked to the specified park location."
      operationId: "pickupCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "Distributes a non-answered call to the defined target. Only a single target is allowed"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PickupTarget"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallParty"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/parties/{partyId}/forward:
    post:
      tags:
      - "Call Control"
      summary: "Forward Call Party"
      description: "Forwards a non-answered incoming call to the specified call party. Applicable for a call session in \"Setup\" or \"Proceeding\" state."
      operationId: "forwardCallParty"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      - $ref: "#/components/parameters/TelephonySessionPartyId"
      requestBody:
        description: "Specifies a call party to which the call will be forwarded. Only a single call party is allowed."
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ForwardTarget"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardCallPartyResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/telephony/sessions/{telephonySessionId}/supervise:
    post:
      tags:
      - "Call Control"
      summary: "Supervise Call Session"
      description: "Allows monitoring a call session in 'Listen' mode. Input parameters should contain internal identifiers of a monitored user and a supervisor's device. Call session should be specified in path. Please note that this method supports single channel audio flow, which means that audio of both call participants is mixed and delivered to the supervisor in single audio channel. Currently this method is supported for Softphone/Hardphone only, since device IDs for WebRTC/Mobile apps cannot be obtained."
      operationId: "superviseCallSession"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TelephonySessionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SuperviseCallSessionRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SuperviseCallSessionResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-throttling-group: "Light"
      x-app-permission: "CallControl"
  /restapi/v1.0/account/{accountId}/service-info:
    get:
      tags:
      - "Company"
      summary: "Get Account Service Info"
      description: |
        Returns the information about service plan, available features
        and limitations for a particular RingCentral customer account.
      operationId: "readAccountServiceInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountServiceInfo"
      x-feature: "ReadServicePlan"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadServicePlanInfo"
  /restapi/v1.0/account/{accountId}/message-store-templates:
    post:
      tags:
      - "SMS Templates"
      summary: "Create Company Message Template"
      description: "Creates a new text message template on a company level. Maximum number of company templates is 50."
      operationId: "createCompanyMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTemplateRequest"
        required: true
      responses:
        "201":
          description: "Created company text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/InvalidRequest"
      x-feature: "EditCompanySmsTemplates"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
    get:
      tags:
      - "SMS Templates"
      summary: "List Company Message Templates"
      description: "Returns a list of company text message templates."
      operationId: "listCompanyMessageTemplates"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteIds"
        in: "query"
        description: |
          Site ID(s) to filter company message templates, associated with particular sites
          By default the value is all - templates with all sites will be returned
        required: false
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "List of company text message templates"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplatesListResponse"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "ReadCompanySmsTemplates"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/message-store-templates/{templateId}:
    put:
      tags:
      - "SMS Templates"
      summary: "Update Company Message Template"
      description: "Updates a company text message template."
      operationId: "updateCompanyMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TemplateId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTemplateRequest"
        required: true
      responses:
        "200":
          description: "Updated company text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "EditCompanySmsTemplates"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
    get:
      tags:
      - "SMS Templates"
      summary: "Get Company Message Template"
      description: "Returns a company text message template by ID."
      operationId: "readCompanyMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TemplateId"
      responses:
        "200":
          description: "Company text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "ReadCompanySmsTemplates"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
    delete:
      tags:
      - "SMS Templates"
      summary: "Delete Company Message Template"
      description: "Deletes a company text message template."
      operationId: "deleteCompanyMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/TemplateId"
      responses:
        "204":
          description: "No content"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "EditCompanySmsTemplates"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
  /restapi/v1.0/account/{accountId}/call-log:
    get:
      tags:
      - "Call Log"
      summary: "List Company Call Records"
      description: "Returns call log records filtered by parameters specified."
      operationId: "readCompanyCallLog"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallLogExtensionNumber"
      - $ref: "#/components/parameters/CallLogPhoneNumber"
      - $ref: "#/components/parameters/CallDirection"
      - $ref: "#/components/parameters/CallType"
      - $ref: "#/components/parameters/CallLogView"
      - $ref: "#/components/parameters/CallLogWithRecording"
      - $ref: "#/components/parameters/CallRecordingType"
      - $ref: "#/components/parameters/CallLogDateFrom"
      - $ref: "#/components/parameters/CallLogDateTo"
      - $ref: "#/components/parameters/CallLogSessionId"
      - $ref: "#/components/parameters/CallLogTelephonySessionId"
      - name: "page"
        in: "query"
        description: "Indicates the page number to retrieve. Only positive number values are accepted"
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates the page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          default: 100
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogResponse"
        "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-feature: "ReadAccountCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "FullCompanyCallLog"
  /restapi/v1.0/account/{accountId}/call-log/{callRecordId}:
    get:
      tags:
      - "Call Log"
      summary: "Get Company Call Record(s)"
      description: "Returns individual call log record(s) by ID. Batch syntax is supported."
      operationId: "readCompanyCallRecord"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallRecordId"
      - $ref: "#/components/parameters/CallLogView"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogRecord"
        "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-feature: "ReadAccountCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "FullCompanyCallLog"
  /restapi/v1.0/account/{accountId}/call-log-sync:
    get:
      tags:
      - "Call Log"
      summary: "Sync Company Call Log"
      description: "Synchronizes company call log records."
      operationId: "syncAccountCallLog"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallLogSyncType"
      - name: "syncToken"
        in: "query"
        description: "Value of syncToken property of last sync request response. Mandatory parameter for 'ISync' sync type"
        schema:
          type: "string"
      - name: "dateFrom"
        in: "query"
        description: "The start datetime for resulting records in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z. The default value is the current moment"
        schema:
          type: "string"
          format: "date-time"
      - name: "recordCount"
        in: "query"
        description: |
          For `FSync` mode this parameter is mandatory, it limits the number of records to be returned in response.

          For `ISync` mode this parameter specifies the number of records to extend the sync frame with to the past
          (the maximum number of records is 250)
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
      - $ref: "#/components/parameters/CallLogStatusGroup"
      - $ref: "#/components/parameters/CallLogView"
      - name: "showDeleted"
        in: "query"
        description: "Supported for `ISync` mode. Indicates that deleted call records should be returned"
        schema:
          type: "boolean"
          default: false
      - $ref: "#/components/parameters/CallLogWithRecording"
      - $ref: "#/components/parameters/CallRecordingType"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogSyncResponse"
        "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-feature: "ReadAccountCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
  /restapi/v1.0/account/{accountId}/active-calls:
    get:
      tags:
      - "Call Log"
      summary: "List Company Active Calls"
      description: "Returns records of all calls that are in progress, ordered by start time in descending order."
      operationId: "listCompanyActiveCalls"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallDirection"
      - $ref: "#/components/parameters/CallLogView"
      - $ref: "#/components/parameters/CallType"
      - $ref: "#/components/parameters/CallTransportType"
      - $ref: "#/components/parameters/ConferenceCallType"
      - name: "page"
        in: "query"
        description: "Indicates the page number to retrieve. Only positive number values are accepted"
        schema:
          type: "integer"
          format: "int32"
          default: 1
          minimum: 1
      - name: "perPage"
        in: "query"
        description: "Indicates the page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
          minimum: 1
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogResponse"
        "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-feature: "EditAccountCallLog"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
  /restapi/v1.0/account/{accountId}/extension-bulk-update:
    post:
      tags:
      - "Extensions"
      summary: "Update Multiple Extensions"
      description: |
        Updates multiple extensions at once. Maximum 500 extensions can be updated per request.
      operationId: "extensionBulkUpdate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionBulkUpdateRequest"
        required: true
      responses:
        "200":
          description: "Updated extensions"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionBulkUpdateTaskResource"
      x-feature: "EditExtensionInfo"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditExtensionInfo"
  /restapi/v1.0/account/{accountId}/extension-bulk-update/tasks/{taskId}:
    get:
      tags:
      - "Extensions"
      summary: "Get Extension Update Task Status"
      description: |
        Returns a status of a task to update multiple extensions.
      operationId: "getExtensionBulkUpdateTask"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "taskId"
        in: "path"
        description: |
          Internal identifier of a task
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Bulk update task status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionBulkUpdateTaskResource"
      x-feature: "EditExtensionInfo"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditExtensionInfo"
  /restapi/v1.0/account/{accountId}/templates:
    get:
      tags:
      - "Extensions"
      summary: "List User Templates"
      description: |
        Returns the list of user templates for the current account.
      operationId: "listUserTemplates"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "type"
        description: "Type of template"
        in: "query"
        schema:
          type: "string"
          enum:
          - "UserSettings"
          - "CallHandling"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed. Default value is '1'
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items). If not specified, the value is '100' by default"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "User templates information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserTemplates"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/templates/{templateId}:
    get:
      tags:
      - "Extensions"
      summary: "Get User Template"
      description: |
        Returns the user template by ID.
      operationId: "readUserTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "templateId"
        in: "path"
        required: true
        description: "Internal identifier of a template"
        schema:
          type: "string"
      responses:
        "200":
          description: "User template information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TemplateInfo"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/a2p-sms/statuses:
    get:
      tags:
      - "High Volume SMS"
      summary: "List A2P SMS Statuses"
      description: "Retrieves a set of message counts by message status and error codes filtered by dates, batchId and message direction."
      operationId: "aggregateA2PSMSStatuses"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/QueryBatchId"
      - $ref: "#/components/parameters/SmsDirection"
      - $ref: "#/components/parameters/SmsDateFrom"
      - $ref: "#/components/parameters/SmsDateTo"
      - name: "phoneNumber"
        in: "query"
        required: false
        style: "form"
        explode: true
        description: "List of phone numbers (specified in 'to' or 'from' fields of a message) to filter the results. Maximum number of phone numbers allowed to be specified as filters is 15"
        schema:
          type: "array"
          items:
            type: "string"
        example:
        - "15551234455"
        - "15551235577"
      responses:
        "200":
          description: "The statuses of the messages sent by the account filtered by criteria specified in the query"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStatusesResponse"
        "400":
          description: "Invalid request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "No resource found for the account"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Service Unavailable"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/messages:
    get:
      tags:
      - "High Volume SMS"
      summary: "List A2P SMS Messages"
      description: "Returns the list of outbound/inbound A2P messages sent from/to A2P phone numbers of the current account. The list can be filtered by message batch ID and/or phone number."
      operationId: "listA2PSMS"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/QueryBatchId"
      - $ref: "#/components/parameters/SmsDirection"
      - $ref: "#/components/parameters/SmsDateFrom"
      - $ref: "#/components/parameters/SmsDateTo"
      - name: "view"
        in: "query"
        required: false
        description: "Indicates if the response has to be detailed, includes text in the response if detailed"
        schema:
          type: "string"
          default: "Simple"
          enum:
          - "Simple"
          - "Detailed"
      - name: "phoneNumber"
        in: "query"
        required: false
        style: "form"
        explode: true
        description: "List of phone numbers (specified in 'to' or 'from' fields of a message) to filter the results. Maximum number of phone numbers allowed to be specified as filters is 15"
        schema:
          type: "array"
          items:
            type: "string"
        example:
        - "15551234455"
        - "15551235577"
      - name: "pageToken"
        in: "query"
        required: false
        description: "The page token of the page to be retrieved."
        schema:
          type: "string"
        example: "pgt1"
      - name: "perPage"
        in: "query"
        required: false
        description: "The number of messages to be returned per request"
        schema:
          type: "integer"
          format: "int32"
          default: 1000
        example: 1
      responses:
        "200":
          description: |
            The list of messages sent by the account and filtered by the criteria specified in the query parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageListResponse"
        "400":
          description: "Invalid Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "No resource found for the account."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Internal Server Error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/messages/{messageId}:
    get:
      tags:
      - "High Volume SMS"
      summary: "Get A2P SMS"
      description: "Returns the details of an A2P SMS message by ID."
      operationId: "readA2PSMS"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "messageId"
        in: "path"
        description: "Internal identifier of a message to be retrieved"
        required: true
        schema:
          type: "string"
        example: "1234"
      responses:
        "200":
          description: "The message is found and returned"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageDetailsResponse"
        "400":
          description: "Invalid request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "The message is not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Service is not available"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/opt-outs:
    get:
      tags:
      - "High Volume SMS"
      summary: "List Opted Out Numbers"
      description: |
        Returns the list of numbers opted out from the account. The list
        can be filtered by `to`/`from` phone number query parameters. Specifying `text/csv`
        in the `Accept` header lets download the data in the CSV format.
      operationId: "readA2PSMSOptOuts"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "from"
        in: "query"
        required: false
        description: |
          The sender's phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format for filtering messages.
          The asterisk value "*" means any number in `from` field
        schema:
          type: "string"
        example: "15551234455"
      - name: "to"
        in: "query"
        required: false
        description: |
          The receiver's phone number (`to` field) in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format for filtering messages
        example: "15551237755"
        schema:
          type: "string"
      - name: "status"
        in: "query"
        required: false
        description: "The status (opted out, opted in, or both) to be used as the filter"
        schema:
          type: "string"
          default: "optout"
          enum:
          - "optout"
          - "optin"
          - "all"
        example: "optout"
      - name: "pageToken"
        in: "query"
        required: false
        description: "The page token of the page to be retrieved"
        schema:
          type: "string"
        example: "pgt1"
      - name: "perPage"
        in: "query"
        required: false
        description: "The number of records to be returned for the page"
        schema:
          type: "integer"
          format: "int32"
          default: 1000
        example: 5
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OptOutListResponse"
            text/csv:
              schema:
                $ref: "#/components/schemas/OptOutListResponse"
        "400":
          description: "Invalid Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "No resource found for the account"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Service Unavailable"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/opt-outs/bulk-assign:
    post:
      tags:
      - "High Volume SMS"
      operationId: "addA2PSMSOptOuts"
      description: |
        Adds multiple opt-outs and/or opt-ins for the specified sender number and a set of recipient numbers.
      summary: "Add Opt-In/Out Numbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: |
          Consists of `from` field and `optOuts` and `optIns` lists.
          Both `optOuts` and `optIns` can be empty but not simultaneously - at least one of the lists must be entered.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OptOutBulkAssignRequest"
      responses:
        "200":
          description: "The results of adding opt-outs and opt-ins."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OptOutBulkAssignResponse"
        "400":
          description: "Invalid Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [from] value is invalid."
                CMN-104:
                  value:
                    errorCode: "CMN-104"
                    message: "Cannot parse request"
        "500":
          description: "Service Unavailable"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/batches:
    post:
      tags:
      - "High Volume SMS"
      summary: "Send A2P SMS"
      description: |
        Allows to send high volume of A2P (Application-to-Person) SMS messages
        (in message batches). Only phone number with the `A2PSmsSender` feature can
        be used as a sender.
      operationId: "createA2PSMS"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "SMS batch payload"
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageBatchCreateRequest"
      responses:
        "201":
          description: "Message batch created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageBatchResponse"
        "400":
          description: "Validation Failed, Invalid Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-104:
                  value:
                    errorCode: "CMN-104"
                    message: "Cannot parse request"
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "500":
          description: "Internal server error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-request-max-body-size: "50m"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
    get:
      tags:
      - "High Volume SMS"
      summary: "List A2P SMS Batches"
      description: |
        Returns the list of A2P batches sent from the current account.
        The list can be filtered by message batch ID and/or from phone number.
      operationId: "listA2PBatches"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SmsDateFrom"
      - $ref: "#/components/parameters/SmsDateTo"
      - name: "from"
        in: "query"
        required: false
        description: "Phone number in E.164 format from which the messages are going to be sent"
        schema:
          type: "string"
        example: "15551234455"
      - name: "status"
        in: "query"
        required: false
        style: "form"
        explode: true
        description: "A list of batch statuses to filter the results"
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "Queued"
            - "Processing"
            - "Sent"
            - "Completed"
        example:
        - "Queued"
        - "Processing"
      - name: "pageToken"
        in: "query"
        required: false
        description: "The page token of the page to be retrieved"
        schema:
          type: "string"
        example: "pgt1"
      - name: "perPage"
        in: "query"
        required: false
        description: "The number of records to be returned per page"
        schema:
          type: "integer"
          format: "int64"
        example: 1
      responses:
        "200":
          description: |
            The list of batches sent by the account and filtered by the criteria specified in the query parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BatchListResponse"
        "400":
          description: "Invalid Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "No resource found for the account."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Service Unavailable"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-request-max-body-size: "50m"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/a2p-sms/batches/{batchId}:
    get:
      tags:
      - "High Volume SMS"
      summary: "Get A2P SMS Batch"
      description: "Returns information on a message batch."
      operationId: "readA2PBatch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/BatchId"
      responses:
        "200":
          description: "Message batch information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageBatchResponse"
        "400":
          description: "Invalid request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              examples:
                CMN-101:
                  value:
                    errorCode: "CMN-101"
                    message: "Parameter [${parameterName}] value is invalid."
                CMN-110:
                  value:
                    errorCode: "CMN-110"
                    message: "Header ${parameterName} should be specified"
                CMN-407:
                  value:
                    errorCode: "CMN-407"
                    message: "Parameter in header is invalid"
        "401":
          description: "Unauthorized error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
        "404":
          description: "The batch is not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-102"
                message: "Resource for parameter [${parameterName}] is not found."
        "500":
          description: "Service is unavailable"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASGErrorResponse"
              example:
                errorCode: "CMN-203"
                message: "Internal Server Error"
      x-feature: "SMSSending"
      x-throttling-group: "Light"
      x-availability: "High"
      x-app-permission: "A2PSMS"
  /restapi/v1.0/account/{accountId}/answering-rule:
    get:
      tags:
      - "Call Handling Rules"
      summary: "List Company Call Handling Rules"
      description: "Returns a list of company call handling rules."
      operationId: "listCompanyAnsweringRules"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyAnsweringRuleList"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountAnsweringRules"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyAnsweringRules"
    post:
      tags:
      - "Call Handling Rules"
      summary: "Create Company Call Handling Rule"
      description: "Creates call handling rule on account level."
      operationId: "createCompanyAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyAnsweringRuleRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyAnsweringRuleInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyAnsweringRules"
  /restapi/v1.0/account/{accountId}/answering-rule/{ruleId}:
    get:
      tags:
      - "Call Handling Rules"
      summary: "Get Company Call Handling Rule"
      description: "Returns a company call handling rule by ID."
      operationId: "readCompanyAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyAnsweringRuleInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountAnsweringRules"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyAnsweringRules"
    put:
      tags:
      - "Call Handling Rules"
      summary: "Update Company Call Handling Rule"
      description: "Updates a company call handling rule."
      operationId: "updateCompanyAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyAnsweringRuleUpdate"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyAnsweringRuleInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyAnsweringRules"
    delete:
      tags:
      - "Call Handling Rules"
      summary: "Delete Company Call Handling Rule"
      description: "Deletes a company custom call handling rule by a particular ID."
      operationId: "deleteCompanyAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyAnsweringRules"
  /restapi/v1.0/account/{accountId}/ivr-prompts:
    get:
      tags:
      - "IVR"
      summary: "List IVR Prompts"
      description: "Returns the list of IVR prompts."
      operationId: "listIvrPrompts"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IvrPrompts"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountGreetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyGreetings"
    post:
      tags:
      - "IVR"
      summary: "Create IVR Prompts"
      description: "Creates an IVR prompt."
      operationId: "createIVRPrompt"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "attachment"
              properties:
                attachment:
                  type: "string"
                  description: "Audio file that will be used as a prompt. Attachment cannot be empty, only audio files are supported"
                  format: "binary"
                name:
                  type: "string"
                  description: "Description of file contents."
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PromptInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountGreetings"
      x-request-max-body-size: "20m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyGreetings"
  /restapi/v1.0/account/{accountId}/ivr-prompts/{promptId}:
    get:
      tags:
      - "IVR"
      summary: "Get IVR Prompt"
      description: "Returns an IVR prompt by ID."
      operationId: "readIVRPrompt"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrPromptId"
      responses:
        "200":
          description: "Prompt Information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PromptInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountGreetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyGreetings"
    put:
      tags:
      - "IVR"
      summary: "Update IVR Prompt"
      description: "Updates an IVR prompt by ID"
      operationId: "updateIVRPrompt"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrPromptId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateIVRPromptRequest"
        required: false
      responses:
        "200":
          description: "Updated Prompt Information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PromptInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountGreetings"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyGreetings"
    delete:
      tags:
      - "IVR"
      summary: "Delete IVR Prompt"
      description: "Deletes an IVR prompt by ID."
      operationId: "deleteIVRPrompt"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrPromptId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAccountGreetings"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyGreetings"
  /restapi/v1.0/account/{accountId}/address-book-bulk-upload:
    post:
      tags:
      - "External Contacts"
      summary: "Upload Multiple User Contacts"
      description: |
        Uploads multiple contacts for multiple extensions at once.
        Maximum 500 extensions can be uploaded per request. Max amount
        of contacts that can be uploaded per extension is 10,000.
        Each contact uploaded for a certain extension is not visible
        to other extensions.
      operationId: "addressBookBulkUpload"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddressBookBulkUploadRequest"
        required: true
      responses:
        "202":
          description: "Accepted"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddressBookBulkUploadResponse"
      x-feature: "EditPersonalContacts"
      x-request-max-body-size: "20m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
  /restapi/v1.0/account/{accountId}/address-book-bulk-upload/tasks/{taskId}:
    get:
      tags:
      - "External Contacts"
      summary: "Get Contacts Upload Task"
      description: |
        Returns the status of a task on adding multiple contacts to multiple extensions.
      operationId: "getAddressBookBulkUploadTask"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "taskId"
        in: "path"
        description: "Internal identifier of a task"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Contacts upload task"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddressBookBulkUploadResponse"
      x-feature: "EditPersonalContacts"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
  /restapi/v1.0/account/{accountId}/call-queues:
    get:
      tags:
      - "Call Queues"
      summary: "List Call Queues"
      description: "Returns a call queue list."
      operationId: "listCallQueues"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "page"
        in: "query"
        description: "Indicates a page number to retrieve. Only positive number values are accepted"
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "memberExtensionId"
        in: "query"
        description: "Internal identifier of an extension that is a member of every group within the result"
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueues"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/call-queues/{groupId}:
    get:
      tags:
      - "Call Queues"
      summary: "Get Call Queue"
      description: "Returns basic information on a call queue group extension."
      operationId: "readCallQueueInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Call queue information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueueDetails"
      x-feature: "ReadExtensions"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "Call Queues"
      summary: "Update Call Queue"
      description: |
        Updates information on a call queue group extension.
      operationId: "updateCallQueueInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: "Internal identifier of a call queue group"
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallQueueDetails"
        required: true
      responses:
        "200":
          description: "Updated call queue information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueueDetails"
      x-feature: "EditExtensionInfo"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserInfo"
  /restapi/v1.0/account/{accountId}/call-queues/{groupId}/presence:
    get:
      tags:
      - "Presence"
      summary: "Get Call Queue Presence"
      description: "Returns presence status of the call queue members."
      operationId: "readCallQueuePresence"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a call queue extension"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueuePresence"
      x-request-max-body-size: "100m"
      x-feature: "ReadPresenceStatus"
      x-throttling-group: "Light"
      x-app-permission: "ReadPresence"
    put:
      tags:
      - "Presence"
      summary: "Update Call Queue Presence"
      description: "Updates presence status of the call queue members in the specified queue."
      operationId: "updateCallQueuePresence"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a call queue extension"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallQueueUpdatePresence"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueuePresence"
      x-request-max-body-size: "100m"
      x-feature: "EditPresenceStatus"
      x-throttling-group: "Medium"
      x-app-permission: "EditPresence"
      x-notifications:
      - $ref: "#/components/schemas/CallQueuePresenceEvent"
  /restapi/v1.0/account/{accountId}/call-queues/{groupId}/bulk-assign:
    post:
      tags:
      - "Call Queues"
      summary: "Assign Multiple Call Queue Members"
      description: |
        Assigns multiple call queue members to call queue group.
      operationId: "assignMultipleCallQueueMembers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: "Internal identifier of a call queue group"
        schema:
          type: "string"
      requestBody:
        description: "Changes for the given group"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallQueueBulkAssignResource"
        required: true
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Extension of type [${extensionType}] cannot be included into call queue"
      x-feature: "EditGroups"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "Groups"
  /restapi/v1.0/account/{accountId}/call-queues/{groupId}/members:
    get:
      tags:
      - "Call Queues"
      summary: "List Call Queue Members"
      description: |
        Returns a list of call queue group members.
      operationId: "listCallQueueMembers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: "Internal identifier of a call queue group"
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Call queue group members information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueueMembers"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/emergency-locations:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List Emergency Locations"
      description: "Returns emergency response locations for the current account."
      operationId: "listEmergencyLocations"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries containing the specified substring in 'address'
          and 'name' fields. The character range is 0-64; not case-sensitive.
          If empty then the filter is ignored
        schema:
          type: "string"
          maxLength: 64
      - name: "addressStatus"
        in: "query"
        schema:
          $ref: "#/components/schemas/EmergencyAddressStatus"
      - name: "usageStatus"
        in: "query"
        schema:
          $ref: "#/components/schemas/EmergencyLocationUsageStatus"
      - name: "domesticCountryId"
        in: "query"
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results, prefixed by
          plus sign '+' (ascending order) or minus sign '-' (descending order)
        schema:
          type: "string"
          enum:
          - "+name"
          - "+siteName"
          - "+address"
          - "+addressStatus"
          - "+usageStatus"
          - "-name"
          - "-siteName"
          - "-address"
          - "-addressStatus"
          - "-usageStatus"
          default: "+address"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values
          supported: `Max` or numeric value. If not specified,
          100 records are returned per one page
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "page"
        in: "query"
        description: |
          Indicates the page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "Emergency locations list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationsResource"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Add Emergency Location"
      operationId: "createEmergencyLocation"
      description: "Creates a new emergency response location for a company."
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EmergencyLocationRequestResource"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationResponseResource"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-locations/{locationId}:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Emergency Location"
      description: "Returns emergency response location by ID. Available for Admin users only."
      operationId: "readEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      - name: "syncEmergencyAddress"
        in: "query"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "Emergency location information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CommonEmergencyLocationResource"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate OR ReadEmergencyLocations"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    put:
      tags:
      - "Automatic Location Updates"
      summary: "Update Emergency Location"
      description: "Updates the specified emergency response location."
      operationId: "updateEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EmergencyLocationRequestResource"
        required: true
      responses:
        "200":
          description: "Updated emergency location information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationResponseResource"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate OR EditEmergencyLocations"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    delete:
      tags:
      - "Automatic Location Updates"
      operationId: "deleteEmergencyLocation"
      summary: "Delete Emergency Location"
      description: "Deletes the specified emergency response location."
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      - name: "validateOnly"
        in: "query"
        description: |
          Flag indicating that validation of emergency location(s) is required
          before deletion
        required: false
        schema:
          type: "boolean"
      - name: "newLocationId"
        in: "query"
        description: |
          Internal identifier of an emergency response location
          that should be used instead of a deleted one.
        required: false
        schema:
          type: "string"
      responses:
        "200":
          description: "Successful validation"
        "204":
          description: "No content"
        "207":
          description: "Multi-status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetLocationDeletionMultiResponse"
      x-feature: "EditEmergencyLocations"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/meeting/locked-settings:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Locked Meeting Settings"
      description: |
        Returns the information about user meeting settings that are locked on
        account level and therefore cannot be changed by a user.
      operationId: "getAccountLockedSetting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "OK: Account Lock Setting"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountLockedSettingResponse"
      deprecated: true
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/meeting/{meetingId}:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Account-level Meeting Info"
      description: "Returns a particular account-level meeting details by ID"
      operationId: "readAccountMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/MeetingId"
      responses:
        "200":
          description: "OK: Meeting Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingResponseResource"
      deprecated: true
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/department/{departmentId}/members:
    get:
      tags:
      - "Call Queues"
      summary: "Get Department Member List"
      description: |
        Viewing user account information (including name, business name, address
        and phone number/account number). Please note, that this method is
        deprecated and legacy 'Department' entity corresponds to 'Call Queue'
        in modern RingCentral product terminology. In order to retrieve call
        queue members please use the following method
        `GET/restapi/v1.0/account/{accountId}/call-queues/{groupId}/members`.
      operationId: "listDepartmentMembers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "departmentId"
        in: "path"
        description: |
          Internal identifier of a Department extension (same as extensionId
          but only the ID of a department extension is valid). Please note that
          legacy 'Department' extension type corresponds to 'Call Queue' extensions
          in modern RingCentral product terminology
        required: true
        schema:
          type: "integer"
          format: "int64"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Department members information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DepartmentMemberList"
      deprecated: true
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/department/bulk-assign:
    post:
      tags:
      - "Call Queues"
      summary: "Assign Multiple Department Members"
      description: |
        Adds and/or removes multiple call queue members. Please note,
        that this method is deprecated and legacy 'Department' entity
        corresponds to 'Call Queue' in modern RingCentral product terminology.
        In order to assign multiple call queue members please use the following
        method `POST/restapi/v1.0/account/{accountId}/call-queues/{groupId}/bulk-assign`.
      operationId: "assignMultipleDepartmentMembers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DepartmentBulkAssignResource"
        required: false
      responses:
        "204":
          description: "Successful response"
      deprecated: true
      x-feature: "EditUserGroups"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "UserGroups"
  /restapi/v1.0/account/{accountId}/presence:
    get:
      tags:
      - "Presence"
      summary: "Get User Presence Status List"
      description: "Returns presence status of all extensions of an account. Please note: The presenceStatus is returned as Offline (the parameters telephonyStatus, message, userStatus and dndStatus are not returned at all) for the following extension types: Department, Announcement Only, Voicemail (Take Messages Only), Fax User, Paging Only Group, Shared Lines Group, IVR Menu, Application Extension."
      operationId: "readAccountPresence"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "detailedTelephonyState"
        in: "query"
        description: "Whether to return detailed telephony state"
        schema:
          type: "boolean"
      - name: "sipData"
        in: "query"
        description: "Whether to return SIP data"
        schema:
          type: "boolean"
      - name: "page"
        in: "query"
        description: "Page number for account presence information"
        schema:
          type: "integer"
          format: "int32"
      - name: "perPage"
        in: "query"
        description: "Number for account presence information items per page"
        schema:
          type: "integer"
          format: "int32"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountPresenceInfo"
      x-request-max-body-size: "100m"
      x-feature: "ReadPresenceStatus"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadPresence"
      x-user-permission: "ReadPresenceStatus"
      x-notifications:
      - $ref: "#/components/schemas/AccountPresenceEvent"
  /restapi/v1.0/account/{accountId}/call-recordings:
    delete:
      tags:
      - "Call Recordings"
      summary: "Delete Company Call Recordings"
      description: |
        Deletes company call recordings by their IDs. *Please note:* This method deletes the recording file itself,
        not the record of it in the call log.
      operationId: "deleteCompanyCallRecordings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallRecordingIds"
      responses:
        "204":
          description: "Successful response"
        "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-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditCallLog"
      x-user-permission: "EditCompanyCallRecordings"
  /restapi/v1.0/account/{accountId}/assigned-role:
    get:
      tags:
      - "Role Management"
      summary: "List Company Assigned Roles"
      description: "Returns a list of roles assigned to the current account."
      operationId: "listAssignedRoles"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "showHidden"
        in: "query"
        description: "Specifies if hidden roles are shown or not"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "List of roles assigned to an account"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionWithRolesCollectionResource"
      x-feature: "ReadAssignedRoles"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadAssignedRoles"
  /restapi/v1.0/account/{accountId}/meeting-recordings:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "List Account Meeting Recordings"
      description: "Returns the list of meeting recordings for the current account."
      operationId: "listAccountMeetingRecordings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "meetingId"
        in: "query"
        description: "Internal identifier of a meeting. Either `meetingId` or `meetingStartTime`/`meetingEndTime` can be specified"
        schema:
          type: "string"
      - name: "meetingStartTimeFrom"
        in: "query"
        description: |
          Recordings of meetings started after the time specified will
          be returned. Either `meetingId` or `meetingStartTime`/`meetingEndTime` can
          be specified
        schema:
          type: "string"
          format: "date-time"
      - name: "meetingStartTimeTo"
        in: "query"
        description: |
          Recordings of meetings started before the time specified will
          be returned. The default value is current time. Either `meetingId` or `meetingStartTime`/`meetingEndTime`
          can be specified
        schema:
          type: "string"
          format: "date-time"
      - name: "page"
        in: "query"
        description: "Page number"
        schema:
          type: "integer"
          format: "int32"
      - name: "perPage"
        in: "query"
        description: "Number of items per page. The `max` value is supported to indicate the maximum size - 300"
        schema:
          maximum: 300
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListMeetingRecordingsResponse"
      deprecated: true
      x-feature: "MeetingsCompanyRecordings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/forward-all-calls:
    get:
      tags:
      - "Call Handling Rules"
      summary: "Get Forward All Company Calls"
      description: "Returns information about *Forward All Company Calls* feature setting."
      operationId: "getForwardAllCompanyCalls"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardAllCompanyCallsInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyAnsweringRules"
    patch:
      tags:
      - "Call Handling Rules"
      summary: "Update Forward All Company Calls"
      description: "Updates *Forward All Company Calls* feature setting."
      operationId: "updateForwardAllCompanyCalls"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ForwardAllCompanyCallsRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardAllCompanyCallsInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyAnsweringRules"
  /restapi/v1.0/account/{accountId}/call-monitoring-groups:
    get:
      tags:
      - "Call Monitoring Groups"
      summary: "List Call Monitoring Groups"
      description: |
        Returns a list of call monitoring groups filtered by an extension.
      operationId: "listCallMonitoringGroups"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "memberExtensionId"
        in: "query"
        description: |
          Internal identifier of an extension that is a member of every
          group within the result
        schema:
          type: "string"
      responses:
        "200":
          description: "Call monitoring groups information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallMonitoringGroups"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    post:
      tags:
      - "Call Monitoring Groups"
      summary: "Create Call Monitoring Group"
      description: |
        Creates a new call monitoring group.
      operationId: "createCallMonitoringGroup"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "Parameters of a call monitoring group that will be created"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateCallMonitoringGroupRequest"
        required: true
      responses:
        "200":
          description: "Call monitoring group information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallMonitoringGroup"
      x-feature: "EditGroups"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "Groups"
  /restapi/v1.0/account/{accountId}/call-monitoring-groups/{groupId}:
    put:
      tags:
      - "Call Monitoring Groups"
      summary: "Update Call Monitoring Group"
      description: |
        Updates a call monitoring group name.
      operationId: "updateCallMonitoringGroup"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        description: |
          Internal identifier of a call monitoring group
        required: true
        schema:
          type: "string"
      requestBody:
        description: "Parameters of a call monitoring group that will be updated"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateCallMonitoringGroupRequest"
        required: true
      responses:
        "200":
          description: "Updated call monitoring group information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallMonitoringGroup"
        "400":
          description: "Value for group name is unacceptable"
        "403":
          description: "User has no permissions to create groups"
        "404":
          description: |
            Group with the given identifier doesn't belong to the account
      x-feature: "EditGroups"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "Groups"
    delete:
      tags:
      - "Call Monitoring Groups"
      summary: "Delete Call Monitoring Group"
      description: |
        Removes information about a call monitoring group specified in path.
      operationId: "deleteCallMonitoringGroup"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: "Internal identifier of a call monitoring group"
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "404":
          description: "Group with the given identifier doesn't belong to the account"
      x-feature: "EditGroups"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "Groups"
  /restapi/v1.0/account/{accountId}/call-monitoring-groups/{groupId}/bulk-assign:
    post:
      tags:
      - "Call Monitoring Groups"
      summary: "Update Call Monitoring Group List"
      description: |
        Updates a list of call monitoring groups.
      operationId: "updateCallMonitoringGroupList"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: |
          Internal identifier of a call monitoring group
        schema:
          type: "string"
      requestBody:
        description: "Changes for a given call monitoring group"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallMonitoringBulkAssign"
        required: true
      responses:
        "204":
          description: "No Content"
        "400":
          description: |
            Extension of type [ParkLocation] could not be a member of [call
            monitoring]
      x-feature: "EditGroups"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "Groups"
  /restapi/v1.0/account/{accountId}/call-monitoring-groups/{groupId}/members:
    get:
      tags:
      - "Call Monitoring Groups"
      summary: "List Call Monitoring Group Members"
      description: |
        Returns a list of members for a call monitoring group specified in path.
      operationId: "listCallMonitoringGroupMembers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "groupId"
        in: "path"
        required: true
        description: |
          Internal identifier of a call monitoring group
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Call monitoring group members information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallMonitoringGroupMemberList"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/business-address:
    get:
      tags:
      - "Company"
      summary: "Get Account Business Address"
      description: |
        Returns business address of a company.
      operationId: "readAccountBusinessAddress"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountBusinessAddressResource"
      x-feature: "ReadCompanyInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
    put:
      tags:
      - "Company"
      summary: "Update Company Business Address"
      description: |
        Updates the business address of a company that account is linked
        to.
      operationId: "updateAccountBusinessAddress"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ModifyAccountBusinessAddressRequest"
        required: true
      responses:
        "200":
          description: "Updated company business address"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountBusinessAddressResource"
      x-feature: "EditCompanyInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditCompanyInfo"
  /restapi/v1.0/account/{accountId}/audit-trail/search:
    post:
      tags:
      - "Audit Trail"
      summary: "Search Audit Trail Data"
      description: |
        Returns the audit trail data with specific filters applied.
        Audit trail searching is limited to the last 10,000 records or last 180 days, whichever comes first.
      operationId: "auditTrailSearch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "Filter"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountHistorySearchPublicRequest"
        required: false
      responses:
        "200":
          description: "List of Account History Records"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountHistorySearchPublicResponse"
        "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-throttling-group: "Heavy"
      x-app-permission: "ReadAuditTrail"
  /restapi/v1.0/account/{accountId}/ivr-menus:
    get:
      tags:
      - "IVR"
      summary: "Get IVR Menu list"
      description: "Returns a company IVR menus."
      operationId: "readIVRMenuList"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IVRMenuList"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountGreetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
    post:
      tags:
      - "IVR"
      summary: "Create IVR Menu"
      description: "Creates a company IVR menu."
      operationId: "createIVRMenu"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IVRMenuInfo"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IVRMenuInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAutoReceptionist"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "AutoReceptionist"
  /restapi/v1.0/account/{accountId}/ivr-menus/{ivrMenuId}:
    get:
      tags:
      - "IVR"
      summary: "Get IVR Menu"
      description: "Returns a company IVR menu by ID."
      operationId: "readIVRMenu"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrMenuId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IVRMenuInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAutoReceptionist"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "AutoReceptionist"
    put:
      tags:
      - "IVR"
      summary: "Update IVR Menu"
      description: "Updates a company IVR menu by ID."
      operationId: "updateIVRMenu"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/IvrMenuId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IVRMenuInfo"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IVRMenuInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditAutoReceptionist"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "AutoReceptionist"
  /restapi/v1.0/account/{accountId}/message-store-report:
    post:
      tags:
      - "Message Exports"
      summary: "Create Message Store Report"
      description: |
        Creates a task to collect all account messages within the specified
        time interval. Maximum number of simultaneous tasks per account is 2.
      operationId: "createMessageStoreReport"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateMessageStoreReportRequest"
        required: true
      responses:
        "202":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStoreReport"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditUsers"
      x-throttling-group: "Heavy"
      x-user-permission: "Users"
      x-app-permission: "ReadMessages"
  /restapi/v1.0/account/{accountId}/message-store-report/{taskId}:
    get:
      tags:
      - "Message Exports"
      summary: "Get Message Store Report Task"
      description: "Returns the current status of a task on report creation."
      operationId: "readMessageStoreReportTask"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/PicTaskId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStoreReport"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditUsers"
      x-throttling-group: "Heavy"
      x-user-permission: "Users"
      x-app-permission: "ReadMessages"
  /restapi/v1.0/account/{accountId}/message-store-report/{taskId}/archive:
    get:
      tags:
      - "Message Exports"
      summary: "Get Message Store Report Archive"
      description: "Returns the created report with message data not including attachments."
      operationId: "readMessageStoreReportArchive"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/PicTaskId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStoreReportArchive"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditUsers"
      x-throttling-group: "Heavy"
      x-user-permission: "Users"
      x-app-permission: "ReadMessages"
  /restapi/v1.0/account/{accountId}/directory/entries:
    get:
      tags:
      - "Internal Contacts"
      summary: "Get Company Directory Entries"
      description: "Returns contact information on corporate users of federated accounts. Please note: 1. `User`, `DigitalUser`, `VirtualUser` and `FaxUser` types are returned as `User` type. 2. `ApplicationExtension` type is not returned. 3. Only extensions in `Enabled`, `Disabled` and `NotActivated` state are returned."
      operationId: "listDirectoryEntries"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "showFederated"
        in: "query"
        description: "If `true` then contacts of all accounts in federation are returned. If `false` then only contacts of the current account are returned, and account section is eliminated in this case"
        schema:
          type: "boolean"
          default: true
      - name: "type"
        in: "query"
        description: "Type of an extension. Please note that legacy 'Department' extension type corresponds to 'Call Queue' extensions in modern RingCentral product terminology"
        schema:
          type: "string"
          enum:
          - "User"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ParkLocation"
          - "Limited"
          - "External"
      - name: "typeGroup"
        in: "query"
        description: "Type of extension group"
        schema:
          type: "string"
          enum:
          - "User"
          - "NonUser"
      - name: "page"
        in: "query"
        description: "Page number"
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: |
          Records count to be returned per one page. It can be either integer or string with the specific keyword values:
          - `all` - all records are returned in one page
          - `max` - maximum count of records that can be returned in one page
        schema:
          oneOf:
          - type: "integer"
            format: "int32"
            default: 1000
            maximum: 2000
          - type: "string"
            enum:
            - "max"
            - "all"
      - name: "siteId"
        in: "query"
        description: "Internal identifier of the business site to which extensions belong"
        schema:
          type: "string"
      - $ref: "#/components/parameters/IfNoneMatch"
      responses:
        "200":
          description: "Paged collection of all contacts information for a given account. Records can be empty if no data found."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DirectoryResource"
        "400":
          description: "Current request cannot be processed due to error in its body and/or url."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "500":
          description: "Some unexpected error during current request processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "503":
          description: "Network error during request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/directory/entries/{entryId}:
    get:
      tags:
      - "Internal Contacts"
      summary: "Get Corporate Directory Entry"
      description: "Returns contact information on a particular corporate user of a federated account."
      operationId: "readDirectoryEntry"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "entryId"
        in: "path"
        description: "Internal identifier of extension to read information for"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Contact information for given parameters. If value doesn't found then empty body will be returned"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContactResource"
        "400":
          description: "Current request cannot be processed due to error in its body and/or url"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "500":
          description: "Some unexpected error during current request processing"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "503":
          description: "Network error during request. One should check connection between ADG processing node and ADX data node"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/directory/entries/search:
    post:
      tags:
      - "Internal Contacts"
      summary: "Search Company Directory Entries"
      description: "Returns contact information on corporate users of federated accounts according to the specified filtering and ordering."
      operationId: "searchDirectoryEntries"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "accountId"
        in: "query"
        description: "A list of Account IDs"
        schema:
          type: "string"
          example: "400131426008"
      - name: "department"
        in: "query"
        description: "A list of department names"
        schema:
          type: "string"
          example: "North office"
      - name: "siteId"
        in: "query"
        description: "A list of Site IDs"
        schema:
          type: "string"
          example: "872781797006"
      - name: "extensionStatus"
        in: "query"
        description: "Extension current state"
        schema:
          type: "string"
          example: "Enabled"
      - name: "extensionType"
        in: "query"
        description: "Extension types"
        schema:
          $ref: "#/components/schemas/SearchDirectoryExtensionType"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SearchDirectoryEntriesRequest"
        required: true
      responses:
        "200":
          description: "Paged collection of all contacts information for a given account according to filtering and ordering. Records can be empty if no data found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DirectoryResource"
        "400":
          description: "Current request cannot be processed due to error in its body and/or url"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "500":
          description: "Some unexpected error during current request processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "503":
          description: "Network error during request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/directory/federation:
    get:
      tags:
      - "Internal Contacts"
      summary: "Get Account Federation"
      description: "Returns information on a federation and associated accounts."
      operationId: "readDirectoryFederation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "types"
        in: "query"
        description: "Filter by federation types. Default is Regular"
        schema:
          $ref: "#/components/schemas/FederationTypes"
      - name: "RCExtensionId"
        in: "header"
        description: "RingCentral extension id"
        schema:
          type: "string"
      responses:
        "200":
          description: "List of found federations. Records array can be empty if no data found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FederationResource"
        "400":
          description: "Current request cannot be processed due to error in its body and/or url"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "500":
          description: "Some unexpected error during current request processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
        "503":
          description: "Network error during request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ADGErrorResponse"
      x-feature: "ReadCompanyInfo"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyInfo"
  /restapi/v1.0/account/{accountId}/paging-only-groups/{pagingOnlyGroupId}/users:
    get:
      tags:
      - "Paging Only Groups"
      summary: "Get Paging Group Users"
      description: |
        Returns a list of users allowed to page this group.
      operationId: "listPagingGroupUsers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pagingOnlyGroupId"
        in: "path"
        description: |
          Internal identifier of a paging group
        required: true
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Paging only group users information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagingOnlyGroupUsers"
      x-feature: "ReadExtensionInfo"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserInfo"
  /restapi/v1.0/account/{accountId}/paging-only-groups/{pagingOnlyGroupId}/bulk-assign:
    post:
      tags:
      - "Paging Only Groups"
      summary: "Assign Paging Group Users and Devices"
      description: |
        Adds and/or removes paging group users and devices.
      operationId: "assignMultiplePagingGroupUsersDevices"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pagingOnlyGroupId"
        in: "path"
        description: |
          Internal identifier of a paging group
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EditPagingGroupRequest"
        required: false
      responses:
        "200":
          description: "Assigned paging only groups/devices information"
      x-feature: "EditGroups"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "Groups"
  /restapi/v1.0/account/{accountId}/paging-only-groups/{pagingOnlyGroupId}/devices:
    get:
      tags:
      - "Paging Only Groups"
      summary: "Get Paging Group Devices"
      description: |
        Returns a list of paging devices assigned to this group.
      operationId: "listPagingGroupDevices"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pagingOnlyGroupId"
        in: "path"
        description: |
          Internal identifier of a paging group
        required: true
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items)
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Paging devices information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagingOnlyGroupDevices"
      x-feature: "ReadAccountDevices"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyDevices"
  /restapi/v1.0/account/{accountId}/sites:
    get:
      tags:
      - "Multi-Site"
      summary: "List Sites"
      operationId: "listSites"
      description: |
        Returns a list of sites for the specified account.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Sites information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SitesList"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    post:
      tags:
      - "Multi-Site"
      summary: "Create Site"
      operationId: "createSite"
      description: |
        Creates a site for the specified account.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSiteRequest"
        required: true
      responses:
        "200":
          description: "Added site information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
  /restapi/v1.0/account/{accountId}/sites/{siteId}:
    get:
      tags:
      - "Multi-Site"
      summary: "Get Site"
      operationId: "readSite"
      description: |
        Returns a site by ID.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Site information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteInfo"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "Multi-Site"
      summary: "Update Site"
      operationId: "updateSite"
      description: |
        Updates a site specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SiteUpdateRequest"
        required: false
      responses:
        "200":
          description: "Updated site information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteInfo"
      x-feature: "EditSites"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditExtensions"
      x-user-permission: "Sites"
    delete:
      tags:
      - "Multi-Site"
      summary: "Delete Site"
      operationId: "deleteSite"
      description: |
        Deletes a site specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
      x-feature: "EditSites"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditAccounts"
      x-user-permission: "Sites"
  /restapi/v1.0/account/{accountId}/sites/{siteId}/bulk-assign:
    post:
      tags:
      - "Multi-Site"
      summary: "Edit Sites"
      operationId: "assignMultipleSites"
      description: |
        Assigns multiple sites to an account specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        required: true
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SiteMembersBulkUpdate"
        required: false
      responses:
        "204":
          description: "No Content"
      x-feature: "EditSites"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "Sites"
  /restapi/v1.0/account/{accountId}/sites/{siteId}/members:
    get:
      tags:
      - "Multi-Site"
      summary: "List Site Members"
      operationId: "listSiteMembers"
      description: |
        Returns members of a site specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Site members information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteMembersList"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/sites/{siteId}/ivr:
    get:
      tags:
      - "Multi-Site"
      summary: "Get Site IVR Settings"
      operationId: "readSiteIvrSettings"
      description: |
        Returns IVR settings for a site specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        required: true
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        schema:
          type: "string"
      responses:
        "200":
          description: "Site IVR settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteIVRSettings"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "Multi-Site"
      summary: "Update Site IVR Settings"
      operationId: "updateSiteIvrSettings"
      description: |
        Updates IVR settings for a site specified in path.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "siteId"
        in: "path"
        required: true
        description: "Internal identifier of a site. *Please note* that `siteId` cannot take the 'main-site' value"
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SiteIVRSettingsUpdate"
        required: true
      responses:
        "200":
          description: "Updated IVR settings of a site"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SiteIVRSettings"
      x-feature: "EditSites"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "Sites"
  /restapi/v1.0/account/{accountId}/recording/{recordingId}:
    get:
      tags:
      - "Call Recordings"
      summary: "Get Call Recording"
      description: "Returns call recordings by ID(s)."
      operationId: "readCallRecording"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/CallRecordingId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCallRecordingResponse"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadAccountCallRecordings"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallRecording"
      x-user-permission: "ReadCallRecording"
  /restapi/v1.0/account/{accountId}/message-store-configuration:
    get:
      tags:
      - "Message Store"
      summary: "Get Message Store Configuration"
      description: "Returns message store settings."
      operationId: "readMessageStoreConfiguration"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Message store configuration"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStoreConfiguration"
      x-feature: "AccountAdministration"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-user-permission: "AccountAdministration"
      x-app-permission: "EditAccounts"
    put:
      tags:
      - "Message Store"
      summary: "Update Message Store Configuration"
      description: "Updates message store settings."
      operationId: "updateMessageStoreConfiguration"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageStoreConfiguration"
        required: true
      responses:
        "200":
          description: "Updated message store configuration"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStoreConfiguration"
      x-feature: "AccountAdministration"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-user-permission: "AccountAdministration"
      x-app-permission: "EditAccounts"
  /restapi/v1.0/account/{accountId}/greeting:
    post:
      tags:
      - "Greetings"
      summary: "Create Company Greeting"
      description: "Creates a custom company greeting."
      operationId: "createCompanyGreeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          multipart/mixed:
            schema:
              type: "object"
              required:
              - "binary"
              - "type"
              properties:
                type:
                  type: "string"
                  description: |
                    Type of greeting, specifying the case when the greeting
                    is played.
                  enum:
                  - "Company"
                  - "StartRecording"
                  - "StopRecording"
                  - "AutomaticRecording"
                  - "TemplateGreeting"
                answeringRule:
                  $ref: "#/components/schemas/AnsweringRuleQueryRequest"
                languageId:
                  type: "string"
                  description: |
                    Internal identifier of a language. See Get Language
                    List
                binary:
                  type: "string"
                  description: "Media file to upload"
                  format: "binary"
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "binary"
              - "type"
              properties:
                type:
                  type: "string"
                  description: |
                    Type of greeting, specifying the case when the greeting
                    is played.
                  enum:
                  - "Company"
                  - "StartRecording"
                  - "StopRecording"
                  - "AutomaticRecording"
                  - "TemplateGreeting"
                answeringRuleId:
                  type: "string"
                  description: "Internal identifier of an answering rule"
                languageId:
                  type: "string"
                  description: |
                    Internal identifier of a language. See Get Language
                    List
                binary:
                  type: "string"
                  description: "Media file to upload"
                  format: "binary"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomCompanyGreetingInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensionInfo"
      x-request-max-body-size: "20m"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ReadUserInfo"
  /restapi/v1.0/account/{accountId}/user-role:
    get:
      tags:
      - "Role Management"
      summary: "List Company User Roles"
      description: "Returns a list of account user roles."
      operationId: "listUserRoles"
      parameters:
      - name: "custom"
        in: "query"
        description: |
          Specifies whether to return custom roles or predefined roles only.
          If not specified, all roles are returned
        schema:
          type: "boolean"
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          description: "List of account user roles"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RolesCollectionResource"
      x-feature: "ReadRoles"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserRoles"
    post:
      tags:
      - "Role Management"
      summary: "Create Custom Role"
      description: "Creates a custom user role."
      operationId: "createCustomRole"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RoleResource"
        required: true
      responses:
        "200":
          description: "Created custom role information"
      x-feature: "EditRoles"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
      x-user-permission: "EditUserRoles"
  /restapi/v1.0/account/{accountId}/user-role/default:
    get:
      tags:
      - "Role Management"
      summary: "Get Default User Role"
      description: "Returns the default user role of the current account."
      operationId: "readDefaultRole"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      responses:
        "200":
          description: "Default user role"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultUserRole"
      x-feature: "EditRoles"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "RoleManagement"
      x-user-permission: "Roles"
    put:
      tags:
      - "Role Management"
      summary: "Set Default User Role"
      description: "Updates the account default user role."
      operationId: "updateDefaultUserRole"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DefaultUserRoleRequest"
        required: true
      responses:
        "200":
          description: "Updated default user role"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultUserRole"
      x-feature: "EditRoles"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
      x-user-permission: "Roles"
  /restapi/v1.0/account/{accountId}/user-role/{roleId}:
    get:
      tags:
      - "Role Management"
      summary: "Get User Role"
      description: "Returns a user role assigned to the current account."
      operationId: "readUserRole"
      parameters:
      - name: "roleId"
        in: "path"
        description: "Internal identifier of a role"
        required: true
        schema:
          type: "string"
      - $ref: "#/components/parameters/AccountId"
      - name: "advancedPermissions"
        in: "query"
        description: |
          Specifies whether to return advanced permissions capabilities within `permissionsCapabilities` resource.
          The default value is false.
        schema:
          type: "boolean"
      responses:
        "200":
          description: "User role information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RoleResource"
      x-feature: "ReadRoles"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "ReadUserRoles"
      x-app-permission: "ReadAccounts"
    put:
      tags:
      - "Role Management"
      summary: "Update User Role"
      description: "Updates a user role assigned to the current account by ID."
      operationId: "updateUserRole"
      parameters:
      - name: "roleId"
        in: "path"
        description: "Internal identifier of a role"
        required: true
        schema:
          type: "string"
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RoleResource"
        required: true
      responses:
        "200":
          description: "Updated user role information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RoleResource"
      x-feature: "EditRoles"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-user-permission: "EditUserRoles"
      x-app-permission: "RoleManagement"
    delete:
      tags:
      - "Role Management"
      summary: "Delete Custom Role"
      description: "Deletes a custom user role by ID."
      operationId: "deleteCustomRole"
      parameters:
      - name: "roleId"
        in: "path"
        description: "Internal identifier of a role"
        required: true
        schema:
          type: "string"
      - $ref: "#/components/parameters/AccountId"
      - name: "validateOnly"
        in: "query"
        description: |
          Specifies that role should be validated prior to deletion, whether
          it can be deleted or not
        schema:
          type: "boolean"
      responses:
        "204":
          description: "No content"
      x-feature: "EditRoles"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
      x-user-permission: "EditUserRoles"
  /restapi/v1.0/account/{accountId}/user-role/{roleId}/bulk-assign:
    post:
      tags:
      - "Role Management"
      summary: "Assign Multiple User Roles"
      description: "Assigns multiple user roles."
      operationId: "assignMultipleUserRoles"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "roleId"
        in: "path"
        description: "Internal identifier of a role"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkRoleAssignResource"
        required: true
      responses:
        "200":
          description: "Assigned user roles information"
      x-feature: "EditAssignedRoles"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "RoleManagement"
      x-user-permission: "EditUserRoles"
  /restapi/v1.0/account/{accountId}/extension:
    get:
      tags:
      - "Extensions"
      summary: "List Extensions"
      description: |
        Returns the list of extensions created for a particular account.
        All types of extensions are included in this list.
      operationId: "listExtensions"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "extensionNumber"
        in: "query"
        description: "Extension short number to filter records"
        schema:
          type: "string"
      - name: "email"
        in: "query"
        description: |
          Extension email address. Multiple values are accepted
        example: "alice.smith@example.com&email=bob.johnson@example.com"
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "status"
        in: "query"
        description: |
          Extension current state. Multiple values are supported. If 'Unassigned'
          is specified, then extensions without `extensionNumber` attribute are returned.
          If not specified, then all extensions are returned
        allowEmptyValue: true
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "Enabled"
            - "Disabled"
            - "NotActivated"
            - "Unassigned"
      - name: "type"
        in: "query"
        description: |
          Extension type. Multiple values are supported. Please note
          that legacy 'Department' extension type corresponds to 'Call Queue'
          extensions in modern RingCentral product terminology
        allowEmptyValue: true
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "User"
            - "FaxUser"
            - "FlexibleUser"
            - "VirtualUser"
            - "DigitalUser"
            - "Department"
            - "Announcement"
            - "Voicemail"
            - "SharedLinesGroup"
            - "PagingOnly"
            - "IvrMenu"
            - "ApplicationExtension"
            - "ParkLocation"
            - "Limited"
            - "Bot"
            - "ProxyAdmin"
            - "DelegatedLinesGroup"
            - "Site"
      responses:
        "200":
          description: "Extension list information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionListResponse"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
      x-notifications:
      - $ref: "#/components/schemas/ExtensionListEvent"
    post:
      tags:
      - "Extensions"
      summary: "Create Extension"
      description: |
        Creates an extension.
      operationId: "createExtension"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionCreationRequest"
        required: true
      responses:
        "200":
          description: "Created extension information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionCreationResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
      x-feature: "EditUsers"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "AddRemoveUsers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}:
    get:
      tags:
      - "User Settings"
      summary: "Get Extension"
      description: |
        Returns basic information about a particular extension of an account.
      operationId: "readExtension"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Extension information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionInfoResponse"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
      x-notifications:
      - $ref: "#/components/schemas/ExtensionInfoEvent"
    put:
      tags:
      - "User Settings"
      summary: "Update Extension"
      description: "Updates the user settings."
      operationId: "updateExtension"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionUpdateRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionInfoResponse"
      x-feature: "EditExtensionInfo OR EditCredentials"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserInfo OR EditUserCredentials"
    delete:
      tags:
      - "User Settings"
      summary: "Delete Extension"
      operationId: "deleteExtension"
      description: |
        Deletes extension(s) by ID(s). When an extension is being deleted
        the default API behavior is as follows:

        - user's direct numbers are preserved by becoming additional company numbers;
        - user's digital lines (both device & associated phone number) are deleted.

        You can change this behavior using the filters:

        - create unassigned extensions for each digital line of the deleted extension by
          setting the query parameter `savePhoneLines` to `true` in request path;
        - remove direct numbers of the deleted extension by setting the `savePhoneNumbers`
          query parameter to `false` in request path

        **Note!** Since this API is now deprecated, please use the following API method `DELETE /restapi/v2/accounts/{accountId}/extensions` for users deletion.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "savePhoneLines"
        in: "query"
        schema:
          type: "boolean"
          default: false
      - name: "savePhoneNumbers"
        in: "query"
        schema:
          type: "boolean"
          default: true
      responses:
        "204":
          description: "No Content"
      deprecated: true
      x-feature: "EditUsers"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "AddRemoveUsers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/business-hours:
    get:
      tags:
      - "Business Hours"
      summary: "Get User Business Hours"
      description: "Returns the user business hours schedule. Business hours (and After hours - all the remaining time) schedules are commonly used for setting call handling rules - `business-hours-rule` and `after-hours-rule` correspondingly. **Please note:** If the user business hours are set to 'Custom hours' then a particular schedule is returned; however if set to '24 hours/7 days a week' the schedule will be empty."
      operationId: "readUserBusinessHours"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetUserBusinessHoursResponse"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "Business Hours"
      summary: "Update User Business Hours"
      description: "Updates the user business hours schedule."
      operationId: "updateUserBusinessHours"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserBusinessHoursUpdateRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserBusinessHoursUpdateResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/video-configuration:
    get:
      tags:
      - "Video Configuration"
      summary: "Get User Video Configuration"
      description: |
        Returns information about video configuration settings of the current user.
      operationId: "readUserVideoConfiguration"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "User Video Configuration"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserVideoConfiguration"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/favorite:
    get:
      tags:
      - "External Contacts"
      summary: "List Favorite Contacts"
      description: |
        Returns the list of favorite contacts of the current extension.
        Favorite contacts include both company contacts (extensions) and personal
        contacts (address book records).
      operationId: "listFavoriteContacts"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Favorite Contact List"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FavoriteContactList"
      x-feature: "ReadPersonalContacts"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "ReadPersonalContacts"
      x-app-permission: "ReadContacts"
      x-notifications:
      - $ref: "#/components/schemas/ExtensionFavoritesEvent"
    put:
      tags:
      - "External Contacts"
      summary: "Update Favorite Contact List"
      description: |
        Updates the list of favorite contacts of the current extension.
        Favorite contacts include both company contacts (extensions) and personal
        contacts (address book records).**Please note**: Currently personal address
        book size is limited to 10 000 contacts.
      operationId: "updateFavoriteContactList"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FavoriteCollection"
        required: true
      responses:
        "200":
          description: "Favorite contacts list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FavoriteContactList"
      x-feature: "EditPersonalContacts"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/device:
    get:
      tags:
      - "Devices"
      summary: "List Extension Devices"
      description: |
        Returns devices of an extension or multiple extensions by their ID(s). Batch request
        is supported.
      operationId: "listExtensionDevices"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "linePooling"
        in: "query"
        description: "Pooling type of device - Host - a device with standalone paid phone line which can be linked to a soft client instance - Guest - a device with a linked phone line - None - a device without a phone line or with specific line (free, BLA, etc.)"
        schema:
          type: "string"
          enum:
          - "Host"
          - "Guest"
          - "None"
      - name: "feature"
        in: "query"
        description: "Device feature or multiple features supported"
        schema:
          $ref: "#/components/schemas/DeviceFeatureEnum"
      - name: "type"
        in: "query"
        description: "Device type"
        schema:
          type: "string"
          default: "HardPhone"
          enum:
          - "HardPhone"
          - "SoftPhone"
          - "OtherPhone"
          - "MobileDevice"
          - "BLA"
          - "Paging"
          - "WebPhone"
          - "WebRTC"
          - "Room"
      - name: "lineType"
        in: "query"
        description: "Phone line type"
        schema:
          $ref: "#/components/schemas/PhoneLineTypeEnum"
      responses:
        "200":
          description: "Extension devices information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionDevicesResponse"
      x-feature: "ReadExtensionDevices"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserDevices"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/grant:
    get:
      tags:
      - "User Settings"
      summary: "List Extension Grants"
      description: |
        Returns the list of extensions with information on grants
        given to the current extension regarding them. Currently the list of grants
        include: picking up a call, monitoring, calling or receiving a call on behalf
        of somebody, call delegation and calling paging groups.
      operationId: "listExtensionGrants"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "extensionType"
        in: "query"
        description: |
          Type of extension to be returned. Multiple values are supported.
          Please note that legacy 'Department' extension type corresponds
          to 'Call Queue' extensions in modern RingCentral product terminology
        schema:
          type: "string"
          enum:
          - "User"
          - "FaxUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "Limited"
          - "Bot"
          - "Room"
          - "DelegatedLinesGroup"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "List of extension grants"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionGrantListResponse"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
      x-notifications:
      - $ref: "#/components/schemas/ExtensionGrantListEvent"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/conferencing:
    get:
      tags:
      - "User Settings"
      summary: "Get User Conferencing Settings"
      description: |
        Returns information on Free Conference Calling (FCC) feature
        for a given extension.
      operationId: "readConferencingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "countryId"
        in: "query"
        description: |
          Internal identifier of a country. If not specified, the response
          is returned for the brand country
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetConferencingInfoResponse"
      x-feature: "Conferencing"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "OrganizeConference"
    put:
      tags:
      - "User Settings"
      summary: "Update User Conferencing Settings"
      description: |
        Updates the default conferencing number for the current extension.
        The number can be selected from conferencing numbers of the current extension.
        Updates the setting, allowing participants join the conference before host.
      operationId: "updateConferencingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateConferencingInfoRequest"
        required: true
      responses:
        "200":
          description: "Updated user conferencing settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetConferencingInfoResponse"
      x-feature: "Conferencing"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-user-permission: "OrganizeConference"
      x-app-permission: "EditExtensions"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting-configuration/profile-image:
    post:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Upload User Meeting Profile Image"
      description: "Uploads profile picture for user meetings"
      operationId: "createUserMeetingProfileImage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "profilePic"
              properties:
                profilePic:
                  type: "string"
                  description: "Profile image file size cannot exceed 2Mb. Supported formats are: JPG/JPEG, GIF and PNG"
                  format: "binary"
      responses:
        "204":
          description: "No Content"
      deprecated: true
      x-request-max-body-size: "2m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-queue-presence:
    get:
      tags:
      - "Presence"
      summary: "Get Agent’s Call Queue Presence"
      description: "Returns a list of agent's call queues with the agent presence status (per queue)."
      operationId: "readExtensionCallQueuePresence"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "editableMemberStatus"
        in: "query"
        description: "Filtering by the flag 'Allow members to change their Queue Status'. If 'true' only queues where user can change his availability status are returned"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionCallQueuePresenceList"
      x-request-max-body-size: "100m"
      x-feature: "ReadPresenceStatus"
      x-throttling-group: "Light"
      x-app-permission: "ReadPresence"
    put:
      tags:
      - "Presence"
      summary: "Update Call Queue Presence"
      description: "Updates availability of the agent for the call queues."
      operationId: "updateExtensionCallQueuePresence"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionCallQueueUpdatePresenceList"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionCallQueuePresenceList"
      x-request-max-body-size: "100m"
      x-feature: "EditPresenceStatus"
      x-throttling-group: "Medium"
      x-app-permission: "EditPresence"
      x-notifications:
      - $ref: "#/components/schemas/CallQueuePresenceEvent"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store-templates:
    post:
      tags:
      - "SMS Templates"
      summary: "Create User Message Template"
      description: "Creates a user personal text message template. \nMaximum number of personal templates is 25 per user. \nMax length of the `body` property is 1000 symbols (2-byte UTF-16 encoded).\n"
      operationId: "createUserMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTemplateRequest"
        required: true
      responses:
        "201":
          description: "Created personal text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
    get:
      tags:
      - "SMS Templates"
      summary: "List User Message Templates"
      description: "Returns a list of user's personal text message templates."
      operationId: "listUserMessageTemplates"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "siteIds"
        in: "query"
        description: |
          Site ID(s) to filter user message templates, associated with particular sites.
          By default the value is all - templates with all sites will be returned
        required: false
        schema:
          type: "array"
          items:
            type: "string"
      - name: "scope"
        in: "query"
        required: false
        description: "Message templates scope. By default the value is all - both Personal and Company templates will be returned"
        schema:
          $ref: "#/components/schemas/VisibilityType"
      responses:
        "200":
          description: "List of user text message templates"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplatesListResponse"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store-templates/{templateId}:
    put:
      tags:
      - "SMS Templates"
      summary: "Update User Message Template"
      description: "Updates a user personal text message template."
      operationId: "updateUserMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/TemplateId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTemplateRequest"
        required: true
      responses:
        "200":
          description: "Updated user personal text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
    get:
      tags:
      - "SMS Templates"
      summary: "Get User Message Template"
      description: "Returns a user personal text message template by ID."
      operationId: "readUserMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/TemplateId"
      responses:
        "200":
          description: "User personal text message template"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageTemplateResponse"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
    delete:
      tags:
      - "SMS Templates"
      summary: "Delete User Message Template"
      description: "Deletes a user personal text message template."
      operationId: "deleteUserMessageTemplate"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/TemplateId"
      responses:
        "204":
          description: "No content"
        "404":
          $ref: "#/components/responses/NotFound"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-sync:
    get:
      tags:
      - "Message Store"
      summary: "Sync Messages"
      description: "Synchronizes messages."
      operationId: "syncMessages"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "conversationId"
        in: "query"
        description: |
          Conversation identifier for the resulting messages. Meaningful
          for SMS and Pager messages only.
        schema:
          type: "integer"
          format: "int64"
      - name: "dateFrom"
        in: "query"
        description: |
          The start date/time for resulting messages in ISO 8601 format
          including timezone, for example 2016-03-10T18:07:52.534Z. The default value
          is dateTo minus 24 hours
        schema:
          type: "string"
          format: "date-time"
      - name: "dateTo"
        in: "query"
        description: |
          The end date/time for resulting messages in ISO 8601 format including
          timezone, for example 2016-03-10T18:07:52.534Z. The default value is current
          time
        schema:
          type: "string"
          format: "date-time"
      - name: "direction"
        in: "query"
        description: |
          Direction for the resulting messages. If not specified, both
          inbound and outbound messages are returned. Multiple values are accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageDirectionEnum"
      - name: "distinctConversations"
        in: "query"
        description: |
          If `true`, then the latest messages per every conversation ID
          are returned
        schema:
          type: "boolean"
      - name: "messageType"
        in: "query"
        description: |
          Type for the resulting messages. If not specified, all types
          of messages are returned. Multiple values are accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageTypeEnum"
      - name: "recordCount"
        in: "query"
        description: |
          Limits the number of records to be returned (works in combination
          with dateFrom and dateTo if specified)
        schema:
          type: "integer"
          format: "int32"
      - name: "syncToken"
        in: "query"
        description: "A `syncToken` value from the previous sync response (for `ISync` mode only, mandatory)"
        schema:
          type: "string"
      - name: "syncType"
        in: "query"
        description: "Type of message synchronization"
        schema:
          $ref: "#/components/schemas/SyncTypeEnum"
      - name: "voicemailOwner"
        in: "query"
        description: |
          This query parameter will filter voicemail messages based on its owner.
          This parameter should be controlled by the 'SharedVoicemail' feature.
          If the feature is disabled this filter shouldn't be applied.
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessageSyncResponse"
      x-feature: "ReadMessages"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadMessages"
      x-user-permission: "ReadMessages"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/profile-image:
    get:
      tags:
      - "User Settings"
      summary: "Get User Profile Image"
      description: |
        Returns a profile image of an extension.
      operationId: "readUserProfileImageLegacy"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "User Profile Image (Media Data)"
          content:
            image/png:
              schema:
                type: "string"
                format: "binary"
            image/jpeg:
              schema:
                type: "string"
                format: "binary"
            image/gif:
              schema:
                type: "string"
                format: "binary"
        "304":
          description: "Not Modified"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "User Settings"
      summary: "Update User Profile Image"
      description: |
        Updates the extension profile image.
      operationId: "updateUserProfileImage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: "object"
              properties:
                image:
                  type: "string"
                  format: "binary"
        required: true
      responses:
        "204":
          description: "No Content"
      x-feature: "EditExtensionInfo"
      x-request-max-body-size: "10m"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserInfo"
    post:
      tags:
      - "User Settings"
      summary: "Upload User Profile Image"
      description: |
        Uploads the extension profile image.
      operationId: "createUserProfileImage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "image"
              properties:
                image:
                  type: "string"
                  format: "binary"
        required: true
      responses:
        "204":
          description: "No Content"
      x-feature: "EditExtensionInfo"
      x-request-max-body-size: "10m"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserInfo"
    delete:
      tags:
      - "User Settings"
      summary: "Delete User Profile Image"
      description: |
        Deletes the user profile image.
      operationId: "deleteUserProfileImage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "204":
          description: "No Content"
      x-feature: "EditExtensionInfo"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserInfo"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log:
    get:
      tags:
      - "Call Log"
      summary: "List User Call Records"
      description: "Returns call log records filtered by parameters specified."
      operationId: "readUserCallLog"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallLogExtensionNumber"
      - $ref: "#/components/parameters/CallLogPhoneNumber"
      - $ref: "#/components/parameters/CallLogShowBlocked"
      - $ref: "#/components/parameters/CallDirection"
      - $ref: "#/components/parameters/CallLogSessionId"
      - $ref: "#/components/parameters/CallType"
      - $ref: "#/components/parameters/CallTransportType"
      - $ref: "#/components/parameters/CallLogView"
      - $ref: "#/components/parameters/CallLogWithRecording"
      - $ref: "#/components/parameters/CallRecordingType"
      - $ref: "#/components/parameters/CallLogDateTo"
      - $ref: "#/components/parameters/CallLogDateFrom"
      - $ref: "#/components/parameters/CallLogTelephonySessionId"
      - name: "page"
        in: "query"
        description: "Indicates the page number to retrieve. Only positive number values are allowed"
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          default: 1
      - name: "perPage"
        in: "query"
        description: |
          Indicates the page size (number of items). The default value is 100.
          The maximum value for `Simple` view is 1000, for `Detailed` view - 250
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          default: 100
      - name: "showDeleted"
        in: "query"
        description: "Indicates that deleted calls records should be returned"
        schema:
          type: "boolean"
          default: false
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogResponse"
        "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-feature: "ReadExtensionCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
    delete:
      tags:
      - "Call Log"
      summary: "Delete User Call Records"
      description: "Deletes filtered call log records."
      operationId: "deleteUserCallLog"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "dateTo"
        in: "query"
        description: |
          The time boundary to delete all older records in ISO 8601 format including
          timezone, for example *2016-03-10T18:07:52.534Z*. The default value is current time
        schema:
          type: "string"
          format: "date-time"
      responses:
        "204":
          description: "Successful response"
        "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-feature: "EditExtensionCallLog"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditCallLog"
      x-user-permission: "EditCallLog"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log/{callRecordId}:
    get:
      tags:
      - "Call Log"
      summary: "Get User Call Record(s)"
      description: "Returns call log records by ID."
      operationId: "readUserCallRecord"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallRecordId"
      - $ref: "#/components/parameters/CallLogView"
      responses:
        "200":
          description: "Call Log Record"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogRecord"
        "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-feature: "ReadExtensionCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log-sync:
    get:
      tags:
      - "Call Log"
      summary: "Sync User Call Log"
      description: "Synchronizes the user call log records."
      operationId: "syncUserCallLog"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallLogSyncType"
      - name: "syncToken"
        in: "query"
        description: "A `syncToken` value from the previous sync response (for `ISync` mode only, mandatory)"
        schema:
          type: "string"
      - name: "dateFrom"
        in: "query"
        description: |
          The start datetime for resulting records in ISO 8601 format including
          timezone, for example 2016-03-10T18:07:52.534Z. The default value is the
          current moment
        schema:
          type: "string"
          format: "date-time"
      - name: "recordCount"
        in: "query"
        description: |
          For `FSync` mode this parameter is mandatory, it limits the number of records to be returned in response.

          For `ISync` mode this parameter specifies the number of records to extend the sync frame with to the past
          (the maximum number of records is 250)
        schema:
          type: "integer"
          format: "int32"
      - $ref: "#/components/parameters/CallLogStatusGroup"
      - $ref: "#/components/parameters/CallLogView"
      - name: "showDeleted"
        in: "query"
        description: "Supported for `ISync` mode. Indicates that deleted call records should be returned"
        schema:
          type: "boolean"
          default: false
      - $ref: "#/components/parameters/CallLogWithRecording"
      - $ref: "#/components/parameters/CallRecordingType"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogSyncResponse"
        "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-feature: "ReadExtensionCallLog"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/assignable-roles:
    get:
      tags:
      - "Role Management"
      summary: "List Assignable Roles"
      description: "Returns a list of roles which can be assigned to a given extension."
      operationId: "listOfAvailableForAssigningRoles"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          description: "List of roles which can be assigned to a given extension"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RolesCollectionResource"
      x-feature: "EditUsers AND AdvancedPermissionsCapabilities"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/active-calls:
    get:
      tags:
      - "Call Log"
      summary: "List User Active Calls"
      description: |
        Returns records of all extension calls that are in progress, ordered
        by start time in descending order.
      operationId: "listExtensionActiveCalls"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallDirection"
      - $ref: "#/components/parameters/CallLogView"
      - $ref: "#/components/parameters/CallType"
      - $ref: "#/components/parameters/CallTransportType"
      - $ref: "#/components/parameters/ConferenceCallType"
      - name: "page"
        in: "query"
        description: "Indicates the page number to retrieve. Only positive number values are allowed"
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates the page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallLogResponse"
        "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-feature: "ReadExtensionCallLog"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadCallLog"
      x-user-permission: "ReadCallLog"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/caller-id:
    get:
      tags:
      - "User Settings"
      summary: "Get Extension Caller ID"
      description: |
        Returns information on an outbound caller ID of an extension.
      operationId: "readExtensionCallerId"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Caller ID information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionCallerIdInfo"
      x-feature: "ReadOutboundCallerId"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCallerIDSettings"
    put:
      tags:
      - "User Settings"
      summary: "Update Extension Caller ID"
      description: |
        Updates outbound caller ID information of an extension.
      operationId: "updateExtensionCallerId"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionCallerIdInfoRequest"
        required: true
      responses:
        "200":
          description: "Updated caller ID information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ExtensionCallerIdInfo"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditCallerIDSettings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/answering-rule:
    get:
      tags:
      - "Call Handling Rules"
      summary: "List Call Handling Rules"
      description: "Returns call handling rules of an extension."
      operationId: "listAnsweringRules"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "type"
        in: "query"
        description: "Filters custom call handling rules of the extension"
        schema:
          type: "string"
          enum:
          - "Custom"
      - name: "view"
        in: "query"
        schema:
          type: "string"
          default: "Simple"
          enum:
          - "Detailed"
          - "Simple"
      - name: "enabledOnly"
        in: "query"
        description: "If true, then only active call handling rules are returned"
        schema:
          type: "boolean"
          default: false
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserAnsweringRuleList"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensionAnsweringRules"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserAnsweringRules"
    post:
      tags:
      - "Call Handling Rules"
      summary: "Create Call Handling Rule"
      description: "Creates a custom call handling rule for a particular caller ID."
      operationId: "createAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAnsweringRuleRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomAnsweringRuleInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/answering-rule/{ruleId}:
    get:
      tags:
      - "Call Handling Rules"
      summary: "Get Call Handling Rule"
      description: "Returns a call handling rule by ID."
      operationId: "readAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      - name: "showInactiveNumbers"
        in: "query"
        description: "Indicates whether inactive numbers should be returned or not"
        schema:
          type: "boolean"
          default: false
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AnsweringRuleInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensionAnsweringRules"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserAnsweringRules"
    put:
      tags:
      - "Call Handling Rules"
      summary: "Update Call Handling Rule"
      description: "Updates a custom call handling rule for a particular caller ID."
      operationId: "updateAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateAnsweringRuleRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AnsweringRuleInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
    delete:
      tags:
      - "Call Handling Rules"
      summary: "Delete Call Handling Rule"
      description: "Deletes a custom call handling rule by a particular ID."
      operationId: "deleteAnsweringRule"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/CallHandlingRuleId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/company-pager:
    post:
      tags:
      - "Pager Messages"
      summary: "Create Internal Text Message"
      description: "Creates and sends an internal text message (company pager message)."
      operationId: "createInternalTextMessage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateInternalTextMessageRequest"
        required: true
      responses:
        "200":
          description: "Created text message"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetInternalTextMessageInfoResponse"
      x-feature: "PagesSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "InternalMessages"
      x-user-permission: "InternalSMS"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/authz-profile:
    get:
      tags:
      - "User Permissions"
      summary: "Get Authorization Profile"
      description: |
        Returns a list of user permissions granted at authorization procedure.
        Please note: Some permissions may be restricted by extension type.
      operationId: "readAuthorizationProfile"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "targetExtensionId"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "List of user permissions"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthProfileResource"
      x-availability: "High"
      x-throttling-group: "Medium"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/authz-profile/check:
    get:
      tags:
      - "User Permissions"
      summary: "Check User Permission"
      description: "Checks if a certain user permission is activated for a particular extension."
      operationId: "checkUserPermission"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "permissionId"
        in: "query"
        schema:
          type: "string"
      - name: "targetExtensionId"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "Authorization profile resource"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthProfileCheckResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-queues:
    put:
      tags:
      - "Call Queues"
      summary: "Update User Call Queues"
      description: |
        Updates a list of call queues where the user is an agent. This
        is a full update request, which means that if any call queue where the user is
        an agent is not mentioned in request, then the user is automatically removed
        from this queue.
      operationId: "updateUserCallQueues"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserCallQueues"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserCallQueues"
      x-feature: "EditCallQueuePresence"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-user-permission: "EditCallQueuePresence"
      x-app-permission: "EditAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/emergency-locations:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List User Emergency Locations"
      description: "Returns a list of emergency response locations available for the particular extension."
      operationId: "getExtensionEmergencyLocations"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries by the specified substring (search by chassis
          ID, switch name or address) The characters range is 0-64 (if
          empty the filter is ignored)
        schema:
          type: "string"
      - name: "domesticCountryId"
        in: "query"
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by '+'
          sign (ascending order) or '-' sign (descending order). The default
          sorting is by `name`
        schema:
          type: "string"
          default: "+visibility"
          enum:
          - "+name"
          - "+siteName"
          - "+address"
          - "+addressStatus"
          - "+usageStatus"
          - "+visibility"
          - "-name"
          - "-siteName"
          - "-address"
          - "-addressStatus"
          - "-usageStatus"
          - "-visibility"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned
          per one page
        schema:
          format: "int32"
          type: "integer"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive
          number values are supported
        schema:
          type: "integer"
          default: 1
          format: "int32"
      - name: "visibility"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "User emergency location list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationsResource"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create User Emergency Location"
      description: "Creates a personal emergency response location for the current user."
      operationId: "createExtensionEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateUserEmergencyLocationRequest"
        required: true
      responses:
        "200":
          description: "Emergency location information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationResponseResource"
      x-feature: "EmergencyFramework or NewEmergencyCallingFramework"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EmergencyFramework"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/emergency-locations/{locationId}:
    put:
      tags:
      - "Automatic Location Updates"
      summary: "Update User Emergency Location"
      description: |
        Updates a personal emergency response location by the current user or admin.
      operationId: "updateExtensionEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EmergencyLocationRequestResource"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmergencyLocationResponseResource"
      x-feature: "EmergencyFramework or NewEmergencyCallingFramework"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditAccounts"
      x-user-permission: "EmergencyFramework"
    delete:
      tags:
      - "Automatic Location Updates"
      summary: "Delete User Emergency Location"
      description: |
        Deletes a personal emergency response location by ID by
        the current user or admin. Multiple personal emergency response
        locations can be deleted by single API call.
      operationId: "deleteExtensionEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      - name: "validateOnly"
        in: "query"
        description: |
          Flag indicating that only validation of Emergency Response Locations
          to be deleted is required
        required: false
        schema:
          type: "boolean"
      responses:
        "204":
          description: "No content"
      x-feature: "EmergencyFramework or NewEmergencyCallingFramework"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "EmergencyFramework"
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get User Emergency Location"
      description: "Returns a personal emergency response location for the current user."
      operationId: "getExtensionEmergencyLocation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/EmergencyLocationId"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CommonEmergencyLocationResource"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/forwarding-number:
    get:
      tags:
      - "Call Forwarding"
      summary: "List Forwarding Numbers"
      description: |
        Returns the list of extension phone numbers used for call forwarding
        and call flip. The returned list contains all the extension phone numbers
        used for call forwarding and call flip.
      operationId: "listForwardingNumbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionForwardingNumberListResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserForwardingFlipNumbers"
    post:
      tags:
      - "Call Forwarding"
      summary: "Create Forwarding Number"
      description: "Adds a new forwarding number to the forwarding number list."
      operationId: "createForwardingNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateForwardingNumberRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardingNumberInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserForwardingFlipNumbers"
    delete:
      tags:
      - "Call Forwarding"
      summary: "Delete Forwarding Numbers"
      description: "Deletes multiple forwarding numbers from the forwarding number list by IDs."
      operationId: "deleteForwardingNumbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteForwardingNumbersRequest"
        required: true
      responses:
        "204":
          description: "No content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserForwardingFlipNumbers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/forwarding-number/{forwardingNumberId}:
    get:
      tags:
      - "Call Forwarding"
      summary: "Get Forwarding Number"
      description: "Returns a specific forwarding number."
      operationId: "readForwardingNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ForwardingNumberId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardingNumberResource"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserForwardingFlipNumbers"
    put:
      tags:
      - "Call Forwarding"
      summary: "Update Forwarding Number"
      description: "Updates the existing forwarding number from the forwarding number list."
      operationId: "updateForwardingNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ForwardingNumberId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateForwardingNumberRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ForwardingNumberInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserForwardingFlipNumbers"
    delete:
      tags:
      - "Call Forwarding"
      summary: "Delete Forwarding Number"
      description: "Deletes a forwarding number from the forwarding number list by its ID."
      operationId: "deleteForwardingNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ForwardingNumberId"
      responses:
        "204":
          description: "No content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserForwardingFlipNumbers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "List Scheduled Meetings"
      description: |
        Returns a list of user meetings scheduled for the future (meetings
        of 'Instant' type are not included).
      operationId: "listMeetings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK: Scheduled Meeting List"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingsResource"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
    post:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Create Meeting"
      description: "Creates a new meeting."
      operationId: "createMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MeetingRequestResource"
        required: true
      responses:
        "201":
          description: "Created Meeting"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingResponseResource"
      deprecated: true
      x-feature: "EditMeetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting/user-settings:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Meeting User Settings"
      description: "Returns user settings for meetings."
      operationId: "getUserSetting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK: User Setting"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingUserSettingsResponse"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting/{meetingId}:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Meeting Info"
      description: "Returns a particular meeting details by ID"
      operationId: "readMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      responses:
        "200":
          description: "OK: Meeting Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingResponseResource"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
    put:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Update Meeting"
      description: "Modifies a particular meeting"
      operationId: "updateMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MeetingRequestResource"
        required: true
      responses:
        "200":
          description: "OK: Updated Meeting Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingResponseResource"
      deprecated: true
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
    delete:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Delete Meeting"
      description: "Deletes a scheduled meeting."
      operationId: "deleteMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      - name: "occurrenceId"
        in: "query"
        description: "Internal identifier of a recurrent meeting occurrence"
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
      deprecated: true
      x-feature: "EditMeetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
    patch:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Update Meeting"
      description: "Modifies a particular meeting"
      operationId: "patchMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MeetingRequestResource"
        required: true
      responses:
        "200":
          description: "OK: Updated Meeting Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingResponseResource"
      deprecated: true
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting/{meetingId}/end:
    post:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "End Meeting"
      description: "Ends a meeting which is in progress"
      operationId: "endMeeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      responses:
        "204":
          description: "No Content"
      deprecated: true
      x-feature: "EditMeetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting/{meetingId}/invitation:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Meeting Invitation"
      description: "Returns a Meeting Invitation by ID."
      operationId: "readMeetingInvitation"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/MeetingId"
      responses:
        "200":
          description: "OK: Meeting Invitation"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublicMeetingInvitationResponse"
      deprecated: true
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting/service-info:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Meeting Service Info"
      description: "Returns information on dial-in numbers for meetings, support and international dial-in numbers URIs and meeting account information."
      operationId: "readMeetingServiceInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK: Meeting Service Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingServiceInfoResource"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
    patch:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Update Meeting Service Info"
      description: "Updates personal meeting identifier."
      operationId: "updateMeetingServiceInfo"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MeetingServiceInfoRequest"
        required: true
      responses:
        "200":
          description: "OK: Meeting Service Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeetingServiceInfoResource"
      deprecated: true
      x-feature: "EditMeetings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/presence:
    get:
      tags:
      - "Presence"
      summary: "Get User Presence Status"
      description: "Returns the presence status of an extension or several extensions by their ID(s). The `presenceStatus` is returned as Offline \n(the parameters `telephonyStatus`, `message`, `userStatus` and `dndStatus` are not returned at all) for the following extension types: \nDepartment/Announcement Only/Take Messages Only (Voicemail)/Fax User/Paging Only Group/Shared Lines Group/IVR Menu/Application Extension/Park Location.\nIf the user requests his/her own presence status, the response contains actual presence status even if the status publication is turned off.\n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported. For batch requests the number of extensions \nin one request is limited to 30. If more extensions are included in the request, the error code 400 Bad Request is returned with the logical error\ncode InvalidMultipartRequest and the corresponding message Extension Presence Info multipart request is limited to 30 extensions.\n"
      operationId: "readUserPresenceStatus"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "detailedTelephonyState"
        in: "query"
        description: "Specifies whether to return a detailed telephony state or not"
        schema:
          type: "boolean"
      - name: "sipData"
        in: "query"
        description: "Specifies whether to return SIP data or not"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPresenceInfo"
      x-request-max-body-size: "100m"
      x-feature: "ReadPresenceStatus"
      x-throttling-group: "Light"
      x-app-permission: "ReadPresence"
      x-user-permission: "ReadPresenceStatus"
      x-notifications:
      - $ref: "#/components/schemas/ExtensionPresenceEvent"
      - $ref: "#/components/schemas/DetailedExtensionPresenceEvent"
      - $ref: "#/components/schemas/DetailedExtensionPresenceWithSIPEvent"
    put:
      tags:
      - "Presence"
      summary: "Update User Presence Status"
      description: "Updates user-defined extension presence status, status message and DnD status by extension ID. Supported for regular User extensions only. The extension types listed do not support presence status: Department, Announcement Only, Take Messages Only (Voicemail), Fax User, Paging Only Group, Shared Lines Group, IVR Menu, Application Extension."
      operationId: "updateUserPresenceStatus"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PresenceInfoRequest"
        required: false
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PresenceInfoResponse"
      x-request-max-body-size: "100m"
      x-feature: "EditPresenceStatus"
      x-throttling-group: "Medium"
      x-app-permission: "EditPresence"
      x-notifications:
      - $ref: "#/components/schemas/IncomingCallEvent"
      - $ref: "#/components/schemas/MissedCallEvent"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/fax:
    post:
      tags:
      - "Fax"
      summary: "Create Fax Message"
      description: |
        Creates and sends/re-sends a fax message. Re-send can be implemented
        if sending has failed. Fax attachment size (both single and total) is
        limited to 50Mb.
      operationId: "createFaxMessage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "attachment"
              - "to"
              properties:
                attachment:
                  type: "string"
                  description: "File to upload"
                  format: "binary"
                faxResolution:
                  $ref: "#/components/schemas/FaxResolutionEnum"
                to:
                  type: "array"
                  description: "Recipient's phone number(s)"
                  items:
                    $ref: "#/components/schemas/FaxRequestTo"
                sendTime:
                  type: "string"
                  description: |
                    Timestamp to send a fax at. If not specified, current or the past
                    a fax message is sent immediately
                  format: "date-time"
                isoCode:
                  type: "string"
                  description: "Alpha-2 ISO Code of a country"
                  example: "US"
                coverIndex:
                  type: "integer"
                  description: |
                    Cover page identifier. If `coverIndex` is set to '0' (zero) a cover page
                    is not attached. For a list of available cover page identifiers (1-13)
                    please call the Fax Cover Pages method. If not specified, the default cover
                    page is attached (which is configured in 'Outbound Fax Settings')
                  format: "int32"
                coverPageText:
                  type: "string"
                  description: |
                    Cover page text, entered by a fax sender and printed
                    on a cover page. Maximum length is limited to 1024 symbols
                  maxLength: 1024
        required: true
      responses:
        "200":
          description: "Fax message"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FaxResponse"
      x-request-max-body-size: "55m"
      x-feature: "FaxSending"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "Faxes"
      x-user-permission: "OutboundFaxes"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/ring-out:
    post:
      tags:
      - "RingOut"
      summary: "Make RingOut Call"
      description: "Makes a 2-legged RingOut call."
      operationId: "createRingOutCall"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MakeRingOutRequest"
        required: true
      responses:
        "200":
          description: "Ring out call information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetRingOutStatusResponse"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "RingOut"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/ring-out/{ringoutId}:
    get:
      tags:
      - "RingOut"
      summary: "Get RingOut Call Status"
      description: "Returns a status of a 2-legged RingOut call."
      operationId: "readRingOutCallStatus"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "ringoutId"
        in: "path"
        description: "Internal identifier of a RingOut call"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "RingOut call status information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetRingOutStatusResponse"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "RingOut"
    delete:
      tags:
      - "RingOut"
      summary: "Cancel RingOut Call"
      description: "Cancels a 2-legged RingOut call."
      operationId: "deleteRingOutCall"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "ringoutId"
        in: "path"
        description: "Internal identifier of a RingOut call"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No content"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "RingOut"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/administered-sites:
    get:
      tags:
      - "Site Administration"
      summary: "List User Administered Sites"
      description: "Returns a list of sites administered by the current user."
      operationId: "listAdministeredSites"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "List of user administered sites"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessSiteCollectionResource"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
    put:
      tags:
      - "Site Administration"
      summary: "Update User Administered Sites"
      operationId: "updateUserAdministeredSites"
      description: |
        Updates the sites administered by the current user.
        Please note: Only IDs of records are used for update.
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BusinessSiteCollectionRequest"
        required: true
      responses:
        "200":
          description: "Updated list of user administered sites"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessSiteCollectionResource"
      x-feature: "EditAssignedRoles"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "EditAssignedRoles"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact:
    get:
      tags:
      - "External Contacts"
      summary: "List Contacts"
      description: |
        Returns the user personal contacts.
      operationId: "listContacts"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "startsWith"
        in: "query"
        description: |
          If specified, only contacts which 'First name' or 'Last name' start
          with the mentioned substring will be returned. Case-insensitive
        schema:
          type: "string"
      - name: "sortBy"
        in: "query"
        description: "Sorts results by the specified property"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "FirstName"
            - "LastName"
            - "Company"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "phoneNumber"
        in: "query"
        description: "Phone number in e.164 format"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "Contact list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContactList"
      x-feature: "ReadPersonalContacts"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadContacts"
      x-user-permission: "ReadPersonalContacts"
    post:
      tags:
      - "External Contacts"
      summary: "Create User Contact"
      description: |
        Creates the user personal contact.
      operationId: "createContact"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "dialingPlan"
        in: "query"
        description: |
          Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          format. The default value is home country of the current extension
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PersonalContactRequest"
        required: true
      responses:
        "200":
          description: "Created contact information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalContactResource"
        "400":
          description: "Contact cannot be created: max contacts count reached ($limit)"
      x-feature: "EditPersonalContacts"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact/{contactId}:
    get:
      tags:
      - "External Contacts"
      summary: "Get User Contact(s)"
      description: "Returns the user personal contact(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
      operationId: "readContact"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ContactIds"
      responses:
        "200":
          description: "User personal contact(s) information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalContactResource"
      x-feature: "ReadPersonalContacts"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadContacts"
      x-user-permission: "ReadPersonalContacts"
    put:
      tags:
      - "External Contacts"
      summary: "Update User Contact(s)"
      description: "Updates the user personal contact(s) (full resource update). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
      operationId: "updateContact"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ContactIds"
      - name: "dialingPlan"
        in: "query"
        description: "Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. \nThe default value is home country of the current extension\n"
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PersonalContactRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalContactResource"
      x-feature: "EditPersonalContacts"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
    patch:
      tags:
      - "External Contacts"
      summary: "Update Contact Attributes"
      description: |
        Updates particular values of a personal contact attributes specified in request (partial resource update). Omitted attributes will remain unchanged.
        If any attribute is passed in request body with the null value, then this attribute value will be removed.
      operationId: "patchContact"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ContactId"
      - name: "dialingPlan"
        in: "query"
        description: |
          Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          format. The default value is home country of the current extension
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PersonalContactRequest"
        required: true
      responses:
        "200":
          description: "Edited personal contact information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PersonalContactResource"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
    delete:
      tags:
      - "External Contacts"
      summary: "Delete User Contact(s)"
      description: "Deletes the user personal contact(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
      operationId: "deleteContact"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/ContactIds"
      responses:
        "204":
          description: "No Content"
      x-feature: "EditPersonalContacts"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "Contacts"
      x-user-permission: "EditPersonalContacts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meetings-configuration/assisted:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Assisted Users"
      description: "Returns assisted users information."
      operationId: "readAssistedUsers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Assisted User Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssistedUsersResource"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meetings-configuration/assistants:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "Get Assistants"
      description: "Returns assistants information."
      operationId: "readAssistants"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK: Assistants Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssistantsResource"
      deprecated: true
      x-feature: "Meetings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-user-permission: "Meetings"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/sms:
    post:
      tags:
      - "SMS"
      summary: "Send SMS"
      description: |
        Creates and sends a new text message or multiple messages. You can send SMS
        messages simultaneously to different recipients up to 40 requests per minute;
        this limitation is relevant for all client applications. Sending and receiving
        SMS is available for Toll-Free Numbers within the USA. You can send up to
        10 attachments in a single MMS message; the size of all attachments linked
        is limited up to 1500000 bytes.
      operationId: "createSMSMessage"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSMSMessage"
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/CreateSMSMessage"
          multipart/mixed:
            schema:
              $ref: "#/components/schemas/CreateSMSMessage"
        required: true
      responses:
        "200":
          description: "Message information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetSMSMessageInfoResponse"
      x-request-max-body-size: "10m"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "SMS"
      x-user-permission: "OutboundSMS"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/assigned-role:
    get:
      tags:
      - "Role Management"
      summary: "List User Assigned Roles"
      description: "Returns a list of roles assigned to the current extension."
      operationId: "listUserAssignedRoles"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "showHidden"
        in: "query"
        description: "Specifies if hidden roles are shown or not"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "List of roles assigned to an extension"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssignedRolesResource"
      x-feature: "ReadAssignedRoles"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadAssignedRoles"
    put:
      tags:
      - "Role Management"
      summary: "Update User Assigned Roles"
      description: "Updates a list of roles assigned to the current user."
      operationId: "updateUserAssignedRoles"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssignedRolesResource"
        required: true
      responses:
        "200":
          description: "Updated list of roles assigned to an extension"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssignedRolesResource"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
      x-user-permission: "EditAssignedRoles"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/assigned-role/default:
    put:
      tags:
      - "Role Management"
      summary: "Assign Default Role"
      description: "Assigns the default role to the currently logged-in user extension."
      operationId: "assignDefaultRole"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Assigned user role information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssignedRolesResource"
      x-feature: "EditUsers"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "RoleManagement"
      x-user-permission: "Users"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/meeting-recordings:
    get:
      tags:
      - "RCM Meetings (Legacy)"
      summary: "List User Meeting Recordings"
      description: "Returns the list of meetings recordings for the current user."
      operationId: "listUserMeetingRecordings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "meetingId"
        in: "query"
        description: "Internal identifier of a meeting. Either `meetingId` or `meetingStartTime`/`meetingEndTime` can be specified"
        schema:
          type: "string"
      - name: "meetingStartTimeFrom"
        in: "query"
        description: "Recordings of meetings started after the time specified will be returned. Either `meetingId` or `meetingStartTime`/`meetingEndTime` can be specified"
        schema:
          type: "string"
          format: "date-time"
      - name: "meetingStartTimeTo"
        in: "query"
        description: "Recordings of meetings started before the time specified will be returned. The default value is current time. Either `meetingId` or `meetingStartTime`/`meetingEndTime` can be specified"
        schema:
          type: "string"
          format: "date-time"
      - name: "page"
        in: "query"
        description: "Page number"
        schema:
          type: "integer"
          format: "int32"
      - name: "perPage"
        in: "query"
        description: "Number of items per page. The `max` value is supported to indicate the maximum size - 300"
        schema:
          maximum: 300
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListMeetingRecordingsResponse"
      deprecated: true
      x-feature: "MeetingsPersonalRecordings"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "Meetings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/notification-settings:
    get:
      tags:
      - "User Settings"
      summary: "Get Notification Settings"
      description: |
        Returns notification settings for the current extension.

        Knowledge Article: [User Settings - Set Up Message Notifications](https://success.ringcentral.com/articles/RC_Knowledge_Article/9740)
      operationId: "readNotificationSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "Notification settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSettings"
      x-feature: "ReadMessageAndNotificationSettings"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadMessagesNotificationsSettings"
    put:
      tags:
      - "User Settings"
      summary: "Update Notification Settings"
      description: |
        Updates notification settings for the current extension.
        Knowledge Article: [User Settings - Set Up Message Notifications](https://success.ringcentral.com/articles/RC_Knowledge_Article/9740)
      operationId: "updateNotificationSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationSettingsUpdateRequest"
        required: true
      responses:
        "200":
          description: "Updated notification settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSettings"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditMessagesNotificationsSettings"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/mms:
    post:
      tags:
      - "SMS"
      summary: "Send MMS"
      description: |
        Creates and sends a new media message or multiple messages. Sending MMS
        messages simultaneously to different recipients is limited up to 50
        requests per minute; relevant for all client applications.
      operationId: "createMMS"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "MMS envelope and content"
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/CreateMMSMessage"
          multipart/mixed:
            schema:
              $ref: "#/components/schemas/CreateMMSMessage"
        required: true
      responses:
        "200":
          description: "MMS message (envelope and content)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetSMSMessageInfoResponse"
      x-request-max-body-size: "10m"
      x-feature: "SMSSending"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "SMS"
      x-user-permission: "OutboundSMS"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/features:
    get:
      tags:
      - "Features"
      summary: "Get User Features"
      description: |
        Returns a list of supported features and the information on their
        availability for the current extension. Particular feature(s) can
        be checked by providing `featureId` query parameter. Multiple values
        are supported in the format: `?featureId=Feature1&featureId=Feature2`.
        To get only available features in order to decrease response size,
        `availableOnly=true` query param can be specified. If a feature
        is available for the current user, `"available": true` is returned in
        response for the record with the corresponding feature ID. Otherwise,
        the additional attribute `reason` is returned with the appropriate code:
        - `ServicePlanLimitation` -  a feature is not included in account service plan;
        - `AccountLimitation` - a feature is turned off for account;
        - `ExtensionTypeLimitation` - a feature is not applicable for extension type;
        - `ExtensionLimitation` - a feature is not available for extension, e.g., additional license required;
        - `InsufficientPermissions` - required permission is not granted to the current user (not the one, who is specified in the URL, but the one who is calling this API);
        - `ConfigurationLimitation` - a feature is turned off for extension, e.g., by account administrator.

        Also, some features may have additional parameters, e.g. limits, which are returned in `params` attribute as a name-value collection:

            {
              "id": "HUD",
              "available": true,
              "params": [
                {
                  "name": "limitMax",
                  "value": "100"
                }
              ]
            }
      operationId: "readExtensionFeatures"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "availableOnly"
        in: "query"
        description: |
          Allows to filter features by availability for an extension
        schema:
          type: "boolean"
          default: false
      - name: "featureId"
        in: "query"
        description: "Internal identifier(s) of the feature(s)"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "Feature list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FeatureList"
      x-feature: "ReadExtensions"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadExtensions"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store:
    get:
      tags:
      - "Message Store"
      summary: "List Messages"
      description: "Returns a list of messages from an extension mailbox."
      operationId: "listMessages"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "availability"
        in: "query"
        description: |
          Specifies the availability status for resulting messages.
          Multiple values are accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageAvailabilityEnum"
      - name: "conversationId"
        in: "query"
        description: "Specifies a conversation identifier for the resulting messages"
        schema:
          type: "string"
      - name: "dateFrom"
        in: "query"
        description: |
          Start date/time for resulting messages in ISO 8601 format
          including timezone, for example 2016-03-10T18:07:52.534Z. The default value
          is dateTo minus 24 hours
        schema:
          type: "string"
          format: "date-time"
      - name: "dateTo"
        in: "query"
        description: |
          End date/time for resulting messages in ISO 8601 format including
          timezone, for example 2016-03-10T18:07:52.534Z. The default value is current
          time
        schema:
          type: "string"
          format: "date-time"
      - name: "direction"
        in: "query"
        description: |
          Direction for resulting messages. If not specified, both
          inbound and outbound messages are returned. Multiple values are accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageDirectionEnum"
      - name: "distinctConversations"
        in: "query"
        description: |
          If `true`, then the latest messages per every conversation ID
          are returned
        schema:
          type: "boolean"
      - name: "messageType"
        in: "query"
        description: |
          Type of resulting messages. If not specified, all messages
          without message type filtering are returned. Multiple values are accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageTypeEnum"
      - name: "readStatus"
        in: "query"
        description: |
          Read status for resulting messages. Multiple values are
          accepted
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            $ref: "#/components/schemas/MessageReadStatusEnum"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "phoneNumber"
        in: "query"
        description: |
          Phone number. If specified, messages are returned for this
          particular phone number only
        schema:
          type: "string"
      responses:
        "200":
          description: "Message list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessageList"
      x-feature: "ReadMessages"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadMessages"
      x-user-permission: "ReadMessages"
      x-notifications:
      - $ref: "#/components/schemas/InboundMessageEvent"
      - $ref: "#/components/schemas/InstantMessageEvent"
      - $ref: "#/components/schemas/MessageEvent"
    delete:
      tags:
      - "Message Store"
      summary: "Delete Conversation"
      description: |
        Deletes conversation(s) by conversation ID(s). Batch request is
        supported, max number of IDs passed as query/path parameters is 50. Alternative
        syntax is supported - user conversations can be deleted by passing multiple
        IDs in request body as an array of string, max number of conversation IDs
        passed in request body is 100. In this case asterisk is used in the path instead
        of IDs
      operationId: "deleteMessageByFilter"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "conversationId"
        in: "query"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
      - name: "dateTo"
        in: "query"
        description: |
          Messages received earlier then the date specified will be deleted.
          The default value is current date/time
        schema:
          type: "string"
          format: "date-time"
      - name: "type"
        in: "query"
        description: "Type of messages to be deleted"
        schema:
          type: "string"
          default: "All"
          enum:
          - "Fax"
          - "SMS"
          - "VoiceMail"
          - "Pager"
          - "Text"
          - "All"
      responses:
        "204":
          description: "No content"
      x-feature: "EditMessages"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditMessages"
      x-user-permission: "EditMessages"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}:
    parameters:
    - $ref: "#/components/parameters/AccountId"
    - $ref: "#/components/parameters/ExtensionId"
    - name: "messageId"
      in: "path"
      description: "Internal identifier of a message (or multiple messages in case of bulk operation)"
      required: true
      schema:
        type: "array"
        minItems: 1
        items:
          type: "string"
          example: "8930983240"
    get:
      tags:
      - "Message Store"
      summary: "Get Message(s)"
      description: |
        Returns an individual message record or multiple records by the given message ID(s).
        The length of inbound messages is unlimited. Bulk syntax is supported.
      operationId: "readMessage"
      responses:
        "200":
          description: "Successful response (single message)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessageInfoResponse"
        "207":
          description: "Successful response (multiple messages via bulk syntax)"
          content:
            application/vnd.ringcentral.multipart+json:
              schema:
                $ref: "#/components/schemas/GetMessageMultiResponse"
            multipart/mixed:
              schema:
                type: "string"
      x-feature: "ReadMessages"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadMessages"
      x-user-permission: "ReadMessages"
      x-notifications:
      - $ref: "#/components/schemas/VoicemailMessageEvent"
    put:
      tags:
      - "Message Store"
      summary: "Update Message(s)"
      description: |
        Updates message(s) by their ID(s). Currently, only the `readStatus`
        can be updated using this method.

        Bulk syntax is supported, max number of IDs passed as query/path
        parameters is 50. Alternative bulk syntax is also supported - user messages can be updated
        by passing multiple IDs in request body as an array of string, max number
        of IDs passed in the body is 1000. In this case asterisk is used in the
        path instead of IDs.
      operationId: "updateMessage"
      requestBody:
        description: "Request body (different formats for regular and bulk syntax)"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateMessageRequest"
          application/vnd.ringcentral.multipart+json:
            schema:
              $ref: "#/components/schemas/UpdateMessageBulkRequest"
          multipart/mixed:
            schema:
              type: "string"
        required: true
      responses:
        "200":
          description: "Successful response (single message)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessageInfoResponse"
        "207":
          description: "Successful response (multiple messages via bulk syntax)"
          content:
            application/vnd.ringcentral.multipart+json:
              schema:
                $ref: "#/components/schemas/GetMessageMultiResponse"
            multipart/mixed:
              schema:
                type: "string"
      x-feature: "EditMessages"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditMessages"
      x-user-permission: "EditMessages"
    patch:
      tags:
      - "Message Store"
      summary: "Patch Message(s)"
      description: |
        Patches message(s) by ID(s). Currently, only updating the `readStatus` and
        restoring deleted messages are supported through this method.

        For changing status of a message send `readStatus` set to either 'Read' or 'Unread' in request.
        It is possible to restore a message and its attachments (if message status is 'Deleted') by sending
        `availability` attribute set to 'Alive' in request body. If a message is already in 'Purged' state
        then its attachments cannot be restored and the message itself is about to be physically deleted.

        Bulk syntax (both traditional and alternative one) is supported.
      operationId: "patchMessage"
      requestBody:
        description: "Request body (different formats for regular and bulk syntax)"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PatchMessageRequest"
          application/vnd.ringcentral.multipart+json:
            schema:
              $ref: "#/components/schemas/PatchMessageBulkRequest"
          multipart/mixed:
            schema:
              type: "string"
        required: true
      responses:
        "200":
          description: "Successful response (single message)"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessageInfoResponse"
        "207":
          description: "Successful response (multiple messages via bulk syntax)"
          content:
            application/vnd.ringcentral.multipart+json:
              schema:
                $ref: "#/components/schemas/GetMessageMultiResponse"
            multipart/mixed:
              schema:
                type: "string"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditMessages"
      x-user-permission: "EditMessages"
    delete:
      tags:
      - "Message Store"
      summary: "Delete Message"
      description: |
        Deletes message(s) by the given message ID(s). The first call of
        this method transfers the message to the 'Delete' status. The second call
        transfers the deleted message to the 'Purged' status. If it is required to
        make the message 'Purged' immediately (from the first call), then set the
        query parameter purge to `true`.
      operationId: "deleteMessage"
      parameters:
      - name: "purge"
        in: "query"
        description: |
          If the value is `true`, then the message is purged immediately
          with all the attachments
        schema:
          type: "boolean"
          default: false
      requestBody:
        required: false
        description: "Request body (only supported with alternative bulk syntax when `messageId` is set to '*' in the path)"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteMessageBulkRequest"
      responses:
        "204":
          description: "No content"
      x-feature: "EditMessages"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditMessages"
      x-user-permission: "EditMessages"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/greeting:
    post:
      tags:
      - "Greetings"
      summary: "Create Custom User Greeting"
      description: "Creates custom greeting for an extension user."
      operationId: "createCustomUserGreeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "apply"
        in: "query"
        description: |
          Specifies whether to apply an answering rule or not. If set to
          true then `answeringRule` parameter is mandatory. If set to false, then
          the answering rule is not applied even if specified
        schema:
          type: "boolean"
          default: true
      requestBody:
        content:
          multipart/mixed:
            schema:
              type: "object"
              required:
              - "answeringRule"
              - "binary"
              - "type"
              properties:
                type:
                  type: "string"
                  description: "Type of greeting, specifying the case when the greeting is played."
                  enum:
                  - "Introductory"
                  - "Announcement"
                  - "ConnectingMessage"
                  - "ConnectingAudio"
                  - "Voicemail"
                  - "Unavailable"
                  - "HoldMusic"
                  - "TemplateGreeting"
                answeringRule:
                  $ref: "#/components/schemas/AnsweringRuleQueryRequest"
                binary:
                  type: "string"
                  description: "Media file to upload"
                  format: "binary"
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "answeringRuleId"
              - "binary"
              - "type"
              properties:
                type:
                  type: "string"
                  description: "Type of greeting, specifying the case when the greeting is played."
                  enum:
                  - "Introductory"
                  - "Announcement"
                  - "ConnectingMessage"
                  - "ConnectingAudio"
                  - "Voicemail"
                  - "Unavailable"
                  - "HoldMusic"
                  - "TemplateGreeting"
                answeringRuleId:
                  type: "string"
                  description: "Internal identifier of an answering rule"
                binary:
                  type: "string"
                  description: "Media file to upload"
                  format: "binary"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomUserGreetingInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditExtensionAnsweringRules"
      x-request-max-body-size: "20m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditUserAnsweringRules"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/greeting/{greetingId}:
    get:
      tags:
      - "Greetings"
      summary: "Get Custom Greeting"
      description: "Returns a custom user greeting by ID."
      operationId: "readCustomGreeting"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/GreetingId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomUserGreetingInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadExtensionInfo"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserInfo"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/unified-presence:
    get:
      tags:
      - "Presence"
      summary: "Get Unified Presence"
      description: "Returns the unified presence status of the requested user(s). The set of parameters returned by this method differs whether you return the requester's presence or any other user presence."
      operationId: "readUnifiedPresence"
      parameters:
      - name: "accountId"
        in: "path"
        description: "Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session"
        required: true
        schema:
          type: "string"
          default: "~"
      - name: "extensionId"
        in: "path"
        description: "Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session"
        required: true
        schema:
          type: "string"
          default: "~"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UnifiedPresence"
        "207":
          description: "Multi-Status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UnifiedPresenceList"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Resource not found"
      x-throttling-group: "Medium"
      x-app-permission: "ReadPresence"
      x-user-permission: "ReadPresenceStatus"
    patch:
      tags:
      - "Presence"
      summary: "Update Unified Presence"
      description: "Updates the unified presence for the current user specified in path."
      operationId: "updateUnifiedPresence"
      parameters:
      - name: "accountId"
        in: "path"
        description: "Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session"
        required: true
        schema:
          type: "string"
          default: "~"
      - name: "extensionId"
        in: "path"
        description: "Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session"
        required: true
        schema:
          type: "string"
          default: "~"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateUnifiedPresence"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UnifiedPresence"
        "400":
          description: "Some of parameters are missing or have invalid format"
        "403":
          description: "User is not allowed to do this action"
        "404":
          description: "Resource not found"
      x-throttling-group: "Medium"
      x-app-permission: "EditPresence"
      x-user-permission: "EditPresenceStatus"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/caller-blocking:
    get:
      tags:
      - "Call Blocking"
      summary: "Get Caller Blocking Settings"
      description: "Returns the current caller blocking settings of a user."
      operationId: "readCallerBlockingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallerBlockingSettings"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadBlockedNumbers"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadBlockedNumbers"
    put:
      tags:
      - "Call Blocking"
      summary: "Update Caller Blocking Settings"
      description: "Updates the current caller blocking settings of a user."
      operationId: "updateCallerBlockingSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallerBlockingSettingsUpdate"
        required: false
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallerBlockingSettings"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Light"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditBlockedNumbers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/caller-blocking/phone-numbers:
    get:
      tags:
      - "Call Blocking"
      summary: "List Blocked/Allowed Phone Numbers"
      description: "Returns the lists of blocked and allowed phone numbers."
      operationId: "listBlockedAllowedNumbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "status"
        in: "query"
        schema:
          $ref: "#/components/schemas/BlockedNumberStatusEnum"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BlockedAllowedPhoneNumbersList"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "ReadBlockedNumbers"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadBlockedNumbers"
    post:
      tags:
      - "Call Blocking"
      summary: "Add Blocked/Allowed Number"
      description: "Updates either blocked or allowed phone number list with a new phone number."
      operationId: "createBlockedAllowedNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddBlockedAllowedPhoneNumber"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BlockedAllowedPhoneNumberInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-feature: "EditBlockedNumbers"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditBlockedNumbers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/caller-blocking/phone-numbers/{blockedNumberId}:
    get:
      tags:
      - "Call Blocking"
      summary: "Get Blocked/Allowed Number"
      description: "Returns blocked or allowed phone number(s) by their ID(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
      operationId: "readBlockedAllowedNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/BlockedNumberId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BlockedAllowedPhoneNumberInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadBlockedNumbers"
    put:
      tags:
      - "Call Blocking"
      summary: "Update Blocked/Allowed Number"
      description: "Updates blocked or allowed phone number(s) by their ID(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
      operationId: "updateBlockedAllowedNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/BlockedNumberId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddBlockedAllowedPhoneNumber"
        required: false
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BlockedAllowedPhoneNumberInfo"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditBlockedNumbers"
    delete:
      tags:
      - "Call Blocking"
      summary: "Delete Blocked/Allowed Number"
      description: "Deletes blocked or allowed phone number(s) by their ID(s). Batch request is supported."
      operationId: "deleteBlockedAllowedNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - $ref: "#/components/parameters/BlockedNumberId"
      responses:
        "204":
          description: "No Content"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "Limited"
      x-throttling-group: "Medium"
      x-app-permission: "EditExtensions"
      x-user-permission: "EditBlockedNumbers"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book-sync:
    get:
      tags:
      - "External Contacts"
      summary: "Address Book Synchronization"
      description: |
        Synchronizes user contacts.
      operationId: "syncAddressBook"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "syncType"
        in: "query"
        description: "Type of synchronization"
        schema:
          type: "string"
          enum:
          - "FSync"
          - "ISync"
      - name: "syncToken"
        in: "query"
        description: |
          Value of syncToken property of the last sync request response
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Number of records per page to be returned. Max number of
          records is 250, which is also the default.
          For 'FSync' - if the number of records exceeds the parameter value
          (either specified or default), all of the pages can be retrieved
          in several requests. For 'ISync' - if the number of records exceeds
          page size, then the number of incoming changes to this
          number is limited
        schema:
          type: "integer"
          format: "int32"
      - name: "pageId"
        in: "query"
        description: |
          Internal identifier of a page. It can be obtained from the 'nextPageId'
          parameter passed in response body
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Synchronized user contacts"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddressBookSync"
      x-feature: "ReadPersonalContacts"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadContacts"
      x-user-permission: "ReadPersonalContacts"
  /restapi/v1.0/account/{accountId}/extension/{extensionId}/phone-number:
    get:
      tags:
      - "Phone Numbers"
      summary: "Get Extension Phone Number List"
      description: |
        Returns the list of phone numbers that are used by a particular extension,
        can be filtered by the phone number type. The returned list contains all
        numbers which are directly mapped to the given extension. Plus the features
        and company-level numbers that may be used when performing different operations
        on behalf of this extension.
      operationId: "listExtensionPhoneNumbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/ExtensionId"
      - name: "status"
        in: "query"
        description: "Status of a phone number"
        schema:
          type: "string"
          enum:
          - "Normal"
          - "Pending"
          - "PortedIn"
          - "Temporary"
      - name: "usageType"
        in: "query"
        description: "Usage type of phone number"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "MainCompanyNumber"
            - "AdditionalCompanyNumber"
            - "CompanyNumber"
            - "DirectNumber"
            - "CompanyFaxNumber"
            - "ForwardedNumber"
            - "ForwardedCompanyNumber"
            - "BusinessMobileNumber"
            - "PartnerBusinessMobileNumber"
            - "IntegrationNumber"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed. Default value is '1'
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items). If not specified, the value is '100' by default"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "OK: User Phone Number List"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetExtensionPhoneNumbersResponse"
      x-feature: "ReadExtensionPhoneNumbers"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadUserPhoneNumbers"
  /restapi/v1.0/account/{accountId}/extension/{callQueueId}/overflow-settings:
    get:
      tags:
      - "Call Queues"
      summary: "Get Call Queue Overflow Settings"
      description: "Returns overflow settings for a call queue specified in path."
      operationId: "getCallQueueOverflowSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "callQueueId"
        in: "path"
        description: "Internal identifier of a call queue"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Call queue overflow settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueueOverflowSettings"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
      x-user-permission: "CallQueueToCallQueue"
    put:
      tags:
      - "Call Queues"
      summary: "Update Call Queue Overflow Settings"
      description: "Updates overflow settings for a call queue specified in path."
      operationId: "updateCallQueueOverflowSettings"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "callQueueId"
        in: "path"
        description: "Internal identifier of a call queue"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CallQueueOverflowSettingsRequestResource"
        required: true
      responses:
        "200":
          description: "Updated call queue overflow settings"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CallQueueOverflowSettings"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditExtensions"
      x-user-permission: "CallQueueToCallQueue"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/tasks/{taskId}:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Emergency Map Configuration Task"
      description: |
        Returns results of the task created within the frame of Automatic
        Location Updates feature. Currently four task types are supported: 'Wireless
        Points Bulk Create', 'Wireless Points Bulk Update', 'Switches Bulk Create',
        'Switches Bulk Update'.
      operationId: "readAutomaticLocationUpdatesTask"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "taskId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Task information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomaticLocationUpdatesTaskInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/users:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List Users"
      description: |
        Returns a list of users with their status of Automatic Location
        Updates feature.
      operationId: "listAutomaticLocationUpdatesUsers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "type"
        in: "query"
        description: "Extension type. Multiple values are supported"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "User"
            - "Limited"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries containing the specified substring in user name,
          extension or department. The characters range is 0-64; not case-sensitive.
          If empty then the filter is ignored
        schema:
          type: "string"
      - name: "department"
        in: "query"
        description: |
          Department name to filter the users. The value range is 0-64;
          not case-sensitive. If not specified then the parameter is ignored. Multiple
          values are supported
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "featureEnabled"
        in: "query"
        description: |
          Filters entries by their status of Automatic Location Updates
          feature
        schema:
          type: "boolean"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by
          plus sign '+' (ascending order) or minus sign '-' (descending order).
          Supported values: 'name', 'modelName', 'siteName', 'featureEnabled'.
          The default sorting is by `name`
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned per one
          page
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "User list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomaticLocationUpdatesUserList"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/users/bulk-assign:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Enable Automatic Location Updates for Users"
      description: |
        Enables or disables Automatic Location Updates feature for multiple
        account users.
      operationId: "assignMultipleAutomaticLocationUpdatesUsers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EmergencyAddressAutoUpdateUsersBulkAssignResource"
        required: false
      responses:
        "204":
          description: "No content"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/wireless-points-bulk-create:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create Multiple Wireless Points"
      description: |
        Creates multiple wireless points in a corporate map. The maximum
        number of wireless points per request is 10 000; limitation for account is
        70 000.
      operationId: "createMultipleWirelessPoints"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateMultipleWirelessPointsRequest"
        required: true
      responses:
        "202":
          description: "Multiple Wireless Points Creation Task"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateMultipleWirelessPointsResponse"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/networks:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Network Map"
      description: |
        Returns a corporate network map with emergency addresses assigned
        to the current account.
      operationId: "listNetworks"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries by the specified substring (search by chassis
          ID, switch name or address) The characters range is 0-64 (if empty the filter
          is ignored)
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by '+'
          sign (ascending order) or '-' sign (descending order). The default
          sorting is by `name`
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned per one
          page'
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "Network map"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NetworksList"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create Network"
      description: |
        Creates a new network in a corporate ethernet map for assignment
        of emergency addresses to network access points.
      operationId: "createNetwork"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateNetworkRequest"
        required: true
      responses:
        "200":
          description: "Created network"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NetworkInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/networks/{networkId}:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Network"
      description: |
        Returns the specified network with emergency addresses assigned
        to the current account.
      operationId: "readNetwork"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "networkId"
        in: "path"
        required: true
        description: "Internal identifier of a network"
        schema:
          type: "string"
      responses:
        "200":
          description: "Network information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NetworkInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    put:
      tags:
      - "Automatic Location Updates"
      summary: "Update Network"
      description: |
        Updates a network in a corporate ethernet map for assignment of emergency
        addresses to network access points.
      operationId: "updateNetwork"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "networkId"
        in: "path"
        required: true
        description: "Internal identifier of a network"
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateNetworkRequest"
        required: true
      responses:
        "200":
          description: "Updated network information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NetworkInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    delete:
      tags:
      - "Automatic Location Updates"
      summary: "Delete Network"
      description: |
        Deletes network(s) in a corporate ethernet map for Automatic Location
        Updates feature.
      operationId: "deleteNetwork"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "networkId"
        in: "path"
        required: true
        description: "Internal identifier of a network"
        style: "simple"
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "204":
          description: "No content"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/switches-bulk-validate:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Validate Multiple Switches"
      description: |
        Validates switches before creation or update. The maximum number
        of switches per request is 10 000.
      operationId: "validateMultipleSwitches"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ValidateMultipleSwitchesRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidateMultipleSwitchesResponse"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/switches:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List Account Switches"
      description: |
        Returns a corporate map of configured network switches with the assigned
        emergency addresses for the logged-in account.
      operationId: "listAccountSwitches"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries by the specified substring (search by chassis
          ID, switch name or address) The characters range is 0-64 (if empty the filter
          is ignored)
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by '+'
          sign (ascending order) or '-' sign (descending order). The default
          sorting is by `name`
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned per one
          page'
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "Switches Map"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwitchesList"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create Switch"
      description: |
        Creates a new switch in corporate map based on chassis ID and used
        for Automatic Locations Update feature.
      operationId: "createSwitch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSwitchInfo"
        required: true
      responses:
        "200":
          description: "Switch information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwitchInfo"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/switches/{switchId}:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Switch"
      description: "Returns the specified switch with the assigned emergency address."
      operationId: "readSwitch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "switchId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Switch information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwitchInfo"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    put:
      tags:
      - "Automatic Location Updates"
      summary: "Update Switch"
      description: |
        Updates switch. Partial update is not supported, all switch parameters
        should be specified. If null value is received or parameter is missing, its
        value is removed.
      operationId: "updateSwitch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "switchId"
        in: "path"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateSwitchInfo"
        required: true
      responses:
        "200":
          description: "Updated switch information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SwitchInfo"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    delete:
      tags:
      - "Automatic Location Updates"
      summary: "Delete Switch"
      description: |
        Deletes wireless switch(es) in a network configuration for Automatic
        Location Updates feature.
      operationId: "deleteSwitch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "switchId"
        in: "path"
        required: true
        style: "simple"
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "204":
          description: "No content"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/wireless-points-bulk-validate:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Validate Multiple Wireless Points"
      description: |
        Validates wireless points before creation or update. The maximum
        number of wireless points per request is 10 000.
      operationId: "validateMultipleWirelessPoints"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ValidateMultipleWirelessPointsRequest"
        required: true
      responses:
        "200":
          description: "Validated wireless points information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidateMultipleWirelessPointsResponse"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/wireless-points:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List Wireless Points"
      description: |
        Returns account wireless points configured and used for Automatic
        Location Updates feature.
      operationId: "listWirelessPoints"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries by the specified substring (search by chassis
          ID, switch name or address) The characters range is 0-64 (if empty the filter
          is ignored)
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by '+'
          sign (ascending order) or '-' sign (descending order).The default sorting
          is by `name`
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned per one
          page
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: |
          Indicates the page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "List of wireless points"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WirelessPointsList"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create Wireless Point"
      description: |
        Creates a new wireless point in network configuration with the
        emergency address assigned.
      operationId: "createWirelessPoint"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateWirelessPoint"
        required: true
      responses:
        "200":
          description: "Created wireless point"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WirelessPointInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/wireless-points/{pointId}:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "Get Wireless Point"
      description: |
        Returns the specified wireless access point of a corporate map
        with the emergency address assigned.
      operationId: "readWirelessPoint"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pointId"
        in: "path"
        description: "Internal identifier of a point"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Wireless point information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WirelessPointInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    put:
      tags:
      - "Automatic Location Updates"
      summary: "Update Wireless Point"
      description: |
        Updates the specified wireless access point of a corporate map
        by ID.
      operationId: "updateWirelessPoint"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pointId"
        in: "path"
        description: "Internal identifier of a wireless point"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateWirelessPoint"
        required: true
      responses:
        "200":
          description: "Updated wireless point"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WirelessPointInfo"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
    delete:
      tags:
      - "Automatic Location Updates"
      summary: "Delete Wireless Point"
      description: "Deletes wireless point(s) of a corporate map by ID(s)."
      operationId: "deleteWirelessPoint"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "pointId"
        in: "path"
        required: true
        description: "Internal identifier of a wireless point"
        style: "simple"
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "204":
          description: "No content"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/devices:
    get:
      tags:
      - "Automatic Location Updates"
      summary: "List Devices"
      description: |
        Returns a list of common devices with their status of Automatic
        Location Updates feature.
      operationId: "listDevicesAutomaticLocationUpdates"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - $ref: "#/components/parameters/SiteIdQuery"
      - name: "featureEnabled"
        in: "query"
        description: |
          Filters entries by their status of Automatic Location Updates
          feature
        schema:
          type: "boolean"
      - name: "modelId"
        in: "query"
        description: |
          Internal identifier of a device model for filtering. Multiple
          values are supported
        schema:
          type: "string"
      - name: "compatibleOnly"
        in: "query"
        description: "Filters devices which support HELD protocol"
        schema:
          type: "boolean"
      - name: "searchString"
        in: "query"
        description: |
          Filters entries which have device name or model name containing
          the mentioned substring. The value should be split by spaces; the range
          is 0 - 64 characters, not case-sensitive. If empty the filter is ignored
        schema:
          type: "string"
      - name: "orderBy"
        in: "query"
        description: |
          Comma-separated list of fields to order results prefixed by
          plus sign '+' (ascending order) or minus sign '-' (descending order).
          Supported values: 'name', 'modelName', 'siteName', 'featureEnabled'.
          The default sorting is by `name`
        schema:
          type: "string"
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items). The values supported:
          `Max` or numeric value. If not specified, 100 records are returned per one
          page
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are supported
        schema:
          type: "integer"
          format: "int32"
          default: 1
      responses:
        "200":
          description: "Device list with their status of Automatic Location Updates feature"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListDevicesAutomaticLocationUpdates"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "High"
      x-throttling-group: "Medium"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/devices/bulk-assign:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Enable Automatic Location Updates Feature"
      description: |
        Enables or disables Automatic Location Updates feature for the
        specified common phones.
      operationId: "assignMultipleDevicesAutomaticLocationUpdates"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssignMultipleDevicesAutomaticLocationUpdates"
        required: false
      responses:
        "204":
          description: "No content"
      x-feature: "EditSoftPhoneAutoLocationUpdate OR EditHardPhoneAutoLocationUpdate"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/switches-bulk-create:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Create Multiple Switches"
      description: |
        Creates multiple switches in corporate map. The maximum number
        of switches per request is 10 000; limitation for account is 10 000.
      operationId: "createMultipleSwitches"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateMultipleSwitchesRequest"
        required: true
      responses:
        "202":
          description: "Multiple Switches Creation Task"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateMultipleSwitchesResponse"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/wireless-points-bulk-update:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Update Multiple Wireless Points"
      description: |
        Updates wireless points in corporate map. The maximum number of
        wireless points per request is 10 000; limitation for account is 70 000.
      operationId: "updateMultipleWirelessPoints"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateMultipleWirelessPointsRequest"
        required: true
      responses:
        "202":
          description: "Multiple Wireless Points Update Task"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateMultipleWirelessPointsResponse"
      x-feature: "EditSoftPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/emergency-address-auto-update/switches-bulk-update:
    post:
      tags:
      - "Automatic Location Updates"
      summary: "Update Multiple Switches"
      description: |
        Updates multiple switches in corporate map. The maximum number
        of switches per request is 10 000; limitation for account is 10 000.
      operationId: "updateMultipleSwitches"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateMultipleSwitchesRequest"
        required: true
      responses:
        "202":
          description: "Multiple Switches Update Task"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateMultipleSwitchesResponse"
      x-feature: "EditHardPhoneAutoLocationUpdate"
      x-request-max-body-size: "100m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
      x-user-permission: "ConfigureEmergencyMaps"
  /restapi/v1.0/account/{accountId}/phone-number:
    get:
      tags:
      - "Phone Numbers"
      summary: "List Company Phone Numbers"
      description: |
        Returns the list of phone numbers assigned to RingCentral customer
        account. Both company-level and extension-level numbers are returned.
      operationId: "listAccountPhoneNumbers"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "usageType"
        in: "query"
        description: "Usage type of phone number"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "MainCompanyNumber"
            - "AdditionalCompanyNumber"
            - "CompanyNumber"
            - "DirectNumber"
            - "CompanyFaxNumber"
            - "ForwardedNumber"
            - "ForwardedCompanyNumber"
            - "ContactCenterNumber"
            - "ConferencingNumber"
            - "MeetingsNumber"
            - "BusinessMobileNumber"
            - "PartnerBusinessMobileNumber"
            - "IntegrationNumber"
      - name: "paymentType"
        in: "query"
        description: "Payment Type of the number"
        schema:
          $ref: "#/components/schemas/PlatformPaymentType"
      - name: "status"
        in: "query"
        description: "Status of a phone number"
        schema:
          type: "string"
          enum:
          - "Normal"
          - "Pending"
          - "PortedIn"
          - "Temporary"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountPhoneNumbers"
      x-feature: "ReadAccountPhoneNumbers"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyPhoneNumbers"
  /restapi/v1.0/account/{accountId}/phone-number/{phoneNumberId}:
    get:
      tags:
      - "Phone Numbers"
      summary: "Get Phone Number"
      description: |
        Returns phone number(s) belonging to a certain account or extension by phoneNumberId(s).
        [Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.
      operationId: "readAccountPhoneNumber"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "phoneNumberId"
        in: "path"
        description: "Internal identifier of a phone number"
        required: true
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Phone number information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyPhoneNumberInfo"
      x-feature: "ReadAccountPhoneNumbers"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
      x-user-permission: "ReadCompanyPhoneNumbers"
  /restapi/v1.0/subscription:
    get:
      tags:
      - "Subscriptions"
      summary: "List Subscriptions"
      description: |
        Returns a list of subscriptions created by the user for the current authorized client application.
      operationId: "listSubscriptions"
      responses:
        "200":
          description: "Successful response"
          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:
      - "Subscriptions"
      summary: "Create Subscription"
      description: |
        This API allows client applications to register a new subscription so that it
        can be notified of events when they occur on the platform.

        A subscription relates to a set of events that a client application would like
        to be informed of and the delivery channel by which they will be notified of
        those events. How subscriptions are established depends upon the notification
        channel the client application would like to use to receive the event
        notification. For example, to create a webhook a developer would create a
        subscription via a REST API call, while specifying a list of events or "event
        filters" to be notified of, a transport type of `WebHook`, and the address or
        URL to which they would like the webhook delivered.

        However, developers wishing to subscribe to a set of events via a WebSocket
        channel, would first connect to the WebSocket gateway, and then issue their
        subscription request over the WebSocket itself, as opposed to making a REST
        API call to this endpoint.

        While the protocol for establishing a subscription may vary depending upon
        the delivery channel for that subscription, the schemas used for representing
        a subscription are the same across all delivery modes.

        Subscriptions are currently limited to 20 subscriptions per user/extension (for particular application).

        RingCentral currently supports the following delivery modes for event subscriptions:

        * [WebHook](https://developers.ringcentral.com/guide/notifications/webhooks/quick-start) - to receive event notifications as an HTTP POST to a given URL
        * [WebSocket](https://developers.ringcentral.com/guide/notifications/websockets/quick-start) - to receive real-time events over a persistent WebSocket connection
        * [PubNub](https://developers.ringcentral.com/guide/notifications/push-notifications/quick-start) (deprecated) - to receive a push notification sent directly to a client application

        Developers should be aware that the PubNub delivery mode is currently
        deprecated and will be removed in 2024. Developers are encouraged to
        [migrate their client applications to use WebSockets](https://developers.ringcentral.com/guide/notifications/websockets/migration/)
        instead.
      operationId: "createSubscription"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSubscriptionRequest"
            examples:
              CreateSubscriptionRequestPubnub:
                $ref: "#/components/examples/CreateSubscriptionRequestPubnub"
              CreateSubscriptionRequestWebhook:
                $ref: "#/components/examples/CreateSubscriptionRequestWebhook"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionInfo"
              examples:
                CreateSubscriptionResponsePubnub:
                  $ref: "#/components/examples/CreateSubscriptionResponsePubnub"
                CreateSubscriptionResponseWebhook:
                  $ref: "#/components/examples/CreateSubscriptionResponseWebhook"
        "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"
  /restapi/v1.0/subscription/{subscriptionId}:
    get:
      tags:
      - "Subscriptions"
      summary: "Get Subscription"
      description: "Returns the existing subscription by ID."
      operationId: "readSubscription"
      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:
      - "Subscriptions"
      summary: "Update Subscription"
      description: |
        Updates the existing subscription. The client application can extend or narrow
        the list of events for which it receives notifications within the current subscription.
        If event filters are specified, calling this method modifies them for the
        existing subscription. The method also allows one to set an expiration time for the
        subscription itself.

        If parameters other than `events` and `expiresIn` are specified in the request they will be ignored.
        If the request body is empty then the specified subscription will be renewed without any
        event filter modifications and using the default expiration time.

        If the request is sent with empty body, it just renews a subscription
        (so it is an equivalent of the `POST /restapi/v1.0/subscription/{subscriptionId}/renew`).

        Please note that `WebSocket` subscriptions cannot be updated via HTTP interface.
      operationId: "updateSubscription"
      parameters:
      - $ref: "#/components/parameters/SubscriptionId"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateSubscriptionRequest"
        required: false
      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:
      - "Subscriptions"
      summary: "Cancel Subscription"
      description: "Cancels the existing subscription."
      operationId: "deleteSubscription"
      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"
  /restapi/v1.0/subscription/{subscriptionId}/renew:
    post:
      tags:
      - "Subscriptions"
      summary: "Renew Subscription"
      description: |
        Renews the existing subscription (this request comes with empty body).

        Please note that `WebSocket` subscriptions are renewed automatically while websocket session is alive.
      operationId: "renewSubscription"
      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"
  /restapi/v1.0/number-parser/parse:
    post:
      tags:
      - "Phone Numbers"
      summary: "Parse Phone Number(s)"
      description: "Returns one or more parsed and/or formatted phone numbers that are passed as strings."
      operationId: "parsePhoneNumber"
      parameters:
      - name: "homeCountry"
        in: "query"
        required: false
        description: |
          ISO 3166 alpha2 code of the home country to be used if it is impossible to determine country from the number itself.
          By default, this parameter is preset to the current user's home country or brand country if the user is undefined
        schema:
          type: "string"
          example: "US"
      - name: "nationalAsPriority"
        in: "query"
        required: false
        description: |
          The default value is `false`. If `true`, the numbers that are
          closer to the home country are given higher priority
        schema:
          type: "boolean"
          default: false
      requestBody:
        description: "Phone number list to parse"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ParsePhoneNumberRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ParsePhoneNumberResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/brand/{brandId}/contracted-country:
    get:
      tags:
      - "Company"
      summary: "List Contracted Countries"
      description: "Returns the list of contracted countries for the given brand."
      operationId: "listContractedCountries"
      parameters:
      - name: "brandId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractedCountryListResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/brand/{brandId}/contracted-country/{contractedCountryId}:
    get:
      tags:
      - "Company"
      summary: "List Domestic Countries"
      description: |
        Returns the list of domestic countries for account contracted country and brand.
      operationId: "listDomesticCountries"
      parameters:
      - name: "brandId"
        in: "path"
        description: "Internal identifier of a brand"
        required: true
        schema:
          type: "string"
      - name: "contractedCountryId"
        in: "path"
        description: "Internal identifier of a country"
        required: true
        schema:
          type: "string"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Domestic countries list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CountryListDictionaryModel"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/state:
    get:
      tags:
      - "Regional Settings"
      summary: "List States"
      description: |
        Returns all states of a certain country.
      operationId: "listStates"
      parameters:
      - name: "allCountries"
        in: "query"
        description: |
          If set to `true` then states of all countries are returned and
          `countryId` is ignored, even if specified. If the value is empty
          then the parameter is ignored
        schema:
          type: "boolean"
      - name: "countryId"
        in: "query"
        description: "Internal identifier of a country"
        schema:
          type: "integer"
          format: "int64"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "withPhoneNumbers"
        in: "query"
        description: |
          If `true` the list of states with phone numbers available for
          buying is returned
        schema:
          type: "boolean"
          default: false
      responses:
        "200":
          description: "States list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetStateListResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/state/{stateId}:
    get:
      tags:
      - "Regional Settings"
      summary: "Get State"
      description: |
        Returns information on a specific state by ID.
      operationId: "readState"
      parameters:
      - name: "stateId"
        in: "path"
        description: "Internal identifier of a state"
        required: true
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "State information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetStateInfoResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/location:
    get:
      tags:
      - "Regional Settings"
      summary: "List Locations"
      description: |
        Returns all available locations for a certain state.
      operationId: "listLocations"
      parameters:
      - name: "orderBy"
        in: "query"
        description: "Sorts results by the property specified"
        schema:
          type: "string"
          default: "City"
          enum:
          - "Npa"
          - "City"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "stateId"
        in: "query"
        description: "Internal identifier of a state"
        schema:
          type: "string"
      - name: "withNxx"
        in: "query"
        description: "Specifies if `nxx` codes are returned"
        schema:
          type: "boolean"
      responses:
        "200":
          description: "Location list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetLocationListResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/permission:
    get:
      tags:
      - "User Permissions"
      summary: "List Permissions"
      description: "Returns a list of extension user permissions."
      operationId: "listPermissions"
      parameters:
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "assignable"
        in: "query"
        description: "Specifies whether to return only assignable permissions"
        schema:
          type: "boolean"
      - name: "servicePlanId"
        in: "query"
        description: "Internal identifier of a service plan"
        schema:
          type: "string"
      responses:
        "200":
          description: "List of user permissions"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PermissionCollectionResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/permission/{permissionId}:
    get:
      tags:
      - "User Permissions"
      summary: "Get Permission"
      description: "Returns a user permission by ID."
      operationId: "readPermission"
      parameters:
      - name: "permissionId"
        in: "path"
        description: "Internal identifier of a user permission"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Permission information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PermissionResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/language:
    get:
      tags:
      - "Regional Settings"
      summary: "List Languages"
      description: |
        Returns information about the supported languages.
      operationId: "listLanguages"
      responses:
        "200":
          description: "Language list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LanguageList"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/language/{languageId}:
    get:
      tags:
      - "Regional Settings"
      summary: "Get Language"
      description: |
        Returns a language by ID.
      operationId: "readLanguage"
      parameters:
      - name: "languageId"
        in: "path"
        description: "Internal identifier of a language"
        required: true
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Language information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LanguageInfo"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/permission-category:
    get:
      tags:
      - "User Permissions"
      summary: "List Permission Categories"
      description: "Returns a list of permission categories."
      operationId: "listPermissionCategories"
      parameters:
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "servicePlanId"
        in: "query"
        description: "Internal identifier of a service plan"
        schema:
          type: "string"
      responses:
        "200":
          description: "List of permission categories"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PermissionCategoryCollectionResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/permission-category/{permissionCategoryId}:
    get:
      tags:
      - "User Permissions"
      summary: "Get Permission Category"
      description: "Returns a permission category by ID."
      operationId: "readPermissionCategory"
      parameters:
      - name: "permissionCategoryId"
        in: "path"
        description: "Internal identifier of a category"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Permission category"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PermissionCategoryResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/greeting:
    get:
      tags:
      - "Greetings"
      summary: "List Standard Greetings"
      description: |
        Returns the list of predefined standard greetings. Custom greetings
        recorded by user are not returned in response to this request. See Get Extension
        Custom Greetings.
      operationId: "listStandardGreetings"
      parameters:
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "type"
        in: "query"
        description: "Type of greeting, specifying the case when the greeting is played"
        schema:
          type: "string"
          enum:
          - "Introductory"
          - "Announcement"
          - "ConnectingMessage"
          - "ConnectingAudio"
          - "Voicemail"
          - "Unavailable"
          - "HoldMusic"
          - "Company"
      - name: "usageType"
        in: "query"
        description: "Usage type of greeting, specifying if the greeting is applied for user extension or department (call queue) extension"
        schema:
          type: "string"
          enum:
          - "UserExtensionAnsweringRule"
          - "ExtensionAnsweringRule"
          - "DepartmentExtensionAnsweringRule"
          - "CompanyAnsweringRule"
          - "CompanyAfterHoursAnsweringRule"
          - "VoicemailExtensionAnsweringRule"
          - "AnnouncementExtensionAnsweringRule"
          - "SharedLinesGroupAnsweringRule"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DictionaryGreetingList"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Medium"
  /restapi/v1.0/dictionary/greeting/{greetingId}:
    get:
      tags:
      - "Greetings"
      summary: "Get Standard Greeting"
      description: "Returns a standard greeting by ID."
      operationId: "readStandardGreeting"
      parameters:
      - $ref: "#/components/parameters/GreetingId"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DictionaryGreetingInfo"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Medium"
  /restapi/v1.0/dictionary/timezone:
    get:
      tags:
      - "Regional Settings"
      summary: "List Timezones"
      description: |
        Returns all available timezones.
      operationId: "listTimezones"
      parameters:
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are allowed. Default value is '1'
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items). If not specified, the value is '100' by default"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Timezones list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetTimezoneListResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/timezone/{timezoneId}:
    get:
      tags:
      - "Regional Settings"
      summary: "Get Timezone"
      description: |
        Returns information on a certain timezone.
      operationId: "readTimezone"
      parameters:
      - name: "timezoneId"
        in: "path"
        description: "Internal identifier of a timezone"
        required: true
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Timezone information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetTimezoneInfoResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/fax-cover-page:
    get:
      tags:
      - "Fax"
      summary: "List Fax Cover Pages"
      description: "Returns fax cover pages available for the current extension."
      operationId: "listFaxCoverPages"
      parameters:
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Indicates a page size (number of items)"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "List of fax cover pages"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListFaxCoverPagesResponse"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/user-role:
    get:
      tags:
      - "Role Management"
      summary: "List Standard User Roles"
      description: "Returns a list of standard user roles."
      operationId: "listStandardUserRole"
      parameters:
      - name: "servicePlanId"
        in: "query"
        description: "Internal identifier of a service plan."
        schema:
          type: "string"
      - $ref: "#/components/parameters/Page"
      - $ref: "#/components/parameters/PerPage"
      - name: "advancedPermissions"
        in: "query"
        description: |
          Specifies whether to return advanced permissions capabilities within `permissionsCapabilities` resource.
          The default value is false.
        schema:
          type: "boolean"
      responses:
        "200":
          description: "List of standard user roles"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RolesCollectionResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/user-role/{roleId}:
    get:
      tags:
      - "Role Management"
      summary: "Get Standard User Role"
      description: "Returns a standard user role by ID."
      operationId: "readStandardUserRole"
      parameters:
      - name: "roleId"
        in: "path"
        required: true
        description: "Internal identifier of a role"
        schema:
          type: "string"
      responses:
        "200":
          description: "Standard user role information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RoleResource"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/country:
    get:
      tags:
      - "Regional Settings"
      summary: "List Countries"
      description: |
        Returns all countries available for calling.
      operationId: "listCountries"
      parameters:
      - name: "loginAllowed"
        in: "query"
        description: |
          Specifies whether the logging-in with the phone numbers of this country
          is enabled or not
        schema:
          type: "boolean"
      - name: "signupAllowed"
        in: "query"
        description: |
          Indicates whether a signup/billing is allowed for a country. If
          not specified all countries are returned (according to other
          specified filters if any)
        schema:
          type: "boolean"
      - name: "numberSelling"
        in: "query"
        description: |
          Specifies if RingCentral sells phone numbers of this country
        schema:
          type: "boolean"
      - name: "page"
        in: "query"
        description: |
          Indicates a page number to retrieve. Only positive number values
          are accepted
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: |
          Indicates a page size (number of items)
        schema:
          type: "integer"
          format: "int32"
          default: 100
      - name: "freeSoftphoneLine"
        in: "query"
        description: |
          Specifies if free phone line for softphone is available for a
          country or not
        schema:
          type: "boolean"
      responses:
        "200":
          description: "Country list"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CountryListDictionaryModel"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/dictionary/country/{countryId}:
    get:
      tags:
      - "Regional Settings"
      summary: "Get Country"
      description: |
        Returns information on a specific country.
      operationId: "readCountry"
      parameters:
      - name: "countryId"
        in: "path"
        description: "Internal identifier of a country"
        required: true
        schema:
          type: "integer"
          format: "int64"
      responses:
        "200":
          description: "Country information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CountryInfoDictionaryModel"
      x-availability: "High"
      x-throttling-group: "Light"
  /restapi/v1.0/client-info/sip-provision:
    post:
      tags:
      - "Device SIP Registration"
      summary: "Register Device"
      description: |
        Creates SIP registration of a device/application (WebPhone, Mobile, Softphone).
      operationId: "createSIPRegistration"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSipRegistrationRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateSipRegistrationResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceNotAvailable"
      x-availability: "High"
      x-throttling-group: "Heavy"
      x-app-permission: "VoipCalling"
  /restapi/{apiVersion}:
    get:
      tags:
      - "API Info"
      summary: "Get Version Info"
      description: "Returns current API version info by apiVersion."
      operationId: "readAPIVersion"
      parameters:
      - name: "apiVersion"
        in: "path"
        description: "API version to be requested, for example 'v1.0'"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "API Version"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiVersionInfo"
      x-availability: "High"
      x-throttling-group: "NoThrottling"
  /ai/status/v1/jobs/{jobId}:
    get:
      tags:
      - "Status"
      summary: "Get Async Task Status"
      description: "Returns async task status by Job ID"
      operationId: "caiJobStatusGet"
      parameters:
      - $ref: "#/components/parameters/JobId"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "404":
          description: "The {jobId} doesn't exist"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JobStatusResponse"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/text/v1/async/summarize:
    post:
      tags:
      - "Text"
      summary: "Conversational Summarization"
      description: |
        Returns Conversational Summarization to the webhook URI for segmented transcript of audios
        with start, end, speakerId, text(alphanumeric and punctuations).
      operationId: "caiSummarize"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/SummaryRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/SummaryCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/text/v1/async/punctuate:
    post:
      tags:
      - "Text"
      summary: "Smart Punctuation"
      description: "Returns Smart Punctuation to the provided webhook URI."
      operationId: "caiPunctuate"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/PunctuateRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/PunctuateCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/audio/v1/enrollments:
    get:
      tags:
      - "Audio"
      summary: "List Enrolled Speakers"
      description: "Returns the List of Enrolled Speakers"
      operationId: "caiEnrollmentsList"
      parameters:
      - name: "partial"
        in: "query"
        description: "Indicates if partially enrolled speakers should be returned"
        required: true
        style: "form"
        explode: true
        schema:
          type: "boolean"
      - name: "perPage"
        in: "query"
        description: "Number of enrollments to be returned per page"
        required: true
        style: "form"
        explode: true
        schema:
          type: "integer"
          format: "int32"
      - name: "page"
        in: "query"
        description: "Page number to be returned"
        required: true
        style: "form"
        explode: true
        schema:
          type: "integer"
          format: "int32"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "200":
          description: "List of enrolled speakers"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListEnrolledSpeakers"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
    post:
      tags:
      - "Audio"
      summary: "Create Speaker Enrollment"
      description: "Creates Enrollment for the provided Speaker."
      operationId: "caiEnrollmentsCreate"
      requestBody:
        $ref: "#/components/requestBodies/EnrollmentRequest"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "409":
          description: "The {speakerId} already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "201":
          description: "Enrollments Request Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentStatus"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/audio/v1/enrollments/{speakerId}:
    get:
      tags:
      - "Audio"
      summary: "Get Speaker Enrollment Status"
      description: "Get The Status of Enrollment for the provided Speaker."
      operationId: "caiEnrollmentsGet"
      parameters:
      - $ref: "#/components/parameters/SpeakerId"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "404":
          description: "The {speakerId} doesn't exist"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "200":
          description: "Fetch enrollment status for speaker {speakerId}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentStatus"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
    delete:
      tags:
      - "Audio"
      summary: "Delete Speaker Enrollment"
      description: "Delete The Enrollment for the provided Speaker."
      operationId: "caiEnrollmentsDelete"
      parameters:
      - $ref: "#/components/parameters/SpeakerId"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "404":
          description: "The speakerId wasn't enrolled"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "410":
          description: "The speakerId doesn't exist, already deleted"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "204":
          description: "Enrollment deleted successfully"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
    patch:
      tags:
      - "Audio"
      summary: "Update Speaker Enrollment"
      description: "Add newer audio data to improve an existing speaker enrollment"
      operationId: "caiEnrollmentsUpdate"
      parameters:
      - $ref: "#/components/parameters/SpeakerId"
      requestBody:
        $ref: "#/components/requestBodies/EnrollmentPatchRequest"
      responses:
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "404":
          description: "The {speakerId} doesn't exist"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
        "201":
          description: "Enrollments Request Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentStatus"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/audio/v1/async/speech-to-text:
    post:
      tags:
      - "Audio"
      summary: "Speech to Text Conversion"
      description: "Returns Speech to Text Conversion to the provided webhook URI."
      operationId: "caiSpeechToText"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/AsrRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/SpeechToTextCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/audio/v1/async/speaker-diarize:
    post:
      tags:
      - "Audio"
      summary: "Speaker Diarization"
      description: |
        Identifies who said what. Speaker diarization will identify the speaker for each segment
        so you can tell who spoke the sentence, paragraph, or phrase.
      operationId: "caiSpeakerDiarize"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/DiarizeRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/DiarizeCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/audio/v1/async/speaker-identify:
    post:
      tags:
      - "Audio"
      summary: "Speaker Identification"
      description: "Returns Speaker Identification to the provided webhook URI."
      operationId: "caiSpeakerIdentify"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/IdentifyRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/SpeakerIdentifyCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /ai/insights/v1/async/analyze-interaction:
    post:
      tags:
      - "Insights"
      summary: "Interaction Analytics"
      description: |
        Returns multiple insights including summaries, emotion, key phrases, questions asked, and more in a single API call.
      operationId: "caiAnalyzeInteraction"
      parameters:
      - $ref: "#/components/parameters/Webhook"
      requestBody:
        $ref: "#/components/requestBodies/InteractionAnalyticsRequest"
      responses:
        "202":
          description: "Task accepted for processing."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiAsyncApiResponse"
        "400":
          description: "Bad Request"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CaiErrorResponse"
      callbacks:
        requestProcessed:
          '{$request.query.webhook}':
            post:
              parameters:
              - $ref: "#/components/parameters/CallbackRequestId"
              requestBody:
                $ref: "#/components/requestBodies/InteractionAnalyticsCallbackRequest"
              responses:
                "200":
                  description: "Callback successfully accepted"
      x-throttling-group: "Heavy"
      x-app-permission: "AI"
  /cx/social-messaging/v1/contents:
    get:
      tags:
      - "Contents"
      summary: "List All Contents"
      description: |
        List contents by creation date. The default creation order is descending.

        The account context of this request is determined by the RC Account Id associated with the access token provided
        in the Authorization header.

        The query parameters provided shall be considered an AND operation to filter the list.

        A query parameter not specified or a query parameter provided with no value is treated as not required for
        filtering the list.
      operationId: "socMsgListContents"
      parameters:
      - $ref: "#/components/parameters/InterventionFilter"
      - $ref: "#/components/parameters/IdentityFilter"
      - $ref: "#/components/parameters/IdentityGroupFilter"
      - $ref: "#/components/parameters/SourceFilter"
      - $ref: "#/components/parameters/ThreadFilter"
      - $ref: "#/components/parameters/TextFilter"
      - $ref: "#/components/parameters/StatusFilter"
      - $ref: "#/components/parameters/SocMsgOrderBy"
      - $ref: "#/components/parameters/PageToken"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          $ref: "#/components/responses/SocMsgListContentsResponse200"
        "400":
          $ref: "#/components/responses/SocMsgListContentsResponse400"
        "422":
          $ref: "#/components/responses/SocMsgListContentsResponse422"
      x-throttling-group: "Light"
      x-app-permission: "SocialMessaging"
    post:
      tags:
      - "Contents"
      summary: "Create Content"
      description: |
        Creates new content for use in discussions.

        This request is used to reply to already-posted content or to initiate a discussion. If authorized, the
        authenticated user will be used as the content author.

        Content will be created and pushed asynchronously to the channel. When the content is successfully pushed to
        the channel, the Content.Exported event will be reported.

        The account context of this request is determined by the RC Account Id associated with the access token provided
        in the Authorization header.

        Replying to customer content is usually possible unless the channel or conversation is read only. Composing
        content, on the contrary, depends on the channel itself.

        * The channel may not support it (and be purely reactive like Instagram, Messenger, etc.).

        * Some channels (usually public accounts like Twitter or Facebook pages) allow for the publishing of content
        without targeting specific individuals.

        * Some channels (usually non-public media) require specific targeting (phone number for SMS, email address
        for email, customer_id, etc.) to be able to create content. This is channel-specific and detailed under the
        generic parameters.
      operationId: "socMsgCreateContent"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateContentRequest"
            examples:
              Create content with inReplyToContentId:
                $ref: "#/components/examples/CreateContentWithInReplyToContentId"
              Create content with sourceId:
                $ref: "#/components/examples/CreateContentWithSourceId"
              Create content with attachments:
                $ref: "#/components/examples/CreateContentWithAttachments"
              Create content with specified authorIdentityId:
                $ref: "#/components/examples/CreateContentWithAuthorIdentityId"
              Create content with context data:
                $ref: "#/components/examples/CreateContentWithContextData"
              Create content for Email channel:
                $ref: "#/components/examples/CreateContentOnEmailChannel"
              Reply to a content for Email channel:
                $ref: "#/components/examples/ReplyContentOnEmailChannel"
              Create content for WhatsApp channel:
                $ref: "#/components/examples/CreateOutboundContentOnWhatsappChannel"
              Reply to a whatsapp content:
                $ref: "#/components/examples/ReplyContentOnWhatsappChannel"
      responses:
        "201":
          $ref: "#/components/responses/SocCreateContentResponse201"
        "400":
          $ref: "#/components/responses/SocMsgCreateContentResponse400"
        "403":
          $ref: "#/components/responses/SocMsgCreateContentResponse403"
        "404":
          $ref: "#/components/responses/SocMsgResponse404"
        "422":
          $ref: "#/components/responses/SocMsgCreateContentResponse422"
      x-throttling-group: "Light"
      x-app-permission: "SocialMessaging"
  /cx/social-messaging/v1/contents/{contentId}:
    get:
      tags:
      - "Contents"
      summary: "Get Content"
      description: |
        Retrieves the content from the given id.
      operationId: "socMsgGetContent"
      parameters:
      - $ref: "#/components/parameters/ContentId"
      responses:
        "200":
          $ref: "#/components/responses/SocMsgGetContentResponse200"
        "404":
          $ref: "#/components/responses/SocMsgResponse404"
      x-throttling-group: "Light"
      x-app-permission: "SocialMessaging"
  /cx/social-messaging/v1/identities:
    get:
      tags:
      - "Identities"
      summary: "List All Identities"
      description: |
        List identities by creation date. The default order is descending.

        The account context of this request is determined by the RC Account Id associated with the access token provided
        in the Authorization header.

        The query parameters provided shall be considered an AND operation to filter the list.

        A query parameter not specified or a query parameter provided with no value is treated as not required for
        filtering the list.
      operationId: "socMsgListIdentities"
      parameters:
      - $ref: "#/components/parameters/SourceId"
      - $ref: "#/components/parameters/IdentityGroupIds"
      - $ref: "#/components/parameters/UserId"
      - $ref: "#/components/parameters/UUID"
      - $ref: "#/components/parameters/SocMsgOrderBy"
      - $ref: "#/components/parameters/PageToken"
      - $ref: "#/components/parameters/PerPage"
      responses:
        "200":
          $ref: "#/components/responses/SocMsgListIdentitiesResponse200"
        "400":
          $ref: "#/components/responses/SocMsgListIdentitiesResponse400"
      x-throttling-group: "Light"
      x-app-permission: "SocialMessaging"
  /cx/social-messaging/v1/identities/{identityId}:
    get:
      tags:
      - "Identities"
      summary: "Get Identity"
      description: |
        Renders an identity from given id.
      operationId: "socMsgGetIdentity"
      parameters:
      - $ref: "#/components/parameters/IdentityId"
      responses:
        "200":
          $ref: "#/components/responses/SocMsgGetIdentityResponse200"
        "404":
          $ref: "#/components/responses/SocMsgResponse404"
      x-throttling-group: "Light"
      x-app-permission: "SocialMessaging"
  /scim/v2/Schemas:
    get:
      tags:
      - "SCIM"
      summary: "List Schemas"
      description: "Returns the list of schemas"
      operationId: "scimListSchemas2"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimSchemaSearchResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimSchemaSearchResponse"
        "403":
          description: "Filtering is not allowed"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimErrorResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimErrorResponse"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /scim/v2/Schemas/{uri}:
    get:
      tags:
      - "SCIM"
      summary: "Get Schema"
      description: "Returns SCIM schema"
      operationId: "scimGetSchema2"
      parameters:
      - name: "uri"
        in: "path"
        description: "Schema URI"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimSchemaResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimSchemaResponse"
        "404":
          $ref: "#/components/responses/ScimNotFound"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /scim/v2/Users:
    get:
      tags:
      - "SCIM"
      summary: "Search/List Users"
      description: "Returns the list of users satisfying search criteria"
      operationId: "scimSearchViaGet2"
      parameters:
      - name: "filter"
        in: "query"
        description: "Only support 'userName' or 'email' filter expressions for now"
        schema:
          type: "string"
      - name: "startIndex"
        in: "query"
        description: "Start index (1-based)"
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "count"
        in: "query"
        description: "Page size"
        schema:
          type: "integer"
          format: "int32"
          default: 100
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserSearchResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserSearchResponse"
        "400":
          $ref: "#/components/responses/ScimBadRequest"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
    post:
      tags:
      - "SCIM"
      summary: "Create User"
      description: "Creates a new user"
      operationId: "scimCreateUser2"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScimUser"
          application/scim+json:
            schema:
              $ref: "#/components/schemas/ScimUser"
        required: true
      responses:
        "201":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
        "400":
          $ref: "#/components/responses/ScimBadRequest"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "404":
          $ref: "#/components/responses/ScimNotFound"
        "409":
          $ref: "#/components/responses/ScimConflict"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "10m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
  /scim/v2/Users/.search:
    post:
      tags:
      - "SCIM"
      summary: "Search/List Users"
      description: "Returns the list of users satisfying search criteria"
      operationId: "scimSearchViaPost2"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScimSearchRequest"
          application/scim+json:
            schema:
              $ref: "#/components/schemas/ScimSearchRequest"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserSearchResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserSearchResponse"
        "400":
          $ref: "#/components/responses/ScimBadRequest"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /scim/v2/Users/{scimUserId}:
    get:
      tags:
      - "SCIM"
      summary: "Get User"
      description: "Returns a user by ID"
      operationId: "scimGetUser2"
      parameters:
      - $ref: "#/components/parameters/ScimUserId"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "404":
          $ref: "#/components/responses/ScimNotFound"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
    put:
      tags:
      - "SCIM"
      summary: "Update/Replace User"
      description: "Updates a user"
      operationId: "scimUpdateUser2"
      parameters:
      - $ref: "#/components/parameters/ScimUserId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScimUser"
          application/scim+json:
            schema:
              $ref: "#/components/schemas/ScimUser"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
        "400":
          $ref: "#/components/responses/ScimBadRequest"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "404":
          $ref: "#/components/responses/ScimNotFound"
        "409":
          $ref: "#/components/responses/ScimConflict"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "10m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
    delete:
      tags:
      - "SCIM"
      summary: "Delete User"
      description: "Deletes a user"
      operationId: "scimDeleteUser2"
      parameters:
      - $ref: "#/components/parameters/ScimUserId"
      responses:
        "204":
          description: "Successful response"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "404":
          $ref: "#/components/responses/ScimNotFound"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "1m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
    patch:
      tags:
      - "SCIM"
      summary: "Update/Patch User"
      description: "Updates a user (partial update)"
      operationId: "scimPatchUser2"
      parameters:
      - $ref: "#/components/parameters/ScimUserId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScimUserPatch"
          application/scim+json:
            schema:
              $ref: "#/components/schemas/ScimUserPatch"
        required: true
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimUserResponse"
        "400":
          $ref: "#/components/responses/ScimBadRequest"
        "401":
          $ref: "#/components/responses/ScimUnauthorized"
        "403":
          $ref: "#/components/responses/ScimForbidden"
        "404":
          $ref: "#/components/responses/ScimNotFound"
        "409":
          $ref: "#/components/responses/ScimConflict"
        "429":
          $ref: "#/components/responses/ScimTooManyRequests"
        "500":
          $ref: "#/components/responses/ScimInternalError"
      x-request-max-body-size: "10m"
      x-availability: "Limited"
      x-throttling-group: "Heavy"
      x-app-permission: "EditAccounts"
  /scim/v2/ServiceProviderConfig:
    get:
      tags:
      - "SCIM"
      summary: "Get Provider Config"
      description: "Returns SCIM service provider configuration"
      operationId: "scimGetProviderConfig2"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimProviderConfig"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimProviderConfig"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /scim/v2/ResourceTypes:
    get:
      tags:
      - "SCIM"
      summary: "List Resource Types"
      description: "Returns the list of supported SCIM resource types"
      operationId: "scimListResourceTypes2"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimResourceTypeSearchResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimResourceTypeSearchResponse"
        "403":
          description: "Filtering is not allowed"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimErrorResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimErrorResponse"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /scim/v2/ResourceTypes/{type}:
    get:
      tags:
      - "SCIM"
      summary: "Get Resource Type"
      description: "Returns resource type by ID"
      operationId: "scimGetResourceType2"
      parameters:
      - name: "type"
        in: "path"
        description: "Resource type"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Successful response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScimResourceTypeResponse"
            application/scim+json:
              schema:
                $ref: "#/components/schemas/ScimResourceTypeResponse"
        "404":
          $ref: "#/components/responses/ScimNotFound"
      x-request-max-body-size: "1m"
      x-availability: "High"
      x-throttling-group: "Light"
      x-app-permission: "ReadAccounts"
  /analytics/calls/v1/accounts/{accountId}/aggregation/fetch:
    post:
      tags:
      - "Business Analytics"
      summary: "Calls Aggregation Data"
      description: "Returns call aggregations filtered by parameters specified"
      operationId: "analyticsCallsAggregationFetch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "page"
        in: "query"
        description: "The current page number (positive numbers only)"
        required: false
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
      - name: "perPage"
        in: "query"
        description: "Number of records displayed on a page (positive numbers only, max value of 200)"
        required: false
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 200
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AggregationRequest"
        required: true
      responses:
        "200":
          description: "Calls Aggregation"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AggregationResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Light"
      x-app-permission: "Analytics"
  /analytics/calls/v1/accounts/{accountId}/timeline/fetch:
    post:
      tags:
      - "Business Analytics"
      summary: "Calls Timeline Data"
      description: "Returns time-value data aggregations filtered by parameters specified"
      operationId: "analyticsCallsTimelineFetch"
      parameters:
      - $ref: "#/components/parameters/AccountId"
      - name: "interval"
        in: "query"
        description: "Aggregation interval"
        required: true
        schema:
          $ref: "#/components/schemas/Interval"
      - name: "page"
        in: "query"
        description: "The current page number (positive numbers only)"
        required: false
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
      - name: "perPage"
        in: "query"
        description: "Number of records displayed on a page (positive numbers only, max value of 20)"
        required: false
        schema:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 20
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TimelineRequest"
        required: true
      responses:
        "200":
          description: "Calls Timeline"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TimelineResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "500":
          $ref: "#/components/responses/InternalError"
      x-throttling-group: "Light"
      x-app-permission: "Analytics"
  /team-messaging/v1/tasks/{taskId}:
    get:
      tags:
      - "Tasks"
      summary: "Get Task"
      description: "Returns information about the specified task(s) by ID(s)."
      operationId: "readTaskNew"
      parameters:
      - name: "taskId"
        in: "path"
        description: "Task identifier or comma separated list of task IDs"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTaskInfo"
        "400":
          description: "Invalid input parameter(-s)"
        "403":
          description: "Forbidden"
        "404":
          description: "Requested task ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Tasks"
      summary: "Delete Task"
      description: "Deletes the specified task."
      operationId: "deleteTaskNew"
      parameters:
      - name: "taskId"
        in: "path"
        description: "Internal identifier of a task"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "403":
          description: "Forbidden"
        "404":
          description: "Task with the specified ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    patch:
      tags:
      - "Tasks"
      summary: "Update Task"
      description: "Updates the specified task by ID."
      operationId: "patchTaskNew"
      parameters:
      - name: "taskId"
        in: "path"
        description: "Internal identifier of a task"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMUpdateTaskRequest"
        required: false
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTaskList"
        "400":
          description: "Invalid input parameter(-s)"
        "403":
          description: "Forbidden"
        "404":
          description: "Task with the specified ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/tasks/{taskId}/complete:
    post:
      tags:
      - "Tasks"
      summary: "Complete Task"
      description: "Completes a task in the specified chat."
      operationId: "completeTaskNew"
      parameters:
      - name: "taskId"
        in: "path"
        description: "Internal identifier of a task"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCompleteTaskRequest"
        required: true
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Invalid input parameter(-s)"
        "403":
          description: "Forbidden"
        "404":
          description: "Requested task ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/events:
    get:
      tags:
      - "Calendar Events"
      summary: "List User Events"
      description: "Returns all calendar events created by the current user."
      operationId: "readGlipEventsNew"
      parameters:
      - name: "recordCount"
        in: "query"
        description: "Number of groups to be fetched by one request. The maximum value is 250, by default - 30."
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      - name: "pageToken"
        in: "query"
        description: "Token of a page to be returned"
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventList"
            multipart/mixed:
              schema:
                $ref: "#/components/schemas/TMEventList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Calendar Events"
      summary: "Create Event"
      description: "Creates a new calendar event."
      operationId: "createEventNew"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateEventRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/events/{eventId}:
    get:
      tags:
      - "Calendar Events"
      summary: "Get Event"
      description: "Returns the specified calendar event(s) by ID(s)."
      operationId: "readEventNew"
      parameters:
      - name: "eventId"
        in: "path"
        description: "Event id or comma separated list of event ids."
        required: true
        style: "simple"
        explode: false
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
            multipart/mixed:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Event not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    put:
      tags:
      - "Calendar Events"
      summary: "Update Event"
      description: "Updates the specified calendar event."
      operationId: "updateEventNew"
      parameters:
      - name: "eventId"
        in: "path"
        description: "Internal identifier of an event"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateEventRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Event to update not exists."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Calendar Events"
      summary: "Delete Event"
      description: "Deletes the specified calendar event."
      operationId: "deleteEventNew"
      parameters:
      - name: "eventId"
        in: "path"
        description: "Internal identifier of an event to be deleted"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Event not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/recent/chats:
    get:
      tags:
      - "Chats"
      summary: "List Recent Chats"
      description: "Returns recent chats where the user is a member. All records in response are sorted by the `lastModifiedTime` in descending order (the latest changed chat is displayed first on page)"
      operationId: "listRecentChatsNew"
      parameters:
      - name: "type"
        in: "query"
        description: "Type of chats to be fetched. By default, all chat types are returned"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "Everyone"
            - "Group"
            - "Personal"
            - "Direct"
            - "Team"
      - name: "recordCount"
        in: "query"
        description: "Max number of chats to be fetched by one request (Not more than 250)."
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMChatListWithoutNavigation"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/files:
    post:
      tags:
      - "Posts"
      summary: "Upload File"
      description: "Posts a file."
      operationId: "createGlipFileNew"
      parameters:
      - name: "groupId"
        in: "query"
        description: "Internal identifier of a group to which the post with attachment will be added to"
        schema:
          type: "integer"
          format: "int64"
      - name: "name"
        in: "query"
        description: "Name of a file attached"
        schema:
          type: "string"
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: "object"
              required:
              - "body"
              properties:
                body:
                  type: "string"
                  description: "The file (binary or multipart/form-data) to upload"
                  format: "binary"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMAddFileRequest"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "415":
          description: "Media type is not supported"
      x-feature: "TeamMessaging"
      x-request-max-body-size: "30m"
      x-throttling-group: "Heavy"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats:
    get:
      tags:
      - "Chats"
      summary: "List Chats"
      description: |
        Returns the list of chats where the user is a member and also public teams that can be joined.

        All records in response are sorted by creation time of a chat in ascending order.

        **Chat types**

        There are multiple types of chats, including:

        * **Personal** - each user is given a dedicated "personal chat" in which they are the only member.
        * **Direct** - a chat between two individuals.
        * **Group** - a chat between three or more named individuals. A "group" chat has no name.
        * **Team** - a chat related to a specific topic. Members can come and go freely from this chat type.
        * **Everyone** - a special chat containing every individual in a company.
      operationId: "listGlipChatsNew"
      parameters:
      - name: "type"
        in: "query"
        description: "Type of chats to be fetched. By default, all type of chats will be fetched"
        style: "form"
        explode: true
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "Personal"
            - "Direct"
            - "Group"
            - "Team"
            - "Everyone"
      - name: "recordCount"
        in: "query"
        description: "Number of chats to be fetched by one request. The maximum value is 250, by default - 30."
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      - name: "pageToken"
        in: "query"
        description: "Pagination token."
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMChatList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}:
    get:
      tags:
      - "Chats"
      summary: "Get Chat"
      description: |
        Returns information about a chat by ID.

        **Note** 'Chat' is a general name for all types of threads including *Personal* (user's own me-chat), *Direct* (one on one chat), *Group* (chat of 3-15 participants without specific name), *Team* (chat of 2 and more participants, with a specific name), *Everyone* (company chat including all employees, with a specific name)."
      operationId: "readGlipChatNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat. If tilde (~) is specified, then `/me` (Personal) chat will be returned"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMChatInfo"
        "404":
          description: "Chat Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/unfavorite:
    post:
      tags:
      - "Chats"
      summary: "Remove Chat from Favorites"
      description: "Removes the specified chat from the users's list of favorite chats."
      operationId: "unfavoriteGlipChatNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat to remove from favorite list."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "404":
          description: "Chat not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/tasks:
    get:
      tags:
      - "Tasks"
      summary: "List Chat Tasks"
      description: "Returns the list of tasks of the specified chat."
      operationId: "listChatTasksNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      - name: "creationTimeTo"
        in: "query"
        description: |
          The end datetime for resulting records in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
          format including timezone, e.g. 2019-03-10T18:23:45Z
        schema:
          type: "string"
          default: "now"
      - name: "creationTimeFrom"
        in: "query"
        description: |
          The start datetime for resulting records in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
          format including timezone, e.g. 2016-02-23T00:00:00
        schema:
          type: "string"
      - name: "creatorId"
        in: "query"
        description: "Internal identifier of a task creator"
        style: "form"
        explode: false
        schema:
          type: "array"
          items:
            type: "string"
      - name: "status"
        in: "query"
        description: "Task execution status"
        style: "form"
        explode: false
        schema:
          type: "array"
          items:
            type: "string"
            enum:
            - "Pending"
            - "InProgress"
            - "Completed"
      - name: "assignmentStatus"
        in: "query"
        description: "Task assignment status"
        schema:
          type: "string"
          enum:
          - "Unassigned"
          - "Assigned"
      - name: "assigneeId"
        in: "query"
        description: "Internal identifier of a task assignee"
        style: "form"
        explode: false
        schema:
          type: "array"
          items:
            type: "string"
      - name: "assigneeStatus"
        in: "query"
        description: "Task execution status by assignee(-s) specified in assigneeId"
        schema:
          type: "string"
          enum:
          - "Pending"
          - "Completed"
      - name: "pageToken"
        in: "query"
        description: |
          Token of the current page. If token is omitted then the first
          page should be returned
        schema:
          type: "string"
      - name: "recordCount"
        in: "query"
        description: "Number of records to be returned per screen"
        schema:
          maximum: 250
          minimum: 1
          type: "integer"
          format: "int32"
          default: 30
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTaskList"
        "400":
          description: "Invalid input parameter(-s)"
        "403":
          description: "Forbidden"
        "404":
          description: "Specified chat ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Heavy"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Tasks"
      summary: "Create Task"
      description: "Creates a task in the specified chat."
      operationId: "createTaskNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateTaskRequest"
        required: true
      responses:
        "201":
          description: "Task information"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTaskInfo"
        "400":
          description: "Invalid input parameter(-s)"
        "403":
          description: "Forbidden"
        "404":
          description: "Specified chat ID does not exist"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/posts:
    get:
      tags:
      - "Posts"
      summary: "List Posts"
      description: "Returns a list of posts from the specified chat."
      operationId: "readGlipPostsNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      - name: "recordCount"
        in: "query"
        description: "Max number of posts to be fetched by one request (not more than 250)"
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      - name: "pageToken"
        in: "query"
        description: "Pagination token."
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMPostsList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Posts"
      summary: "Create Post"
      description: "Creates a post in the chat specified in path. Any mention can be added within the `text` attribute of the request body in .md format - `![:Type](id)`, where `type` is one of (Person, Team, File, Note, Task, Event, Link, Card) and `id` is a unique identifier of the mentioned object of the specified type. Attachments of the following types (File, Card, Event, Note) can also be added to a post by passing type and ID of attachment(s) in request body."
      operationId: "createGlipPostNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat."
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreatePostRequest"
        required: true
      responses:
        "201":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMPostInfo"
        "400":
          description: "One of body parameters has invalid value."
        "404":
          description: "Resource for parameter [chatId] is not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/posts/{postId}:
    get:
      tags:
      - "Posts"
      summary: "Get Post"
      description: "Returns information about the specified post."
      operationId: "readGlipPostNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      - name: "postId"
        in: "path"
        description: "Internal identifier of a post"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMPostInfo"
        "404":
          description: "Post Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Posts"
      summary: "Delete Post"
      description: "Deletes the specified post from the chat."
      operationId: "deleteGlipPostNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      - name: "postId"
        in: "path"
        description: "Internal identifier of a post to be deleted"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content."
        "403":
          description: "Requestor has no permissions to do this action"
        "404":
          description: "Post Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    patch:
      tags:
      - "Posts"
      summary: "Update Post"
      description: "Updates a specific post within a chat."
      operationId: "patchGlipPostNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      - name: "postId"
        in: "path"
        description: "Internal identifier of a post to be updated"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMUpdatePostRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMPostInfo"
        "400":
          description: "One of body parameters has invalid value"
        "403":
          description: "Requestor has no permissions to do this action"
        "404":
          description: "Chat not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/favorite:
    post:
      tags:
      - "Chats"
      summary: "Add Chat to Favorites"
      description: "Adds the specified chat to the users's list of favorite chats."
      operationId: "favoriteGlipChatNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat to add to favorite list."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Favorite chat list is limited to 250 unique chats"
        "403":
          description: "User is not member of chat"
        "404":
          description: "Chat not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/adaptive-cards:
    post:
      tags:
      - "Adaptive Cards"
      summary: "Create Adaptive Card"
      description: "Creates a new adaptive card in the chat specified in path."
      operationId: "createGlipAdaptiveCardNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AdaptiveCardRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdaptiveCardShortInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "You do not have permissions to create adaptive card in the specified chat."
        "404":
          description: "Specified chat ID does not exist."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/chats/{chatId}/notes:
    get:
      tags:
      - "Notes"
      summary: "List Notes"
      description: "Returns the list of chat notes."
      operationId: "listChatNotesNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat to fetch notes from."
        required: true
        schema:
          type: "string"
      - name: "creationTimeTo"
        in: "query"
        description: |
          The end datetime for resulting records in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
          format including timezone, e.g. 2019-03-10T18:23:45. The default value is
          Now.
        schema:
          type: "string"
      - name: "creationTimeFrom"
        in: "query"
        description: |
          The start datetime for resulting records in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
          format including timezone
        schema:
          type: "string"
      - name: "creatorId"
        in: "query"
        description: |
          Internal identifier of the user that created the note. Multiple
          values are supported
        schema:
          type: "string"
      - name: "status"
        in: "query"
        description: |
          Status of notes to be fetched; if not specified all notes are
          fetched by default.
        schema:
          type: "string"
          enum:
          - "Active"
          - "Draft"
      - name: "pageToken"
        in: "query"
        description: "Pagination token"
        schema:
          type: "string"
      - name: "recordCount"
        in: "query"
        description: "Max number of notes to be fetched by one request; the value range is 1-250."
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMNoteList"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "You do not have permissions to get such kind of information."
        "404":
          description: "Group Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Heavy"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Notes"
      summary: "Create Note"
      description: "Creates a new note in the specified chat."
      operationId: "createChatNoteNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a chat to create a note in"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateNoteRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMNoteInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "You do not have permissions to create note in the specified group."
        "404":
          description: "Group not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/adaptive-cards/{cardId}:
    get:
      tags:
      - "Adaptive Cards"
      summary: "Get Adaptive Card"
      description: "Returns adaptive card(s) with given id(s)."
      operationId: "getGlipAdaptiveCardNew"
      parameters:
      - name: "cardId"
        in: "path"
        description: "Internal identifier of an adaptive card, or comma separated list of adaptive cards IDs."
        required: true
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdaptiveCardInfo"
        "207":
          description: "Multi-Status"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Adaptive Card not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    put:
      tags:
      - "Adaptive Cards"
      summary: "Update Adaptive Card"
      description: "Updates an adaptive card."
      operationId: "updateGlipAdaptiveCardNew"
      parameters:
      - name: "cardId"
        in: "path"
        description: "Internal identifier of an adaptive card"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AdaptiveCardRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdaptiveCardShortInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "You do not have permissions to update specified adaptive card."
        "404":
          description: "Adaptive Card for update does not exist."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Adaptive Cards"
      summary: "Delete Adaptive Card"
      description: "Deletes an adaptive card by ID."
      operationId: "deleteGlipAdaptiveCardNew"
      parameters:
      - name: "cardId"
        in: "path"
        description: "Adaptive Card ID to be deleted."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "You do not have permissions to delete specified adaptive card."
        "404":
          description: "Adaptive Card not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/webhooks:
    get:
      tags:
      - "Incoming Webhooks"
      summary: "List Webhooks"
      description: "Returns the list of all webhooks associated with the current account."
      operationId: "listGlipWebhooksNew"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMWebhookList"
            multipart/mixed:
              schema:
                $ref: "#/components/schemas/TMWebhookList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/webhooks/{webhookId}:
    get:
      tags:
      - "Incoming Webhooks"
      summary: "Get Webhook"
      description: "Returns webhooks(s) with the specified id(s)."
      operationId: "readGlipWebhookNew"
      parameters:
      - name: "webhookId"
        in: "path"
        description: "Internal identifier of a webhook or comma separated list of webhooks IDs"
        required: true
        style: "simple"
        explode: false
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMWebhookList"
            multipart/mixed:
              schema:
                $ref: "#/components/schemas/TMWebhookList"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Webhooks not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Incoming Webhooks"
      summary: "Delete Webhook"
      description: "Deletes a webhook by ID."
      operationId: "deleteGlipWebhookNew"
      parameters:
      - name: "webhookId"
        in: "path"
        description: "Internal identifier of a webhook"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "The resource was deleted successfully."
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Webhook not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/webhooks/{webhookId}/activate:
    post:
      tags:
      - "Incoming Webhooks"
      summary: "Activate Webhook"
      description: "Activates a webhook by ID."
      operationId: "activateGlipWebhookNew"
      parameters:
      - name: "webhookId"
        in: "path"
        description: "Internal identifier of a webhook"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Webhook not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/webhooks/{webhookId}/suspend:
    post:
      tags:
      - "Incoming Webhooks"
      summary: "Suspend Webhook"
      description: "Suspends a webhook by ID."
      operationId: "suspendGlipWebhookNew"
      parameters:
      - name: "webhookId"
        in: "path"
        description: "Internal identifier of a webhook"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "404":
          description: "Webhook not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/companies/{companyId}:
    get:
      tags:
      - "Profile"
      summary: "Get Company Info"
      description: "Returns information about one or more companies by their IDs."
      operationId: "readTMCompanyInfoNew"
      parameters:
      - name: "companyId"
        in: "path"
        description: "Internal identifier of an RC account/Glip company, or tilde (~) to indicate a company the current user belongs to."
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMCompanyInfo"
            multipart/mixed:
              schema:
                $ref: "#/components/schemas/TMCompanyInfo"
        "207":
          description: "Mixed Result"
        "403":
          description: "You do not have permissions to get such kind of information"
        "404":
          description: "Company Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/persons/{personId}:
    get:
      tags:
      - "Profile"
      summary: "Get Person"
      description: "Returns a user or multiple users by their ID(s). Batch request is supported."
      operationId: "readGlipPersonNew"
      parameters:
      - name: "personId"
        in: "path"
        description: "Internal identifier of a user to be returned, the maximum number of IDs is 30"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMPersonInfo"
        "207":
          description: "Mixed Result"
        "403":
          description: "You do not have permissions to get such kind of information"
        "404":
          description: "Person Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/conversations:
    get:
      tags:
      - "Conversations"
      summary: "List Conversations"
      description: "Returns the list of conversations where the user is a member. All records in response are sorted by creation time of a conversation in ascending order. Conversation is a chat of the *Group* type."
      operationId: "listGlipConversationsNew"
      parameters:
      - name: "recordCount"
        in: "query"
        description: "Number of conversations to be fetched by one request. The maximum value is 250, by default - 30"
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      - name: "pageToken"
        in: "query"
        description: "Pagination token."
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMConversationList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Conversations"
      summary: "Create/Open Conversation"
      description: "Creates a new conversation or opens the existing one. If the conversation already exists, then its ID will be returned in response. A conversation is an adhoc discussion between a particular set of users, not featuring any specific name or description; it is a chat of 'Group' type. If you add a person to the existing conversation (group), it creates a whole new conversation."
      operationId: "createGlipConversationNew"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateConversationRequest"
        required: true
      responses:
        "200":
          description: "Conversation is opened"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMConversationInfo"
        "201":
          description: "Conversation is created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMConversationInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/conversations/{chatId}:
    get:
      tags:
      - "Conversations"
      summary: "Get Conversation"
      description: "Returns information about the specified conversation, including the list of conversation participants. A conversation is an adhoc discussion between a particular set of users, not featuring any specific name or description; it is a chat of 'Group' type. If you add a person to the existing conversation, it creates a whole new conversation."
      operationId: "readGlipConversationNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a conversation to be returned."
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMConversationInfo"
        "404":
          description: "Conversation Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/groups/{groupId}/events:
    get:
      tags:
      - "Calendar Events"
      summary: "List Group Events"
      description: "Returns a list of calendar events available for the current user within the specified group. Users can only see their personal tasks and public tasks."
      operationId: "listGroupEventsNew"
      parameters:
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a group"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
        "404":
          description: "Group with specified Id is not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Calendar Events"
      summary: "Create Event by Group ID"
      description: "Creates a new calendar event within the specified group."
      operationId: "createEventByGroupIdNew"
      parameters:
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a group"
        required: true
        schema:
          type: "string"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateEventRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMEventInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/groups/{groupId}/webhooks:
    get:
      tags:
      - "Incoming Webhooks"
      summary: "List Webhooks in Group"
      description: "Returns webhooks which are available for the current user by group ID."
      operationId: "listGlipGroupWebhooksNew"
      parameters:
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a group"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMWebhookList"
        "404":
          description: "Group with specified ID is not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Incoming Webhooks"
      summary: "Create Webhook in Group"
      description: "Creates a new webhook."
      operationId: "createGlipGroupWebhookNew"
      parameters:
      - name: "groupId"
        in: "path"
        description: "Internal identifier of a group"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMWebhookInfo"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/data-export:
    get:
      tags:
      - "Compliance Exports"
      summary: "List Data Export Tasks"
      description: "Returns the list of Glip data export tasks."
      operationId: "listDataExportTasksNew"
      parameters:
      - name: "status"
        in: "query"
        description: "Status of the task(s) to be returned. Multiple values are supported"
        schema:
          type: "string"
          enum:
          - "Accepted"
          - "InProgress"
          - "Completed"
          - "Failed"
          - "Expired"
      - name: "page"
        in: "query"
        description: "Page number to be retrieved; value range is > 0"
        schema:
          type: "integer"
          format: "int32"
          default: 1
      - name: "perPage"
        in: "query"
        description: "Number of records to be returned per page; value range is 1 - 250"
        schema:
          type: "integer"
          format: "int32"
          default: 30
      responses:
        "200":
          description: "Data Export Task List"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataExportTaskList"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
      x-user-permission: "Glip"
    post:
      tags:
      - "Compliance Exports"
      summary: "Create Data Export Task"
      description: "Creates a task for Glip data export and returns a link at which the exported data will be available in future once the task is implemented. The exported data can be downloaded by calling Get Data Export Task method with the specified task ID. Simultaneously no more than 2 tasks per company can be created."
      operationId: "createDataExportTaskNew"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateDataExportTaskRequest"
        required: false
      responses:
        "202":
          description: "The task is accepted"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataExportTask"
      x-throttling-group: "Heavy"
      x-app-permission: "TeamMessaging"
      x-user-permission: "Glip"
  /team-messaging/v1/data-export/{taskId}:
    get:
      tags:
      - "Compliance Exports"
      summary: "Get Data Export Task"
      description: "Returns the links for downloading Glip data exported within the specified task. If the export task is still in progress, then only the task status will be returned. If the data is ready for downloading, then the list of URLs will be returned."
      operationId: "readDataExportTaskNew"
      parameters:
      - name: "taskId"
        in: "path"
        description: "Internal identifier of a task to be retrieved"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataExportTask"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
      x-user-permission: "Glip"
  /team-messaging/v1/everyone:
    get:
      tags:
      - "Teams"
      summary: "Get Everyone Chat"
      description: "Returns information about \"Everyone\" chat (a company level chat which includes all employees)."
      operationId: "readGlipEveryoneNew"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EveryoneTeamInfo"
        "404":
          description: "Chat Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
    patch:
      tags:
      - "Teams"
      summary: "Update Everyone Chat"
      description: "Updates \"Everyone\" chat information."
      operationId: "patchGlipEveryoneNew"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateEveryoneTeamRequest"
        required: false
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EveryoneTeamInfo"
        "404":
          description: "Chat Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams:
    get:
      tags:
      - "Teams"
      summary: "List Teams"
      description: "Returns the list of teams where the user is a member (both archived and active) combined with a list of public teams that can be joined by the current user. All records in response are sorted by creation time of a chat in ascending order. A team is a chat between 2 and more (unlimited number) participants assigned with specific name."
      operationId: "listGlipTeamsNew"
      parameters:
      - name: "recordCount"
        in: "query"
        description: "Number of teams to be fetched by one request. The maximum value is 250, by default - 30"
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      - name: "pageToken"
        in: "query"
        description: "Pagination token."
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTeamList"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    post:
      tags:
      - "Teams"
      summary: "Create Team"
      description: "Creates a team, and adds a list of people to the team."
      operationId: "createGlipTeamNew"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateTeamRequest"
        required: true
      responses:
        "201":
          description: "Created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTeamInfo"
        "400":
          description: "One of body parameters has invalid value."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}:
    get:
      tags:
      - "Teams"
      summary: "Get Team"
      description: "Returns information about the specified team."
      operationId: "readGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be returned."
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTeamInfo"
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Teams"
      summary: "Delete Team"
      description: "Deletes the specified team."
      operationId: "deleteGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content."
        "403":
          description: "User is not Team Admin."
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    patch:
      tags:
      - "Teams"
      summary: "Update Team"
      description: "Updates the name and description of the specified team."
      operationId: "patchGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be updated."
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMUpdateTeamRequest"
        required: true
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMTeamInfo"
        "400":
          description: "One of body parameters has invalid value."
        "403":
          description: "User is not Team Admin or Team is not active."
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/remove:
    post:
      tags:
      - "Teams"
      summary: "Remove Team Members"
      description: "Removes members from the specified team."
      operationId: "removeGlipTeamMembersNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to remove members from."
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMRemoveTeamMembersRequest"
        required: true
      responses:
        "204":
          description: "No Content."
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "User is not Team Admin."
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/join:
    post:
      tags:
      - "Teams"
      summary: "Join Team"
      description: "Adds the current user to the specified team."
      operationId: "joinGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be joined."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "205":
          description: "Reset Content"
        "403":
          description: "Team status is not Active or Team is not public"
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/archive:
    post:
      tags:
      - "Teams"
      summary: "Archive Team"
      description: "Changes the status of the specified team to 'Archived'."
      operationId: "archiveGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be archived."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "205":
          description: "Reset Content"
        "403":
          description: "User is not Team Admin"
        "404":
          description: "Team Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/unarchive:
    post:
      tags:
      - "Teams"
      summary: "Unarchive Team"
      description: "Changes the status of the specified team to 'Active'."
      operationId: "unarchiveGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be made active."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "205":
          description: "Reset Content"
        "403":
          description: "User is not Team Admin"
        "404":
          description: "Team Not Found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/leave:
    post:
      tags:
      - "Teams"
      summary: "Leave Team"
      description: "Removes the current user from the specified team."
      operationId: "leaveGlipTeamNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to be left."
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "205":
          description: "Reset Content."
        "403":
          description: "Team status is not Active."
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/teams/{chatId}/add:
    post:
      tags:
      - "Teams"
      summary: "Add Team Members"
      description: "Adds members to the specified team."
      operationId: "addGlipTeamMembersNew"
      parameters:
      - name: "chatId"
        in: "path"
        description: "Internal identifier of a team to add members to."
        required: true
        schema:
          type: "string"
      requestBody:
        description: "JSON body"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMAddTeamMembersRequest"
        required: true
      responses:
        "204":
          description: "No Content."
        "400":
          description: "Some of the parameters are missing or have invalid format"
        "403":
          description: "User is not Team Admin."
        "404":
          description: "Team Not Found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/notes/{noteId}:
    get:
      tags:
      - "Notes"
      summary: "Get Note"
      description: "Returns the specified note(s). It is possible to fetch up to 50 notes per request."
      operationId: "readUserNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be fetched"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMNoteWithBodyInfo"
        "404":
          description: "When note is not found."
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    delete:
      tags:
      - "Notes"
      summary: "Delete Note"
      description: "Deletes the specified note."
      operationId: "deleteNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be deleted"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Note is locked by another user"
        "403":
          description: "You have no permissions to delete note"
        "404":
          description: "Note is not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
    patch:
      tags:
      - "Notes"
      summary: "Update Note"
      description: "Edits a note. Notes can be edited by any user if posted to a chat. the user belongs to."
      operationId: "patchNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be updated"
        required: true
        schema:
          type: "string"
      - name: "releaseLock"
        in: "query"
        description: "If true then note lock (if any) will be released upon request"
        schema:
          type: "boolean"
          default: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TMCreateNoteRequest"
        required: true
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMNoteInfo"
        "400":
          description: "Note is locked by another user"
        "403":
          description: "You have no permissions to update the note"
        "404":
          description: "Note is not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/notes/{noteId}/lock:
    post:
      tags:
      - "Notes"
      summary: "Lock Note"
      description: "Locks a note providing the user with the unique write access for 5 hours."
      operationId: "lockNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be locked"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Note is locked by another user"
        "403":
          description: "You have no permissions to lock the note"
        "404":
          description: "Note is not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/notes/{noteId}/publish:
    post:
      tags:
      - "Notes"
      summary: "Publish Note"
      description: "Publishes a note making it visible to other users."
      operationId: "publishNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be published"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMNoteInfo"
        "400":
          description: "User is not a creator of note"
        "404":
          description: "Note is not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Medium"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/notes/{noteId}/unlock:
    post:
      tags:
      - "Notes"
      summary: "Unlock Note"
      description: "Unlocks a note letting other users edit this note. Once the note is locked (by another user) it cannot be unlocked during 5 hours since the lock datetime."
      operationId: "unlockNoteNew"
      parameters:
      - name: "noteId"
        in: "path"
        description: "Internal identifier of a note to be unlocked"
        required: true
        schema:
          type: "string"
      responses:
        "204":
          description: "No Content"
        "400":
          description: "Note is locked by another user"
        "403":
          description: "You have no permissions to unlock the note"
        "404":
          description: "Note is not found"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
  /team-messaging/v1/favorites:
    get:
      tags:
      - "Chats"
      summary: "List Favorite Chats"
      description: "Returns a list of the current user's favorite chats."
      operationId: "listFavoriteChatsNew"
      parameters:
      - name: "recordCount"
        in: "query"
        description: "Max number of chats to be fetched by one request (Not more than 250)."
        schema:
          maximum: 250
          type: "integer"
          format: "int32"
          default: 30
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TMChatListWithoutNavigation"
        "400":
          description: "Some of the parameters are missing or have invalid format"
      x-feature: "TeamMessaging"
      x-throttling-group: "Light"
      x-app-permission: "TeamMessaging"
components:
  securitySchemes:
    OAuth2:
      type: "oauth2"
      flows:
        authorizationCode:
          authorizationUrl: "https://platform.ringcentral.com/restapi/oauth/authorize"
          tokenUrl: "https://platform.ringcentral.com/restapi/oauth/token"
          refreshUrl: "https://platform.ringcentral.com/restapi/oauth/token"
          scopes: {}
  responses:
    Forbidden:
      description: |
        General response with **HTTP 403 "Forbidden"** status.<br>
        Reasons: the requested operation is forbidden because of certain resource state, lack of permissions, feature unavailability, etc.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
    InvalidRequest:
      description: |
        General response with **HTTP 400 "Bad request"** status.<br>
        Reasons: unparsable request, path, query or body parameters are invalid.
        The error description may contain reference to particular parameter(s) which haven't passed the validation.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ParameterizedErrorResponseModel"
    ServiceNotAvailable:
      description: |
        General response with **HTTP 503 "Service not available"** status.<br>
        Reasons: server cannot process the request because of being overloaded, misconfiguration or other issues.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
    InternalError:
      description: |
        General response with **HTTP 500 "Internal Server Error"** status.<br>
        Reasons: general server-side error.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
    NotFound:
      description: |
        General response with **HTTP 404 "Not found"** status.<br>
        Reasons: the entity with given ID (typically specified in a path parameter), is not found or inaccessible
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
    Conflict:
      description: |
        General response with **HTTP 409 "Conflict"** status.<br>
        Reasons: the requested modification operation causes a conflict (for example, unique constraint violation).
        The error definition may contain reference to particular parameter(s) which caused the conflict.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ParameterizedErrorResponseModel"
    RcvNotFound:
      description: "Resource not found"
    RcvInternalError:
      description: "Error processing data"
    RcvAccessForbidden:
      description: "Access forbidden"
    RcvBadRequest:
      description: "Bad request format"
    RcvTimeout:
      description: "Data processing timeout"
    OauthInvalidRequest:
      description: |
        The response with **HTTP 400 "Bad request"** status used in some OAuth / OpenID Connect endpoints.
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                error:
                  type: "string"
                  description: "Standard OAuth error code as defined by [RFC-6749](The OAuth 2.0 Authorization Framework)"
                  enum:
                  - "invalid_request"
                  - "invalid_client"
                  - "invalid_grant"
                  - "unauthorized_client"
                  - "unsupported_grant_type"
                  - "invalid_scope"
                  - "invalid_request_uri"
                  - "unsupported_response_type"
                  - "request_not_supported"
                  - "request_uri_not_supported"
                  - "expired_token"
                  - "insufficient_scope"
                  - "access_denied"
            - $ref: "#/components/schemas/ParameterizedErrorResponseModel"
    TooManyRequests:
      description: |
        General response with **HTTP 429 "Too many requests"** status.<br>
        Reasons: certain rate limit is exceeded.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
    SocCreateContentResponse201:
      description: "Successful response."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ContentModel"
    SocMsgResponse404:
      description: "Error 404"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-029:
              $ref: "#/components/examples/EDI-029"
            EDI-032:
              $ref: "#/components/examples/EDI-032"
    SocMsgListContentsResponse422:
      description: "Error 422 on content list"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-034:
              $ref: "#/components/examples/EDI-034"
            EDI-035:
              $ref: "#/components/examples/EDI-035"
            EDI-036:
              $ref: "#/components/examples/EDI-036"
    SocMsgCreateContentResponse400:
      description: "Error 400 on content creation"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-009:
              $ref: "#/components/examples/EDI-009"
            EDI-025:
              $ref: "#/components/examples/EDI-025"
            EDI-030:
              $ref: "#/components/examples/EDI-030"
            EDI-031:
              $ref: "#/components/examples/EDI-031"
            EDI-037:
              $ref: "#/components/examples/EDI-037"
            EDI-038:
              $ref: "#/components/examples/EDI-038"
            EDI-040:
              $ref: "#/components/examples/EDI-040"
    SocMsgCreateContentResponse403:
      description: "Error 403 on content creation"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-013:
              $ref: "#/components/examples/EDI-013"
            EDI-014:
              $ref: "#/components/examples/EDI-014"
            EDI-015:
              $ref: "#/components/examples/EDI-015"
            EDI-016:
              $ref: "#/components/examples/EDI-016"
            EDI-017:
              $ref: "#/components/examples/EDI-017"
            EDI-018:
              $ref: "#/components/examples/EDI-018"
            EDI-019:
              $ref: "#/components/examples/EDI-019"
            EDI-020:
              $ref: "#/components/examples/EDI-020"
            EDI-021:
              $ref: "#/components/examples/EDI-021"
            EDI-022:
              $ref: "#/components/examples/EDI-022"
            EDI-023:
              $ref: "#/components/examples/EDI-023"
            EDI-024:
              $ref: "#/components/examples/EDI-024"
    SocMsgListContentsResponse200:
      description: "Successful response."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ContentList"
    SocMsgCreateContentResponse422:
      description: "Error 422 on content creation"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-010:
              $ref: "#/components/examples/EDI-010"
            EDI-011:
              $ref: "#/components/examples/EDI-011"
            EDI-012:
              $ref: "#/components/examples/EDI-012"
            EDI-027:
              $ref: "#/components/examples/EDI-027"
            EDI-001:
              $ref: "#/components/examples/EDI-001"
            EDI-002:
              $ref: "#/components/examples/EDI-002"
            EDI-003:
              $ref: "#/components/examples/EDI-003"
            EDI-004:
              $ref: "#/components/examples/EDI-004"
            EDI-005:
              $ref: "#/components/examples/EDI-005"
            EDI-006:
              $ref: "#/components/examples/EDI-006"
            EDI-007:
              $ref: "#/components/examples/EDI-007"
            EDI-008:
              $ref: "#/components/examples/EDI-008"
            EDI-033:
              $ref: "#/components/examples/EDI-033"
    SocMsgListContentsResponse400:
      description: "Error 400 on content creation"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-028:
              $ref: "#/components/examples/EDI-028"
    SocMsgGetContentResponse200:
      description: "Successful response."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ContentModel"
    SocMsgListIdentitiesResponse200:
      description: "Successful response."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IdentitiesList"
    SocMsgListIdentitiesResponse400:
      description: "Error 400 on Identity search"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ApiErrorResponseModel"
          examples:
            EDI-028:
              $ref: "#/components/examples/EDI-028"
    SocMsgGetIdentityResponse200:
      description: "Successful response."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IdentityModel"
    ScimNotFound:
      description: "Not found"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimTooManyRequests:
      description: "Too many requests"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimForbidden:
      description: "Permissions denied"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimUnauthorized:
      description: "Authorization failure"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimBadRequest:
      description: "Bad request"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimInternalError:
      description: "Internal server error"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    ScimConflict:
      description: "Duplicate email"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
        application/scim+json:
          schema:
            $ref: "#/components/schemas/ScimErrorResponse"
    Unauthorized:
      description: |
        General response with **HTTP 401 "Unauthorized"** status.<br>
        Reasons: user authentication failed.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ParameterizedErrorResponseModel"
  schemas:
    SubscriptionListResource:
      type: "object"
      required:
      - "uri"
      - "records"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a resource"
        records:
          type: "array"
          minItems: 0
          maxItems: 20
          items:
            $ref: "#/components/schemas/SubscriptionInfo"
    MobileDeliveryMode:
      allOf:
      - $ref: "#/components/schemas/MobileDeliveryModeRequest"
      - type: "object"
        required:
        - "encryption"
        properties:
          encryption:
            type: "boolean"
            description: "Specifies if notification messages will be encrypted or not."
            enum:
            - false
            readOnly: true
    MobileDeliveryModeRequest:
      type: "object"
      required:
      - "transportType"
      - "certificateName"
      - "registrationId"
      properties:
        transportType:
          type: "string"
          description: "The transport type for this subscription, or the channel by which an app should be notified of an event"
          enum:
          - "RC/APNS"
          - "RC/GCM"
        certificateName:
          type: "string"
          description: "Certificate name for mobile notification transports"
        registrationId:
          type: "string"
          description: "Device instance ID for mobile notification transports"
          example: "38b062ae-85f8-4dcc-8734-04d3f7393d42"
    ParameterizedErrorResponseModel:
      type: "object"
      description: "Standard error response which may include parameterized errors"
      required:
      - "errors"
      properties:
        errors:
          type: "array"
          description: "The array of errors (there will be just one in the most of the cases)"
          minItems: 1
          items:
            $ref: "#/components/schemas/ApiErrorWithParameter"
    ApiErrorResponseModel:
      type: "object"
      description: "Standard error response model which is returned in case of any unsuccessful operation"
      required:
      - "errors"
      properties:
        errors:
          type: "array"
          description: "The array of errors (there will be just one in the most of the cases)"
          minItems: 1
          items:
            $ref: "#/components/schemas/ApiError"
    WebhookDeliveryModeRequest:
      type: "object"
      required:
      - "transportType"
      - "address"
      properties:
        transportType:
          type: "string"
          description: "The transport type for this subscription, or the channel by which an app should be notified of an event"
          enum:
          - "WebHook"
        address:
          type: "string"
          format: "uri"
          description: |
            The URL to which notifications should be delivered. This is only applicable for the `WebHook` transport type, for which it is a required field.
          example: "https://acme.com/myservice/webhook"
        verificationToken:
          type: "string"
          description: "An optional validation token used to verify the authenticity of the incoming webhook. Applicable only for the `WebHook` transport type."
          writeOnly: true
    ApiError:
      type: "object"
      description: "Generalized API error structure suitable for any error type"
      required:
      - "errorCode"
      - "message"
      properties:
        errorCode:
          type: "string"
          description: "Logical error code (typically, 3 letters followed with number, dash separated)"
          example: "XXX-123"
        message:
          type: "string"
          description: "User-friendly error message"
          example: "Something went wrong"
      additionalProperties: true
    WebSocketDeliveryMode:
      type: "object"
      required:
      - "transportType"
      properties:
        transportType:
          type: "string"
          description: "The transport type for this subscription, or the channel by which an app should be notified of an event"
          enum:
          - "WebSocket"
    DisabledFilterInfo:
      type: "object"
      required:
      - "filter"
      - "reason"
      properties:
        filter:
          type: "string"
          description: "Event filter that is disabled for the user"
        reason:
          type: "string"
          description: "Reason why the filter is disabled for the user"
        message:
          type: "string"
          description: "Error message"
    PubNubDeliveryMode:
      allOf:
      - $ref: "#/components/schemas/PubNubDeliveryModeRequest"
      - type: "object"
        required:
        - "address"
        - "subscriberKey"
        - "secretKey"
        - "encryption"
        properties:
          address:
            type: "string"
            description: |
              PubNub channel name
            example: "54770517599294_6dda849e"
            readOnly: true
          subscriberKey:
            type: "string"
            description: "PubNub credential required to subscribe to the channel"
            readOnly: true
          secretKey:
            type: "string"
            description: "PubNub credential required to subscribe to the channel"
            readOnly: true
          encryptionAlgorithm:
            type: "string"
            description: |
              (Only for a "PubNub" transport, returned only if `encryption` is `true`)
              Encryption algorithm used
            enum:
            - "AES"
            readOnly: true
          encryptionKey:
            type: "string"
            description: |
              (Only for a "PubNub" transport, returned only if `encryption` is `true`)
              Cryptographic key to decrypt PubNub notification messages
            readOnly: true
    PubNubDeliveryModeRequest:
      type: "object"
      required:
      - "transportType"
      properties:
        transportType:
          type: "string"
          description: "The transport type for this subscription, or the channel by which an app should be notified of an event"
          enum:
          - "PubNub"
        encryption:
          type: "boolean"
          description: |
            Optional. Specifies if notification messages will be encrypted
            or not. Please note that for some event filters (e.g. presence) encryption is mandatory and
            `false` value provided by caller will be ignored.
          default: false
    UpdateSubscriptionRequest:
      type: "object"
      required:
      - "eventFilters"
      properties:
        eventFilters:
          type: "array"
          description: "The list of event filters corresponding to events the user is subscribed to"
          minItems: 1
          items:
            type: "string"
            minLength: 1
        expiresIn:
          type: "integer"
          format: "int32"
          minimum: 1
          example: 1200
          description: |
            Subscription lifetime in seconds. The maximum subscription lifetime depends upon the specified `transportType`:

            | Transport type      | Maximum permitted lifetime     |
            | ------------------- | ------------------------------ |
            | `WebHook`           | 315360000 seconds (10 years)   |
            | `RC/APNS`, `RC/GSM` | 7776000 seconds (90 days)      |
            | `PubNub`            | 900 seconds (15 minutes)       |
            | `WebSocket`         | n/a (the parameter is ignored) |
    CreateWebhookSubscriptionRequest:
      allOf:
      - $ref: "#/components/schemas/UpdateSubscriptionRequest"
      - type: "object"
        required:
        - "deliveryMode"
        properties:
          deliveryMode:
            $ref: "#/components/schemas/WebhookDeliveryModeRequest"
    SubscriptionInfo:
      required:
      - "id"
      - "uri"
      - "eventFilters"
      - "deliveryMode"
      - "creationTime"
      - "expirationTime"
      - "status"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a subscription resource"
          readOnly: true
        id:
          type: "string"
          description: "Internal identifier of a subscription"
          readOnly: true
          example: "95fecfc9-9cdc-4e94-a78a-89fd65889d37"
        eventFilters:
          type: "array"
          description: "The list of event filter names corresponding to events the user is subscribed to"
          minItems: 0
          items:
            type: "string"
            minLength: 1
        disabledFilters:
          type: "array"
          minItems: 0
          description: |
            The list of event filter names corresponding to events the user is not subscribed to due to
            certain limitations
          items:
            $ref: "#/components/schemas/DisabledFilterInfo"
          readOnly: true
        expirationTime:
          type: "string"
          format: "date-time"
          description: |
            Subscription expiration time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
          readOnly: true
        expiresIn:
          type: "integer"
          format: "int32"
          minimum: 1
          description: "Subscription lifetime in seconds"
        status:
          type: "string"
          description: "Subscription status"
          enum:
          - "Active"
          - "Blacklisted"
          readOnly: true
        creationTime:
          type: "string"
          description: |
            Subscription creation time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534*
          format: "date-time"
          readOnly: true
        deliveryMode:
          $ref: "#/components/schemas/NotificationDeliveryMode"
        blacklistedData:
          type: "object"
          description: "Returned if a WebHook subscription is blacklisted"
          readOnly: true
          properties:
            blacklistedAt:
              type: "string"
              format: "date-time"
              description: |
                Time of adding subscription to a black list in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
                format including timezone, for example *2016-03-10T18:07:52.534Z*
            reason:
              type: "string"
              description: "Reason of adding subscription to a black list"
    WebhookDeliveryMode:
      type: "object"
      required:
      - "transportType"
      - "address"
      - "encryption"
      properties:
        transportType:
          type: "string"
          description: "The transport type for this subscription, or the channel by which an app should be notified of an event"
          enum:
          - "WebHook"
        address:
          type: "string"
          format: "uri"
          description: |
            The URL to which notifications should be delivered. This is only applicable for the `WebHook` transport type, for which it is a required field.
          example: "https://acme.com/myservice/webhook"
        encryption:
          type: "boolean"
          description: "Specifies if notification messages will be encrypted or not."
          enum:
          - false
          readOnly: true
    NotificationDeliveryMode:
      description: "Notification delivery transport information"
      anyOf:
      - $ref: "#/components/schemas/WebhookDeliveryMode"
      - $ref: "#/components/schemas/MobileDeliveryMode"
      - $ref: "#/components/schemas/PubNubDeliveryMode"
      - $ref: "#/components/schemas/WebSocketDeliveryMode"
      discriminator:
        propertyName: "transportType"
        mapping:
          WebHook: "#/components/schemas/WebhookDeliveryMode"
          RC/APNS: "#/components/schemas/MobileDeliveryMode"
          RC/GCM: "#/components/schemas/MobileDeliveryMode"
          PubNub: "#/components/schemas/PubNubDeliveryMode"
          WebSocket: "#/components/schemas/WebSocketDeliveryMode"
    ApiErrorWithParameter:
      description: |
        The error model with additional attributes which can be used for HTTP 400/409
        This is a deprecated model: "ApiError" model can be used instead with arbitrary additional parameters
      allOf:
      - $ref: "#/components/schemas/ApiError"
      - type: "object"
        properties:
          parameterName:
            type: "string"
            description: "The name of the API parameter/attribute which caused the error"
          parameterValue:
            type: "string"
            description: "The value of the API parameter/attribute which caused the error"
    RcwLinkedUserModel:
      type: "object"
      description: "The internal IDs of RC-authenticated users."
      properties:
        linkedUser:
          $ref: "#/components/schemas/RcwDomainUserModel"
    RcwImmutableResourceIdModel:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal object ID"
          minLength: 1
          maxLength: 20
          example: "78654321"
          readOnly: true
    RcwDomainUserModel:
      allOf:
      - $ref: "#/components/schemas/RcwUserModel"
      - type: "object"
        required:
        - "domain"
        properties:
          domain:
            type: "string"
            description: "Identity domain"
            enum:
            - "pbx"
            - "ilm"
            default: "pbx"
    RcwBaseContactModel:
      type: "object"
      properties:
        firstName:
          type: "string"
          description: "First (given) name"
          maxLength: 64
          example: "John"
          x-sensitive-data: "masked"
        lastName:
          type: "string"
          description: "Last (family) name"
          maxLength: 64
          example: "Doe"
          x-sensitive-data: "masked"
    RcwResourceBaseModel:
      allOf:
      - $ref: "#/components/schemas/RcwImmutableResourceIdModel"
      - type: "object"
        required:
        - "creationTime"
        - "lastModifiedTime"
        properties:
          creationTime:
            type: "string"
            description: "Object creation time"
            format: "date-time"
            readOnly: true
          lastModifiedTime:
            type: "string"
            description: "Object last modification time"
            format: "date-time"
            readOnly: true
    RcwUserModel:
      type: "object"
      required:
      - "userId"
      - "accountId"
      properties:
        userId:
          type: "string"
          maxLength: 256
          description: "User ID"
        accountId:
          type: "string"
          maxLength: 256
          description: "Account ID"
    WebinarResource:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/WebinarTitleModel"
      - type: "object"
        properties:
          settings:
            $ref: "#/components/schemas/WebinarSettingsModel"
      - $ref: "#/components/schemas/WebinarHostModel"
    WebinarTitleModel:
      type: "object"
      required:
      - "title"
      properties:
        title:
          type: "string"
          description: "Webinar title"
          maxLength: 512
          minLength: 1
          example: "All-Hands Webinar"
        description:
          type: "string"
          description: "User-friendly description of the Webinar"
          maxLength: 4096
          minLength: 0
          example: "Quarterly All-hands event to present recent news about our company to employees"
          default: ""
    HostModel:
      allOf:
      - $ref: "#/components/schemas/RcwBaseContactModel"
      - $ref: "#/components/schemas/RcwLinkedUserModel"
    WebinarSettingsModel:
      type: "object"
      description: "Various settings which define behavior of this Webinar's Sessions"
      properties:
        recordingEnabled:
          type: "boolean"
          description: "Indicates if recording is enabled (if false all other recording settings cannot be enabled)"
          default: true
        autoRecord:
          type: "boolean"
          description: "Indicates if recording should start automatically when a Webinar goes live"
          default: true
        recordingSharingEnabled:
          type: "boolean"
          description: "Indicates if recording can be shared"
          readOnly: true
          default: true
        recordingDownloadEnabled:
          type: "boolean"
          description: "Indicates if recording can be downloaded"
          readOnly: true
          default: true
        recordingDeletionEnabled:
          deprecated: true
          type: "boolean"
          description: |
            DEPRECATED AND REPLACED BY 'pastSessionDeletionEnabled' setting.
            Indicates if recording can be deleted (this setting is read-only at webinar/session level)
          readOnly: true
          default: false
        pastSessionDeletionEnabled:
          type: "boolean"
          description: |
            Indicates if deletion of past session along with its artifacts is enabled for host.
            This setting is read-only at webinar level
          readOnly: true
          default: false
        panelistWaitingRoom:
          type: "boolean"
          description: "Indicates if Panelists should be places to waiting room after joining"
          default: false
        panelistVideoEnabled:
          type: "boolean"
          description: "Indicates if Panelists' video should be 'on' by default"
          default: true
        panelistScreenSharingEnabled:
          type: "boolean"
          description: "Indicates if Panelists' screen sharing should be 'on' by default"
          default: true
        panelistMuteControlEnabled:
          type: "boolean"
          description: "Indicates if Panelists can mute/unmute themselves by default"
          default: true
        panelistAuthentication:
          type: "string"
          description: "Indicates if Panelists have to be authenticated users"
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "AuthenticatedCoworker"
        attendeeAuthentication:
          type: "string"
          description: "Indicates if attendees have to be authenticated users"
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "AuthenticatedCoworker"
        artifactsAccessAuthentication:
          type: "string"
          description: |
            Indicates who can access webinar artifacts. Applies to recordings at present.
            Applicable to other artifacts such as Q&A, Polls in the future.
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "AuthenticatedUser"
        pstnEnabled:
          type: "boolean"
          description: "Indicates if dial-in PSTN audio option is enabled by default"
          default: false
        password:
          type: "string"
          description: "Webinar password"
        qnaEnabled:
          type: "boolean"
          description: "Indicates if Q&A is enabled for the webinar (if false all other Q&A settings cannot be enabled)"
          default: true
        qnaAnonymousEnabled:
          type: "boolean"
          description: "Indicates if anonymous Q&A is enabled for the webinar"
          default: true
        moderatedQnaEnabled:
          type: "boolean"
          description: "Indicate if the moderated Q&A enabled for webinar"
          default: true
        pollsEnabled:
          type: "boolean"
          description: "Indicates if polls are enabled for the webinar (if false all other polls settings cannot be enabled)"
          default: true
        pollsAnonymousEnabled:
          type: "boolean"
          description: "Indicates if anonymous poll answers are enabled for the webinar"
          default: true
        registrationEnabled:
          type: "boolean"
          description: "Indicates if a registration is enabled for the webinar (if false all other registration settings are ignored)"
          default: false
        postWebinarRedirectUri:
          type: "string"
          format: "uri"
          description: "URI to redirect users after the webinar"
          example: "https://www.acme.com/thankyou"
        externalLivestreamEnabled:
          type: "boolean"
          description: "Indicates if livestreaming to external streaming provider is enabled"
          readOnly: true
          default: true
    WebinarHostModel:
      type: "object"
      required:
      - "host"
      properties:
        host:
          $ref: "#/components/schemas/HostModel"
    SessionResource:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/SessionBaseModel"
      - $ref: "#/components/schemas/SessionGeneratedModel"
      - $ref: "#/components/schemas/SessionRecordingExtendedModel"
      - $ref: "#/components/schemas/SessionLivestreamListModel"
    RecordingStatusModel:
      type: "string"
      description: "Recording status"
      enum:
      - "Processing"
      - "Available"
      - "Failed"
      - "Purged"
      example: "Available"
    SessionLivestreamStatusModel:
      type: "string"
      description: |
        Last known state of the livestream as notified by Webinar Livestreaming Controller Service (WLCS).
        Value may not be consistent with latest state, especially for livestream associated with OAuth2.0 based service providers.
        Thus, state must be obtained directly from WLCS
      enum:
      - "Initialized"
      - "Authorized"
      - "Configured"
      - "PublishSetup"
      - "Publishing"
      - "Paused"
      - "Error"
      - "Break"
      - "Deleted"
      - "Completed"
      example: "Initialized"
    RecordingSharedLinkExpiryModel:
      type: "string"
      nullable: true
      format: "date-time"
      description: "Time after which recording shared link cannot be accessed by recipients."
      example: "2023-10-01T10:05:00.000Z"
    RecordingSharingModel:
      type: "object"
      required:
      - "recordingSharedUri"
      properties:
        recordingSharedUri:
          type: "string"
          format: "uri"
          readOnly: true
          description: "Shared URI of the recording. If a password was required to join a webinar, the URI should contain the password encoded"
          example: "https://v.ringcentral.com/w/a/recording/de7yd8ew7yfsdfjh899843rgj?pw=a1b2c3d4"
    SessionLivestreamMinimalModel:
      type: "object"
      readOnly: true
      required:
      - "livestreamId"
      - "livestreamStatus"
      - "serviceProvider"
      properties:
        livestreamId:
          type: "string"
          description: "Identifier of the livestream"
          example: "40740e06-4eec-4458-a86e-8578e192274q"
        serviceProvider:
          type: "string"
          description: "Name of the livestreaming service provider"
          example: "YoutTube"
        livestreamStatus:
          $ref: "#/components/schemas/SessionLivestreamStatusModel"
        previousLivestreamStatus:
          $ref: "#/components/schemas/SessionLivestreamStatusModel"
        livestreamStartTime:
          type: "string"
          description: "Time at which the session started to publish media to livestream service provider."
          format: "date-time"
        error:
          $ref: "#/components/schemas/ApiError"
      example:
        livestreamId: "40740e06-4eec-4458-a86e-8578e192274q"
        livestreamStatus: "Error"
        previousLivestreamStatus: "Initialized"
        serviceProvider: "YouTube"
        error:
          errorCode: "WLA-123"
          message: "Authorization invalid"
    RcwSessionStatusModel:
      type: "string"
      description: "Webinar session status"
      enum:
      - "Scheduled"
      - "Active"
      - "Finished"
      example: "Finished"
    RecordingExtendedModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/RecordingBaseModel"
      - $ref: "#/components/schemas/RecordingSharingModel"
    SessionLivestreamListModel:
      type: "object"
      readOnly: true
      properties:
        livestreams:
          type: "array"
          minItems: 0
          description: "The list of livestreams configured for the session"
          items:
            $ref: "#/components/schemas/SessionLivestreamMinimalModel"
    SessionGeneratedModel:
      type: "object"
      properties:
        videoBridgeId:
          type: "string"
          description: "The RCV bridge id"
          example: "839874770"
    SessionBaseModel:
      allOf:
      - $ref: "#/components/schemas/SessionMinimalModel"
      - type: "object"
        properties:
          scheduledStartTime:
            type: "string"
            description: "Session scheduled start time."
            format: "date-time"
          scheduledDuration:
            type: "integer"
            format: "int32"
            description: "The scheduled duration of the Session in seconds."
            example: 1800
          timeZone:
            type: "string"
            description: "IANA-compatible time zone name (see https://www.iana.org/time-zones)."
            example: "America/New_York"
          localeCode:
            type: "string"
            description: "Session locale code. Can't be blank or null."
            example: "en-US"
            default: "en-US"
          panelJoinTimeOffset:
            type: "integer"
            format: "int32"
            description: |
              The time offset (positive, in seconds) indicating how much in advance
              (comparing to "scheduledStartTime") panel members should join for the pre-webinar team sync
            minimum: 0
            default: 0
            example: 900
          broadcastingStartTime:
            type: "string"
            description: "The time when broadcasting started."
            format: "date-time"
          broadcastingEndTime:
            type: "string"
            description: "The time when broadcasting ended."
            format: "date-time"
          status:
            $ref: "#/components/schemas/RcwSessionStatusModel"
          runtimeStatus:
            $ref: "#/components/schemas/SessionRuntimeStatusModel"
          participantCount:
            type: "integer"
            format: "int32"
            description: "The number of participants (of all roles) who joined the webinar"
            example: 150
          attendeeCount:
            type: "integer"
            format: "int32"
            description: "The number of attendees who joined the webinar"
            example: 145
          uniqueParticipantCount:
            type: "integer"
            format: "int32"
            description: "Unique number of participants (of all roles) who joined the webinar"
            example: 140
          uniqueAttendeeCount:
            type: "integer"
            format: "int32"
            description: "Unique number of attendees who joined the webinar"
            example: 135
    SessionRecordingExtendedModel:
      type: "object"
      properties:
        recording:
          $ref: "#/components/schemas/RecordingExtendedModel"
    RecordingSharedStatusModel:
      type: "boolean"
      description: |
        Indicates if Host or Admin has shared a recording.
        Can be set to true only then recording status is 'Available'.
      example: true
    SessionMinimalModel:
      type: "object"
      properties:
        startTime:
          type: "string"
          description: |
            Session start time. If a session hasn't been started this fields should be set to "scheduledStartTime"
          format: "date-time"
        endTime:
          type: "string"
          description: |
            Session end time. If a session hasn't been finished this fields should be set to ("startTime"+"scheduledDuration")
          format: "date-time"
        duration:
          type: "integer"
          format: "int32"
          description: "Session duration in seconds rounded up (returned if 'startTime' and 'endTime' are not empty)"
          example: 3600
        title:
          type: "string"
          description: "Session title. If blank - derived from webinar title."
          maxLength: 512
          example: "Live Broadcasting US"
        description:
          type: "string"
          maxLength: 4096
          description: "User-friendly description of the Session. If blank - derived from webinar title."
          example: "Live session for US-based participants"
    SessionRuntimeStatusModel:
      type: "string"
      description: |
        Session runtime status (for 'Active' Sessions only).
        It is omitted (or null) if the status is not Active
      enum:
      - "Idle"
      - "Practice"
      - "GoingLive"
      - "Live"
      - "Break"
      - "Debrief"
    RecordingBaseModel:
      type: "object"
      required:
      - "status"
      properties:
        status:
          $ref: "#/components/schemas/RecordingStatusModel"
        failureReason:
          $ref: "#/components/schemas/ApiError"
        duration:
          type: "integer"
          format: "int32"
          readOnly: true
          minimum: 1
          description: "Recording duration in seconds"
          example: 3600
        shared:
          $ref: "#/components/schemas/RecordingSharedStatusModel"
        sharedUriExpirationTime:
          $ref: "#/components/schemas/RecordingSharedLinkExpiryModel"
    OriginalRoleModel:
      type: "object"
      description: "Role assigned to participant when invite was sent or during join time (if an invite was not sent)"
      required:
      - "originalRole"
      properties:
        originalRole:
          $ref: "#/components/schemas/RcwRoleEnum"
    RcwPagingModel:
      allOf:
      - $ref: "#/components/schemas/RcwPagingForwardModel"
      - type: "object"
        properties:
          previousPageToken:
            type: "string"
            description: "Previous page token (absent for the first page of the result set)"
    ParticipantListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/ParticipantExtendedModel"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    RcwRoleAttributeModel:
      type: "object"
      description: "The attribute declaration to indicate webinar session participant/invitee role"
      required:
      - "role"
      properties:
        role:
          $ref: "#/components/schemas/RcwRoleEnum"
    ParticipantBaseModel:
      readOnly: true
      allOf:
      - $ref: "#/components/schemas/ParticipantReducedModel"
      - type: "object"
        properties:
          email:
            $ref: "#/components/schemas/RcwEmailModel"
          qnaBlocked:
            type: "boolean"
            description: |
              Boolean to indicate if the participant was blocked from Q&A
            example: true
    ParticipantReducedModel:
      readOnly: true
      allOf:
      - $ref: "#/components/schemas/RcwResourceIdModel"
      - $ref: "#/components/schemas/RcwBaseContactModel"
      - $ref: "#/components/schemas/RcwRoleAttributeModel"
      - $ref: "#/components/schemas/OriginalRoleModel"
      - $ref: "#/components/schemas/RcwLinkedUserModel"
      - $ref: "#/components/schemas/AvatarOwnerModel"
      - $ref: "#/components/schemas/ParticipantTypeModel"
    AvatarOwnerModel:
      type: "object"
      properties:
        avatarToken:
          type: "string"
          description: "A token to access avatar image from CDN. Available only for authenticated panelists"
          example: "wedyugwied8wud98u90i329silqdjalidj"
          readOnly: true
    RcwPagingForwardModel:
      type: "object"
      required:
      - "pageToken"
      - "perPage"
      properties:
        perPage:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: "Number of items per page"
          example: 100
        pageToken:
          type: "string"
          description: "Current page token"
        nextPageToken:
          type: "string"
          description: "Next page token (absent for the last page of the result set)"
        previousPageToken:
          type: "string"
          description: |
            Previous page token (absent for the first page of the result set)
            May be omitted if the result set does not support backward navigation.
    RcwEmailModel:
      type: "string"
      format: "email"
      minLength: 1
      maxLength: 256
      example: "john.doe@example.com"
      description: "User's contact email"
      x-sensitive-data: "normalized-anonymized"
    ParticipantTypeModel:
      type: "object"
      required:
      - "type"
      properties:
        type:
          type: "string"
          description: "The type of the participant specified in invite or determined at join time"
          enum:
          - "User"
          - "Room"
          default: "User"
    RcwRoleEnum:
      type: "string"
      description: |
        The role of the webinar session participant/invitee.
        See also: [Understanding Webinar Roles](https://support.ringcentral.com/webinar/getting-started/understanding-ringcentral-webinar-roles.html)
      enum:
      - "Panelist"
      - "CoHost"
      - "Host"
      - "Attendee"
      example: "Panelist"
    RcwResourceIdModel:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal object ID"
          minLength: 1
          maxLength: 20
          example: "78654321"
    ParticipantExtendedModel:
      allOf:
      - $ref: "#/components/schemas/ParticipantBaseModel"
      - type: "object"
        properties:
          joinTime:
            type: "string"
            format: "date-time"
            description: "The time (earliest) when this participant joined the session"
          leaveTime:
            type: "string"
            format: "date-time"
            description: "The time (latest) when this participant left the session"
          wasEjected:
            type: "boolean"
            description: "Indicates if this participant was ejected from the webinar"
          inviteeId:
            type: "string"
            description: "For invited participants - Invitee ID (matches Configuration API Invitee IDs)"
          registrantId:
            type: "string"
            description: "Registrant ID"
            example: "12345678"
          uniqueUserHash:
            type: "string"
            description: "The hash string which is unique for each unique user"
            example: "qzR4wNbddziRil7i033ELlb3KXrJDsw8mOyj970J+so="
    InviteeListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/InviteeModel"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    InviteeModel:
      allOf:
      - $ref: "#/components/schemas/ParticipantBaseModel"
      - type: "object"
        required:
        - "sendInvite"
        - "joined"
        properties:
          sendInvite:
            type: "boolean"
            description: |
              Indicates if invite/cancellation emails was sent to this invitee.
            example: true
          joined:
            type: "boolean"
            description: "Indicates that this invitee joined the session"
            example: true
    RecordingAdminModel:
      allOf:
      - $ref: "#/components/schemas/RecordingItemModel"
      - type: "object"
        properties:
          session:
            $ref: "#/components/schemas/SessionRefAdminModel"
    RecordingModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/RecordingBaseModel"
    RecordingAdminListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/RecordingAdminModel"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    WebinarRefModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceIdModel"
      - $ref: "#/components/schemas/WebinarTitleModel"
      - $ref: "#/components/schemas/WebinarHostModel"
    RecordingItemModel:
      allOf:
      - $ref: "#/components/schemas/RecordingModel"
      - type: "object"
        properties:
          session:
            $ref: "#/components/schemas/SessionRefModel"
    SessionRefAdminModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceIdModel"
      - $ref: "#/components/schemas/SessionMinimalModel"
      - type: "object"
        properties:
          webinar:
            $ref: "#/components/schemas/WebinarRefModel"
    SessionRefModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceIdModel"
      - $ref: "#/components/schemas/SessionMinimalModel"
      - type: "object"
        properties:
          webinar:
            $ref: "#/components/schemas/WebinarRefModel"
    RecordingAdminExtendedItemModel:
      allOf:
      - $ref: "#/components/schemas/RecordingItemExtendedModel"
      - type: "object"
        properties:
          session:
            $ref: "#/components/schemas/SessionRefAdminModel"
    RecordingItemExtendedModel:
      allOf:
      - $ref: "#/components/schemas/RecordingExtendedModel"
      - type: "object"
        properties:
          session:
            $ref: "#/components/schemas/SessionRefModel"
    SessionGlobalListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/SessionGlobalResource"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    SessionGlobalResource:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - type: "object"
        required:
        - "webinar"
        properties:
          webinar:
            $ref: "#/components/schemas/WebinarRefModel"
      - $ref: "#/components/schemas/SessionBaseModel"
      - $ref: "#/components/schemas/SessionGeneratedModel"
      - $ref: "#/components/schemas/SessionRecordingModel"
      - $ref: "#/components/schemas/SessionLivestreamListModel"
    SessionRecordingModel:
      type: "object"
      properties:
        recording:
          $ref: "#/components/schemas/RecordingModel"
    RecordingListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/RecordingItemModel"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    RecordingDownloadModel:
      type: "object"
      required:
      - "downloadUri"
      - "downloadContentType"
      - "downloadSize"
      properties:
        downloadUri:
          type: "string"
          format: "uri"
          description: "Download URI (available only for webinar host or admin)"
        downloadContentType:
          type: "string"
          description: "MIME type of the file to download."
          enum:
          - "video/mp4"
          - "audio/m4a"
          default: "video/mp4"
        downloadSize:
          type: "integer"
          format: "int64"
          description: "Download file size in bytes"
          example: 20821092300
    RecordingMediaType:
      type: "string"
      description: "Recording file media type. 'Video' implies multiplexed audio and video. 'Audio' refers to audio only."
      enum:
      - "Video"
      - "Audio"
      example: "Video"
      default: "Video"
    RegSessionModel:
      type: "object"
      required:
      - "id"
      - "registrationStatus"
      - "registrantCount"
      - "hasRealRegistrants"
      properties:
        id:
          type: "string"
          readOnly: true
          description: "ID of the session"
          example: "123456789"
        registrationStatus:
          type: "string"
          enum:
          - "Open"
          - "Closed"
          description: "Status of the registration"
          example: "Open"
        registrationPageUri:
          type: "string"
          format: "uri"
          description: "The URI of the registration landing page"
          readOnly: true
          example: "https://abcde12345.webinar.ringcentral.com/register"
        brandingDescriptorUri:
          type: "string"
          format: "uri"
          description: "The URI of the branding descriptor"
          readOnly: true
          example: "https://abcde12345.webinar.ringcentral.com/branding"
        registrantCount:
          type: "integer"
          format: "int32"
          description: "The current number of registrants"
          readOnly: true
          example: 10
        hasRealRegistrants:
          type: "boolean"
          description: "Indicates that there are non-test registrants"
          readOnly: true
          example: true
        icalendarSequence:
          type: "integer"
          format: "int32"
          minimum: 0
          readOnly: true
          description: "Sequence number for iCalendar email attachments"
        settings:
          type: "object"
          properties:
            autoCloseLimit:
              type: "integer"
              description: "The maximum number of registrants which forces closing the registration (0 means \"off\")."
              format: "int32"
              minimum: 0
              default: 0
            suppressEmails:
              type: "boolean"
              description: "Indicates that emails to registrants should be suppressed (should be supported by external party)"
              default: false
            registrationDigestEnabled:
              type: "boolean"
              description: "Indicates that registration digest should be sent to host."
              default: true
            preventMultipleDeviceJoins:
              type: "boolean"
              description: "Indicates that registrants are allowed to join from multiple devices."
              default: false
            workEmailRequired:
              type: "boolean"
              description: "Indicates that work email address is required for registration."
              default: false
            viewRecording:
              type: "boolean"
              description: "Indicates that recording will be shown after the webinar and in emails."
            onDemandDuration:
              type: "string"
              description: "Duration of on-demand webinar. The default value can only be used if the session is on demand."
              enum:
              - "OneMonth"
              - "TwoMonths"
              - "ThreeMonths"
              - "SixMonths"
              - "OneYear"
              default: "SixMonths"
            recordingExist:
              type: "boolean"
              description: "Indicates that recording exists for the session."
              readOnly: true
              nullable: true
    RegistrantModelResponsePostWithQuestionnaire:
      allOf:
      - $ref: "#/components/schemas/RegistrantModelWithQuestionnaire"
      - type: "object"
        properties:
          icalendarSequence:
            type: "integer"
            format: "int32"
            minimum: 0
            readOnly: true
            description: "Sequence number for iCalendar email attachments"
    RegQuestionBaseModel:
      type: "object"
      required:
      - "questionId"
      properties:
        questionId:
          type: "string"
          description: "ID of the custom question"
          example: "123456789"
    FixedAnswerModel:
      allOf:
      - $ref: "#/components/schemas/RegQuestionBaseModel"
      - type: "object"
        required:
        - "answerIds"
        properties:
          answerIds:
            type: "array"
            description: "The list of answer IDs"
            minItems: 1
            items:
              type: "string"
    VariableAnswerModel:
      allOf:
      - $ref: "#/components/schemas/RegQuestionBaseModel"
      - type: "object"
        required:
        - "answerText"
        properties:
          answerText:
            type: "string"
            x-sensitive-data: "normalized-anonymized"
            description: "Answer text"
    RegistrantMinimalModel:
      allOf:
      - $ref: "#/components/schemas/RcwBaseContactModel"
      - type: "object"
        required:
        - "firstName"
        - "lastName"
        - "email"
        properties:
          email:
            $ref: "#/components/schemas/RcwEmailModel"
          joinUri:
            type: "string"
            format: "uri"
            readOnly: true
            maxLength: 256
            minLength: 5
            description: "The personalized URI for this registrant to join the Webinar"
            example: "https://v.ringcentral.com/w/a/join/iuyef77fsj473wn10ashjfk34"
          cancellationUri:
            type: "string"
            format: "uri"
            readOnly: true
            maxLength: 256
            minLength: 5
            description: "The personalized URI for this registrant to cancel the registration"
            example: "https://abcde12345.webinar.ringcentral.com/register?jlt=iuyef77fsj473wn10ashjfk34&action=cancel"
          registeredPostWebinar:
            type: "boolean"
            description: "Indicates if the registrant was registered to on-demand webinar"
            readOnly: true
            nullable: true
    RegistrantBaseModelWithQuestionnaire:
      allOf:
      - $ref: "#/components/schemas/RegistrantBaseModel"
      - type: "object"
        properties:
          questionnaire:
            type: "array"
            description: "Answers on custom registration questions"
            minItems: 0
            items:
              $ref: "#/components/schemas/RegAnswerModel"
    RegistrantBaseModel:
      allOf:
      - $ref: "#/components/schemas/RegistrantMinimalModel"
      - type: "object"
        properties:
          visitorId:
            type: "string"
            description: "Visitor ID passed from registration page"
          externalId:
            type: "string"
            description: "ID of a registrant passed from external system"
          registrationTime:
            type: "string"
            description: "Registration time (can be earlier than \"creationTime\" due to indirect persistence)"
            format: "date-time"
            readOnly: true
          ipAddress:
            type: "string"
            x-sensitive-data: "normalized-anonymized"
            format: "ipv4"
            description: "IP address of the registrant's user agent"
          source:
            type: "string"
            description: "Registration channel source (coming from registration URI)"
          participantId:
            type: "string"
            description: "ID of session participant (from Runtime Service - if this registrant attended the webinar)"
    RegistrantListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/RegistrantModelWithQuestionnaire"
        paging:
          $ref: "#/components/schemas/RcwPagingForwardModel"
    RegistrantModelWithQuestionnaire:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/RegistrantBaseModelWithQuestionnaire"
    RegAnswerModel:
      anyOf:
      - $ref: "#/components/schemas/FixedAnswerModel"
      - $ref: "#/components/schemas/VariableAnswerModel"
    WebinarCreationRequest:
      allOf:
      - $ref: "#/components/schemas/WebinarBaseModel"
      - required:
        - "title"
      - type: "object"
        properties:
          host:
            $ref: "#/components/schemas/RcwLinkedUserModel"
    WebinarBaseModel:
      allOf:
      - $ref: "#/components/schemas/WebinarInfoModel"
      - type: "object"
        properties:
          settings:
            $ref: "#/components/schemas/WcsWebinarSettingsModel"
    WcsWebinarResource:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/WebinarBaseModel"
      - $ref: "#/components/schemas/WebinarGeneratedModel"
    WcsWebinarSettingsModel:
      type: "object"
      description: "Various settings which define behavior of this Webinar's Sessions"
      properties:
        recordingEnabled:
          type: "boolean"
          description: "Indicates if recording is enabled (if false all other recording settings cannot be enabled)"
          default: true
          readOnly: true
        autoRecord:
          type: "boolean"
          description: "Indicates if recording should start automatically when a Webinar goes live"
          default: false
        recordingSharingEnabled:
          type: "boolean"
          description: "Indicates if recording can be shared (this setting is read-only at webinar level)"
          readOnly: true
          default: true
        recordingDownloadEnabled:
          type: "boolean"
          description: "Indicates if recording can be downloaded (this setting is read-only at webinar level)"
          readOnly: true
          default: true
        recordingDeletionEnabled:
          deprecated: true
          type: "boolean"
          description: |
            DEPRECATED AND REPLACED BY 'pastSessionDeletionEnabled' setting.
            Indicates if recording can be deleted (this setting is read-only at webinar level)
          readOnly: true
          default: false
        pastSessionDeletionEnabled:
          type: "boolean"
          description: |
            Indicates if deletion of past session along with its artifacts is enabled for Host.
            This setting is read-only at webinar level
          readOnly: true
          default: false
        panelistWaitingRoom:
          type: "boolean"
          description: "Indicates if Panelists should be places to waiting room after joining"
          default: false
        panelistVideoEnabled:
          type: "boolean"
          description: "Indicates if Panelists' video should be 'on' by default"
          default: true
        panelistScreenSharingEnabled:
          type: "boolean"
          description: "Indicates if Panelists' screen sharing should be 'on' by default"
          default: true
        panelistMuteControlEnabled:
          type: "boolean"
          description: "Indicates if Panelists can mute/unmute themselves by default"
          default: true
        panelistAuthentication:
          type: "string"
          description: "Indicates if Panelists have to be authenticated users"
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "Guest"
        attendeeAuthentication:
          type: "string"
          description: "Indicates if attendees have to be authenticated users"
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "Guest"
        artifactsAccessAuthentication:
          type: "string"
          description: |
            Indicates who can access webinar artifacts. Applies to recordings at present.
            Applicable to other artifacts such as Q&A, Polls in the future.
          enum:
          - "Guest"
          - "AuthenticatedUser"
          - "AuthenticatedCoworker"
          default: "AuthenticatedUser"
        pstnEnabled:
          type: "boolean"
          description: "Indicates if dial-in PSTN audio option is enabled for Panelists"
          default: false
        password:
          type: "string"
          maxLength: 64
          x-sensitive-data: "masked"
          description: |
            Webinar password. If company-level "passwordEnabled" is true and "password" is null / omitted,
            the backend generates the password
        qnaEnabled:
          type: "boolean"
          description: "Indicates if Q&A is enabled for the webinar (if false all other Q&A settings cannot be enabled)"
          default: true
        qnaAnonymousEnabled:
          type: "boolean"
          description: "Indicates if anonymous Q&A is enabled for the webinar"
          default: true
        pollsEnabled:
          type: "boolean"
          description: "Indicates if polls are enabled for the webinar (if false all other polls settings cannot be enabled)"
          readOnly: true
          default: true
        pollsAnonymousEnabled:
          type: "boolean"
          description: "Indicates if anonymous poll answers are enabled for the webinar"
          readOnly: true
          default: true
        registrationEnabled:
          type: "boolean"
          description: "Indicates if a registration is enabled for the webinar (if false all other registration settings are ignored)"
          default: false
        postWebinarRedirectUri:
          type: "string"
          format: "uri"
          description: "URI to redirect users after the webinar"
          example: "https://www.acme.com/thankyou"
        externalLivestreamEnabled:
          type: "boolean"
          description: "Indicates if livestreaming to external streaming provider is enabled"
          readOnly: true
          default: true
        moderatedQnaEnabled:
          type: "boolean"
          description: "Indicate if the moderated Q&A enabled for webinar"
          default: false
    WcsHostModel:
      type: "object"
      required:
      - "entitled"
      properties:
        entitled:
          type: "boolean"
          description: "Describes host's license, 'true' - license is active"
      allOf:
      - $ref: "#/components/schemas/RcwUserModel"
      - $ref: "#/components/schemas/RcwLinkedUserModel"
    WebinarListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/WcsWebinarResource"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    WebinarInfoModel:
      type: "object"
      properties:
        title:
          type: "string"
          description: "Webinar title"
          minLength: 1
          maxLength: 512
          x-sensitive-data: "masked"
          example: "All-Hands Webinar"
        description:
          type: "string"
          description: "User-friendly description of the Webinar"
          minLength: 0
          maxLength: 4096
          x-sensitive-data: "masked"
          example: "Quarterly All-hands event to present recent news about our company to employees"
    WebinarGeneratedModel:
      type: "object"
      required:
      - "host"
      properties:
        host:
          $ref: "#/components/schemas/WcsHostModel"
    WcsSessionStatusModel:
      type: "string"
      description: "Session status (for the purposes of Configuration service)"
      enum:
      - "Scheduled"
      - "Active"
      - "Finished"
      example: "Scheduled"
    WcsSessionBaseModel:
      type: "object"
      required:
      - "scheduledStartTime"
      - "scheduledDuration"
      - "timeZone"
      properties:
        scheduledStartTime:
          type: "string"
          description: "Session scheduled start time."
          format: "date-time"
        scheduledDuration:
          type: "integer"
          format: "int32"
          minimum: 30
          maximum: 43200
          description: "The duration of the Session in seconds."
          example: 1800
        timeZone:
          type: "string"
          description: "IANA-compatible time zone name (see https://www.iana.org/time-zones)."
          maxLength: 64
          minLength: 3
          example: "America/New_York"
        localizedTimeZoneDescription:
          type: "string"
          description: "Localized time zone description."
          example: "Eastern Time (America/New_York)"
        panelJoinTimeOffset:
          type: "integer"
          format: "int32"
          description: |
            The time offset (positive, in seconds) indicating how much in advance
            (comparing to "scheduledStartTime") panel members should join for the pre-webinar team sync
          minimum: 0
          default: 0
          example: 900
        title:
          type: "string"
          description: "Session title. Can be left blank - then Webinar title should be used for presentation."
          maxLength: 512
          minLength: 0
          x-sensitive-data: "masked"
          example: "Live Broadcasting US"
        description:
          type: "string"
          description: "User-friendly description of the Session. Can be left blank - then Webinar title should be used for presentation."
          maxLength: 4096
          minLength: 0
          x-sensitive-data: "masked"
          example: "Live session for US-based participants"
        status:
          $ref: "#/components/schemas/WcsSessionStatusModel"
        hostJoinUri:
          type: "string"
          format: "uri"
          readOnly: true
          maxLength: 256
          minLength: 5
          description: "The URI to join the webinar as a host"
          example: "https://v.ringcentral.com/w/join/de7yd8ew7yfsdfjh899843rgj"
    WcsSessionGeneratedModel:
      type: "object"
      properties:
        videoBridgeId:
          type: "string"
          description: "The RCV bridge id"
          readOnly: true
          example: "839874770"
        videoBridgePassword:
          type: "string"
          format: "password"
          readOnly: true
          x-sensitive-data: "masked"
          description: "The RCV bridge password. Returned only if requested by Host/Co-host/Panelist and a password for the bridge is set."
          example: "abc123"
        videoBridgePstnPassword:
          type: "string"
          format: "password"
          readOnly: true
          x-sensitive-data: "masked"
          description: "The RCV bridge PSTN password. Returned only if requested by Host/Co-host/Panelist and a PSTN password for the bridge is set."
          example: "abc123"
        attendeeJoinUri:
          type: "string"
          format: "uri"
          readOnly: true
          maxLength: 256
          minLength: 5
          description: "The URI for attendees to join the Webinar (if it is a public webinar)"
          example: "https://v.ringcentral.com/w/a/join/iuyef77fsj473wn10ashjfk34"
        hasUnsentInvites:
          type: "boolean"
          readOnly: true
          description: "Calculated attribute indicating if there are any unsent/deferred invites to session participants"
    WcsSessionResource:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/WcsSessionWithLocaleCodeModel"
      - $ref: "#/components/schemas/WcsSessionGeneratedModel"
    WcsSessionWithLocaleCodeModel:
      allOf:
      - $ref: "#/components/schemas/WcsSessionBaseModel"
      - type: "object"
        properties:
          localeCode:
            type: "string"
            description: "Session locale code. Can't be blank or null"
            maxLength: 8
            minLength: 2
            example: "en-US"
    BulkUpdateInviteesRequest:
      type: "object"
      properties:
        addedInvitees:
          type: "array"
          items:
            $ref: "#/components/schemas/AddInviteeRequest"
        updatedInvitees:
          type: "array"
          items:
            allOf:
            - $ref: "#/components/schemas/RcwResourceIdModel"
            - $ref: "#/components/schemas/UpdateInviteeRequest"
        deletedInvitees:
          type: "array"
          items:
            $ref: "#/components/schemas/RcwResourceIdModel"
    InviteeSettingsModel:
      type: "object"
      properties:
        type:
          $ref: "#/components/schemas/RcwInviteeTypeEnum"
        sendInvite:
          type: "boolean"
          description: |
            Indicates if invite/cancellation emails have to be sent to this invitee.
            For "Host" it cannot be set to false.
            If it is true it can't be changed back to false.
          default: true
    InviteeResource:
      allOf:
      - $ref: "#/components/schemas/InviteeBaseModel"
      - $ref: "#/components/schemas/InviteeGeneratedModel"
    BulkUpdateInviteesResponse:
      type: "object"
      properties:
        addedInvitees:
          type: "array"
          items:
            $ref: "#/components/schemas/InviteeResource"
        updatedInvitees:
          type: "array"
          items:
            $ref: "#/components/schemas/InviteeResource"
        deletedInvitees:
          type: "array"
          items:
            $ref: "#/components/schemas/RcwResourceIdModel"
    RcwInviteeTypeEnum:
      type: "string"
      description: "The type of the webinar invitee"
      enum:
      - "User"
      - "Room"
      default: "User"
    AddInviteeRequest:
      allOf:
      - $ref: "#/components/schemas/InviteeContactModel"
      - $ref: "#/components/schemas/RcwLinkedUserModel"
      - $ref: "#/components/schemas/RcwRoleAttributeModel"
      - $ref: "#/components/schemas/InviteeSettingsModel"
    InviteeGeneratedModel:
      type: "object"
      properties:
        joinUri:
          type: "string"
          format: "uri"
          description: "Personalized join link for the Invitee"
          maxLength: 256
          minLength: 5
          readOnly: true
          example: "https://v.ringcentral.com/w/join/de7yd8ew7yfsdfjh899843rgj"
        phoneParticipantCode:
          type: "string"
          maxLength: 12
          minLength: 1
          x-sensitive-data: "masked"
          description: "Phone (PSTN) participant code"
    UpdateInviteeRequest:
      allOf:
      - $ref: "#/components/schemas/InviteeContactModel"
      - $ref: "#/components/schemas/RcwRoleAttributeModel"
      - $ref: "#/components/schemas/InviteeSettingsModel"
    InviteeContactModel:
      allOf:
      - $ref: "#/components/schemas/RcwBaseContactModel"
      - type: "object"
        properties:
          email:
            $ref: "#/components/schemas/RcwEmailModel"
          jobTitle:
            type: "string"
            description: "Job title"
            maxLength: 64
            x-sensitive-data: "masked"
            example: "Product Manager"
    InviteeBaseModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - $ref: "#/components/schemas/InviteeContactModel"
      - $ref: "#/components/schemas/RcwLinkedUserModel"
      - $ref: "#/components/schemas/RcwRoleAttributeModel"
      - $ref: "#/components/schemas/InviteeSettingsModel"
    WcsInviteeListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/InviteeResource"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    WcsSessionGlobalListResource:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/SessionGlobalListEntry"
        paging:
          $ref: "#/components/schemas/RcwPagingModel"
    WcsWebinarRefModel:
      allOf:
      - $ref: "#/components/schemas/RcwResourceIdModel"
      - $ref: "#/components/schemas/WebinarInfoModel"
      - required:
        - "title"
      - type: "object"
        properties:
          host:
            $ref: "#/components/schemas/RcwLinkedUserModel"
    SessionGlobalListEntry:
      allOf:
      - $ref: "#/components/schemas/RcwResourceBaseModel"
      - type: "object"
        required:
        - "webinar"
        properties:
          webinar:
            $ref: "#/components/schemas/WcsWebinarRefModel"
      - $ref: "#/components/schemas/WcsSessionWithLocaleCodeModel"
    BridgePinsWithAliases:
      type: "object"
      properties:
        pstn:
          $ref: "#/components/schemas/BridgePstnPins"
        web:
          $ref: "#/components/schemas/WebPin"
        aliases:
          type: "array"
          description: |
            List of bridge aliases. An alias is a unique personal meeting name that can be specified for the default bridge.
            It can be used to join to a meeting in the same way as the short identifier.
          example:
          - "joseph1990"
          - "qa_team_2_lead"
          items:
            type: "string"
    User:
      required:
      - "accountId"
      - "extensionId"
      type: "object"
      properties:
        accountId:
          type: "string"
          description: "User account identifier"
          example: "664287016"
        extensionId:
          type: "string"
          description: "User extension identifier"
          example: "664307016"
    RecordingsPreferences:
      type: "object"
      description: "Recordings preferences"
      properties:
        everyoneCanControl:
          $ref: "#/components/schemas/EveryoneCanControl"
        autoShared:
          $ref: "#/components/schemas/AutoShared"
    BridgeResponseSecurityPassword:
      type: "object"
      properties:
        plainText:
          type: "string"
          description: |
            Meeting password.
            This field will be returned only if the request was done by bridge owner, his delegate or any user who has
            the Super Admin privilege.
          example: "Wq123ygs15"
        pstn:
          type: "string"
          description: |
            Meeting password for PSTN users.
            This field will be returned only if the request was done by bridge owner, his delegate or any user who has
            the Super Admin privilege.
          example: "7492486829"
        joinQuery:
          type: "string"
          description: |
            Meeting password hash.
            This field will be returned only if the request was done by bridge owner, his delegate or any user who has
            the Super Admin privilege.
          example: "99e4f8e6a241fc71279449a9c8f46eef"
    AutoShared:
      type: "object"
      description: "Controls whether recording can be auto shared"
      properties:
        enabled:
          type: "boolean"
          description: "Controls whether preference is enabled"
          example: true
        locked:
          type: "boolean"
          description: "Describes whether preference is locked on Service Web"
          example: false
    BridgePstnPins:
      type: "object"
      properties:
        host:
          type: "string"
          description: "Host PSTN PIN. If it is not specified while creation, then a PIN will be generated."
          example: "432331057631"
        participant:
          type: "string"
          description: "Participant PSTN PIN. If it is not specified while creation, then a PIN will be generated."
          example: "013409241367"
    BridgePins:
      type: "object"
      properties:
        pstn:
          $ref: "#/components/schemas/BridgePstnPins"
        web:
          $ref: "#/components/schemas/WebPin"
    BridgeRequestSecurity:
      type: "object"
      properties:
        passwordProtected:
          type: "boolean"
          description: |
            Specifies if a meeting is password protected.

            By default, Instant and Scheduled bridges are not password protected. For default (PMI) bridge, password
            protection will be turned on and the password will be generated if it is not specified while creation.

            While creation to set password protection you should set this field to true and specify a password in the
            **password** field. If you want to change password or set password protection for an unprotected bridge,
            you should set this field to true and specify a password in the **password** field in the update operation.

            To make protected bridge as unprotected you should set this field to false in the update operation.
          example: true
        password:
          type: "string"
          description: |
            Specifies a password if bridge meetings should be password protected (passwordProtected field is true).
            Besides that, if the field is specified in the request but **passwordProtected** field is missing then
            it means that **passwordProtected** field is set to true.
          example: "Wq123ygs15"
        noGuests:
          type: "boolean"
          description: "If true, only authenticated users can join to a meeting."
          default: false
        sameAccount:
          type: "boolean"
          description: "If true, only users have the same account can join to a meeting."
          default: false
        e2ee:
          type: "boolean"
          description: "If true, end to end encryption will be enabled for a meeting."
          default: false
    BridgeResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Unique bridge identifier"
          example: "iad41-c04-ndb256065cf14ae6a1832389d9c2e"
        name:
          type: "string"
          description: "Custom name of a bridge"
          example: "Weekly Meeting with Joseph"
        type:
          type: "string"
          description: |
            Type of bridge. It specifies bridge life cycle.
            1) Instant - The bridge will be used for a meeting only once immediately after creation. Then it will be deleted.
            2) Scheduled - The bridge will be used for scheduled one or more meetings. If the bridge is not used for a long
            time after the last meeting, then it will be deleted.
            3) PMI - The bridge will contain Personal Meeting Identifier owned by a user. It is the default user bridge.
            Each user may have only one default (PMI) bridge. Such bridge will be deleted only in case the user is deleted
            from the system.
          example: "Instant"
          enum:
          - "Instant"
          - "Scheduled"
          - "PMI"
        host:
          $ref: "#/components/schemas/User"
        pins:
          $ref: "#/components/schemas/BridgePinsWithAliases"
        security:
          $ref: "#/components/schemas/BridgeResponseSecurity"
        preferences:
          $ref: "#/components/schemas/BridgePreferences"
        discovery:
          $ref: "#/components/schemas/BridgeDiscovery"
    BridgeResponseSecurity:
      type: "object"
      properties:
        passwordProtected:
          type: "boolean"
          description: "Specifies if a meeting is password protected."
        password:
          $ref: "#/components/schemas/BridgeResponseSecurityPassword"
        noGuests:
          type: "boolean"
          description: "If true, only authenticated users can join to a meeting."
          example: false
        sameAccount:
          type: "boolean"
          description: "If true, only users have the same account can join to a meeting."
          example: false
        e2ee:
          type: "boolean"
          description: "If true, end to end encryption will be enabled for a meeting."
          default: false
    CreateBridgeRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Custom name of a bridge"
          example: "Weekly Meeting with Joseph"
        type:
          type: "string"
          description: |
            Type of bridge. It specifies bridge life cycle.
            1) Instant - The bridge will be used for a meeting only once immediately after creation. Then it will be deleted.
            2) Scheduled - The bridge will be used for scheduled one or more meetings. If the bridge is not used for a long
            time after the last meeting, then it will be deleted.
            3) PMI - The bridge will contain Personal Meeting Identifier owned by a user. It is the default user bridge.
            Each user may have only one default (PMI) bridge. Such bridge will be deleted only in case the user is deleted
            from the system.
          default: "Instant"
          enum:
          - "Instant"
          - "Scheduled"
          - "PMI"
        pins:
          $ref: "#/components/schemas/BridgePins"
        security:
          $ref: "#/components/schemas/BridgeRequestSecurity"
        preferences:
          $ref: "#/components/schemas/BridgePreferences"
    BridgeDiscovery:
      type: "object"
      properties:
        web:
          type: "string"
          description: |
            URI that can be used to join to the meeting.
            It contains password parameter only if the request was done by bridge owner, his delegate or any user who has
            the Super Admin privilege.
          example: "https://v.ringcentral.com/join/018209241352?pw=99e4f8e6a241fc71279449a9c8f46eef"
    WebPin:
      type: "string"
      description: |
        Bridge short identifier (Web PIN). The digital unique code which is used to join to a meeting. If it is not specified
        while creation, then a code will be generated. If it is a default bridge, then this code is
        Personal Meeting Identifier (PMI).

        NOTE: Changing this PIN via update method is deprecated. So to change Web PIN use the method:
        _*[PATCH] /rcvideo/v2/bridges/{bridgeId}/pin/web*_
      example: "018209241352"
    BridgeJoinPstnPreferences:
      type: "object"
      properties:
        promptAnnouncement:
          type: "boolean"
          description: "Specifies whether to play 'Announce yourself' prompt"
          default: true
        promptParticipants:
          type: "boolean"
          description: "Specifies whether to play 'There are X participants' prompt"
          default: true
    EveryoneCanControl:
      type: "object"
      description: "Controls whether participants can start and pause recording"
      properties:
        enabled:
          type: "boolean"
          description: "Controls whether preference is enabled"
          example: true
        locked:
          type: "boolean"
          description: "Describes whether preference is locked on Service Web"
          example: false
    BridgePreferences:
      type: "object"
      properties:
        join:
          $ref: "#/components/schemas/BridgeJoinPreferences"
        playTones:
          type: "string"
          description: |
            Specifies enter and exit tones mode.
            1) On - Enter and exit tones switched on.
            2) Off - Enter and exit tones switched off.
            3) ExitOnly - Only exit tones switched on.
            4) EnterOnly - Only enter tones switched on.
          default: "Off"
          enum:
          - "On"
          - "Off"
          - "ExitOnly"
          - "EnterOnly"
        musicOnHold:
          type: "boolean"
          description: "Specifies whether to play music on hold when alone"
          default: true
        joinBeforeHost:
          type: "boolean"
          description: |
            Specifies if participants can join to a meeting before host.
            Default value depends on the bridge type:
            - default bridge (PMI) -> false
            - other types -> true
          example: true
        screenSharing:
          type: "boolean"
          description: "Specifies if screen sharing is allowed"
          default: true
        recordingsMode:
          type: "string"
          enum:
          - "Auto"
          - "ForceAuto"
          - "User"
          example: "User"
          description: "Controls whether recordings are enabled automatically or by user decision"
        transcriptionsMode:
          type: "string"
          enum:
          - "Auto"
          - "ForceAuto"
          - "User"
          example: "User"
          description: "Controls whether transcriptions are enabled automatically or by user decision"
        recordings:
          $ref: "#/components/schemas/RecordingsPreferences"
        allowEveryoneTranscribeMeetings:
          type: "boolean"
          default: true
          description: "Controls whether participants can start and pause transcription"
    BridgeJoinPreferences:
      type: "object"
      properties:
        audioMuted:
          type: "boolean"
          description: "Specifies if audio is muted for meeting participants (in the preset after joining)"
          default: false
        videoMuted:
          type: "boolean"
          description: "Specifies if video is muted for meeting participants (in the preset after joining)"
          default: false
        waitingRoomRequired:
          type: "string"
          description: |
            Specifies rules for the waiting room before the host starts the meeting.
            1) Nobody - No waiting room. Participants are not waiting for meeting start.
            2) Everybody - All participants are waiting for meeting start.
            3) GuestsOnly - Only unauthenticated participants (guests) are waiting for meeting start.
            4) OtherAccount - Only participants who have other account are waiting for meeting start.

            Default value depends on the bridge type:
            - PMI -> OtherAccount
            - Instant, Scheduled -> Nobody
          example: "Nobody"
          enum:
          - "Nobody"
          - "Everybody"
          - "GuestsOnly"
          - "OtherAccount"
        pstn:
          $ref: "#/components/schemas/BridgeJoinPstnPreferences"
    UpdateBridgeRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Custom name of a bridge"
          example: "Weekly Meeting with Joseph"
        pins:
          $ref: "#/components/schemas/BridgePinsWithoutPstn"
        security:
          $ref: "#/components/schemas/BridgeRequestSecurity"
        preferences:
          $ref: "#/components/schemas/BridgePreferences"
    BridgePinsWithoutPstn:
      type: "object"
      properties:
        web:
          $ref: "#/components/schemas/WebPin"
    Host:
      type: "object"
      properties:
        accountId:
          type: "string"
          description: "Account id"
        extensionId:
          type: "string"
          description: "Extension id"
        displayName:
          type: "string"
          description: "Display name"
      description: "Meeting host"
    Paging:
      required:
      - "currentPageToken"
      type: "object"
      properties:
        currentPageToken:
          type: "string"
          description: "Current offset token"
        nextPageToken:
          type: "string"
          description: "Next page offset token"
      description: "Paging information"
    CloudRecordings:
      required:
      - "paging"
      - "recordings"
      type: "object"
      properties:
        recordings:
          type: "array"
          description: "Recordings array"
          items:
            $ref: "#/components/schemas/CloudRecording"
        paging:
          $ref: "#/components/schemas/Paging"
      description: "Recordings page"
    CloudRecording:
      required:
      - "displayName"
      - "hostInfo"
      - "id"
      - "shortId"
      - "startTime"
      - "mediaLink"
      - "url"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Call id"
        shortId:
          type: "string"
          description: "Short bridge id"
        startTime:
          type: "string"
          description: "Start time ISO 8601"
          format: "date-time"
        duration:
          type: "integer"
          description: "Meeting duration in seconds"
          format: "int32"
          example: 36
        displayName:
          type: "string"
          description: "Meeting name"
        hostInfo:
          $ref: "#/components/schemas/Host"
        mediaLink:
          type: "string"
          description: "Link to the recording file. Not used anymore by Web team"
        url:
          type: "string"
          description: "Encrypted link to the recording file"
        expiresIn:
          type: "string"
          description: "Date after which recording will be deleted"
      description: "Recording information"
    Delegate:
      required:
      - "extensionId"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Delegate id (equal as extension id of delegate)"
          readOnly: true
        name:
          type: "string"
          description: "Delegate name"
          readOnly: true
        accountId:
          type: "string"
          description: "Delegate account id"
        extensionId:
          type: "string"
          description: "Delegate extension id"
    DelegatorsListResult:
      type: "object"
      properties:
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/Delegate"
    Meeting:
      required:
      - "bridgeId"
      - "displayName"
      - "hostInfo"
      - "rights"
      - "id"
      - "participants"
      - "shortId"
      - "startTime"
      - "status"
      - "type"
      - "recordings"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Call id"
        bridgeId:
          type: "string"
          description: "Bridge id"
        shortId:
          type: "string"
          description: "Short bridge id"
        startTime:
          type: "string"
          description: "Start time ISO 8601"
          format: "date-time"
        duration:
          type: "integer"
          description: "Duration second"
          format: "int32"
          example: 36
        displayName:
          type: "string"
          description: "Meetings name"
        type:
          type: "string"
          description: "Meeting type"
          enum:
          - "Meeting"
          - "Call"
        status:
          type: "string"
          description: "Meeting status"
          enum:
          - "InProgress"
          - "Done"
        hostInfo:
          $ref: "#/components/schemas/Host"
        rights:
          description: "Describe access rights which has participants to meeting"
          type: "array"
          items:
            type: "string"
            enum:
            - "delete"
            - "download"
            - "share"
        longSummary:
          description: "During meeting AI team analyze code and after meeting finished generates text summary about this meeting"
          type: "string"
        shortSummary:
          description: "During meeting AI team analyze code and after meeting finished generates text summary about this meeting"
          type: "string"
        keywords:
          description: "During meeting AI team analyze code and after meeting finished generates key words used in meeting"
          type: "array"
          items:
            type: "string"
        participants:
          type: "array"
          description: "List of the participants in the meeting"
          items:
            $ref: "#/components/schemas/Participant"
        recordings:
          type: "array"
          description: "Recording information"
          items:
            $ref: "#/components/schemas/Recording"
        chatUrl:
          type: "string"
          description: "Chat location"
      description: "Meeting information"
    Recording:
      required:
      - "id"
      - "availabilityStatus"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Recording id"
        startTime:
          type: "integer"
          format: "int64"
          description: "Recording start time"
        url:
          type: "string"
          description: "Secure Link to the recording file"
        metadata:
          $ref: "#/components/schemas/JsValue"
        status:
          type: "string"
          description: "Recording processing status"
          enum:
          - "Processing"
          - "Processed"
          - "Error"
          - "Corrupted"
          - "InProgress"
          - "Purged"
          - "Failed"
        availabilityStatus:
          type: "string"
          description: "Availability status"
          enum:
          - "Alive"
          - "Deleted"
          - "Purged"
          - "NotAvailable"
        longSummary:
          type: "string"
          description: "During meeting AI team analyze code and after meeting finished generates text summary about this meeting"
        shortSummary:
          type: "string"
          description: "During meeting AI team analyze code and after meeting finished generates text summary about this meeting"
        keywords:
          type: "array"
          description: "During meeting AI team analyze code and after meeting finished generates key words used in meeting"
          items:
            type: "string"
      description: "Recording information"
    JsValue:
      type: "object"
      properties: {}
    MeetingPage:
      required:
      - "meetings"
      - "paging"
      type: "object"
      properties:
        meetings:
          type: "array"
          description: "Meetings array"
          items:
            $ref: "#/components/schemas/Meeting"
        paging:
          $ref: "#/components/schemas/Paging"
      description: "Meetings page"
    Participant:
      required:
      - "type"
      - "id"
      type: "object"
      properties:
        type:
          type: "string"
          description: "Participant type"
        id:
          type: "string"
          description: "id"
        accountId:
          type: "string"
          description: "Account id"
        extensionId:
          type: "string"
          description: "Extension id"
        displayName:
          type: "string"
          description: "Display name"
        callerId:
          type: "string"
          description: "Caller id"
        correlationId:
          description: "Pass-thru parameter in join url"
          type: "string"
      description: "Participant information"
    ApiVersionInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of API version"
        versionString:
          type: "string"
          description: "Version of the RingCentral REST API"
        releaseDate:
          type: "string"
          format: "date-time"
          description: "Release date of this version"
        uriString:
          type: "string"
          description: "URI part determining the current version"
      example:
        uri: "https://platform.ringcentral.com/restapi/v1.0"
        versionString: "1.0.34"
        releaseDate: "2018-02-09T00:00:00.000Z"
        uriString: "v1.0"
    ApiVersionsList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of the API version"
        apiVersions:
          type: "array"
          description: "Full API version information: uri, number, release date"
          items:
            $ref: "#/components/schemas/ApiVersionInfo"
        serverVersion:
          type: "string"
          description: "Server version"
        serverRevision:
          type: "string"
          description: "Server revision"
      example:
        uri: "https://platform.ringcentral.com/restapi"
        apiVersions:
        - uri: "https://platform.ringcentral.com/restapi/v1.0"
          versionString: "1.0.34"
          releaseDate: "2018-02-09T00:00:00.000Z"
          uriString: "v1.0"
        serverVersion: "10.0.4.7854"
        serverRevision: "32f2a96b769c"
    GetTokenRequest:
      allOf:
      - $ref: "#/components/schemas/ClientAuthJwtModel"
      - $ref: "#/components/schemas/BaseTokenRequest"
      - anyOf:
        - $ref: "#/components/schemas/AuthCodeTokenRequest"
        - $ref: "#/components/schemas/RopcTokenRequest"
        - $ref: "#/components/schemas/JwtTokenRequest"
        - $ref: "#/components/schemas/RefreshTokenRequest"
        - $ref: "#/components/schemas/IvrPinTokenRequest"
        - $ref: "#/components/schemas/DeviceCodeTokenRequest"
        - $ref: "#/components/schemas/ClientCredentialsTokenRequest"
        - $ref: "#/components/schemas/OtpTokenRequest"
        - $ref: "#/components/schemas/GuestTokenRequest"
        discriminator:
          propertyName: "grant_type"
          mapping:
            authorization_code: "#/components/schemas/AuthCodeTokenRequest"
            password: "#/components/schemas/RopcTokenRequest"
            urn:ietf:params:oauth:grant-type:jwt-bearer: "#/components/schemas/JwtTokenRequest"
            partner_jwt: "#/components/schemas/JwtTokenRequest"
            refresh_token: "#/components/schemas/RefreshTokenRequest"
            ivr_pin: "#/components/schemas/IvrPinTokenRequest"
            urn:ietf:params:oauth:grant-type:device_code: "#/components/schemas/DeviceCodeTokenRequest"
            client_credentials: "#/components/schemas/ClientCredentialsTokenRequest"
            otp: "#/components/schemas/OtpTokenRequest"
            guest: "#/components/schemas/GuestTokenRequest"
    TokenInfo:
      type: "object"
      required:
      - "access_token"
      - "expires_in"
      - "scope"
      - "token_type"
      properties:
        access_token:
          type: "string"
          description: "OAuth access token to pass to subsequent API requests"
          example: "U1BCMDFUMDRKV1MwMXxzLFSvXdw5PHMsVLEn_MrtcyxUsw"
        expires_in:
          type: "integer"
          format: "int32"
          description: "Access token TTL (time-to-live) in seconds"
          example: 7199
        refresh_token:
          type: "string"
          description: |
            OAuth refresh token (if issued)
          example: "U1BCMDFUMDRKV1MwMXxzLFL4ec6A0XMsUv9wLriecyxS_w"
        refresh_token_expires_in:
          type: "integer"
          format: "int32"
          description: "Refresh token TTL (time-to-live) in seconds"
          example: 604799
        scope:
          type: "string"
          description: |
            The list of space separated application permissions (OAuth scopes)
          example: "AccountInfo CallLog ExtensionInfo Messages SMS"
        token_type:
          type: "string"
          description: "Type of the token. The only supported value is `bearer`. This value should be used when specifying access token in `Authorization` header of subsequent API requests"
          enum:
          - "bearer"
          example: "bearer"
        owner_id:
          type: "string"
          description: "Token owner's identifier. Contains RingCentral user (extension) ID"
          example: "256440016"
        endpoint_id:
          type: "string"
          description: |
            Client application instance identifier that matches the value provided by the client,
            or generated by the server if a client has not provided this value
          example: "8zXq6oaLT7WvwWITlGiA1A"
        id_token:
          type: "string"
          description: "OpenID Connect ID token (if OpenID Connect flow was activated during authorization)"
        session_expires_in:
          type: "integer"
          format: "int32"
          description: |
            Remaining time in seconds until session expiration due to absolute timeout.
            Returned only if absolute session timeout is enforced
        session_expiration_time:
          type: "string"
          format: "date-time"
          description: |
            Absolute value of session expiration time in ISO date formatted string.
            Returned only if absolute session timeout is enforced
          example: "2023-04-01T12:00:01Z"
        session_id:
          type: "string"
          description: "OAuth session ID"
        session_idle_timeout:
          type: "integer"
          format: "int32"
          description: |
            Nominal value of session idle timeout in seconds.
            Returned only if idle session timeout is enforced
    IvrPinTokenRequest:
      title: "IVR Pin"
      type: "object"
      description: |
        Token endpoint request parameters used in the "IVR Pin" authorization flow with the `ivr_pin` grant type
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "ivr_pin"
        ivr_pin:
          type: "string"
          description: "For `ivr_pin` grant type only. User's IVR pin."
    ClientCredentialsTokenRequest:
      title: "Client Credentials"
      allOf:
      - type: "object"
        description: "Token endpoint request parameters used in the \"Client Credentials\" authorization flow with the `client_credentials` grant type"
        properties:
          grant_type:
            type: "string"
            description: "Grant type"
            enum:
            - "client_credentials"
      - anyOf:
        - type: "object"
          required:
          - "account_id"
          properties:
            account_id:
              type: "string"
              description: "RingCentral internal account ID"
        - type: "object"
          required:
          - "brand_id"
          properties:
            partner_account_id:
              type: "string"
              description: "The ID of the account on RingCentral partner's side"
            brand_id:
              type: "string"
              description: "RingCentral Brand identifier."
    DeviceCodeTokenRequest:
      title: "Device Token"
      type: "object"
      description: |
        Token endpoint request parameters used in the "Device Authorization" flow
        with the `urn:ietf:params:oauth:grant-type:device_code` grant type
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "urn:ietf:params:oauth:grant-type:device_code"
        device_code:
          type: "string"
          description: |
            For `urn:ietf:params:oauth:grant-type:device_code` grant type only.
            The device verification code as defined by [RFC-8628](https://datatracker.ietf.org/doc/html/rfc8628#section-3.4)
    ClientAuthJwtModel:
      type: "object"
      properties:
        client_assertion_type:
          type: "string"
          enum:
          - "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
          description: |
            Client assertion type for the `client_secret_jwt` or `private_key_jwt` client authentication types,
            as defined by [RFC-7523](https://datatracker.ietf.org/doc/html/rfc7523#section-2.2).
            This parameter is mandatory if the client authentication is required and a client decided to use one of these authentication types
        client_assertion:
          type: "string"
          description: |
            Client assertion (JWT) for the `client_secret_jwt` or `private_key_jwt` client authentication types,
            as defined by [RFC-7523](https://datatracker.ietf.org/doc/html/rfc7523#section-2.2).
            This parameter is mandatory if the client authentication is required and a client decided to use one of these authentication types
    GuestTokenRequest:
      title: "Guest"
      type: "object"
      description: "Token endpoint request parameters used in the \"Guest\" authorization flow with the `guest` grant type"
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "guest"
        brand_id:
          type: "string"
          description: "RingCentral Brand identifier."
        resource_type:
          type: "string"
          description: "Resource type for the guest access."
        resource:
          type: "string"
          description: "Resource URL for the guest access."
    AuthCodeTokenRequest:
      title: "Authorization Code"
      type: "object"
      description: |
        Token endpoint request parameters used in the "Authorization Code" and "Authorization code with PKCE" flows
        with the `authorization_code` grant type
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "authorization_code"
        code:
          type: "string"
          description: "For `authorization_code` grant type only. User's authorization code"
        redirect_uri:
          type: "string"
          format: "uri"
          description: |
            For `authorization_code` grant type only. This is a callback URI which determines where the response
            is sent. The value of this parameter must exactly match one of
            the URIs you have provided for your app upon registration
        code_verifier:
          type: "string"
          description: |
            For `authorization_code` grant type only.
            The code verifier as defined by  the PKCE specification -
            [RFC-7636 "Proof Key for Code Exchange by OAuth Public Clients"](https://datatracker.ietf.org/doc/html/rfc7636)
    JwtTokenRequest:
      title: "JWT-Bearer"
      type: "object"
      description: |
        Token endpoint request parameters used in the "Personal JWT", "JWT Bearer" and "Partner JWT" authorization flows
        with the `urn:ietf:params:oauth:grant-type:jwt-bearer` and `partner_jwt` grant types
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "urn:ietf:params:oauth:grant-type:jwt-bearer"
          - "partner_jwt"
        assertion:
          type: "string"
          description: |
            For `urn:ietf:params:oauth:grant-type:jwt-bearer` or `partner_jwt` grant types only.
            Authorization grant assertion (JWT)
            as defined by [RFC-7523](https://datatracker.ietf.org/doc/html/rfc7523#section-2.1).
    BaseTokenRequest:
      type: "object"
      required:
      - "grant_type"
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "authorization_code"
          - "password"
          - "refresh_token"
          - "client_credentials"
          - "urn:ietf:params:oauth:grant-type:jwt-bearer"
          - "urn:ietf:params:oauth:grant-type:device_code"
          - "device_certificate"
          - "partner_jwt"
          - "guest"
          - "personal_jwt"
          - "otp"
          - "ivr_pin"
        scope:
          type: "string"
          description: |
            The list of application permissions (OAuth scopes) requested.
            By default, it includes all permissions configured on
            the client application registration
        client_id:
          type: "string"
          description: |
            The registered identifier of a client application.
            Used to identify a client ONLY if the client authentication is not required and
            corresponding credentials are not provided with this request
          example: "AZwEVwGEcfGet2PCouA7K6"
        endpoint_id:
          type: "string"
          description: |
            The unique identifier of a client application instance. If not
            specified, the derived or auto-generated value will be used
        access_token_ttl:
          maximum: 3600
          minimum: 600
          type: "integer"
          description: "Access token lifetime in seconds"
          format: "int32"
          default: 3600
        refresh_token_ttl:
          maximum: 604800
          type: "integer"
          description: "Refresh token lifetime in seconds"
          format: "int32"
          default: 604800
    RefreshTokenRequest:
      title: "Refresh Token"
      type: "object"
      description: |
        Token endpoint request parameters used in the "Refresh Token" flow
        with the `refresh_token` grant type
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "refresh_token"
        refresh_token:
          type: "string"
          description: |
            For `refresh_token` grant type only. Previously issued refresh token.
    OtpTokenRequest:
      title: "One-time Password (OTP)"
      type: "object"
      description: "Token endpoint request parameters used in the \"One-time Password\" (OTP) authorization flow with the `otp` grant type"
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "otp"
        code:
          type: "string"
          description: |
            For `otp` grant type only.
            One-time password code
    RopcTokenRequest:
      title: "Password (ROPC)"
      type: "object"
      description: |
        Token endpoint request parameters used in the "Password" (also known as "Resource Owner Password Credentials" - ROPC)
        authorization flow with the `password` grant type
      properties:
        grant_type:
          type: "string"
          description: "Grant type"
          enum:
          - "password"
        username:
          type: "string"
          description: |
            For `password` grant type only. User login name: email or phone number in E.164 format
        password:
          type: "string"
          description: "For `password` grant type only. User's password"
          format: "password"
        extension:
          type: "string"
          deprecated: true
          description: |
            For `password` grant type only. Optional. Extension short number. If a company number
            is specified as a username, and extension is not specified, the
            server will attempt to authenticate client as main company administrator

            DEPRECATED: use extension number embedded into username string like `+16501234567*101`
        pin:
          type: "string"
          deprecated: true
          description: |
            IVR pin for pin-based authentication.

            DEPRECATED: use a dedicated `ivr_pin` grant type instead
    AuthorizeRequest:
      type: "object"
      required:
      - "client_id"
      - "response_type"
      properties:
        response_type:
          type: "string"
          description: |
            Determines authorization flow type. The only supported value is `code` which corresponds to OAuth 2.0 "Authorization Code Flow"
          enum:
          - "code"
        redirect_uri:
          type: "string"
          format: "uri"
          description: |
            This is the URI where the Authorization Server redirects the User Agent to at the end of the authorization flow.
            The value of this parameter must exactly match one of the URIs registered for this client application.
            This parameter is required if there are more than one redirect URIs registered for the app.
        client_id:
          type: "string"
          description: "The registered identifier of a client application"
          example: "AZwEVwGEcfGet2PCouA7K6"
        state:
          type: "string"
          description: |
            An opaque value used by the client to maintain state between the request and callback.
            The authorization server includes this value when redirecting the User Agent back
            to the client. The parameter SHOULD be used for preventing cross-site request forgery attacks.
        scope:
          type: "string"
          description: "The list of requested OAuth scopes (space separated)"
        display:
          $ref: "#/components/schemas/DisplayModesEnum"
        prompt:
          type: "string"
          description: |
            Space-delimited, case-sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for
            re-authentication and consent. The defined values are:

            - `login` - RingCentral native login form,
            - `sso` - Single Sign-On login form,
            - `consent` - form to show the requested scope and prompt user for consent.

            Either `login` or `sso` (or both) must be specified. The default
            value is `login sso`
          default: "login sso"
        ui_locales:
          type: "string"
          description: |
            End-User's preferred languages and scripts for the user interface, represented as a space-separated list of
            [RFC-5646](https://datatracker.ietf.org/doc/html/rfc5646) language tag values, ordered by preference.

            If this parameter is provided, its value overrides 'Accept-Language' header value and 'localeId' parameter value (if any)
          example: "en-US"
        code_challenge:
          type: "string"
          description: |
            The code challenge value as defined by the PKCE specification -
            [RFC-7636 "Proof Key for Code Exchange by OAuth Public Clients"](https://datatracker.ietf.org/doc/html/rfc7636)
        code_challenge_method:
          $ref: "#/components/schemas/CodeChallengeMethodEnum"
        nonce:
          type: "string"
          description: |
            String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token.
        ui_options:
          type: "string"
          description: |
            Login form user interface options (space-separated). By default, the UI options that are registered for this client application will be used
        login_hint:
          type: "string"
          description: "Hint to the Authorization Server about the login identifier the End-User might use to log in."
        brand_id:
          type: "string"
          description: |
            RingCentral Brand identifier. If it is not provided in the request,
            server will try to determine brand from the client application profile.
          example: "1210"
        accept_language:
          type: "string"
          deprecated: true
    DisplayModesEnum:
      type: "string"
      description: |
        Specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User.
      enum:
      - "page"
      - "popup"
      - "touch"
      - "mobile"
      default: "page"
    CodeChallengeMethodEnum:
      type: "string"
      description: |
        The code challenge method as defined by the PKCE specification -
        [RFC-7636 "Proof Key for Code Exchange by OAuth Public Clients"](https://datatracker.ietf.org/doc/html/rfc7636)
      enum:
      - "plain"
      - "S256"
      default: "plain"
    RevokeTokenRequest:
      allOf:
      - type: "object"
        required:
        - "token"
        properties:
          token:
            type: "string"
            description: "Access or refresh token to be revoked (along with the entire OAuth session)"
      - $ref: "#/components/schemas/ClientAuthJwtModel"
    PostalAddress:
      type: "object"
      description: "Postal address/location"
      required:
      - "street"
      - "city"
      - "zip"
      - "country"
      properties:
        street:
          type: "string"
          description: "Street address"
          maxLength: 256
          example: "20 Davis Dr"
        street2:
          type: "string"
          description: "Street address (2nd line)"
          maxLength: 256
        city:
          type: "string"
          description: "City name"
          maxLength: 64
          example: "Belmont"
        state:
          description: "State or province information in the target country"
          maxLength: 64
          type: "string"
          example: "CA"
        zip:
          description: "Postal code in the target country"
          type: "string"
          maxLength: 10
          example: "94002"
        country:
          description: "ISO-3166-1 2-letter country code (alpha2)"
          type: "string"
          maxLength: 2
          minLength: 2
          example: "US"
    BasicContactInfoWithPhone:
      allOf:
      - $ref: "#/components/schemas/BasicContactInfo"
      - type: "object"
        properties:
          contactPhone:
            $ref: "#/components/schemas/PhoneNumberE164"
    ServiceInfoUBrand:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Sub-brand unique ID"
          example: "111.222"
        name:
          type: "string"
          description: "Sub-brand name"
          example: "Sub-brand name"
      description: "Account sub-brand information"
    AccountInfo:
      type: "object"
      required:
      - "id"
      - "status"
      - "serviceInfo"
      properties:
        id:
          description: "Internal identifier of RingCentral account"
          type: "string"
          example: "8000012345"
        externalAccountId:
          description: |
            External account ID. Used as a primary key to link accounts between
            RingCentral and partner systems.
          type: "string"
          maxLength: 30
          example: "acme-us-12345"
        mainNumber:
          $ref: "#/components/schemas/PhoneNumberE164"
        status:
          description: "Account status"
          type: "string"
          enum:
          - "Initial"
          - "Unconfirmed"
          - "Confirmed"
          - "Disabled"
          example: "Confirmed"
        statusInfo:
          $ref: "#/components/schemas/AccountStatusInfo"
        companyName:
          description: "Company name"
          type: "string"
          maxLength: 64
          example: "Acme Inc."
        companyAddress:
          $ref: "#/components/schemas/PostalAddress"
        serviceInfo:
          $ref: "#/components/schemas/ServiceInfoV2"
        contactInfo:
          $ref: "#/components/schemas/SystemUserContactInfo"
        opportunityId:
          type: "string"
          description: "Opportunity identifier (typically created by SalesForce)"
          example: "0061800000DwZzJAAV"
    BasicContactInfo:
      description: "Personal contact information"
      type: "object"
      properties:
        firstName:
          description: "Given name"
          type: "string"
          maxLength: 64
          example: "John"
        lastName:
          description: "Family name"
          type: "string"
          maxLength: 64
          example: "Smith"
        email:
          description: "Contact email"
          type: "string"
          format: "email"
          maxLength: 64
          example: "john.smith@acme.com"
    ServiceInfoV2:
      description: "Service Plan information (billing package, brand, etc.)"
      type: "object"
      required:
      - "package"
      properties:
        package:
          $ref: "#/components/schemas/ServiceInfoPackage"
        brand:
          $ref: "#/components/schemas/ServiceInfoBrand"
        contractedCountry:
          $ref: "#/components/schemas/ServiceInfoCountryShortModel"
        uBrand:
          $ref: "#/components/schemas/ServiceInfoUBrand"
        servicePlan:
          $ref: "#/components/schemas/ServiceInfoPlan"
    ServiceInfoPlan:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a service plan"
        name:
          type: "string"
          description: "Name of a service plan"
        edition:
          type: "string"
          description: "Edition of a service plan"
        freemiumProductType:
          type: "string"
          enum:
          - "Freyja"
          - "Phoenix"
      description: "Information on account service plan"
    AccountStatusInfo:
      type: "object"
      description: "Optional information to be used when account is moved to \"Disabled\" status"
      properties:
        reason:
          type: "string"
          description: "Type of suspension, voluntarily or not"
          enum:
          - "SuspendedVoluntarily"
          - "SuspendedInvoluntarily"
          - "CancelledVoluntarily"
          - "CancelledInvoluntarily"
          example: "CancelledVoluntarily"
        comment:
          type: "string"
          description: "A meaningful description of the reason to change the status"
          minLength: 1
          maxLength: 256
          example: "By customer request. Case ABC123"
        till:
          type: "string"
          description: "Date after which the account will get deleted. Parameter can be used to overwrite default retention period"
          format: "date-time"
          example: "2023-03-26T11:30:45.940Z"
    ServiceInfoBrand:
      description: "Internal RC \"brand\" information"
      type: "object"
      readOnly: true
      required:
      - "id"
      - "name"
      properties:
        id:
          type: "string"
          description: "RingCentral brand ID"
          readOnly: true
          example: "6699"
        name:
          type: "string"
          description: "RingCentral brand name"
          readOnly: true
          example: "Partner 1"
    SystemUserContactInfo:
      description: "Primary system user contact information"
      allOf:
      - $ref: "#/components/schemas/BasicContactInfoWithPhone"
      - type: "object"
        required:
        - "id"
        - "firstName"
        - "lastName"
        - "email"
        - "contactPhone"
        - "extensionNumber"
        properties:
          id:
            type: "string"
            description: "Internal identifier of System user extension"
          extensionNumber:
            $ref: "#/components/schemas/ExtensionNumber"
    ServiceInfoPackage:
      description: "Billing package information"
      type: "object"
      required:
      - "id"
      - "version"
      properties:
        id:
          type: "string"
          description: "Billing package ID"
          example: "555"
        version:
          type: "string"
          description: "Billing package version"
          enum:
          - "1"
    CountryInfoMinimalModel:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a country"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a country resource"
    ServiceInfoCountryShortModel:
      allOf:
      - $ref: "#/components/schemas/CountryInfoBasicModel"
      - type: "object"
        properties:
          isoCode:
            type: "string"
            description: |
              A ISO country code value complying with the
              [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
              format.
          callingCode:
            type: "string"
            description: |
              Country calling code defined by [ITU-T](http://en.wikipedia.org/wiki/ITU-T)
              recommendations [E.123](http://en.wikipedia.org/wiki/E.123) and
              [E.164](http://en.wikipedia.org/wiki/E.164),
              see [Calling Codes](http://en.wikipedia.org/wiki/List_of_country_calling_codes)
    CountryInfoBasicModel:
      allOf:
      - $ref: "#/components/schemas/CountryInfoMinimalModel"
      - type: "object"
        properties:
          name:
            type: "string"
            description: "The official name of a country"
    PhoneNumberE164:
      type: "string"
      pattern: "^\\+[1-9]\\d{1,14}$"
      description: "Phone number in e.164 format (with '+' prefix)"
      maxLength: 18
      example: "+16501234567"
    ExtensionNumber:
      description: |
        Short number of an extension.
        Actual max length depends on system length limit for extension.
      type: "string"
      pattern: "^\\d{3,8}$"
      minLength: 1
      maxLength: 8
      example: "205"
    AddDeviceToInventoryResponse:
      type: "object"
      required:
      - "devices"
      - "site"
      properties:
        devices:
          type: "array"
          items:
            type: "object"
            required:
            - "id"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a created device"
        site:
          $ref: "#/components/schemas/SiteBasicInfo"
    SiteBasicInfo:
      type: "object"
      required:
      - "id"
      - "name"
      properties:
        id:
          type: "string"
          description: "Site extension identifier or \"main-site\" for the main site"
        name:
          type: "string"
          description: "Site name"
    DeleteDeviceFromInventoryResponse:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          items:
            type: "object"
            properties:
              bulkItemSuccessful:
                type: "boolean"
                description: "Specifies if a device is successfully deleted"
              deviceId:
                type: "string"
                description: "Internal identifier of a device"
              bulkItemErrors:
                type: "array"
                description: |
                  The list of errors occurred during processing of particular item of bulk operation.
                  Returned only if `bulkItemSuccessful` is false
                minItems: 1
                items:
                  $ref: "#/components/schemas/ApiError"
    AddDeviceToInventoryRequest:
      type: "object"
      required:
      - "type"
      - "quantity"
      properties:
        type:
          type: "string"
          description: |
            Device type. Use `OtherPhone` to indicate BYOD (customer provided) device
          enum:
          - "OtherPhone"
        quantity:
          type: "integer"
          minimum: 1
          maximum: 50
          format: "int32"
          description: "Quantity of devices (total quantity should not exceed 50)"
        site:
          type: "object"
          properties:
            id:
              type: "string"
              description: "Site extension identifier or \"main-site\" for the main site"
    DeleteDeviceFromInventoryRequest:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          description: "List of internal identifiers of the devices that should be deleted"
          items:
            type: "object"
            properties:
              deviceId:
                type: "string"
                description: "Internal identifier of a device that should be deleted"
    DeletePhoneNumbersResponse:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          minItems: 1
          items:
            $ref: "#/components/schemas/DeletePhoneNumbersResponseItem"
    EnumeratedPagingModel:
      type: "object"
      required:
      - "perPage"
      additionalProperties: false
      properties:
        perPage:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: |
            Current page size, describes how many items are in each page.
            Matches "perPage" parameter from the request.
          example: 50
        page:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: |
            The current page number. 1-indexed, so the first page is 1
            by default. May be omitted if result is empty (because non-existent page
            was specified or perPage=0 was requested)
          example: 5
        pageStart:
          type: "integer"
          format: "int32"
          minimum: 0
          description: |
            The zero-based number of the first element on the current page.
            Omitted if the page is omitted or result is empty
          example: 0
        pageEnd:
          type: "integer"
          format: "int32"
          minimum: 0
          description: |
            The zero-based index of the last element on the current page.
            Omitted if the page is omitted or result is empty
          example: 5
        totalPages:
          type: "integer"
          format: "int32"
          minimum: 0
          description: |
            The total number of pages in a dataset. May be omitted for
            some resources due to performance reasons
          example: 25
        totalElements:
          type: "integer"
          format: "int32"
          minimum: 0
          description: |
            The total number of elements in a dataset. May be omitted for
            some resource due to performance reasons
          example: 25
    AccountPhoneNumberList:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          description: "List of account phone numbers"
          items:
            $ref: "#/components/schemas/AccountPhoneNumberInfo"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    PhoneNumberTollType:
      description: "Indicates if a number is toll or toll-free"
      type: "string"
      enum:
      - "Toll"
      - "TollFree"
      example: "Toll"
    PhoneNumberStatus:
      type: "string"
      description: "Status of a phone number. If the value is 'Normal', the phone number is ready to be used. Otherwise, it is an external number not yet ported to RingCentral"
      enum:
      - "Normal"
      - "Pending"
      - "PortedIn"
      - "Temporary"
      - "Unknown"
    DeletePhoneNumbersRequest:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          description: "List of phone numbers or phone IDs to be deleted"
          minItems: 1
          items:
            $ref: "#/components/schemas/DeletePhoneNumbersRequestItem"
    PhoneNumberUsageType:
      type: "string"
      description: "Usage type of phone number"
      enum:
      - "MainCompanyNumber"
      - "DirectNumber"
      - "Inventory"
      - "InventoryPartnerBusinessMobileNumber"
      - "PartnerBusinessMobileNumber"
      - "AdditionalCompanyNumber"
      - "CompanyNumber"
      - "PhoneLine"
      - "CompanyFaxNumber"
      - "ForwardedNumber"
      - "ForwardedCompanyNumber"
      - "ContactCenterNumber"
      - "ConferencingNumber"
      - "MeetingsNumber"
      - "BusinessMobileNumber"
      - "ELIN"
    DeletePhoneNumbersResponseItem:
      allOf:
      - $ref: "#/components/schemas/BulkItemResultModel"
      - type: "object"
        properties:
          id:
            $ref: "#/components/schemas/PhoneNumberId"
          phoneNumber:
            $ref: "#/components/schemas/PhoneNumberE164"
    PhoneNumberType:
      type: "string"
      description: "Type of phone number"
      nullable: true
      enum:
      - "VoiceFax"
      - "VoiceOnly"
      - "FaxOnly"
    DeletePhoneNumbersRequestItem:
      type: "object"
      description: "The indication of a number to be deleted - either \"id\" or \"phoneNumber\" must be specified."
      properties:
        id:
          $ref: "#/components/schemas/PhoneNumberId"
        phoneNumber:
          $ref: "#/components/schemas/PhoneNumberE164"
    AccountPhoneNumberInfo:
      type: "object"
      required:
      - "id"
      - "tollType"
      - "usageType"
      - "status"
      - "phoneNumber"
      properties:
        id:
          $ref: "#/components/schemas/PhoneNumberId"
        phoneNumber:
          $ref: "#/components/schemas/PhoneNumberE164"
        type:
          $ref: "#/components/schemas/PhoneNumberType"
        tollType:
          $ref: "#/components/schemas/PhoneNumberTollType"
        usageType:
          $ref: "#/components/schemas/PhoneNumberUsageType"
        byocNumber:
          type: "boolean"
        status:
          $ref: "#/components/schemas/PhoneNumberStatus"
        extension:
          type: "object"
          description: "Reference to the extension this number is assigned to. Omitted for company numbers"
          required:
          - "id"
          properties:
            id:
              type: "string"
              description: "Unique identifier of extension"
              example: "1234567"
            extensionNumber:
              $ref: "#/components/schemas/ExtensionNumber"
    ExtensionStatus:
      type: "string"
      description: "Extension status"
      enum:
      - "Enabled"
      - "Disabled"
      - "Frozen"
      - "NotActivated"
      - "Unassigned"
    BulkItemResultModel:
      type: "object"
      required:
      - "bulkItemSuccessful"
      properties:
        bulkItemSuccessful:
          type: "boolean"
          description: |
            Indicates if this item was processed successfully during bulk operation.
            If false, `bulkItemErrors` attribute contains the list of errors
          example: true
        bulkItemErrors:
          type: "array"
          description: |
            The list of errors occurred during processing of particular item of bulk operation.
            Returned only if `bulkItemSuccessful` is false
          minItems: 1
          items:
            $ref: "#/components/schemas/ApiError"
    PhoneNumberId:
      type: "string"
      pattern: "^[1-9]\\d{1,14}$"
      description: "Internal unique identifier of a phone number"
      maxLength: 18
      example: "1162820004"
    AssignPhoneNumberRequest:
      type: "object"
      required:
      - "usageType"
      properties:
        type:
          $ref: "#/components/schemas/PhoneNumberType"
        usageType:
          type: "string"
          description: "Target usage type of phone number (only listed values are supported)"
          enum:
          - "MainCompanyNumber"
          - "CompanyNumber"
          - "DirectNumber"
          - "PhoneLine"
        extension:
          type: "object"
          required:
          - "id"
          properties:
            id:
              type: "string"
              description: "Internal identifier of an extension"
        costCenterId:
          type: "string"
    ReplacePhoneNumberRequest:
      type: "object"
      properties:
        targetPhoneNumberId:
          $ref: "#/components/schemas/PhoneNumberId"
    AddPhoneNumberRequestItem:
      type: "object"
      required:
      - "phoneNumber"
      - "usageType"
      properties:
        phoneNumber:
          type: "string"
          description: |
            Phone number in e.164 format (with '+' prefix).
            Wildcards are supported to pass large sets (for example 100 numbers);
            only one phone number record must be passed in request in that case, for example '+1650123456*'
        usageType:
          type: "string"
          description: |
            Usage type of phone number. Currently, we support the following values: `Inventory`, `InventoryPartnerBusinessMobileNumber`
            and `PartnerBusinessMobileNumber`. Later we may support some other values like `ForwardedNumber`, etc.
          default: "Inventory"
          enum:
          - "Inventory"
          - "InventoryPartnerBusinessMobileNumber"
          - "PartnerBusinessMobileNumber"
    AddPhoneNumbersResponse:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          minItems: 1
          description: "List of account phone numbers"
          items:
            $ref: "#/components/schemas/AddPhoneNumbersResponseItem"
    AddPhoneNumbersRequest:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          minItems: 1
          description: "List of account phone numbers"
          items:
            $ref: "#/components/schemas/AddPhoneNumberRequestItem"
    AddPhoneNumbersResponseItem:
      allOf:
      - $ref: "#/components/schemas/BulkItemResultModel"
      - type: "object"
        required:
        - "phoneNumber"
        properties:
          id:
            $ref: "#/components/schemas/PhoneNumberId"
          phoneNumber:
            $ref: "#/components/schemas/PhoneNumberE164"
    AddPhoneNumbersTask:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a task"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Task creation time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
        status:
          type: "string"
          description: "Task status"
          example: "Accepted"
    RemoveLineResponse:
      type: "object"
      required:
      - "id"
      - "type"
      - "name"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a source device"
        type:
          type: "string"
          description: "Device type"
          default: "HardPhone"
          enum:
          - "HardPhone"
          - "SoftPhone"
          - "OtherPhone"
          - "MobileDevice"
          - "BLA"
          - "Paging"
          - "WebPhone"
          - "WebRTC"
          - "ZoomMobile"
          - "ZoomPhone"
          - "Room"
          - "Unknown"
        name:
          type: "string"
          description: "The display name of a source device"
          example: "My Device N1"
        serial:
          type: "string"
          description: "Serial number of a device (HardPhone)"
          example: "ff:ff:ff:ff:ff:ff"
    RemoveLineRequest:
      type: "object"
      required:
      - "keepAssetsInInventory"
      properties:
        keepAssetsInInventory:
          type: "boolean"
          default: true
          description: |
            The flag that controls what to do with the number and device:

            - if the value of `keepAssetsInInventory` is `true`, the given device is moved to unassigned devices
            and the number is moved to the number inventory;
            - if the value of `keepAssetsInInventory` is `false`, the given device and number is removed from the account;
            - if the parameter `keepAssetsInInventory` is not set (empty body) or the value of the parameter is empty,
            default value `true` is set.
    BulkAddDevicesItem:
      allOf:
      - type: "object"
        required:
        - "extension"
        properties:
          costCenterId:
            type: "string"
            description: "Internal identifier of a cost center"
            example: "224149"
          extension:
            $ref: "#/components/schemas/BulkOperationExtensionReference"
      - $ref: "#/components/schemas/DeviceDefinition"
    PhoneNumberDefinitionDirectNumberWithReservationId:
      type: "object"
      description: "To be used for direct number assignment in case number pool is not supported"
      required:
      - "phoneNumber"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number ID"
        reservationId:
          type: "string"
          description: "Phone number reservation ID"
    BulkAddDevicesRequest:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          minItems: 1
          items:
            $ref: "#/components/schemas/BulkAddDevicesItem"
    PhoneNumberDefinitionPreferredAreaCode:
      type: "object"
      description: "To use as selection hint when a \"toll\" number to be selected from the number pool."
      required:
      - "preferredAreaCode"
      properties:
        preferredAreaCode:
          description: "Preferred area code to use if numbers available"
          type: "string"
          pattern: "^[1-9]\\d{1,3}$"
          example: "650"
    BulkAddDevicesSuccessItem:
      type: "object"
      required:
      - "successful"
      - "id"
      - "extension"
      - "phoneNumber"
      properties:
        successful:
          type: "boolean"
          description: "Indicates if the provisioning operation was successful for this item, always `true` in this model"
          example: true
        id:
          description: "Internal identifier of the created device"
          type: "string"
          example: "787878"
        extension:
          $ref: "#/components/schemas/BulkOperationExtensionReference"
        phoneNumber:
          $ref: "#/components/schemas/PhoneNumberE164"
    BulkAddDevicesErrorItem:
      type: "object"
      required:
      - "successful"
      - "errors"
      properties:
        successful:
          type: "boolean"
          description: "Indicates if the provisioning operation was successful for this item, always `false` in this model"
          example: false
        errors:
          type: "array"
          minItems: 1
          items:
            $ref: "#/components/schemas/ApiErrorWithParameter"
    DeviceDefinition:
      type: "object"
      required:
      - "type"
      - "emergency"
      - "phoneInfo"
      properties:
        type:
          type: "string"
          description: "Device type. Only \"OtherPhone\" and \"WebRTC\" device types are supported at the moment"
          enum:
          - "OtherPhone"
          - "WebRTC"
        emergency:
          description: "Only \"address\" is supported at the moment"
          oneOf:
          - type: "object"
            required:
            - "address"
            properties:
              address:
                $ref: "#/components/schemas/PostalAddress"
          - type: "object"
            required:
            - "location"
            properties:
              location:
                type: "object"
                required:
                - "id"
                properties:
                  id:
                    type: "string"
                    description: "Emergency location ID"
        phoneInfo:
          oneOf:
          - $ref: "#/components/schemas/PhoneNumberDefinitionTollType"
          - $ref: "#/components/schemas/PhoneNumberDefinitionPreferredAreaCode"
          - $ref: "#/components/schemas/PhoneNumberDefinitionDirectNumberWithReservationId"
          - $ref: "#/components/schemas/PhoneNumberDefinitionNumberId"
    BulkAddDevicesResponse:
      type: "object"
      required:
      - "results"
      properties:
        results:
          type: "array"
          items:
            oneOf:
            - $ref: "#/components/schemas/BulkAddDevicesSuccessItem"
            - $ref: "#/components/schemas/BulkAddDevicesErrorItem"
    PhoneNumberDefinitionTollType:
      type: "object"
      description: "To use as selection criteria when a number to be selected from the number pool."
      required:
      - "tollType"
      properties:
        tollType:
          $ref: "#/components/schemas/PhoneNumberTollType"
    PhoneNumberDefinitionNumberId:
      type: "object"
      description: "To be used to assign a number by ID"
      required:
      - "phoneNumberId"
      properties:
        phoneNumberId:
          type: "string"
          description: "Phone number ID"
    BulkOperationExtensionReference:
      type: "object"
      description: "Information about an extension this device is assigned to"
      required:
      - "id"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a RingCentral extension"
          example: "12345"
    BatchProvisionErrorItem:
      type: "object"
      required:
      - "successful"
      - "errors"
      properties:
        successful:
          type: "boolean"
          description: "Indicates if the provisioning operation was successful for this item, always `false` in this model"
          example: false
        errors:
          type: "array"
          minItems: 1
          items:
            $ref: "#/components/schemas/ApiErrorWithParameter"
    BatchProvisionUsersRequestItem:
      description: "Describes request for user extension provisioning"
      type: "object"
      required:
      - "status"
      - "contact"
      properties:
        extensionNumber:
          $ref: "#/components/schemas/ExtensionNumber"
        status:
          description: "Extension status. Only \"Enabled\" can be specified"
          type: "string"
          enum:
          - "Enabled"
          default: "Enabled"
        contact:
          description: "User's contact information"
          required:
          - "firstName"
          - "lastName"
          - "email"
          allOf:
          - $ref: "#/components/schemas/BasicContactInfo"
          - type: "object"
            properties:
              mobileNumber:
                $ref: "#/components/schemas/PhoneNumberE164"
              emailAsLoginName:
                description: |
                  Indicates that contact email is enabled as login name for this user.
                  Please note that email must be unique in this case.
                type: "boolean"
                default: true
        costCenter:
          type: "object"
          required:
          - "id"
          properties:
            id:
              type: "string"
              description: "Internal identifier of the Cost Center"
              example: "224149"
        roles:
          type: "array"
          maxItems: 1
          items:
            type: "object"
            required:
            - "id"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a role to be assigned"
                example: "1"
        devices:
          type: "array"
          maxItems: 1
          items:
            type: "object"
            required:
            - "deviceInfo"
            properties:
              deviceInfo:
                $ref: "#/components/schemas/DeviceDefinition"
        sendWelcomeEmail:
          type: "boolean"
          description: |
            Specifies if a welcome/activation email is sent to the new users (within extension status changing from
            'Unassigned' to 'NotActivated/Disabled')
          default: true
    BatchProvisionUsersRequest:
      description: "Describes request for user extension provisioning"
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          maxItems: 10
          minItems: 1
          items:
            $ref: "#/components/schemas/BatchProvisionUsersRequestItem"
    BatchProvisionUsersResponse:
      type: "object"
      required:
      - "results"
      properties:
        results:
          type: "array"
          items:
            anyOf:
            - $ref: "#/components/schemas/BatchProvisionUsersSuccessItem"
            - $ref: "#/components/schemas/BatchProvisionErrorItem"
    BatchProvisionUsersSuccessItem:
      type: "object"
      required:
      - "successful"
      - "extension"
      properties:
        successful:
          type: "boolean"
          description: "Indicates if the provisioning operation was successful for this item, always `true` in this model"
          example: true
        extension:
          type: "object"
          required:
          - "devices"
          - "id"
          properties:
            id:
              type: "string"
              description: "The internal identifier of RingCentral extension created"
              example: "12345"
            devices:
              type: "array"
              items:
                type: "object"
                required:
                - "id"
                - "phoneNumber"
                properties:
                  id:
                    type: "string"
                    description: "The internal identifier of device created"
                    example: "12345"
                  phoneNumber:
                    $ref: "#/components/schemas/PhoneNumberE164"
    BulkDeleteUsersRequest:
      type: "object"
      required:
      - "records"
      properties:
        keepAssetsInInventory:
          type: "boolean"
          description: |
            Indicates that the freed users' assets (phone numbers and devices) should be moved
            to account inventory rather than deleted. If set to `true`, the phone numbers and devices
            assigned to deleted extensions will be kept in the account's inventory. If set to `false`,
            these assets will be deleted from the account and returned to either the partner's phone
            numbers or RingCentral's phone number pool
          default: true
        records:
          type: "array"
          minItems: 1
          maxItems: 50
          items:
            $ref: "#/components/schemas/BulkOperationExtensionReference"
    BulkDeleteUsersResponse:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          items:
            allOf:
            - type: "object"
              properties:
                id:
                  type: "string"
                  description: "Internal identifier of an extension"
                  example: "1162820004"
            - $ref: "#/components/schemas/BulkItemResultModel"
    SwapDeviceRequest:
      description: "Swap device request"
      type: "object"
      properties:
        targetDeviceId:
          type: "string"
          description: "Internal identifier of a target device, to which the current one will be swapped"
          example: "8459879873"
    GetAccountInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an account"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an account"
        bsid:
          type: "string"
          description: |
            Internal identifier of an account in the billing system
        mainNumber:
          type: "string"
          description: |
            Main phone number of the current account
        operator:
          $ref: "#/components/schemas/AccountOperatorInfo"
        partnerId:
          type: "string"
          description: |
            Additional account identifier, created by partner application
            and applied on client side
        serviceInfo:
          $ref: "#/components/schemas/ServiceInfo"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateEnum"
        signupInfo:
          $ref: "#/components/schemas/SignupInfoResource"
        status:
          type: "string"
          description: "Status of the current account"
          enum:
          - "Initial"
          - "Confirmed"
          - "Unconfirmed"
          - "Disabled"
        statusInfo:
          $ref: "#/components/schemas/AccountStatusInfo"
        regionalSettings:
          $ref: "#/components/schemas/AccountRegionalSettings"
        federated:
          type: "boolean"
          description: |
            Specifies whether an account is included into any federation
            of accounts or not
        outboundCallPrefix:
          type: "integer"
          format: "int32"
          description: |
            If outbound call prefix is not specified, or set to null (0),
            then the parameter is not returned; the supported value range is 2-9
        cfid:
          type: "string"
          description: |
            Customer facing identifier. Returned for accounts with the
            turned off PBX features. Equals to main company number in
            [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (without "+" sign)format
        limits:
          $ref: "#/components/schemas/AccountLimits"
    CurrencyInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a currency"
        code:
          type: "string"
          description: "Official code of a currency"
        name:
          type: "string"
          description: "Official name of a currency"
        symbol:
          type: "string"
          description: "Graphic symbol of a currency"
        minorSymbol:
          type: "string"
          description: "Minor graphic symbol of a currency"
      description: "Currency information"
    AccountOperatorInfo:
      type: "object"
      description: |
        Operator extension information. This extension will receive
        all calls and messages addressed to an operator.
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an operator extension resource"
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an operator extension"
        extensionNumber:
          type: "string"
          description: "Number of an operator extension"
        partnerId:
          type: "string"
          description: |
            Internal identifier of an extension created by partner. Supported for Partner Applications.
            The RingCentral supports the mapping of accounts and stores the corresponding account ID/extension
            ID for each partner ID of a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
    TimezoneInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a timezone"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a timezone"
        name:
          type: "string"
          description: "Short name of a timezone"
        description:
          type: "string"
          description: "Meaningful description of the timezone"
        bias:
          type: "string"
      description: "Extension timezone information"
    AccountLimits:
      type: "object"
      properties:
        freeSoftPhoneLinesPerExtension:
          type: "integer"
          format: "int32"
          description: |
            Max number of free softphone phone lines per user extension
        meetingSize:
          type: "integer"
          format: "int32"
          description: |
            Max number of participants in RingCentral meeting hosted by
            this account's user
        cloudRecordingStorage:
          type: "integer"
          format: "int32"
          description: |
            Meetings recording cloud storage limitation in Gb
        maxMonitoredExtensionsPerUser:
          type: "integer"
          format: "int32"
          description: |
            Max number of extensions which can be included in the list
            of users monitored for Presence
        maxExtensionNumberLength:
          type: "integer"
          format: "int32"
          description: |
            Max length of extension numbers of an account; the supported
            value is up to 8 symbols, depends on account type
        siteCodeLength:
          type: "integer"
          format: "int32"
          description: "Length of a site code"
        shortExtensionNumberLength:
          type: "integer"
          format: "int32"
          description: "Length of a short extension number"
      description: "Limits which are effective for the account"
    RegionalLanguageInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a language set as regional"
        localeCode:
          type: "string"
          description: "Localization code of a language set as regional"
        name:
          type: "string"
          description: "Official name of a language set as regional"
      description: "Information on a language set as regional"
    BillingPlanInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a billing plan"
        name:
          type: "string"
          description: "Billing plan name"
        durationUnit:
          type: "string"
          description: "Duration period"
          enum:
          - "Day"
          - "Month"
          - "Year"
        duration:
          type: "integer"
          format: "int32"
          description: "Number of duration units"
        type:
          type: "string"
          description: "Billing plan type"
          enum:
          - "Initial"
          - "Regular"
          - "Suspended"
          - "Trial"
          - "TrialNoCC"
          - "Free"
        includedPhoneLines:
          type: "integer"
          format: "int32"
          description: "Included digital lines count"
      description: "Information on account billing plan"
    SignupInfoResource:
      type: "object"
      properties:
        tosAccepted:
          type: "boolean"
          default: false
        signupState:
          type: "array"
          items:
            type: "string"
            enum:
            - "AccountCreated"
            - "BillingEntered"
            - "CreditCardApproved"
            - "AccountConfirmed"
            - "PhoneVerificationRequired"
            - "PhoneVerificationPassed"
        verificationReason:
          type: "string"
          enum:
          - "CC_Failed"
          - "Phone_Suspicious"
          - "CC_Phone_Not_Match"
          - "AVS_Not_Available"
          - "MaxMind"
          - "CC_Blacklisted"
          - "Email_Blacklisted"
          - "Phone_Blacklisted"
          - "Cookie_Blacklisted"
          - "Device_Blacklisted"
          - "IP_Blacklisted"
          - "Agent_Instance_Blacklisted"
          - "Charge_Limit"
          - "Other_Country"
          - "Unknown"
        marketingAccepted:
          type: "boolean"
          description: |
            Updates 'Send Marketing Information' flag on web interface
        creationTime:
          type: "string"
          format: "date-time"
          description: "The timestamp of account creation"
          example: "2023-03-10T18:07:52.534Z"
      description: "Account sign up data"
    AccountRegionalSettings:
      type: "object"
      properties:
        homeCountry:
          $ref: "#/components/schemas/CountryInfoShortModel"
        timezone:
          $ref: "#/components/schemas/TimezoneInfo"
        language:
          $ref: "#/components/schemas/RegionalLanguageInfo"
        greetingLanguage:
          $ref: "#/components/schemas/GreetingLanguageInfo"
        formattingLocale:
          $ref: "#/components/schemas/FormattingLocaleInfo"
        timeFormat:
          type: "string"
          description: "Time format setting. The default value is '12h' = ['12h', '24h']"
          enum:
          - "12h"
          - "24h"
        currency:
          $ref: "#/components/schemas/CurrencyInfo"
      description: |
        Account level region data (web service Auto-Receptionist settings)
    GreetingLanguageInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a greeting language"
        localeCode:
          type: "string"
          description: "Localization code of a greeting language"
        name:
          type: "string"
          description: "Official name of a greeting language"
      description: |
        Information on language used for telephony greetings
    ServicePlanInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a service plan"
        name:
          type: "string"
          description: "Name of a service plan"
        edition:
          type: "string"
          description: "Edition of a service plan"
        freemiumProductType:
          type: "string"
          enum:
          - "Freyja"
          - "Phoenix"
      description: "Information on account service plan"
    ServiceInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a service info resource"
        billingPlan:
          $ref: "#/components/schemas/BillingPlanInfo"
        brand:
          $ref: "#/components/schemas/BrandInfo"
        servicePlan:
          $ref: "#/components/schemas/ServicePlanInfo"
        targetServicePlan:
          $ref: "#/components/schemas/TargetServicePlanInfo"
        contractedCountry:
          $ref: "#/components/schemas/CountryInfoShortModel"
        uBrand:
          $ref: "#/components/schemas/UBrandInfo"
      description: |
        Account service information, including brand, sub-brand, service plan and
        billing plan
    TargetServicePlanInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a target service plan"
        name:
          type: "string"
          description: "Name of a target service plan"
        edition:
          type: "string"
          description: "Edition of a service plan"
        freemiumProductType:
          type: "string"
          enum:
          - "Freyja"
          - "Phoenix"
      description: "Information on account target service plan"
    FormattingLocaleInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a formatting language"
        localeCode:
          type: "string"
          description: "Localization code of a formatting language"
        name:
          type: "string"
          description: "Official name of a formatting language"
      description: |
        Formatting language preferences for numbers, dates and currencies
    UBrandInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Sub-brand unique ID"
          example: "111.222"
        name:
          type: "string"
          description: "Sub-brand name"
          example: "Sub-brand name"
      description: "Account sub-brand information"
    BrandInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a brand"
        name:
          type: "string"
          description: "Brand name, for example  RingCentral UK ,  ClearFax "
        homeCountry:
          $ref: "#/components/schemas/CountryInfoShortModel"
      description: "Information on account brand"
    CountryInfoShortModel:
      allOf:
      - $ref: "#/components/schemas/CountryInfoBasicModel"
      - type: "object"
        properties:
          isoCode:
            type: "string"
            description: |
              A ISO country code value complying with the
              [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
              format.
          callingCode:
            type: "string"
            description: |
              Country calling code defined by [ITU-T](http://en.wikipedia.org/wiki/ITU-T)
              recommendations [E.123](http://en.wikipedia.org/wiki/E.123) and
              [E.164](http://en.wikipedia.org/wiki/E.164),
              see [Calling Codes](http://en.wikipedia.org/wiki/List_of_country_calling_codes)
    SetupWizardStateEnum:
      type: "string"
      description: "Initial configuration wizard state"
      enum:
      - "NotStarted"
      - "Incomplete"
      - "Completed"
      - "Unknown"
    CompanyBusinessHoursUpdateRequest:
      type: "object"
      properties:
        schedule:
          $ref: "#/components/schemas/CompanyBusinessHoursScheduleInfo"
      example:
        schedule:
          weeklyRanges:
            tuesday:
            - from: "09:00"
              to: "18:00"
            friday:
            - from: "09:00"
              to: "18:00"
            thursday:
            - from: "09:00"
              to: "18:00"
            wednesday:
            - from: "09:00"
              to: "18:00"
            monday:
            - from: "09:00"
              to: "18:00"
    WeeklyScheduleInfo:
      type: "object"
      properties:
        monday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        tuesday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        wednesday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        thursday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        friday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        saturday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
        sunday:
          type: "array"
          description: "Time intervals for a particular day"
          items:
            $ref: "#/components/schemas/TimeInterval"
      description: "Weekly schedule"
    CompanyBusinessHours:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a business-hours resource "
        schedule:
          $ref: "#/components/schemas/CompanyBusinessHoursScheduleInfo"
      example:
        uri: "https://platform.ringcentral.com/restapi/v1.0/account/401800045008/business-hours"
        schedule:
          weeklyRanges:
            wednesday:
            - from: "09:00"
              to: "18:00"
            friday:
            - from: "09:00"
              to: "18:00"
            tuesday:
            - from: "09:00"
              to: "18:00"
            monday:
            - from: "09:00"
              to: "18:00"
            thursday:
            - from: "09:00"
              to: "18:00"
    TimeInterval:
      type: "object"
      properties:
        from:
          type: "string"
          description: "Time in format hh:mm"
        to:
          type: "string"
          description: "Time in format hh:mm"
    CompanyBusinessHoursScheduleInfo:
      type: "object"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/WeeklyScheduleInfo"
      description: "Schedule when an answering rule is applied"
    EmergencyServiceAddressResource:
      type: "object"
      properties:
        street:
          type: "string"
        street2:
          type: "string"
        city:
          type: "string"
        zip:
          type: "string"
        customerName:
          type: "string"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        country:
          type: "string"
          description: "Country name"
        countryName:
          type: "string"
          description: "Full name of a country"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
        syncStatus:
          type: "string"
          description: |
            Resulting status of emergency address synchronization. Returned
            if `syncEmergencyAddress` parameter is set to `true`
          enum:
          - "Verified"
          - "Updated"
          - "Deleted"
          - "NotRequired"
          - "Unsupported"
          - "Failed"
        additionalCustomerName:
          type: "string"
          description: |
            Name of an additional contact person. Should be specified for
            countries except the US, Canada, the UK and Australia.
        customerEmail:
          type: "string"
          format: "email"
          description: |
            Email of a primary contact person (receiver). Should be specified
            for countries except the US, Canada, the UK and Australia.
        additionalCustomerEmail:
          type: "string"
          format: "email"
          description: |
            Email of an additional contact person. Should be specified
            for countries except the US, Canada, the UK and Australia.
        customerPhone:
          type: "string"
          description: |
            Phone number of a primary contact person (receiver). Should
            be specified for countries except the US, Canada, the UK and Australia
        additionalCustomerPhone:
          type: "string"
          description: |
            Phone number of an additional contact person. Should be specified
            for countries except the US, Canada, the UK & Australia.
        lineProvisioningStatus:
          type: "string"
          description: "Status of digital line provisioning"
          enum:
          - "Provisioning"
          - "Valid"
          - "Invalid"
        taxId:
          type: "string"
          description: "Internal identifier of a tax"
      description: |
        Address for emergency cases. The same emergency address is assigned
        to all the numbers of one device
    CommonEmergencyLocationAddressInfoDefault:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Country name"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        countryName:
          type: "string"
          description: "Full name of a country"
        state:
          type: "string"
          description: |
            State/Province name. Mandatory for the USA, the UK and Canada
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        city:
          type: "string"
          description: "City name"
        street:
          type: "string"
          description: "First line address"
        street2:
          type: "string"
          description: |
            Second line address (apartment, suite, unit, building, floor,
            etc.)
        zip:
          type: "string"
          description: "Postal (Zip) code"
        customerName:
          type: "string"
          description: "Customer name"
    ShippingAddressInfo:
      type: "object"
      properties:
        customerName:
          type: "string"
          description: "Name of a primary contact person (receiver)"
        additionalCustomerName:
          type: "string"
          description: |
            Name of an additional contact person. Should be specified for
            countries except the US, Canada, the UK and Australia.
        customerEmail:
          type: "string"
          format: "email"
          description: |
            Email of a primary contact person (receiver). Should be specified
            for countries except the US, Canada, the UK and Australia.
        additionalCustomerEmail:
          type: "string"
          format: "email"
          description: |
            Email of an additional contact person. Should be specified
            for countries except the US, Canada, the UK and Australia.
        customerPhone:
          type: "string"
          description: |
            Phone number of a primary contact person (receiver). Should
            be specified for countries except the US, Canada, the UK and Australia
        additionalCustomerPhone:
          type: "string"
          description: |
            Phone number of an additional contact person. Should be specified
            for countries except the US, Canada, the UK & Australia.
        street:
          type: "string"
          description: |
            Street address, line 1 - street address, P.O. box, company
            name, c/o
        street2:
          type: "string"
          description: |
            Street address, line 2 - apartment, suite, unit, building,
            floor, etc.
        city:
          type: "string"
          description: "City name"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        country:
          type: "string"
          description: "Country name"
        countryName:
          type: "string"
          description: "Full name of a country"
        zip:
          type: "string"
          description: "Zip code"
        taxId:
          type: "string"
          description: |
            National taxpayer identification number. Should be specified
            for Brazil (CNPJ/CPF number) and Argentina (CUIT number).
      description: |
        Shipping address for the order. If it coincides with the Emergency
        Service Address, then can be omitted. By default, the same value as the
        emergencyServiceAddress. Multiple addresses can be specified; in case
        an order contains several devices, they can be delivered to different addresses
    DeviceFeatureEnum:
      type: "string"
      description: "Device feature"
      enum:
      - "BLA"
      - "CommonPhone"
      - "Intercom"
      - "Paging"
      - "HELD"
    EmergencyAddress:
      type: "object"
      properties:
        required:
          type: "boolean"
          description: "If set to `true` then specifying emergency address is required"
        localOnly:
          type: "boolean"
          description: "If set to `true` then only local emergency address can be specified"
        lineProvisioningStatus:
          type: "string"
          description: "This status is associated with a phone line provision state"
          enum:
          - "Valid"
          - "Provisioning"
          - "Invalid"
    ShippingStatus:
      description: |
        Order item shipping status. It is set to `Initial` when the order is submitted.
        Then it is changed to `Accepted` when a distributor starts processing the order.
        Finally, it is changed to `Shipped` which means that the distributor has shipped the device.
      type: "string"
      enum:
      - "Initial"
      - "Accepted"
      - "Shipped"
      example: "Shipped"
    ShippingInfo:
      type: "object"
      properties:
        status:
          $ref: "#/components/schemas/ShippingStatus"
        carrier:
          type: "string"
          description: |
            Shipping carrier name. Appears only if the device status is 'Shipped'
        trackingNumber:
          type: "string"
          description: |
            Carrier-specific tracking number. Appears only if the device status is 'Shipped'
        method:
          $ref: "#/components/schemas/ShippingMethodInfo"
        address:
          $ref: "#/components/schemas/ShippingAddressInfo"
      description: |
        Shipping information, according to which devices (in case of HardPhone)
        or e911 stickers (in case of SoftPhone and OtherPhone) will be delivered
        to the customer
    ShippingMethodInfo:
      allOf:
      - $ref: "#/components/schemas/ShippingMethodIdModel"
      - type: "object"
        properties:
          name:
            type: "string"
            description: "Method name, corresponding to the identifier"
            enum:
            - "Ground"
            - "2 Day"
            - "Overnight"
    EmergencyServiceAddressResourceRequest:
      type: "object"
      properties:
        street:
          type: "string"
        street2:
          type: "string"
        city:
          type: "string"
        zip:
          type: "string"
        customerName:
          type: "string"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        country:
          type: "string"
          description: "Country name"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
      description: |
        Address for emergency cases. The same emergency address is assigned to all
        numbers of a single device. If the emergency address is also specified in
        `emergency` resource, then this value is ignored
    ShippingMethodIdModel:
      type: "object"
      description: |
        Devices shipping method. It is required if devices are ordered.
        Availability of different shipping methods depends on package
        definition.
      required:
      - "id"
      properties:
        id:
          type: "string"
          description: |
            Shipping method ID:
            - "1" - Ground Shipping (5-7 business days)
            - "2" - Expedited Shipping (2-days)
            - "3" - Overnight Shipping
          enum:
          - "1"
          - "2"
          - "3"
          default: "1"
    PhoneLineTypeEnum:
      type: "string"
      description: "The type of phone line"
      enum:
      - "Unknown"
      - "Standalone"
      - "StandaloneFree"
      - "BlaPrimary"
      - "BlaSecondary"
    AccountDeviceUpdate:
      type: "object"
      properties:
        emergencyServiceAddress:
          $ref: "#/components/schemas/EmergencyServiceAddressResourceRequest"
        emergency:
          $ref: "#/components/schemas/DeviceEmergencyInfo"
        extension:
          $ref: "#/components/schemas/DeviceUpdateExtensionInfo"
        phoneLines:
          $ref: "#/components/schemas/DeviceUpdatePhoneLinesInfo"
        useAsCommonPhone:
          type: "boolean"
          description: |
            Supported only for devices assigned to Limited extensions.
            If true, enables users to log in to this phone as a common phone
        name:
          type: "string"
          description: "Device label, maximum number of symbols is 64"
    DeviceResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a device"
        sku:
          type: "string"
          description: |
            Device identification number (SKU, Stock Keeping Unit) in the format
            TP-ID [-AT-AC], where TP is device type (HP for RC desk phones, DV for all
            other devices including soft phones); ID - device model ID; AT - add-on type
            ID; AC - add-on count (if any). For example 'HP-56-2-2'
        type:
          type: "string"
          description: "Device type"
          default: "HardPhone"
          enum:
          - "BLA"
          - "SoftPhone"
          - "OtherPhone"
          - "HardPhone"
          - "WebPhone"
          - "Paging"
          - "Room"
          - "WebRTC"
        name:
          type: "string"
          description: |
            Device name. Mandatory if ordering SoftPhone or OtherPhone.
            Optional for HardPhone. If not specified for HardPhone, then
            a device model is used as a device name
        serial:
          type: "string"
          description: |
            Serial number for HardPhone (is returned only when the phone
            is shipped and provisioned); endpoint ID for SoftPhone and
            mobile applications
        status:
          type: "string"
          description: "Device status"
          enum:
          - "Offline"
          - "Online"
        computerName:
          type: "string"
          description: "Computer name (for devices of `SoftPhone` type only)"
        model:
          $ref: "#/components/schemas/ModelInfo"
        extension:
          $ref: "#/components/schemas/ExtensionInfoIntId"
        emergency:
          $ref: "#/components/schemas/DeviceEmergencyInfo"
        emergencyServiceAddress:
          $ref: "#/components/schemas/EmergencyServiceAddressResource"
        phoneLines:
          type: "array"
          description: "Phone lines information"
          items:
            $ref: "#/components/schemas/PhoneLinesInfo"
        shipping:
          $ref: "#/components/schemas/ShippingInfo"
        boxBillingId:
          type: "integer"
          format: "int64"
          description: |
            Box billing identifier of a device. Applicable only for devices of `HardPhone` type.
            It is an alternative way to identify the device to be ordered. Either
            `model` structure, or `boxBillingId` must be specified
        useAsCommonPhone:
          type: "boolean"
          description: |
            Supported only for devices assigned to Limited extensions.
            If true, enables users to log in to this phone as a common phone.
        hotDeskDevice:
          type: "boolean"
          description: "This flag indicates whether this device is used for hot desking or not"
        inCompanyNet:
          type: "boolean"
          description: |
            Network location status. `true` if the device is located in
            the configured corporate network (On-Net); `false` for Off-Net location.
            Parameter is not returned if `EmergencyAddressAutoUpdate` feature is not
            enabled for the account/user, or if device network location is not determined
        site:
          $ref: "#/components/schemas/DeviceSiteInfo"
        lastLocationReportTime:
          type: "string"
          format: "date-time"
          description: |
            Date/time of receiving last location report in
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z
        linePooling:
          $ref: "#/components/schemas/LinePoolingEnum"
        billingStatement:
          $ref: "#/components/schemas/BillingStatementInfo"
    BillingStatementCharges:
      type: "object"
      properties:
        description:
          type: "string"
        amount:
          type: "number"
          format: "double"
        feature:
          type: "string"
        freeServiceCredit:
          type: "number"
          format: "double"
    LinePoolingEnum:
      type: "string"
      description: |
        Pooling type of device:
        - `Host` - device with a standalone paid phone line which can be linked to soft phone client instance;
        - `Guest` - device with a linked phone line;
        - `None` - device without a phone line or with a specific line (free, BLA, etc.)
      enum:
      - "Host"
      - "Guest"
      - "None"
    DeviceUpdatePhoneLinesInfo:
      type: "object"
      properties:
        phoneLines:
          type: "array"
          description: "Information on phone lines added to a device"
          items:
            $ref: "#/components/schemas/UpdateDevicePhoneInfo"
      description: "Information on phone lines added to a device"
    AddonInfo:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        count:
          type: "integer"
          format: "int32"
    UpdateDevicePhoneInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a phone number"
    ExtensionInfoIntId:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of an extension"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Number of extension"
        partnerId:
          type: "string"
          description: |
            For Partner Applications Internal identifier of an extension
            created by partner. The RingCentral supports the mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
      description: "This attribute can be omitted for unassigned devices"
    PhoneNumberCountryInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a home country"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a home country"
        name:
          type: "string"
          description: "Official name of a home country"
      description: "Brief information on a phone number country"
    PhoneLinesInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a phone line"
        lineType:
          $ref: "#/components/schemas/PhoneLineTypeEnum"
        phoneInfo:
          $ref: "#/components/schemas/PhoneNumberInfoIntId"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddress"
    DeviceSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site"
        name:
          type: "string"
          description: "Name of a site"
      description: "Site data"
    BillingStatementInfo:
      type: "object"
      properties:
        currency:
          type: "string"
          description: |
            Currency code complying with [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217)
            standard
        charges:
          type: "array"
          items:
            $ref: "#/components/schemas/BillingStatementCharges"
        fees:
          type: "array"
          items:
            $ref: "#/components/schemas/BillingStatementFees"
        totalCharged:
          type: "number"
          format: "double"
        totalCharges:
          type: "number"
          format: "double"
        totalFees:
          type: "number"
          format: "double"
        subtotal:
          type: "number"
          format: "double"
        totalFreeServiceCredit:
          type: "number"
          format: "double"
      description: |
        Billing information. Returned for device update request if `prestatement`
        query parameter is set to 'true'
    BillingStatementFees:
      type: "object"
      properties:
        description:
          type: "string"
        amount:
          type: "number"
          format: "double"
        freeServiceCredit:
          type: "number"
          format: "double"
    DeviceEmergencyInfo:
      type: "object"
      properties:
        address:
          $ref: "#/components/schemas/CommonEmergencyLocationAddressInfoDefault"
        location:
          $ref: "#/components/schemas/DeviceEmergencyLocationInfo"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
        addressStatus:
          type: "string"
          description: "Emergency address status"
          enum:
          - "Valid"
          - "Invalid"
          - "Provisioning"
        visibility:
          type: "string"
          description: |
            Visibility of an emergency response location. If `Private`
            is set, then location is visible only for the restricted number of users,
            specified in `owners` array
          enum:
          - "Private"
          - "Public"
        syncStatus:
          type: "string"
          description: |
            Resulting status of the emergency address synchronization. Returned
            if `syncEmergencyAddress` parameter is set to `true`
          enum:
          - "Verified"
          - "Updated"
          - "Deleted"
          - "NotRequired"
          - "Unsupported"
          - "Failed"
        addressEditableStatus:
          type: "string"
          description: |
            Ability to register new emergency address for a phone line
            using devices sharing this line or only main device (line owner)
          enum:
          - "MainDevice"
          - "AnyDevice"
      description: "Device emergency settings"
    DeviceProvisioningExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Number of extension"
        partnerId:
          type: "string"
          description: |
            For Partner Applications Internal identifier of an extension
            created by partner. The RingCentral supports the mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
      description: "Information on the extension, to which the phone number is assigned. Returned only for the request of Account phone number list"
    ModelInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a HardPhone device model"
        name:
          type: "string"
          description: "Device name"
        addons:
          type: "array"
          description: "Add-ons description"
          items:
            $ref: "#/components/schemas/AddonInfo"
        deviceClass:
          type: "string"
        features:
          type: "array"
          description: "Device feature or multiple features supported"
          items:
            $ref: "#/components/schemas/DeviceFeatureEnum"
        lineCount:
          type: "integer"
          format: "int32"
          description: "Max supported count of phone lines"
      description: "HardPhone model information"
    PhoneNumberInfoIntId:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of a phone number"
          format: "int64"
        country:
          $ref: "#/components/schemas/PhoneNumberCountryInfo"
        extension:
          $ref: "#/components/schemas/DeviceProvisioningExtensionInfo"
        label:
          type: "string"
          description: "Custom user-defined name of a phone number, if any"
        location:
          type: "string"
          description: "Location (City, State). Filled for local US numbers"
        paymentType:
          type: "string"
          description: |
            Payment type. 'External' is returned for forwarded numbers
            which are not terminated in the RingCentral phone system
          enum:
          - "External"
          - "Local"
        phoneNumber:
          type: "string"
          description: "Phone number"
        status:
          type: "string"
          description: |
            Status of a phone number. If the value is 'Normal', the phone
            number is ready to be used. Otherwise, it is an external number not yet
            ported to RingCentral
        type:
          type: "string"
          description: "Phone number type"
          enum:
          - "VoiceFax"
          - "FaxOnly"
          - "VoiceOnly"
        usageType:
          type: "string"
          description: "Usage type of the phone number"
          enum:
          - "MainCompanyNumber"
          - "AdditionalCompanyNumber"
          - "CompanyNumber"
          - "DirectNumber"
          - "CompanyFaxNumber"
          - "ForwardedNumber"
          - "ForwardedCompanyNumber"
          - "ContactCenterNumber"
      description: "Phone number information"
    DeviceUpdateExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
      description: "Information on extension that the device is assigned to"
    DeviceEmergencyLocationInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the emergency response location"
        name:
          type: "string"
          description: "Location name"
        addressFormatId:
          type: "string"
          description: "Address format ID"
      description: "Company emergency response location details"
    OutboundProxyInfo:
      type: "object"
      properties:
        region:
          type: "string"
          description: "Geographical region"
          example: "APAC"
        proxy:
          type: "string"
          description: "SIP outbound proxy"
        proxyTLS:
          type: "string"
          description: "SIP details for TLS (Transport Layer Security)"
    SipInfoResource:
      type: "object"
      properties:
        domain:
          type: "string"
          description: "SIP domain"
        outboundProxies:
          type: "array"
          description: "List of outbound proxies"
          items:
            $ref: "#/components/schemas/OutboundProxyInfo"
        userName:
          type: "string"
          description: "User credentials"
        password:
          type: "string"
          description: "User password"
        authorizationId:
          type: "string"
          description: "Internal identifier for SIP authorization"
    CustomFieldModel:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Custom field identifier"
        category:
          type: "string"
          description: "Object category to attach custom fields"
          enum:
          - "User"
        displayName:
          type: "string"
          description: "Custom field display name"
    CustomFieldCreateRequest:
      type: "object"
      properties:
        category:
          type: "string"
          description: "Object category to attach custom fields"
          enum:
          - "User"
        displayName:
          type: "string"
          description: "Custom field display name"
    CustomFieldList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldModel"
    CustomFieldUpdateRequest:
      type: "object"
      properties:
        displayName:
          type: "string"
          description: "Custom field display name"
    AutomaticRecordingResource:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Flag for controlling Automatic Call Recording settings"
        outboundCallTones:
          type: "boolean"
          description: "Flag for controlling 'Play Call Recording Announcement for Outbound Calls' settings"
        outboundCallAnnouncement:
          type: "boolean"
          description: "Flag for controlling 'Play periodic tones for outbound calls' settings"
        allowMute:
          type: "boolean"
          description: "Flag for controlling 'Allow mute in auto call recording' settings"
        extensionCount:
          type: "integer"
          format: "int32"
          description: "Total amount of extension that are used in call recordings"
        retentionPeriod:
          type: "integer"
          format: "int32"
          description: "Retention period of a call recording, the default value is 90 days"
        maxNumberLimit:
          type: "integer"
          format: "int32"
          description: "Maximum number of automatic call recordings per account, the default value is 100 000"
    GreetingResource:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "StartRecording"
          - "StopRecording"
          - "AutomaticRecording"
        mode:
          type: "string"
          description: |
            Here `Default` indicates that all greetings of that type
            (in all languages) are default. If at least one greeting (in any language)
            of the specified type is custom, then `Custom` is returned.
          enum:
          - "Default"
          - "Custom"
    OnDemandResource:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Flag for controlling OnDemand Call Recording settings"
        retentionPeriod:
          type: "integer"
          format: "int32"
          description: "Retention period of a call recording, the default value is 90 days"
    CallRecordingSettingsResource:
      type: "object"
      properties:
        onDemand:
          $ref: "#/components/schemas/OnDemandResource"
        automatic:
          $ref: "#/components/schemas/AutomaticRecordingResource"
        greetings:
          type: "array"
          description: "Collection of Greeting Info"
          items:
            $ref: "#/components/schemas/GreetingResource"
    CallRecordingCustomGreeting:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "StartRecording"
          - "StopRecording"
          - "AutomaticRecording"
        custom:
          $ref: "#/components/schemas/CallRecordingCustomGreetingData"
        language:
          $ref: "#/components/schemas/CallRecordingCustomGreetingLanguage"
    CallRecordingCustomGreetingLanguage:
      type: "object"
      description: "Custom greeting language"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a language"
        id:
          type: "string"
          description: "Internal identifier of a language"
        name:
          type: "string"
          description: "Language name"
        localeCode:
          type: "string"
          description: "Language locale code"
    CallRecordingCustomGreetingData:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a custom company greeting"
        id:
          type: "string"
          description: "Internal identifier of a custom company greeting"
      description: "Custom greeting data"
    CallRecordingCustomGreetings:
      type: "object"
      description: "Returns data on call recording custom greetings."
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CallRecordingCustomGreeting"
    CallRecordingExtensionResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
        extensionNumber:
          type: "string"
        type:
          type: "string"
        callDirection:
          type: "string"
          description: "Direction of call"
          enum:
          - "Outbound"
          - "Inbound"
          - "All"
    BulkAccountCallRecordingsResource:
      type: "object"
      properties:
        addedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallRecordingExtensionResource"
        updatedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallRecordingExtensionResource"
        removedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallRecordingExtensionResource"
    CallRecordingExtensions:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to call recording extension list resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CallRecordingExtensionInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    PageNavigationUri:
      type: "object"
      additionalProperties: false
      properties:
        uri:
          type: "string"
          description: "Canonical URI to retrieve the particular page of the result set"
          format: "uri"
    CallRecordingExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an extension resource"
        extensionNumber:
          type: "string"
          description: "Number of an extension"
        name:
          type: "string"
          description: "Name of an extension"
    PageNavigationModel:
      type: "object"
      description: "Links to other pages of the current result set"
      additionalProperties: false
      properties:
        firstPage:
          $ref: "#/components/schemas/PageNavigationUri"
        nextPage:
          $ref: "#/components/schemas/PageNavigationUri"
        previousPage:
          $ref: "#/components/schemas/PageNavigationUri"
        lastPage:
          $ref: "#/components/schemas/PageNavigationUri"
    MakeCallOutRequest:
      required:
      - "from"
      - "to"
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/MakeCallOutCallerInfoRequestFrom"
        to:
          $ref: "#/components/schemas/MakeCallOutCallerInfoRequestTo"
        countryId:
          $ref: "#/components/schemas/CountryId"
    CallParty:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a party"
        status:
          $ref: "#/components/schemas/CallStatusInfo"
        muted:
          type: "boolean"
          description: |
            Specifies if a call participant is muted or not. **Note:**
            If a call is also controlled via Hard phone or RingCentral App (not only
            through the API by calling call control methods) then it cannot be fully
            muted/unmuted via API only, in this case the action should be duplicated
            via Hard phone/RC App interfaces
        standAlone:
          type: "boolean"
          description: |
            If `true` then the party is not connected to a session voice
            conference, `false` means the party is connected to other parties in a
            session
        park:
          $ref: "#/components/schemas/ParkInfo"
        from:
          $ref: "#/components/schemas/PartyInfo"
        to:
          $ref: "#/components/schemas/PartyInfo"
        owner:
          $ref: "#/components/schemas/OwnerInfo"
        direction:
          type: "string"
          description: "Direction of a call"
          enum:
          - "Inbound"
          - "Outbound"
        conferenceRole:
          type: "string"
          description: "A party's role in the conference scenarios. For calls of 'Conference' type only"
          enum:
          - "Host"
          - "Participant"
        ringOutRole:
          type: "string"
          description: "A party's role in 'Ring Me'/'RingOut' scenarios. For calls of 'Ringout' type only"
          enum:
          - "Initiator"
          - "Target"
        ringMeRole:
          type: "string"
          description: "A party's role in 'Ring Me'/'RingOut' scenarios. For calls of 'Ringme' type only"
          enum:
          - "Initiator"
          - "Target"
        recordings:
          type: "array"
          description: "Active recordings list"
          items:
            $ref: "#/components/schemas/RecordingInfo"
      description: "Information on a party of a call session"
    OwnerInfo:
      type: "object"
      properties:
        accountId:
          type: "string"
          description: "Internal identifier of an account that monitors a call"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension that monitors a call"
      description: "Deprecated. Information on a call owner"
    RecordingInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a recording resource"
        active:
          type: "boolean"
          description: "True if the recording is active. False if the recording is paused."
    CountryId:
      type: "integer"
      format: "int64"
      description: "Optional. Dialing plan country data. If not specified, then extension home country is applied by default."
    MakeCallOutCallerInfoRequestFrom:
      type: "object"
      properties:
        deviceId:
          type: "string"
          description: "Internal identifier of a device"
          example: "59474004"
      description: "Instance id of the caller. It corresponds to the 1st leg of the CallOut call."
    PartyInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number of a party"
        name:
          type: "string"
          description: "Displayed name of a party"
        deviceId:
          type: "string"
          description: "Internal identifier of a device"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
    CallSessionObject:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call session"
        origin:
          $ref: "#/components/schemas/OriginInfo"
        voiceCallToken:
          type: "string"
          description: "For calls of 'Conference' type only"
        parties:
          type: "array"
          items:
            $ref: "#/components/schemas/CallParty"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Date and time of the latest session update represented in Unix time format"
      description: "Call session information"
    CallStatusInfo:
      type: "object"
      properties:
        code:
          type: "string"
          description: "Status code of a call"
          enum:
          - "Setup"
          - "Proceeding"
          - "Answered"
          - "Disconnected"
          - "Gone"
          - "Parked"
          - "Hold"
          - "VoiceMail"
          - "FaxReceive"
          - "Tds"
          - "VoiceMailScreening"
        peerId:
          $ref: "#/components/schemas/PeerInfo"
        reason:
          type: "string"
          description: "Reason for call termination. For 'Disconnected' code only"
          enum:
          - "Pickup"
          - "Supervising"
          - "TakeOver"
          - "Timeout"
          - "BlindTransfer"
          - "RccTransfer"
          - "AttendedTransfer"
          - "CallerInputRedirect"
          - "CallFlip"
          - "ParkLocation"
          - "DtmfTransfer"
          - "AgentAnswered"
          - "AgentDropped"
          - "Rejected"
          - "Cancelled"
          - "InternalError"
          - "NoAnswer"
          - "TargetBusy"
          - "InvalidNumber"
          - "InternationalDisabled"
          - "DestinationBlocked"
          - "NotEnoughFunds"
          - "NoSuchUser"
          - "CallPark"
          - "CallRedirected"
          - "CallReplied"
          - "CallSwitch"
          - "CallFinished"
          - "CallDropped"
        description:
          type: "string"
          description: "Optional message"
      description: "Status data of a call session"
    PeerInfo:
      type: "object"
      properties:
        sessionId:
          type: "string"
        telephonySessionId:
          type: "string"
        partyId:
          type: "string"
      description: "Peer session/party details. Valid in 'Gone' state of a call"
    OriginInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: "Session origin type"
          enum:
          - "Call"
          - "RingOut"
          - "RingMe"
          - "Conference"
          - "GreetingsRecording"
          - "VerificationCall"
          - "Zoom"
          - "CallOut"
      description: "Session origin details"
    MakeCallOutCallerInfoRequestTo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 format, short codes (*67, *86), emergency (911, 112) or special (988) numbers"
          example: "+16502223366"
        extensionNumber:
          type: "string"
          description: "Extension number"
          example: "103"
      description: "Phone number of the called party. This number corresponds to the 2nd leg of a CallOut call"
    ParkInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Call park identifier"
      description: "Call park information"
    CallSession:
      type: "object"
      properties:
        session:
          $ref: "#/components/schemas/CallSessionObject"
    CallPartyInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Call party phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)(with '+' sign) format"
        name:
          type: "string"
          description: "Call party name"
        extensionId:
          type: "string"
          description: "Internal identifier of a call party extensionId"
    AccountTelephonySessionsEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: "Date/time of sending a notification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
        body:
          $ref: "#/components/schemas/TelephonySessionsEventBody"
    TelephonySessionsEventBody:
      type: "object"
      properties:
        sequence:
          type: "integer"
          format: "int64"
          description: "Order number of a notification to state the chronology"
        sessionId:
          type: "string"
          description: "Legacy identifier of a call session"
        telephonySessionId:
          type: "string"
          description: "Call session identifier, required for Telephony API"
        serverId:
          type: "string"
          description: "Identifier of a server"
        eventTime:
          type: "string"
          format: "date-time"
          description: "The call start date/time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        origin:
          $ref: "#/components/schemas/OriginInfo"
        parties:
          type: "array"
          description: "Call participants details"
          items:
            $ref: "#/components/schemas/TelephonySessionsEventPartyInfo"
      description: "Notification payload body"
    CallSessionStatusInfo:
      type: "object"
      properties:
        code:
          type: "string"
        reason:
          type: "string"
        parkData:
          type: "string"
        peerId:
          $ref: "#/components/schemas/PeerInfo"
        mobilePickupData:
          $ref: "#/components/schemas/MobilePickupData"
    ExtensionTelephonySessionsEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
        body:
          $ref: "#/components/schemas/TelephonySessionsEventBody"
    MobilePickupData:
      type: "object"
      properties:
        ccMailboxes:
          type: "array"
          description: "List of extension IDs, configured to pick up a call from Desktop/Mobile applications"
          items:
            type: "string"
        to:
          type: "string"
          description: "SIP proxy registration name"
        sid:
          type: "string"
          description: "User data"
        srvlvl:
          type: "string"
          description: "User data"
        srvLvlExt:
          type: "string"
          description: "User data"
    TelephonySessionsEventPartyInfo:
      type: "object"
      properties:
        accountId:
          type: "string"
        extensionId:
          type: "string"
        id:
          type: "string"
        direction:
          type: "string"
          enum:
          - "Inbound"
          - "Outbound"
        to:
          $ref: "#/components/schemas/CallPartyInfo"
        from:
          $ref: "#/components/schemas/CallPartyInfo"
        status:
          $ref: "#/components/schemas/CallSessionStatusInfo"
    AddPartyRequest:
      required:
      - "partyId"
      - "sessionId"
      type: "object"
      properties:
        sessionId:
          type: "string"
          description: "Internal identifier of a call session"
        partyId:
          type: "string"
          description: "Internal identifier of a party that should be added to the call session"
    PartyUpdateRequest:
      type: "object"
      properties:
        party:
          $ref: "#/components/schemas/PartyUpdateInfo"
    PartyUpdateInfo:
      type: "object"
      properties:
        muted:
          type: "boolean"
          description: "Specifies if a call participant is muted or not. **Note:** If a call is also controlled via Hard phone or RingCentral App (not only through the API by calling call control methods) then it cannot be fully muted/unmuted via API only, in this case the action should be duplicated via Hard phone/RC App interfaces"
        standAlone:
          type: "boolean"
          description: "If `true` then the party is not connected to a session voice conference, `false` means the party is connected to other parties in a session"
      description: "Party update data"
    CallPartyFlip:
      type: "object"
      properties:
        callFlipId:
          type: "string"
          description: "Call flip id"
    ReplyWithPattern:
      type: "object"
      properties:
        pattern:
          type: "string"
          description: "Predefined reply pattern name."
          example: "OnMyWay"
          enum:
          - "WillCallYouBack"
          - "CallMeBack"
          - "OnMyWay"
          - "OnTheOtherLine"
          - "WillCallYouBackLater"
          - "CallMeBackLater"
          - "InAMeeting"
          - "OnTheOtherLineNoCall"
        time:
          type: "integer"
          format: "int32"
          description: "Number of time units. Applicable only to WillCallYouBack, CallMeBack patterns."
          example: 5
        timeUnit:
          type: "string"
          description: "Time unit name."
          example: "Minute"
          enum:
          - "Minute"
          - "Hour"
          - "Day"
    ReplyParty:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a party"
        status:
          $ref: "#/components/schemas/CallStatusInfo"
        muted:
          type: "boolean"
          description: "Specifies if a call participant is muted or not. **Note:** If a call is also controlled via Hard phone or RingCentral App (not only through the API by calling call control methods) then it cannot be fully muted/unmuted via API only, in this case the action should be duplicated via Hard phone/RC App interfaces"
        standAlone:
          type: "boolean"
          description: "If `true` then the party is not connected to a session voice conference, `false` means the party is connected to other parties in a session"
        park:
          $ref: "#/components/schemas/ParkInfo"
        from:
          $ref: "#/components/schemas/PartyInfo"
        to:
          $ref: "#/components/schemas/PartyInfo"
        owner:
          $ref: "#/components/schemas/OwnerInfo"
        direction:
          type: "string"
          description: "Direction of a call"
          enum:
          - "Inbound"
          - "Outbound"
    CallPartyReply:
      type: "object"
      properties:
        replyWithText:
          type: "string"
          description: "Text to reply"
        replyWithPattern:
          $ref: "#/components/schemas/ReplyWithPattern"
    BridgeTargetRequest:
      required:
      - "partyId"
      - "telephonySessionId"
      type: "object"
      properties:
        telephonySessionId:
          type: "string"
          description: "Internal identifier of a call session to be connected to (bridged)"
        partyId:
          type: "string"
          description: "Internal identifier of a call party to be connected to (bridged)"
    IgnoreRequestBody:
      required:
      - "deviceId"
      type: "object"
      properties:
        deviceId:
          type: "string"
          description: "Internal device identifier"
          example: "400020454008"
    PartySuperviseRequest:
      required:
      - "agentExtensionId"
      - "mode"
      - "supervisorDeviceId"
      type: "object"
      properties:
        mode:
          type: "string"
          description: "Supervising mode"
          example: "Listen"
          enum:
          - "Listen"
        supervisorDeviceId:
          type: "string"
          description: "Internal identifier of a supervisor's device"
          example: "191888004"
        agentExtensionId:
          type: "string"
          description: "Mailbox ID of a user that will be monitored"
          example: "400378008008"
        autoAnswer:
          type: "boolean"
          description: "Specifies if auto-answer SIP header should be sent. If auto-answer is set to `true`, the call is automatically answered by the supervising party, if set to `false` - then the supervising party has to accept or decline the monitored call"
          default: true
        mediaSDP:
          type: "string"
          description: "Specifies session description protocol (SDP) setting. The possible values are 'sendOnly' (only sending) meaning one-way audio streaming; and 'sendRecv' (sending/receiving) meaning two-way audio streaming"
          enum:
          - "sendOnly"
          - "sendRecv"
    PartySuperviseResponse:
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/PartyInfo"
        to:
          $ref: "#/components/schemas/PartyInfo"
        direction:
          type: "string"
          description: "Direction of a call"
          enum:
          - "Outbound"
          - "Inbound"
        id:
          type: "string"
          description: "Internal identifier of a party that monitors a call"
        accountId:
          type: "string"
          description: "Internal identifier of an account that monitors a call"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension that monitors a call"
        muted:
          type: "boolean"
          description: "Specifies if a call party is muted"
        owner:
          $ref: "#/components/schemas/OwnerInfo"
        standAlone:
          type: "boolean"
          description: "Specifies if a device is stand-alone"
        status:
          $ref: "#/components/schemas/CallStatusInfo"
    CallRecordingUpdate:
      type: "object"
      properties:
        active:
          type: "boolean"
          description: "Recording status"
    CallRecording:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call recording"
        active:
          type: "boolean"
          description: "Call recording status"
    AnswerTarget:
      type: "object"
      properties:
        deviceId:
          type: "string"
          description: "Device ID that is used to answer to incoming call."
          example: "400018633008"
    TransferTarget:
      type: "object"
      description: "Identifier of a call party the call will be transferred to. Only **one of** these parameters: `phoneNumber`, `voicemail`, `extensionNumber` or `parkOrbit` must be specified, otherwise an error is returned."
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number"
        voicemail:
          type: "string"
          description: "Voicemail owner extension identifier"
        parkOrbit:
          type: "string"
          description: "Park orbit identifier"
        extensionNumber:
          type: "string"
          description: "Extension short number"
    HoldCallPartyRequest:
      type: "object"
      properties:
        proto:
          type: "string"
          description: "Protocol for hold mode initiation"
          default: "Auto"
          enum:
          - "Auto"
          - "RC"
          - "BroadWorks"
          - "DisconnectHolder"
    PickupTarget:
      required:
      - "deviceId"
      type: "object"
      properties:
        deviceId:
          type: "string"
          description: "Device identifier that is used to pick up the parked call."
          example: "400018633008"
    ForwardTarget:
      type: "object"
      description: |
        Identifier of a call party the call will be forwarded to. Only **one of** these parameters:
        `phoneNumber`, `voicemail` or `extensionNumber` must be specified, otherwise an error is returned.
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number"
        voicemail:
          type: "string"
          description: "Voicemail owner extension identifier"
        extensionNumber:
          type: "string"
          description: "Extension short number"
    ForwardCallPartyResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a party"
        status:
          $ref: "#/components/schemas/CallStatusInfo"
        muted:
          type: "boolean"
          description: |
            Specifies if a call participant is muted or not. **Note:**
            If a call is also controlled via Hard phone or RingCentral App (not only
            through the API by calling call control methods) then it cannot be fully
            muted/unmuted via API only, in this case the action should be duplicated
            via Hard phone/RC App interfaces
        standAlone:
          type: "boolean"
          description: |
            If `true` then the party is not connected to a session voice
            conference, `false` means the party is connected to other parties in a
            session
        park:
          $ref: "#/components/schemas/ParkInfo"
        from:
          $ref: "#/components/schemas/PartyInfo"
        to:
          $ref: "#/components/schemas/PartyInfo"
        owner:
          $ref: "#/components/schemas/OwnerInfo"
        direction:
          type: "string"
          description: "Direction of a call"
          enum:
          - "Inbound"
          - "Outbound"
        conferenceRole:
          type: "string"
          description: "A party's role in the conference scenarios. For calls of 'Conference' type only"
          enum:
          - "Host"
          - "Participant"
        ringOutRole:
          type: "string"
          description: "A party's role in 'Ring Me'/'RingOut' scenarios. For calls of 'Ringout' type only"
          enum:
          - "Initiator"
          - "Target"
        ringMeRole:
          type: "string"
          description: "A party's role in 'Ring Me'/'RingOut' scenarios. For calls of 'Ringme' type only"
          enum:
          - "Initiator"
          - "Target"
        recordings:
          type: "array"
          description: "Active recordings list"
          items:
            $ref: "#/components/schemas/RecordingInfo"
      description: "Information on a party of a call session"
    SuperviseCallSessionRequest:
      required:
      - "mode"
      - "supervisorDeviceId"
      type: "object"
      properties:
        mode:
          type: "string"
          description: "Supervising mode"
          example: "Listen"
          enum:
          - "Listen"
        supervisorDeviceId:
          type: "string"
          description: "Internal identifier of a supervisor's device which will be used for call session monitoring"
          example: "191888004"
        agentExtensionId:
          type: "string"
          description: "Extension identifier of the user that will be monitored"
          example: "400378008008"
        autoAnswer:
          type: "boolean"
          description: "Specifies if auto-answer SIP header should be sent. If auto-answer is set to `true`, the call is automatically answered by the supervising party, if set to `false` - then the supervising party has to accept or decline the monitored call"
          default: true
        mediaSDP:
          type: "string"
          description: "Specifies session description protocol setting"
          enum:
          - "sendOnly"
          - "sendRecv"
    SuperviseCallSessionResponse:
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/PartyInfo"
        to:
          $ref: "#/components/schemas/PartyInfo"
        direction:
          type: "string"
          description: "Direction of a call"
          enum:
          - "Outbound"
          - "Inbound"
        id:
          type: "string"
          description: "Internal identifier of a party that monitors a call"
        accountId:
          type: "string"
          description: "Internal identifier of an account that monitors a call"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension that monitors a call"
        muted:
          type: "boolean"
          description: "Specifies if a call participant is muted or not. **Note:** If a call is also controlled via Hard phone or RingCentral App (not only through the API by calling call control methods) then it cannot be fully muted/unmuted via API only, in this case the action should be duplicated via Hard phone/RC App interfaces"
        owner:
          $ref: "#/components/schemas/OwnerInfo"
        standAlone:
          type: "boolean"
          description: "If `true` then the party is not connected to a session voice conference, `false` means the party is connected to other parties in a session"
        status:
          $ref: "#/components/schemas/CallStatusInfo"
    AccountServiceInfoRequest:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of the account Service Info resource"
        servicePlanName:
          type: "string"
          description: "Account Service Plan name"
        brand:
          $ref: "#/components/schemas/BrandInfo"
        contractedCountry:
          $ref: "#/components/schemas/CountryInfoShortModel"
        servicePlan:
          $ref: "#/components/schemas/ServicePlanInfo"
        targetServicePlan:
          $ref: "#/components/schemas/TargetServicePlanInfo"
        billingPlan:
          $ref: "#/components/schemas/BillingPlanInfo"
        serviceFeatures:
          type: "array"
          description: "Service features information, see Service Feature List"
          items:
            $ref: "#/components/schemas/ServiceFeatureInfo"
        limits:
          $ref: "#/components/schemas/AccountLimits"
        package:
          $ref: "#/components/schemas/PackageInfo"
      description: |
        Account service information, including brand, service plan and billing plan
    PackageInfo:
      type: "object"
      properties:
        version:
          type: "string"
          description: "Billing package version"
        id:
          type: "string"
          description: "Billing package identifier"
    AccountServiceInfo:
      allOf:
      - $ref: "#/components/schemas/AccountServiceInfoRequest"
      - type: "object"
        properties:
          uBrand:
            $ref: "#/components/schemas/UBrandInfo"
        description: |
          Account service information, including brand, service plan and billing plan
    ServiceFeatureInfo:
      type: "object"
      properties:
        featureName:
          type: "string"
          description: "Feature name"
          enum:
          - "AccountFederation"
          - "Archiver"
          - "AutomaticCallRecordingMute"
          - "AutomaticInboundCallRecording"
          - "AutomaticOutboundCallRecording"
          - "BlockedMessageForwarding"
          - "Calendar"
          - "CallerIdControl"
          - "CallForwarding"
          - "CallPark"
          - "CallParkLocations"
          - "CallSupervision"
          - "CallSwitch"
          - "CallQualitySurvey"
          - "Conferencing"
          - "ConferencingNumber"
          - "ConfigureDelegates"
          - "DeveloperPortal"
          - "DND"
          - "DynamicConference"
          - "EmergencyAddressAutoUpdate"
          - "EmergencyCalling"
          - "EncryptionAtRest"
          - "ExternalDirectoryIntegration"
          - "Fax"
          - "FaxReceiving"
          - "FreeSoftPhoneLines"
          - "HDVoice"
          - "HipaaCompliance"
          - "Intercom"
          - "InternationalCalling"
          - "InternationalSMS"
          - "LinkedSoftphoneLines"
          - "MMS"
          - "MobileVoipEmergencyCalling"
          - "OnDemandCallRecording"
          - "Pager"
          - "PagerReceiving"
          - "Paging"
          - "PasswordAuth"
          - "PromoMessage"
          - "Reports"
          - "Presence"
          - "RCTeams"
          - "RingOut"
          - "SalesForce"
          - "SharedLines"
          - "SingleExtensionUI"
          - "SiteCodes"
          - "SMS"
          - "SMSReceiving"
          - "SoftPhoneUpdate"
          - "TelephonySessions"
          - "UserManagement"
          - "VideoConferencing"
          - "VoipCalling"
          - "VoipCallingOnMobile"
          - "Voicemail"
          - "VoicemailToText"
          - "WebPhone"
        enabled:
          type: "boolean"
          description: |
            Feature status, shows feature availability for the extension
    MessageTemplateRequest:
      type: "object"
      required:
      - "displayName"
      properties:
        displayName:
          type: "string"
          description: "Name of a template"
        body:
          $ref: "#/components/schemas/TemplateInfo"
        site:
          $ref: "#/components/schemas/Site"
    TemplateInfo:
      type: "object"
      description: "Text message template information"
      required:
      - "text"
      properties:
        text:
          type: "string"
          description: "Text of the message template. Maximum length is 1000 symbols (2-byte UTF-16 encoded). \nIf a character is encoded in 4 bytes in UTF-16 it is treated as 2 characters, \nthus limiting the maximum message length up to 500 symbols\n"
    Site:
      type: "object"
      description: "Specifies a site that message template is associated with. Supported only if the Sites feature is enabled. \nThe default is `main-site` value.\n"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site"
        name:
          type: "string"
          description: "Custom name of a site"
    VisibilityType:
      type: "string"
      description: "Specifies if a template is available on a user (Personal) or a company (Company) level"
      enum:
      - "Company"
      - "Personal"
    MessageTemplatesListResponse:
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of text message templates"
          items:
            $ref: "#/components/schemas/MessageTemplateResponse"
    MessageTemplateResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a template"
        displayName:
          type: "string"
          description: "Name of a template"
        body:
          $ref: "#/components/schemas/TemplateInfo"
        scope:
          $ref: "#/components/schemas/VisibilityType"
        site:
          $ref: "#/components/schemas/Site"
    BaseCallLogFromParty:
      type: "object"
      properties:
        dialerPhoneNumber:
          type: "string"
          description: "Dialer phone number without any format modifications. Returned for inbound calls"
      description: "Sender/initiator caller information"
    CallLogToParty:
      allOf:
      - $ref: "#/components/schemas/CallLogParty"
      - $ref: "#/components/schemas/BaseCallLogToParty"
    ExtensionInfoCallLog:
      type: "object"
      required:
      - "id"
      - "uri"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
      description: "Information about extension on whose behalf a call is initiated. For Secretary call log the Boss extension info is returned"
    CallTypeEnum:
      type: "string"
      description: "The type of call"
      enum:
      - "Voice"
      - "Fax"
    CallInternalTypeEnum:
      type: "string"
      description: "The internal type of the call"
      enum:
      - "Local"
      - "LongDistance"
      - "International"
      - "Sip"
      - "RingMe"
      - "RingOut"
      - "Usual"
      - "TollFreeNumber"
      - "VerificationNumber"
      - "Vma"
      - "LocalNumber"
      - "ImsOutgoing"
      - "ImsIncoming"
    CallLogFromParty:
      allOf:
      - $ref: "#/components/schemas/CallLogParty"
      - $ref: "#/components/schemas/BaseCallLogFromParty"
    DelegationTypeEnum:
      type: "string"
      description: "Call delegation type"
      enum:
      - "Coworker"
      - "Unknown"
    CallDirectionEnum:
      description: "The direction of a call"
      type: "string"
      enum:
      - "Inbound"
      - "Outbound"
    CallLogRecord:
      allOf:
      - $ref: "#/components/schemas/BaseCallLogRecord"
      - description: "Call log record"
        type: "object"
        required:
        - "id"
        - "uri"
        - "sessionId"
        properties:
          id:
            type: "string"
            description: "Internal identifier of a call log record"
          uri:
            type: "string"
            format: "uri"
            description: "Canonical URI of a call log record"
          sessionId:
            type: "string"
            description: "Internal identifier of a call session"
          deleted:
            type: "boolean"
            description: "Indicates whether the record is deleted. Returned for deleted records, for ISync requests"
          legs:
            type: "array"
            description: "For 'Detailed' view only. Leg description"
            items:
              $ref: "#/components/schemas/CallLogRecordLegInfo"
          lastModifiedTime:
            type: "string"
            description: |
              For 'Detailed' view only. The datetime when the call log record
              was modified in (ISO 8601)[https://en.wikipedia.org/wiki/ISO_8601] format
              including timezone, for example *2016-03-10T18:07:52.534Z*
            format: "date-time"
    CallLogResponse:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of company/user call log records"
        records:
          type: "array"
          description: "List of call log records"
          items:
            $ref: "#/components/schemas/CallLogRecord"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CallLogRecordMessage:
      type: "object"
      required:
      - "id"
      - "type"
      - "uri"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a message"
        type:
          type: "string"
          description: "Type of message"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a message resource"
      description: "Linked message (Fax/Voicemail)"
    BaseCallLogRecord:
      description: "Base schema for CallLogRecord and CallLogRecordLegInfo"
      type: "object"
      required:
      - "type"
      - "direction"
      - "action"
      - "startTime"
      - "duration"
      - "durationMs"
      properties:
        extension:
          $ref: "#/components/schemas/ExtensionInfoCallLog"
        telephonySessionId:
          type: "string"
          description: "Telephony identifier of a call session"
        sipUuidInfo:
          type: "string"
          description: "Call session identifier, required for Telephony REST API"
        transferTarget:
          type: "object"
          properties:
            telephonySessionId:
              type: "string"
              description: "Internal Identifier of Telephony Session, which belongs to transfer target in case of Warm Transfer"
        transferee:
          type: "object"
          properties:
            telephonySessionId:
              type: "string"
              description: "Internal Identifier of Telephony Session, which belongs to transferee in case of Warm Transfer"
        partyId:
          type: "string"
          description: "Internal Identifier of Participant"
        transport:
          $ref: "#/components/schemas/CallTransportEnum"
        from:
          $ref: "#/components/schemas/CallLogFromParty"
        to:
          $ref: "#/components/schemas/CallLogToParty"
        type:
          $ref: "#/components/schemas/CallTypeEnum"
        direction:
          $ref: "#/components/schemas/CallDirectionEnum"
        message:
          $ref: "#/components/schemas/CallLogRecordMessage"
        delegate:
          $ref: "#/components/schemas/CallLogDelegateInfo"
        delegationType:
          $ref: "#/components/schemas/DelegationTypeEnum"
        action:
          $ref: "#/components/schemas/CallActionEnum"
        result:
          $ref: "#/components/schemas/CallResultEnum"
        reason:
          $ref: "#/components/schemas/CallResultReasonEnum"
        reasonDescription:
          type: "string"
          description: "The detailed reason description of the call result"
        startTime:
          type: "string"
          description: "The call start datetime in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z"
          format: "date-time"
        duration:
          type: "integer"
          format: "int32"
          description: "Call duration in seconds"
        durationMs:
          type: "integer"
          format: "int32"
          description: "Call duration in milliseconds"
        recording:
          $ref: "#/components/schemas/CallLogRecordingInfo"
        shortRecording:
          type: "boolean"
          description: "Indicates that the recording is too short and therefore wouldn't be returned. The flag is not returned if the value is false"
        billing:
          $ref: "#/components/schemas/BillingInfo"
        internalType:
          $ref: "#/components/schemas/CallInternalTypeEnum"
    CallTransportEnum:
      type: "string"
      description: |
        The type of call transport. 'PSTN' indicates that a call leg was initiated
        from the PSTN network provider; 'VoIP' - from an RC phone.
      enum:
      - "PSTN"
      - "VoIP"
    CallLogRecordLegInfo:
      allOf:
      - $ref: "#/components/schemas/BaseCallLogRecord"
      - description: "Call leg record"
        type: "object"
        required:
        - "legType"
        properties:
          legType:
            $ref: "#/components/schemas/CallLegTypeEnum"
          master:
            type: "boolean"
            description: "Returned for 'Detailed' call log. Specifies if the leg is master-leg"
    CallLogParty:
      allOf:
      - $ref: "#/components/schemas/BaseCallLogParty"
      - type: "object"
        properties:
          location:
            type: "string"
            description: "Contains party location (city, state) if one can be determined from phoneNumber. This property is filled only when phoneNumber is not empty and server can calculate location information from it (for example, this information is unavailable for US toll-free numbers)"
          device:
            $ref: "#/components/schemas/CallLogRecordDeviceInfo"
        description: "Base schema for CallLogFromParty and CallLogToParty"
    CallLogRecordingInfo:
      type: "object"
      required:
      - "id"
      - "uri"
      - "type"
      - "contentUri"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the call recording"
        uri:
          type: "string"
          format: "uri"
          description: "Link to the call recording metadata resource"
        type:
          type: "string"
          description: "Indicates recording mode used"
          enum:
          - "Automatic"
          - "OnDemand"
        contentUri:
          type: "string"
          format: "uri"
          description: |
            Link to a call recording binary content. Has to be retrieved with proper authorization
            (access token must be passed via `Authorization` header or query parameter)
      description: "Call recording data. Returned if the call was recorded"
    CallLogRecordDeviceInfo:
      type: "object"
      required:
      - "id"
      - "uri"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a device resource"
    CallResultEnum:
      type: "string"
      description: "The result of the call operation"
      enum:
      - "911"
      - "933"
      - "Abandoned"
      - "Accepted"
      - "Answered Not Accepted"
      - "Blocked"
      - "Busy"
      - "Call Failed"
      - "Call Failure"
      - "Call connected"
      - "Carrier is not active"
      - "Declined"
      - "EDGE trunk misconfigured"
      - "Fax Not Sent"
      - "Fax Partially Sent"
      - "Fax Poor Line"
      - "Fax Receipt Error"
      - "Fax on Demand"
      - "Hang Up"
      - "IP Phone Offline"
      - "In Progress"
      - "Internal Error"
      - "International Disabled"
      - "International Restricted"
      - "Missed"
      - "No Answer"
      - "No Calling Credit"
      - "Not Allowed"
      - "Partial Receive"
      - "Phone Login"
      - "Receive Error"
      - "Received"
      - "Rejected"
      - "Reply"
      - "Restricted Number"
      - "Send Error"
      - "Sent"
      - "Sent to Voicemail"
      - "Stopped"
      - "Suspended account"
      - "Unknown"
      - "Voicemail"
      - "Wrong Number"
    BillingInfo:
      type: "object"
      properties:
        costIncluded:
          type: "number"
          format: "double"
          description: |
            Cost per minute, paid and already included in your RingCentral service plan.
            For example International Calls
        costPurchased:
          type: "number"
          format: "double"
          description: "Cost per minute, paid and not included in your RingCentral service plan"
      description: "Billing information related to the call. Returned for 'Detailed' view only"
    BaseCallLogParty:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number of a party. Usually it is a plain number including country and area code like 18661234567. But sometimes it could be returned from database with some formatting applied, for example (866)123-4567. This property is filled in all cases where parties communicate by means of global phone numbers, for example when calling to direct numbers or sending/receiving SMS"
        extensionNumber:
          type: "string"
          description: "Extension short number (usually 3 or 4 digits). This property is filled when parties communicate by means of short internal numbers, for example when calling to other extension or sending/receiving Company Pager message"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        name:
          type: "string"
          description: "Symbolic name associated with a party. If the phone does not belong to the known extension, only the location is returned, the name is not determined then"
      description: "Base schema for call log parties and history call log parties"
    CallLogDelegateInfo:
      type: "object"
      required:
      - "id"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a Secretary extension"
        name:
          type: "string"
          description: "Custom name of a Secretary extension"
      description: "Information on a delegate extension that actually implemented a call action. For Secretary call log the field is returned if the current extension implemented a call. For Boss call log the field contains information on a Secretary extension which actually implemented a call on behalf of the current extension"
    CallResultReasonEnum:
      type: "string"
      description: |
        The reason of the call result:
          * `Accepted` - The call was connected to and accepted by this number
          * `Connected` - The call was answered, but there was no response on how to handle the call (for example, a voice mail system answered the call and did not push "1" to accept)
          * `Line Busy` - The phone number you dialed was busy
          * `Not Answered` - The phone number you dialed was not answered
          * `No Answer` - You did not answer the call
          * `Hang Up` - The caller hung up before the call was answered
          * `Stopped` - This attempt was stopped because the call was answered by another phone
          * `Internal Error` - An internal error occurred when making the call. Please try again
          * `No Credit` - There was not enough Calling Credit on your account to make this call
          * `Restricted Number` - The number you dialed is restricted by RingCentral
          * `Wrong Number` - The number you dialed has either been disconnected or is not a valid phone number. Please check the number and try again
          * `International Disabled` - International calling is not enabled on your account. Contact customer service to activate International Calling
          * `International Restricted` - The country and/or area you attempted to call has been prohibited by your administrator
          * `Bad Number` - An error occurred when making the call. Please check the number before trying again
          * `Info 411 Restricted` - Calling to 411 Information Services is restricted
          * `Customer 611 Restricted` - 611 customer service is not supported. Please contact customer service at <(888) 555-1212>
          * `No Digital Line` - This DigitalLine was either not plugged in or did not have an internet connection
          * `Failed Try Again` - Call failed. Please try again
          * `Max Call Limit` - The number of simultaneous calls to your account has reached its limit
          * `Too Many Calls` - The number of simultaneous calls for per DigitalLine associated with Other Phone has reached its limit. Please contact customer service
          * `Calls Not Accepted` - Your account was not accepting calls at this time
          * `Number Not Allowed` - The number that was dialed to access your account is not allowed
          * `Number Blocked` - This number is in your Blocked Numbers list
          * `Number Disabled` - The phone number and/or area you attempted to call has been prohibited by your administrator
          * `Resource Error` - An error occurred when making the call. Please try again
          * `Call Loop` - A call loop occurred due to an incorrect call forwarding configuration. Please check that you are not forwarding calls back to your own account
          * `Fax Not Received` - An incoming fax could not be received because a proper connection with the sender's fax machine could not be established
          * `Fax Partially Sent` - The fax was only partially sent. Possible explanations include phone line quality to poor to maintain the connection or the call was dropped
          * `Fax Not Sent` - An attempt to send the fax was made, but could not connect with the receiving fax machine
          * `Fax Poor Line` - An attempt to send the fax was made, but the phone line quality was too poor to send the fax
          * `Fax Prepare Error` - An internal error occurred when preparing the fax. Please try again
          * `Fax Save Error` - An internal error occurred when saving the fax. Please try again
          * `Fax Send Error` - An error occurred when sending the fax. Please try again
          * `Emergency Address not defined` - The call was rejected due to no E911 address
          * `Carrier is not active` - The call was rejected due to carrier inactivity
          * `EDGE trunk misconfigured` - The call was rejected due to error in EDGE trunk configuration
          * `Internal Call Error` - An internal error occurred when making the call. Please try again
          * `Receive Error` - Fax receive error
      enum:
      - "Accepted"
      - "Bad Number"
      - "Call Loop"
      - "Calls Not Accepted"
      - "Carrier is not active"
      - "Connected"
      - "Customer 611 Restricted"
      - "EDGE trunk misconfigured"
      - "Emergency Address not defined"
      - "Failed Try Again"
      - "Fax Not Received"
      - "Fax Not Sent"
      - "Fax Partially Sent"
      - "Fax Poor Line"
      - "Fax Prepare Error"
      - "Fax Save Error"
      - "Fax Send Error"
      - "Hang Up"
      - "Info 411 Restricted"
      - "Internal Call Error"
      - "Internal Error"
      - "International Disabled"
      - "International Restricted"
      - "Line Busy"
      - "Max Call Limit"
      - "No Answer"
      - "No Credit"
      - "No Digital Line"
      - "Not Answered"
      - "Number Blocked"
      - "Number Disabled"
      - "Number Not Allowed"
      - "Receive Error"
      - "Resource Error"
      - "Restricted Number"
      - "Stopped"
      - "Too Many Calls"
      - "Unknown"
      - "Wrong Number"
    CallLegTypeEnum:
      type: "string"
      description: "Leg type"
      enum:
      - "SipForwarding"
      - "ServiceMinus2"
      - "ServiceMinus3"
      - "PstnToSip"
      - "Accept"
      - "FindMe"
      - "FollowMe"
      - "TestCall"
      - "FaxSent"
      - "CallBack"
      - "CallingCard"
      - "RingDirectly"
      - "RingOutWebToSubscriber"
      - "RingOutWebToCaller"
      - "SipToPstnMetered"
      - "RingOutClientToSubscriber"
      - "RingOutClientToCaller"
      - "RingMe"
      - "TransferCall"
      - "SipToPstnUnmetered"
      - "RingOutDeviceToSubscriber"
      - "RingOutDeviceToCaller"
      - "RingOutOneLegToCaller"
      - "ExtensionToExtension"
      - "CallPark"
      - "PagingServer"
      - "Hunting"
      - "OutgoingFreeSpDl"
      - "ParkLocation"
      - "ConferenceCall"
      - "MobileApp"
      - "MoveToConference"
      - "Unknown"
      - "MeetingsCall"
      - "SilentMonitoring"
      - "Monitoring"
      - "Pickup"
      - "ImsCall"
      - "JoinCall"
      - "TextRelay"
    CallActionEnum:
      type: "string"
      description: "The internal action corresponding to the call operation"
      enum:
      - "Accept Call"
      - "Barge In Call"
      - "Call Park"
      - "Call Return"
      - "CallOut-CallMe"
      - "Calling Card"
      - "Conference Call"
      - "E911 Update"
      - "Emergency"
      - "External Application"
      - "FindMe"
      - "FollowMe"
      - "FreeSPDL"
      - "Hunting"
      - "Incoming Fax"
      - "Monitoring"
      - "Move"
      - "Outgoing Fax"
      - "Paging"
      - "Park Location"
      - "Phone Call"
      - "Phone Login"
      - "Pickup"
      - "RC Meetings"
      - "Ring Directly"
      - "RingMe"
      - "RingOut Mobile"
      - "RingOut PC"
      - "RingOut Web"
      - "Sip Forwarding"
      - "Support"
      - "Text Relay"
      - "Transfer"
      - "Unknown"
      - "VoIP Call"
    BaseCallLogToParty:
      type: "object"
      properties:
        dialedPhoneNumber:
          type: "string"
          description: "Dialed phone number without any format modifications. Returned for outbound calls"
      description: "Target caller information"
    CallLogSyncTypeEnum:
      type: "string"
      description: "Type of call log synchronization request: full or incremental sync"
      enum:
      - "FSync"
      - "ISync"
    CallLogSyncInfo:
      type: "object"
      required:
      - "syncTime"
      - "syncToken"
      - "syncType"
      properties:
        syncType:
          $ref: "#/components/schemas/CallLogSyncTypeEnum"
        syncToken:
          type: "string"
          description: "Synchronization token"
        syncTime:
          type: "string"
          format: "date-time"
          description: "Time of the last synchronization in (ISO 8601)[https://en.wikipedia.org/wiki/ISO_8601] format including timezone, for example *2016-03-10T18:07:52.534Z*"
    CallLogSyncResponse:
      type: "object"
      required:
      - "uri"
      - "records"
      - "syncInfo"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of call log records with sync information"
        records:
          type: "array"
          description: |
            List of call log records with synchronization information. For `ISync` the total number of returned records is limited to 250;
            this includes both new records and the old ones, specified by the recordCount parameter
          items:
            $ref: "#/components/schemas/CallLogRecord"
        syncInfo:
          $ref: "#/components/schemas/CallLogSyncInfo"
    ExtensionFormattingLocaleInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal Identifier of a formatting language"
    ExtensionBulkUpdateTaskResource:
      required:
      - "creationTime"
      - "id"
      - "lastModifiedTime"
      - "status"
      - "uri"
      type: "object"
      description: |
        Information on a task for updating multiple extensions
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a task resource"
        id:
          type: "string"
          description: "Internal identifier of a task"
        status:
          type: "string"
          description: "Task status"
          enum:
          - "Accepted"
          - "InProgress"
          - "Completed"
          - "Failed"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Task creation date/time"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Task latest update date/time"
        result:
          $ref: "#/components/schemas/ExtensionBulkUpdateTaskResult"
    PronouncedNameInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: |
            The method used to pronounce the user's name:
            - `Default` - default extension name; first and last name specified in user's profile are pronounced using text-to-speech;
            - `TextToSpeech` - custom text specified by a user  pronounced using text-to-speech;
            - `Recorded` - custom audio uploaded by a user, the name recorded in user's own voice (supported only for extension retrieval).
          enum:
          - "Default"
          - "TextToSpeech"
          - "Recorded"
        text:
          type: "string"
          description: "Custom text (for `TextToSpeech` type only)"
        prompt:
          $ref: "#/components/schemas/PronouncedNamePromptInfo"
    SetupWizardStateForUpdateEnum:
      type: "string"
      description: "Initial configuration wizard state"
      enum:
      - "NotStarted"
      - "Incomplete"
      - "Completed"
      default: "NotStarted"
    ExtensionCountryInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a country"
    ProvisioningSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          format: "uri"
          description: "Internal identifier of a site"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a site resource"
        name:
          type: "string"
          description: "Name of a site"
        code:
          type: "string"
          description: "Site code value. Returned only if specified"
      description: |
        Site data. If multi-site feature is turned on for an account,
        then ID of a site must be specified. In order to assign a wireless
        point to the main site (company) the site ID should be set to `main-site`
    CustomFieldInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a custom field"
        value:
          type: "string"
          description: "Custom field value"
        displayName:
          type: "string"
    ExtensionTimezoneInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a timezone"
    ExtensionRegionalSettingRequest:
      type: "object"
      properties:
        homeCountry:
          $ref: "#/components/schemas/ExtensionCountryInfoRequest"
        timezone:
          $ref: "#/components/schemas/ExtensionTimezoneInfoRequest"
        language:
          $ref: "#/components/schemas/ExtensionLanguageInfoRequest"
        greetingLanguage:
          $ref: "#/components/schemas/ExtensionGreetingLanguageInfoRequest"
        formattingLocale:
          $ref: "#/components/schemas/ExtensionFormattingLocaleInfoRequest"
        currency:
          $ref: "#/components/schemas/ExtensionCurrencyInfoRequest"
        timeFormat:
          type: "string"
          description: "Time format setting"
          default: "12h"
          enum:
          - "12h"
          - "24h"
    UserTransitionInfo:
      type: "object"
      properties:
        sendWelcomeEmailsToUsers:
          type: "boolean"
          description: |
            Specifies if a welcome/activation email is sent to the existing
            users during account confirmation
        sendWelcomeEmail:
          type: "boolean"
          description: |
            Specifies if a welcome/activation email is sent to the new users (within extension status changing from
            'Unassigned' to 'NotActivated/Disabled')
      description: |
        For NotActivated extensions only. Welcome email settings
    ExtensionCurrencyInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal Identifier of a currency"
    ContactInfoUpdateRequest:
      type: "object"
      properties:
        firstName:
          type: "string"
          description: |
            For User extension type only. Extension user first name
        lastName:
          type: "string"
          description: |
            For User extension type only. Extension user last name
        company:
          type: "string"
          description: "Extension user company name"
        jobTitle:
          type: "string"
        email:
          type: "string"
          format: "email"
          description: "Email of extension user"
        businessPhone:
          type: "string"
          description: |
            Extension user contact phone number in
            [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            format
        mobilePhone:
          type: "string"
          description: |
            Extension user mobile (**non** Toll Free) phone number in
            [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        emailAsLoginName:
          type: "boolean"
          description: |
            If `true` then contact email is enabled as login name for
            this user. Please note that email should be unique in this case.
            The default value is `false`
        pronouncedName:
          $ref: "#/components/schemas/PronouncedNameInfo"
        department:
          type: "string"
          description: "Extension user department, if any"
    ErrorEntity:
      type: "object"
      properties:
        errorCode:
          type: "string"
          description: "Error code"
        message:
          type: "string"
          description: "Error message"
        parameterName:
          type: "string"
          description: "Name of invalid parameter"
        parameterValue:
          type: "string"
          description: "Value of invalid parameter"
    CallQueueInfoRequest:
      type: "object"
      properties:
        slaGoal:
          type: "integer"
          format: "int32"
          description: |
            Target percentage of calls that must be answered by agents
            within the service level time threshold
        slaThresholdSeconds:
          type: "integer"
          format: "int32"
        includeAbandonedCalls:
          type: "boolean"
        abandonedThresholdSeconds:
          type: "integer"
          format: "int32"
      description: |
        For Call Queue extension type only. Please note that legacy 'Department'
        extension type corresponds to 'Call Queue' extensions in modern RingCentral
        product terminology
    ExtensionStatusInfo:
      type: "object"
      properties:
        comment:
          type: "string"
          description: "A free-form user comment, describing the status change reason"
        reason:
          type: "string"
          description: "Type of suspension"
          enum:
          - "SuspendedVoluntarily"
          - "SuspendedInvoluntarily"
          - "CancelledVoluntarily"
          - "CancelledInvoluntarily"
        till:
          type: "string"
          format: "date-time"
          description: |
            Date until which an account will get deleted. The default
            value is 30 days since the current date
      description: |
        Status information (reason, comment). Returned for 'Disabled'
        status only
    ReferenceInfo:
      type: "object"
      properties:
        ref:
          type: "string"
          description: "Non-RC identifier of an extension"
        type:
          type: "string"
          description: "Type of external identifier"
          enum:
          - "PartnerId"
          - "CustomerDirectoryId"
        refAccId:
          type: "string"
          description: "Primary federation admin account identifier"
    ExtensionGreetingLanguageInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a greeting language"
    ExtensionBulkUpdateInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        status:
          type: "string"
          enum:
          - "Disabled"
          - "Enabled"
          - "NotActivated"
          - "Frozen"
        statusInfo:
          $ref: "#/components/schemas/ExtensionStatusInfo"
        reason:
          type: "string"
          description: "Type of suspension"
        comment:
          type: "string"
          description: "Free form user comment"
        extensionNumber:
          type: "string"
          description: "Extension number available"
        contact:
          $ref: "#/components/schemas/ContactInfoUpdateRequest"
        regionalSettings:
          $ref: "#/components/schemas/ExtensionRegionalSettingRequest"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateForUpdateEnum"
        partnerId:
          type: "string"
          description: |
            Additional extension identifier created by partner application
            and applied on client side
        ivrPin:
          type: "string"
          description: "IVR PIN"
        password:
          type: "string"
          description: "Password for extension"
        callQueueInfo:
          $ref: "#/components/schemas/CallQueueInfoRequest"
        transition:
          $ref: "#/components/schemas/UserTransitionInfo"
        costCenter:
          $ref: "#/components/schemas/CostCenterInfo"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldInfo"
        hidden:
          type: "boolean"
          description: "Hides extension from showing in company directory. Supported for extensions of User type only"
        site:
          $ref: "#/components/schemas/ProvisioningSiteInfo"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension
            type corresponds to 'Call Queue' extensions in modern RingCentral
            product terminology
          enum:
          - "User"
          - "FaxUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "DelegatedLinesGroup"
        references:
          type: "array"
          description: |
            List of non-RC internal identifiers assigned to an extension
          items:
            $ref: "#/components/schemas/ReferenceInfo"
    PronouncedNamePromptInfo:
      type: "object"
      properties:
        id:
          type: "string"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to a prompt resource"
        contentType:
          type: "string"
          description: "Content media type"
          enum:
          - "audio/mpeg"
          - "audio/wav"
    ContactBusinessAddressInfo:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Country name of a user's company"
        state:
          type: "string"
          description: |
            State/province name of a user's company. Mandatory
            for the USA, UK and Canada
        city:
          type: "string"
          description: "City name of a user's company"
        street:
          type: "string"
          description: "Street address of a user's company"
        zip:
          type: "string"
          description: "Zip code of a user's company"
      description: |
        User's business address. The default is
        Company (Auto-Receptionist) settings
    CostCenterInfo:
      type: "object"
      description: "Cost center information. Applicable if Cost Center feature is enabled. The default is `root` cost center value"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a cost center"
        name:
          type: "string"
          description: "Name of a cost center"
    ExtensionLanguageInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a language"
    ExtensionBulkUpdateRequest:
      required:
      - "records"
      description: "List of extensions to be updated"
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ExtensionBulkUpdateInfo"
    ExtensionBulkUpdateTaskResult:
      type: "object"
      description: "Result record on multiple extension update task"
      properties:
        affectedItems:
          type: "array"
          items:
            $ref: "#/components/schemas/ExtensionUpdateShortResult"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/ErrorEntity"
    ExtensionUpdateShortResult:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        status:
          type: "string"
          description: "Extension update status"
          enum:
          - "Fail"
          - "Success"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/ErrorEntity"
    UserTemplates:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to user templates resource"
        records:
          type: "array"
          description: "List of user templates"
          items:
            $ref: "#/components/schemas/TemplateInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    MessageStatusesResponse:
      type: "object"
      description: "The messages status object with details of each status"
      properties:
        queued:
          $ref: "#/components/schemas/MessageStatusCounts"
        delivered:
          $ref: "#/components/schemas/MessageStatusCounts"
        deliveryFailed:
          $ref: "#/components/schemas/MessageStatusCounts"
        sent:
          $ref: "#/components/schemas/MessageStatusCounts"
        sendingFailed:
          $ref: "#/components/schemas/MessageStatusCounts"
    ASGErrorResponse:
      type: "object"
      description: "Error response"
      required:
      - "errorCode"
      - "message"
      properties:
        errorCode:
          type: "string"
          description: "Error code"
          example: "CMN-101"
        message:
          type: "string"
          description: "Human-readable description of the error. Not suitable for end users."
          example: "AccountId 1234 is invalid"
    MessageStatusCounts:
      type: "object"
      description: "Message status parameters"
      properties:
        cost:
          type: "number"
          format: "float"
          description: "Total cost of all messages with this status code"
        count:
          type: "integer"
          description: "Count of messages with this status code"
          format: "int32"
          example: 7
        errorCodeCounts:
          type: "object"
          description: "Message sending/delivery errors. Returned in `deliveryFailed` and `sendingFailed` resources"
          additionalProperties:
            type: "integer"
            description: "Count of messages with this error code"
            format: "int32"
            example: 5
    SmsDirectionEnum:
      type: "string"
      description: "Direction of the SMS message"
      enum:
      - "Inbound"
      - "Outbound"
    MessageListResponse:
      type: "object"
      properties:
        records:
          type: "array"
          description: "An array containing individual messages"
          items:
            $ref: "#/components/schemas/MessageListMessageResponse"
        paging:
          $ref: "#/components/schemas/PagingResource"
      description: "List of messages retrieved for an account and other filter criteria such as `batchId` and `fromPhoneNumber` specified in the request"
    PagingResource:
      type: "object"
      description: "Pagination details"
      properties:
        pageToken:
          type: "string"
          description: "Page token of the current response list"
          example: "pgt1"
        perPage:
          type: "integer"
          format: "int32"
          description: "Number of records per page"
          example: 3
        firstPageToken:
          type: "string"
          description: "First page token of the current filter criteria"
          example: "fpgt1"
        previousPageToken:
          type: "string"
          description: "Previous page token of the current filter criteria"
          example: "lpgt1"
        nextPageToken:
          type: "string"
          description: "Next page token of the current filter criteria"
          example: "npgt1"
    MessageListMessageResponse:
      type: "object"
      description: "The short detail of the message in the get batch response"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "The Id of the message"
          example: 1234
        batchId:
          type: "string"
          description: "Internal identifier of a batch the message was submitted in"
          example: "12345"
        from:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format from which the message is sent"
          example: "+15551234567"
        to:
          type: "array"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format to which a message is sent"
          example:
          - "+15551234567"
          items:
            type: "string"
        creationTime:
          type: "string"
          format: "date-time"
          description: "The time at which the message was created"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "The time at which the messages was last updated"
        messageStatus:
          $ref: "#/components/schemas/SmsStatusEnum"
        segmentCount:
          type: "integer"
          description: "Number of segments of a message"
          format: "int32"
          example: 1
        text:
          type: "string"
          description: "Text of a message. Returned if the `view` parameter is set to 'Detailed'"
        cost:
          type: "number"
          description: "Cost of a message"
          format: "double"
          example: 0.007
        direction:
          $ref: "#/components/schemas/SmsDirectionEnum"
        errorCode:
          type: "string"
          description: "The RC error code of the message sending failure reason"
          example: "SMS-RC-503"
    SmsStatusEnum:
      type: "string"
      description: "Current status of a message"
      example: "Queued"
      enum:
      - "Queued"
      - "Delivered"
      - "Sent"
      - "SendingFailed"
      - "DeliveryFailed"
    MessageDetailsResponse:
      type: "object"
      description: "Complete details of the message"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a message"
          example: "1234"
        from:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format from which the message was sent"
          example: "+15551234567"
        to:
          type: "array"
          description: "List of phone numbers in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format to which the message was sent"
          example:
          - "+15551234567"
          items:
            type: "string"
        text:
          type: "string"
          description: "Text of a message, maximum number of characters is 1000"
          example: "Hello, World!"
        creationTime:
          type: "string"
          format: "date-time"
          description: "The time when this is message was created."
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "The time when this message was last updated."
        messageStatus:
          $ref: "#/components/schemas/SmsStatusEnum"
        segmentCount:
          type: "integer"
          description: "Number of segments of a message"
          format: "int32"
          example: 1
        cost:
          type: "number"
          description: "Cost of a message"
          format: "double"
          example: 0.007
        batchId:
          type: "string"
          description: "The batch in which the message was submitted"
          example: "batch12345"
        direction:
          $ref: "#/components/schemas/SmsDirectionEnum"
        errorCode:
          type: "string"
          description: "The RC error code of the message sending failure reason"
          example: "SMS-RC-503"
    OptOutListResponse:
      type: "object"
      description: "The list of opt outs"
      properties:
        records:
          type: "array"
          description: "List of individual opt-out number records"
          items:
            $ref: "#/components/schemas/OptOutResponse"
        paging:
          $ref: "#/components/schemas/PagingResource"
    OptOutResponse:
      type: "object"
      description: "Opt-out record"
      properties:
        from:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format from which the recipient has opted out"
          example: "+15551234567"
        to:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format which is opted out"
          example: "+15551234567"
        status:
          type: "string"
          description: "Status of a phone number"
          enum:
          - "OptIn"
          - "OptOut"
        source:
          type: "string"
          enum:
          - "Recipient"
          - "Account"
          - "Upstream"
          - "Carrier"
    OptOutBulkAssignResponse:
      type: "object"
      description: "The results of adding opt-outs and opt-ins"
      properties:
        optIns:
          type: "object"
          description: "Contains successful and failed opt-ins"
          properties:
            successful:
              type: "array"
              description: "Recipients' phone numbers which opt-ins were successfully added for."
              items:
                type: "string"
              example:
              - "+15551237799"
            failed:
              type: "array"
              description: "Recipients' phone numbers which opt-ins were failed to be added for. Plus, error messages"
              items:
                $ref: "#/components/schemas/OptOutBulkAssignFailedEntry"
              example:
              - to: "+15551237798"
                errorMessage: "Unexpected issue on removing an opt-out from bulk-assign request"
        optOuts:
          type: "object"
          description: "Contains successful and failed opt-outs"
          properties:
            successful:
              type: "array"
              description: "Recipients' phone numbers which opt-outs were successfully added for."
              items:
                type: "string"
              example:
              - "+15551237755"
            failed:
              type: "array"
              description: "Recipients' phone numbers which opt-outs were failed to be added for. Plus, error messages"
              items:
                $ref: "#/components/schemas/OptOutBulkAssignFailedEntry"
              example:
              - to: "+15551237756"
                errorMessage: "Unexpected issue on creating an opt-out from bulk-assign request"
    OptOutBulkAssignRequest:
      type: "object"
      description: "Consists of `from` field and `optOuts` and `optIns` lists. Both `optOuts` and `optIns` can be empty but not simultaneously - at least one of the lists must be entered.\""
      required:
      - "from"
      properties:
        from:
          type: "string"
          description: "The phone number of a sender which the recipients should be opted out from or opted in to"
          example: "+15551234455"
        optOuts:
          type: "array"
          description: "The list of phone numbers to be opted out"
          items:
            type: "string"
          example:
          - "+15551237755"
          - "+15551237756"
        optIns:
          type: "array"
          description: "The list of phone numbers to be opted in"
          items:
            type: "string"
          example:
          - "+15551237799"
          - "+15551237798"
    OptOutBulkAssignFailedEntry:
      type: "object"
      description: "Represents a failure of adding opt-out / opt-in. A pair of a recipient phone number and an error message"
      properties:
        to:
          type: "string"
          description: "A recipient phone number"
          example: "+15551237756"
        errorMessage:
          type: "string"
          description: "An error happened on adding opt-out / opt-in"
          example: "Unexpected issue on creating an opt-out from bulk-assign request"
    MessageBatchCreateRequest:
      required:
      - "from"
      - "messages"
      type: "object"
      description: |
        Batch of A2P SMS messages. This object provides specification to
        send message(s) to many recipients. It contains top-level attributes, such
        as `text` which apply to all `messages`. In addition to that, it is possible
        to override this attribute for each message. This way a single API call may
        be used to send individual messages to many recipients.
      properties:
        from:
          type: "string"
          description: "Sender's phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format."
          example: "+15551234567"
        text:
          type: "string"
          description: "Text to send to `messages.to` phone numbers. Can be overridden on a per-message basis"
          example: "Hello, World!"
        messages:
          type: "array"
          description: "Individual messages"
          items:
            $ref: "#/components/schemas/MessageCreateRequest"
    RejectedRecipientResponseResource:
      type: "object"
      description: "The rejected recipient details"
      properties:
        index:
          type: "integer"
          description: "The index of the messages list in the send batch request where the invalid recipient was found"
          format: "int64"
          example: 1
        to:
          type: "array"
          items:
            type: "string"
          description: "The invalid recipient number as found in the request"
          example:
          - "29395"
        errorCode:
          type: "string"
          description: "The error code"
          example: "CMN-100"
        description:
          type: "string"
          description: "The description of the error"
          example: "The recipient is invalid"
    MessageBatchResponse:
      type: "object"
      description: |
        Batch of A2P SMS messages. This object provides a specification
        to send message(s) to many recipients. It contains top-level attributes which apply to all messages. In addition
        to that, it is possible to override this attribute for each message. This
        way a single API call may be used to send individual messages to many recipients
      properties:
        id:
          type: "string"
          description: "Unique identifier of the message batch"
          readOnly: true
          example: "12345"
        from:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format from which the messages are going to be sent"
          example: "+15551234567"
        batchSize:
          type: "integer"
          description: "Total number of messages in the accepted batch"
          format: "int32"
          example: 5
        processedCount:
          type: "integer"
          format: "int32"
          description: "Total number of messages currently processed in the batch"
          example: 1
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: |
            The last time the batch was processed.
        status:
          type: "string"
          description: "Current status of a message batch"
          example: "Processing"
          enum:
          - "Processing"
          - "Completed"
        creationTime:
          type: "string"
          format: "date-time"
          description: |
            The time at which the batch was created
        rejected:
          type: "array"
          description: "The list of rejected/invalid recipients"
          items:
            $ref: "#/components/schemas/RejectedRecipientResponseResource"
        cost:
          type: "number"
          format: "double"
          description: |
            The estimated batch cost for completed batch. Calculated after batch processing is completed.
          example: 0.007
    MessageCreateRequest:
      type: "object"
      description: "Single individual SMS resource"
      required:
      - "to"
      properties:
        to:
          type: "array"
          items:
            type: "string"
          description: |
            List of phone numbers in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            format, recipients of this message. Currently only one number is supported
          example:
          - "15551234477"
        text:
          type: "string"
          description: "Text to send, maximum number of characters is 1000"
          example: "Hello, World!"
    BatchListResponse:
      type: "object"
      description: "The list of batches retrieved for an account and other filter criteria such as fromPhoneNumber, date specified in the request."
      properties:
        records:
          type: "array"
          description: "An array containing individual batches"
          items:
            $ref: "#/components/schemas/MessageBatchResponse"
        paging:
          $ref: "#/components/schemas/PagingResource"
    CompanyAnsweringRuleCallersInfoRequest:
      type: "object"
      properties:
        callerId:
          type: "string"
          description: "Phone number of a caller"
        name:
          type: "string"
          description: "Displayed name for a caller ID"
    CompanyAnsweringRuleCalledNumberInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an account phone number"
        phoneNumber:
          type: "string"
          description: "Phone number of a callee"
    CompanyAnsweringRuleList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an answering rule resource"
        records:
          type: "array"
          description: "List of company answering rules"
          items:
            $ref: "#/components/schemas/ListCompanyAnsweringRuleInfo"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    GreetingTypeEnum:
      type: "string"
      description: "Type of greeting, specifying the case when the greeting is played."
      enum:
      - "Introductory"
      - "Announcement"
      - "AutomaticRecording"
      - "BlockedCallersAll"
      - "BlockedCallersSpecific"
      - "BlockedNoCallerId"
      - "BlockedPayPhones"
      - "ConnectingMessage"
      - "ConnectingAudio"
      - "StartRecording"
      - "StopRecording"
      - "Voicemail"
      - "Unavailable"
      - "InterruptPrompt"
      - "HoldMusic"
      - "Company"
    RangesInfo:
      type: "object"
      properties:
        from:
          type: "string"
          format: "date-time"
          description: |
            Beginning timestamp of the range in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601),
            for example *2018-10-29T14:00:00*, *2018-10-29T14:00:00Z*, *2018-10-29T14:00:00+0100*
        to:
          type: "string"
          format: "date-time"
          description: |
            Ending timestamp of the range in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601),
            for example *2018-10-29T14:00:00*, *2018-10-29T14:00:00Z*, *2018-10-29T14:00:00+0100*
    CompanyAnsweringRuleExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
    ListCompanyAnsweringRuleInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an answering rule"
        enabled:
          type: "boolean"
          description: "Specifies if the rule is active or inactive. The default value is `true`"
          default: true
        type:
          type: "string"
          description: "Type of an answering rule, the default value is 'Custom' = ['BusinessHours', 'AfterHours', 'Custom']"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        name:
          type: "string"
          description: "Name of an answering rule specified by user. Max number of symbols is 30. The default value is 'My Rule N' where 'N' is the first free number"
        calledNumbers:
          type: "array"
          description: "Answering rules are applied when calling to selected number(s)"
          items:
            $ref: "#/components/schemas/CalledNumberInfo"
        extension:
          $ref: "#/components/schemas/CompanyAnsweringRuleExtensionInfo"
    CompanyAnsweringRuleExtensionInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
      description: "Extension to which the call is forwarded in 'Bypass' mode"
    CompanyAnsweringRuleWeeklyScheduleInfoRequest:
      type: "object"
      properties:
        monday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        tuesday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        wednesday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        thursday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        friday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        saturday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
        sunday:
          type: "array"
          description: "Time interval for a particular day"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleTimeIntervalRequest"
      description: "Weekly schedule. If specified, ranges cannot be specified"
    CompanyAnsweringRuleCalledNumberInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an account phone number"
        phoneNumber:
          type: "string"
          description: "Phone number of a callee"
    CompanyAnsweringRuleTimeIntervalRequest:
      type: "object"
      properties:
        from:
          type: "string"
          description: "Time in format hh:mm"
        to:
          type: "string"
          description: "Time in format hh:mm"
    CalledNumberInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Called phone number"
    CustomGreetingInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a custom user greeting"
    CompanyAnsweringRuleRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Name of an answering rule specified by user. Max number of symbols is 30. The default value is 'My Rule N' where 'N' is the first free number"
        enabled:
          type: "boolean"
          description: "Specifies if the rule is active or inactive. The default value is `true`"
          default: true
        type:
          type: "string"
          description: "Type of an answering rule, the default value is 'Custom' = ['BusinessHours', 'AfterHours', 'Custom']"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        callers:
          type: "array"
          description: "Answering rule will be applied when calls are received from the specified caller(s)"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCallersInfoRequest"
        calledNumbers:
          type: "array"
          description: "Answering rule will be applied when calling the specified number(s)"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCalledNumberInfo"
        schedule:
          $ref: "#/components/schemas/CompanyAnsweringRuleScheduleInfoRequest"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded. The default value is 'Operator' 'Operator' - play company greeting and forward to operator extension 'Disconnect' - play company greeting and disconnect 'Bypass' - bypass greeting to go to selected extension = ['Operator', 'Disconnect', 'Bypass']"
          enum:
          - "Operator"
          - "Disconnect"
          - "Bypass"
        extension:
          $ref: "#/components/schemas/CompanyAnsweringRuleExtensionInfoRequest"
        greetings:
          type: "array"
          description: "Greetings applied for an answering rule; only predefined greetings can be applied, see Dictionary Greeting List"
          items:
            $ref: "#/components/schemas/GreetingInfo"
    PresetInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a greeting resource"
        id:
          type: "string"
          description: "Internal identifier of a greeting"
        name:
          type: "string"
          description: "Name of a greeting"
    CompanyAnsweringRuleScheduleInfo:
      type: "object"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/CompanyAnsweringRuleWeeklyScheduleInfoRequest"
        ranges:
          type: "array"
          description: "Specific data ranges. If specified, weeklyRanges cannot be specified"
          items:
            $ref: "#/components/schemas/RangesInfo"
        ref:
          type: "string"
          description: "Reference to Business Hours or After Hours schedule = ['BusinessHours', 'AfterHours']"
          enum:
          - "BusinessHours"
          - "AfterHours"
      description: "Schedule when an answering rule should be applied"
    GreetingInfo:
      type: "object"
      properties:
        type:
          $ref: "#/components/schemas/GreetingTypeEnum"
        preset:
          $ref: "#/components/schemas/PresetInfo"
        custom:
          $ref: "#/components/schemas/CustomGreetingInfoRequest"
    CompanyAnsweringRuleScheduleInfoRequest:
      type: "object"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/CompanyAnsweringRuleWeeklyScheduleInfoRequest"
        ranges:
          type: "array"
          description: "Specific data ranges. If specified, weeklyRanges cannot be specified"
          items:
            $ref: "#/components/schemas/RangesInfo"
        ref:
          type: "string"
          description: "Reference to Business Hours or After Hours schedule"
          enum:
          - "BusinessHours"
          - "AfterHours"
      description: "Schedule when an answering rule should be applied"
    CompanyAnsweringRuleInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an answering rule"
        enabled:
          type: "boolean"
          description: "Specifies if the rule is active or inactive"
          default: true
        type:
          type: "string"
          description: "Type of an answering rule"
          default: "Custom"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        name:
          type: "string"
          description: "Name of an answering rule specified by user. Max number of symbols is 30. The default value is 'My Rule N' where 'N' is the first free number"
        callers:
          type: "array"
          description: "Answering rule will be applied when calls are received from the specified caller(s)"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCallersInfoRequest"
        calledNumbers:
          type: "array"
          description: "Answering rule will be applied when calling the specified number(s)"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCalledNumberInfoRequest"
        schedule:
          $ref: "#/components/schemas/CompanyAnsweringRuleScheduleInfo"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded. The default value is 'Operator' 'Operator' - play company greeting and forward to operator extension 'Disconnect' - play company greeting and disconnect 'Bypass' - bypass greeting to go to selected extension = ['Operator', 'Disconnect', 'Bypass']"
          enum:
          - "Operator"
          - "Disconnect"
          - "Bypass"
        extension:
          $ref: "#/components/schemas/CompanyAnsweringRuleExtensionInfoRequest"
        greetings:
          type: "array"
          description: "Greetings applied for an answering rule; only predefined greetings can be applied, see Dictionary Greeting List"
          items:
            $ref: "#/components/schemas/GreetingInfo"
    CompanyAnsweringRuleUpdate:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Specifies if a rule is active or inactive. The default value is `true`"
          default: true
        name:
          type: "string"
          description: |
            Name of an answering rule specified by user. Max number of
            symbols is 30. The default value is 'My Rule N' where 'N' is the first
            free number
        callers:
          type: "array"
          description: |
            Answering rule will be applied when calls are received from
            the specified caller(s)
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCallersInfoRequest"
        calledNumbers:
          type: "array"
          description: "Answering rule will be applied when calling the specified number(s)"
          items:
            $ref: "#/components/schemas/CompanyAnsweringRuleCalledNumberInfo"
        schedule:
          $ref: "#/components/schemas/CompanyAnsweringRuleScheduleInfoRequest"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded. The default value is 'Operator' 'Operator' - play company greeting and forward to operator extension 'Disconnect' - play company greeting and disconnect 'Bypass' - bypass greeting to go to selected extension = ['Operator', 'Disconnect','Bypass']"
          enum:
          - "Operator"
          - "Disconnect"
          - "Bypass"
        type:
          type: "string"
          description: "Type of an answering rule"
          default: "Custom"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        extension:
          $ref: "#/components/schemas/CompanyAnsweringRuleCallersInfoRequest"
        greetings:
          type: "array"
          description: |
            Greetings applied for an answering rule; only predefined greetings
            can be applied, see Dictionary Greeting List
          items:
            $ref: "#/components/schemas/GreetingInfo"
    PromptInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Internal identifier of a prompt"
        id:
          type: "string"
          description: "Link to a prompt metadata"
        contentType:
          type: "string"
          description: "Type of prompt media content"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to a prompt media content"
        filename:
          type: "string"
          description: "Name of a prompt"
    IvrPrompts:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to prompts library resource"
        records:
          type: "array"
          description: "List of Prompts"
          items:
            $ref: "#/components/schemas/PromptInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    UpdateIVRPromptRequest:
      type: "object"
      properties:
        filename:
          type: "string"
          description: "Name of a file to be uploaded as a prompt"
    AddressBookBulkUploadTaskResult:
      type: "object"
      properties:
        affectedItems:
          type: "array"
          items:
            $ref: "#/components/schemas/AddressBookBulkUploadResource"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/ErrorEntity"
    AddressBookBulkUploadResponse:
      description: |
        Information on a task for adding multiple contacts to multiple extensions
      required:
      - "id"
      - "uri"
      - "creationTime"
      - "lastModifiedTime"
      - "status"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a task"
        uri:
          type: "string"
          format: "uri"
          description: "Link for the task status retrieval"
        status:
          type: "string"
          description: "Task status"
          enum:
          - "Accepted"
          - "InProgress"
          - "Completed"
          - "Failed"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Date/time of a task creation"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Date/time of a task latest update"
        results:
          $ref: "#/components/schemas/AddressBookBulkUploadTaskResult"
    AddressBookBulkUploadResource:
      required:
      - "extensionId"
      - "contacts"
      type: "object"
      properties:
        extensionId:
          type: "string"
        contacts:
          type: "array"
          minItems: 1
          maxItems: 10000
          items:
            $ref: "#/components/schemas/AddressBookBulkContactResource"
    AddressBookBulkUploadRequest:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          minItems: 1
          maxItems: 500
          items:
            $ref: "#/components/schemas/AddressBookBulkUploadResource"
    AddressBookBulkContactResource:
      type: "object"
      properties:
        email:
          type: "string"
          format: "email"
          description: "Email of a contact"
          example: "charlie.williams@example.com"
        notes:
          type: "string"
          description: "Notes for a contact"
          example: "#1 Customer"
        company:
          type: "string"
          description: "Company name of a contact"
          example: "Example, Inc."
        firstName:
          type: "string"
          description: "First name of a contact"
          example: "Charlie"
        lastName:
          type: "string"
          description: "Last name of a contact"
          example: "Williams"
        jobTitle:
          type: "string"
          description: "Job title of a contact"
          example: "CEO"
        birthday:
          type: "string"
          description: "Date of birth of a contact"
          format: "date-time"
        webPage:
          type: "string"
          description: "Link to a contact home page"
          example: "http://www.example.com"
        middleName:
          type: "string"
          description: "Middle name of a contact"
          example: "J"
        nickName:
          type: "string"
          description: "Nick name of a contact"
          example: "The Boss"
        email2:
          type: "string"
          format: "email"
          description: "Second email of a contact"
          example: "charlie-example@gmail.com"
        email3:
          type: "string"
          format: "email"
          description: "Third email of the contact"
          example: "theboss-example@hotmail.com"
        homePhone:
          type: "string"
          description: "Home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        homePhone2:
          type: "string"
          description: "Second home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone:
          type: "string"
          description: "Business phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone2:
          type: "string"
          description: "Second business phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        mobilePhone:
          type: "string"
          description: "Mobile phone of the contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessFax:
          type: "string"
          description: "Business fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        companyPhone:
          type: "string"
          description: "Company number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        assistantPhone:
          type: "string"
          description: "Phone number of a contact assistant in e.164 (with \"+\") format"
          example: "+15551234567"
        carPhone:
          type: "string"
          description: "Car phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherPhone:
          type: "string"
          description: "Other phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherFax:
          type: "string"
          description: "Other fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        callbackPhone:
          type: "string"
          description: "Callback phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessAddress:
          $ref: "#/components/schemas/AddressBookBulkContactAddressInfo"
        homeAddress:
          $ref: "#/components/schemas/AddressBookBulkContactAddressInfo"
        otherAddress:
          $ref: "#/components/schemas/AddressBookBulkContactAddressInfo"
    AddressBookBulkContactAddressInfo:
      type: "object"
      properties:
        country:
          type: "string"
          description: |
            Country name of the extension user company. Not returned for Address
            Book
        state:
          type: "string"
          description: "State/province name of the extension user company"
        city:
          type: "string"
          description: "City name of the extension user company"
        street:
          type: "string"
          description: "Street address of the extension user company"
        zip:
          type: "string"
          description: "Zip code of the extension user company"
    CallQueueInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call queue"
        id:
          type: "string"
          description: "Internal identifier of a call queue"
        extensionNumber:
          type: "string"
          description: "Extension number of a call queue"
        name:
          type: "string"
          description: "Name of a call queue"
        status:
          type: "string"
          description: "Call queue status"
          enum:
          - "Enabled"
          - "Disabled"
          - "NotActivated"
        subType:
          type: "string"
          description: "Indicates whether it is an emergency call queue extension or not"
          enum:
          - "Emergency"
    CallQueues:
      required:
      - "navigation"
      - "paging"
      - "records"
      - "uri"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call queues resource"
        records:
          type: "array"
          description: "List of call queues"
          items:
            $ref: "#/components/schemas/CallQueueInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CallQueueServiceLevelSettings:
      type: "object"
      properties:
        slaGoal:
          type: "integer"
          format: "int32"
          description: |
            Target percentage of calls that must be answered by agents
            within the service level time threshold
        slaThresholdSeconds:
          type: "integer"
          format: "int32"
          description: |
            The period of time in seconds that is considered to be an acceptable
            service level
        includeAbandonedCalls:
          type: "boolean"
          description: |
            Includes abandoned calls (when callers hang up prior to being
            served by an agent) into service-level calculation
        abandonedThresholdSeconds:
          type: "integer"
          format: "int32"
          description: |
            Abandoned calls that are shorter than the defined period of
            time in seconds will not be included into the calculation of Service Level
      description: "Call queue service level settings"
    CallQueueDetails:
      allOf:
      - $ref: "#/components/schemas/CallQueueInfo"
      - type: "object"
        properties:
          serviceLevelSettings:
            $ref: "#/components/schemas/CallQueueServiceLevelSettings"
          editableMemberStatus:
            type: "boolean"
            description: "Allows members to change their queue status"
          alertTimer:
            type: "integer"
            format: "int32"
            description: |
              Alert timer or pickup setting. Delay time in seconds before call queue group members are notified when calls are queued
            enum:
            - 5
            - 10
            - 15
            - 20
            - 30
            - 45
            - 60
            - 120
            - 180
            - 240
            - 300
            - 360
            - 420
            - 480
            - 540
            - 600
    CallQueuePresenceEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter name"
        timestamp:
          type: "string"
          format: "date-time"
          description: "Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/CallQueuePresenceEventBody"
    SiteResource:
      type: "object"
      description: "Site extension information"
      properties:
        id:
          type: "string"
          description: "Site extension identifier"
        name:
          type: "string"
          description: "Site extension name"
    CallQueuePresenceEventBody:
      type: "object"
      description: "Notification payload body"
      properties:
        extensionId:
          type: "string"
          description: "Agent extension ID"
        callQueueId:
          type: "string"
          description: "Call queue extension ID"
        acceptCalls:
          type: "boolean"
          description: "Call queue agent availability for calls of this queue"
    CallQueueUpdateMemberPresence:
      type: "object"
      properties:
        member:
          $ref: "#/components/schemas/CallQueueMemberId"
        acceptCurrentQueueCalls:
          type: "boolean"
          description: "Call queue member availability for calls of this queue"
    CallQueueMember:
      type: "object"
      description: "Call queue member information"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        name:
          type: "string"
          description: "Extension full name"
        extensionNumber:
          type: "string"
          description: "Extension number"
        site:
          $ref: "#/components/schemas/SiteResource"
    CallQueueMemberId:
      type: "object"
      description: "Call queue member information"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension - queue member"
    CallQueuePresence:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CallQueueMemberPresence"
    CallQueueMemberPresence:
      type: "object"
      properties:
        member:
          $ref: "#/components/schemas/CallQueueMember"
        acceptQueueCalls:
          type: "boolean"
          description: "Private member telephony availability status applied to calls of all queues"
        acceptCurrentQueueCalls:
          type: "boolean"
          description: "Call queue member availability in this particular queue"
    CallQueueUpdatePresence:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CallQueueUpdateMemberPresence"
    CallQueueBulkAssignResource:
      type: "object"
      properties:
        addedExtensionIds:
          type: "array"
          items:
            type: "string"
        removedExtensionIds:
          type: "array"
          items:
            type: "string"
    CallQueueMemberInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call queue member"
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a call queue member"
        extensionNumber:
          type: "string"
          description: "Extension number of a call queue member"
    CallQueueMembers:
      required:
      - "navigation"
      - "paging"
      - "records"
      - "uri"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call queue members resource"
        records:
          type: "array"
          description: "List of call queue members"
          items:
            $ref: "#/components/schemas/CallQueueMemberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    EmergencyLocationRequestResource:
      allOf:
      - $ref: "#/components/schemas/EmergencyLocationInfoRequest"
      - type: "object"
        properties:
          trusted:
            type: "boolean"
            description: "If 'true' address validation for non-us addresses is skipped"
    EmergencyAddressStatus:
      type: "string"
      enum:
      - "Valid"
      - "Invalid"
      - "Provisioning"
    CommonEmergencyLocationAddressInfoFr:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Country name"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        countryName:
          type: "string"
          description: "Full name of a country"
        state:
          type: "string"
          description: |
            State/Province name. Mandatory for the USA, the UK and Canada
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        city:
          type: "string"
          description: "City name"
        street:
          type: "string"
          description: "The name of the street (The field is utilized as 'streetName' field for FR addresses)"
        companyName:
          type: "string"
          description: "Company name"
        buildingName:
          type: "string"
          description: "(Optional) Building name"
        buildingNumber:
          type: "string"
          description: "Building/street number"
        street2:
          type: "string"
          description: |
            Second line address (apartment, suite, unit, building, floor,
            etc.)
        zip:
          type: "string"
          description: "Postal (Zip) code"
        customerName:
          type: "string"
          description: "Customer name"
    EmergencyLocationsPaging:
      required:
      - "page"
      - "totalPages"
      - "perPage"
      - "totalElements"
      - "pageStart"
      - "pageEnd"
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
        totalPages:
          type: "integer"
          format: "int32"
        perPage:
          type: "integer"
          format: "int32"
        totalElements:
          type: "integer"
          format: "int32"
        pageStart:
          type: "integer"
          format: "int32"
        pageEnd:
          type: "integer"
          format: "int32"
    AddressStatus:
      type: "string"
      description: "Emergency address status"
      enum:
      - "Valid"
      - "Invalid"
      - "Provisioning"
    SyncStatus:
      type: "string"
      description: |
        Resulting status of emergency address synchronization. Returned
        if `syncEmergencyAddress` parameter is set to `true`
      enum:
      - "Verified"
      - "Updated"
      - "Deleted"
      - "ActivationProcess"
      - "NotRequired"
      - "Unsupported"
      - "Failed"
    EmergencyLocationsResource:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CommonEmergencyLocationResource"
        paging:
          $ref: "#/components/schemas/EmergencyLocationsPaging"
    CommonEmergencyLocationAddressInfoAu:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Country name"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        countryName:
          type: "string"
          description: "Full name of a country"
        state:
          type: "string"
          description: |
            State/Province name. Mandatory for the USA, the UK and Canada
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        city:
          type: "string"
          description: "City name"
        street:
          type: "string"
          description: "The name of the street (the field is utilized as 'streetName' field for AU addresses)"
        companyName:
          type: "string"
          description: "Company name"
        buildingName:
          type: "string"
          description: "(Optional) Building name"
        streetType:
          type: "string"
          description: "Street type"
        buildingNumber:
          type: "string"
          description: "Building/street number"
        street2:
          type: "string"
          description: |
            Second line address (apartment, suite, unit, building, floor, etc.)
        zip:
          type: "string"
          description: "Postal (Zip) code"
        customerName:
          type: "string"
          description: "Customer name"
    CommonEmergencyLocationAddressInfo:
      anyOf:
      - $ref: "#/components/schemas/CommonEmergencyLocationAddressInfoDefault"
      - $ref: "#/components/schemas/CommonEmergencyLocationAddressInfoAu"
      - $ref: "#/components/schemas/CommonEmergencyLocationAddressInfoFr"
    EmergencyAddressType:
      type: "string"
      enum:
      - "LocationWithElins"
      - "LocationWithEndpoint"
    EmergencyLocationInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of an emergency response location
        address:
          $ref: "#/components/schemas/CommonEmergencyLocationAddressInfo"
        name:
          type: "string"
          description: "Emergency response location name"
        site:
          $ref: "#/components/schemas/ShortSiteInfo"
        addressStatus:
          type: "string"
          description: "Emergency address status"
          enum:
          - "Valid"
          - "Invalid"
        usageStatus:
          type: "string"
          description: "Status of an emergency response location usage."
          enum:
          - "Active"
          - "Inactive"
        addressFormatId:
          type: "string"
          description: "Address format ID"
        visibility:
          type: "string"
          description: |
            Visibility of an emergency response location. If `Private`
            is set, then a location is visible only for restricted number of users,
            specified in `owners` array
          default: "Public"
          enum:
          - "Public"
    CommonEmergencyLocationResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of an emergency response location
        address:
          $ref: "#/components/schemas/CommonEmergencyLocationAddressInfo"
        name:
          type: "string"
          description: "Emergency response location name"
        site:
          $ref: "#/components/schemas/ShortSiteInfo"
        addressStatus:
          $ref: "#/components/schemas/AddressStatus"
        usageStatus:
          $ref: "#/components/schemas/UsageStatus"
        syncStatus:
          $ref: "#/components/schemas/SyncStatus"
        addressType:
          $ref: "#/components/schemas/EmergencyAddressType"
        visibility:
          $ref: "#/components/schemas/Visibility"
        owners:
          type: "array"
          description: "List of private location owners"
          items:
            $ref: "#/components/schemas/LocationOwnerInfo"
        addressFormatId:
          type: "string"
          description: "Address format ID"
      description: "Company emergency response location details"
    LocationOwnerInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user - private location owner"
        extensionNumber:
          type: "string"
          description: "Extension number of a location number"
        name:
          type: "string"
          description: "Name of a location owner"
    EmergencyLocationUsageStatus:
      type: "string"
      enum:
      - "Active"
      - "Inactive"
    UsageStatus:
      type: "string"
      description: "Status of emergency response location usage."
      enum:
      - "Active"
      - "Inactive"
    ShortSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site extension"
        name:
          type: "string"
          description: "Extension user first name"
    Visibility:
      type: "string"
      description: |
        Visibility of an emergency response location. If `Private`
        is set, then location is visible only for the restricted number of users,
        specified in `owners` array
      default: "Public"
      enum:
      - "Private"
      - "Public"
    EmergencyLocationResponseResource:
      allOf:
      - $ref: "#/components/schemas/CommonEmergencyLocationResource"
      - type: "object"
        properties:
          trusted:
            type: "boolean"
            description: "If 'true' address validation for non-us addresses is skipped"
    LocationDeletionInfo:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        deletion:
          type: "string"
          description: |
            Identifies the possibility and status of emergency location
            deletion
          enum:
          - "Failed"
          - "Completed"
          - "Forbidden"
          - "Restricted"
          - "Allowed"
        errors:
          $ref: "#/components/schemas/LocationDeletionErrorInfo"
    GetLocationDeletionMultiResponse:
      type: "object"
      properties:
        deletion:
          type: "string"
          enum:
          - "Forbidden"
          - "Restricted"
          - "Allowed"
        reassignment:
          type: "string"
          enum:
          - "Forbidden"
          - "Allowed"
        emergencyLocations:
          type: "array"
          items:
            $ref: "#/components/schemas/LocationDeletionInfo"
    LocationDeletionErrorInfo:
      type: "object"
      properties:
        errorCode:
          type: "string"
          description: "Error code"
        message:
          type: "string"
          description: "Error message"
        additionalInfo:
          type: "string"
          description: "Additional attribute for this error, for example `parameterName`"
    ScheduleMeetingResponse:
      type: "object"
      properties:
        startHostVideo:
          type: "boolean"
        startParticipantVideo:
          type: "boolean"
        audioOptions:
          type: "boolean"
        allowJoinBeforeHost:
          type: "boolean"
        requirePasswordForSchedulingNewMeetings:
          type: "boolean"
        requirePasswordForInstantMeetings:
          type: "boolean"
        requirePasswordForPmiMeetings:
          type: "boolean"
        enforceLogin:
          type: "boolean"
    AccountLockSettingRecordResponse:
      type: "object"
      properties:
        localRecording:
          type: "boolean"
        cloudRecording:
          type: "boolean"
        autoRecording:
          type: "boolean"
        cloudRecordingDownload:
          type: "boolean"
        hostDeleteCloudRecording:
          type: "boolean"
        accountUserAccessRecording:
          type: "boolean"
        autoDeleteCmr:
          type: "boolean"
    AccountLockedSettingResponse:
      type: "object"
      properties:
        scheduleMeeting:
          $ref: "#/components/schemas/ScheduleMeetingResponse"
        recording:
          $ref: "#/components/schemas/AccountLockSettingRecordResponse"
    WeekDay:
      type: "string"
      description: "This field is used only if you're scheduling a recurring meeting of type `3` to state a specific day in a week when the monthly meeting should recur; it works together with `MonthlyByWeek` field. The values are: 1 - Sunday; 2 - Monday; 3 - Tuesday; 4 - Wednesday; 5 - Thursday; 6 - Friday; 7- Saturday"
      enum:
      - "Sunday"
      - "Monday"
      - "Tuesday"
      - "Wednesday"
      - "Thursday"
      - "Friday"
      - "Saturday"
    MeetingLinks:
      type: "object"
      properties:
        startUri:
          type: "string"
          format: "uri"
        joinUri:
          type: "string"
          format: "uri"
      description: "Meeting links"
    MeetingsTimezoneResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        name:
          type: "string"
        description:
          type: "string"
    MeetingOccurrenceInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Identifier of a meeting occurrence"
        startTime:
          type: "string"
          format: "date-time"
          description: "Starting time of a meeting occurrence"
        durationInMinutes:
          type: "integer"
          format: "int64"
          description: "Duration of a meeting occurrence"
        status:
          type: "string"
          description: "Status of a meeting occurrence"
    RecurrenceInfo:
      type: "object"
      properties:
        frequency:
          $ref: "#/components/schemas/MeetingFrequency"
        interval:
          type: "integer"
          format: "int32"
          description: |
            Recurrence interval. The supported ranges are: 1-90 for `Daily`;
            1-12 for `Weekly`; 1-3 for `Monthly`
        weeklyByDays:
          type: "array"
          items:
            $ref: "#/components/schemas/WeekDay"
        monthlyByDay:
          type: "integer"
          format: "int32"
          description: "The supported range is 1-31"
        monthlyByWeek:
          $ref: "#/components/schemas/MonthlyWeek"
        monthlyByWeekDay:
          $ref: "#/components/schemas/WeekDay"
        count:
          type: "integer"
          format: "int32"
          description: "Number of meeting occurrences"
        until:
          type: "string"
          description: "Meeting expiration date-time"
    HostInfoRequest:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the meeting host resource"
        id:
          type: "string"
          description: "Internal identifier of an extension which is assigned to be a meeting host. The default value is currently logged-in extension identifier"
      description: "Meeting host information"
    MeetingScheduleResource:
      type: "object"
      properties:
        startTime:
          type: "string"
          format: "date-time"
        durationInMinutes:
          type: "integer"
          format: "int32"
        timeZone:
          $ref: "#/components/schemas/MeetingsTimezoneResource"
      description: "Timing of a meeting"
    MeetingResponseResource:
      type: "object"
      properties:
        uri:
          type: "string"
          description: "Link to a meeting resource"
          format: "uri"
        uuid:
          type: "string"
          description: "Universally unique identifier of a meeting\""
        id:
          type: "string"
          description: "Internal identifier of a meeting"
        topic:
          type: "string"
          description: "Custom topic of a meeting"
        meetingType:
          type: "string"
          enum:
          - "Instant"
          - "Scheduled"
          - "ScheduledRecurring"
          - "Recurring"
        password:
          type: "string"
          description: "Meeting password"
        h323Password:
          type: "string"
        status:
          type: "string"
          description: "Status of a meeting"
        links:
          $ref: "#/components/schemas/MeetingLinks"
        schedule:
          $ref: "#/components/schemas/MeetingScheduleResource"
        host:
          $ref: "#/components/schemas/HostInfoRequest"
        allowJoinBeforeHost:
          type: "boolean"
          description: "If true, then participants can join the meeting before host arrives"
          default: false
        startHostVideo:
          type: "boolean"
          description: "Starting meetings with host video on/off (true/false)"
          default: false
        startParticipantsVideo:
          type: "boolean"
          description: "Starting meetings with participant video on/off (true/false)"
          default: false
        audioOptions:
          type: "array"
          items:
            type: "string"
            enum:
            - "Phone"
            - "ComputerAudio"
        recurrence:
          $ref: "#/components/schemas/RecurrenceInfo"
        autoRecordType:
          type: "string"
          description: "Automatic record type"
          default: "none"
          enum:
          - "local"
          - "cloud"
          - "none"
        enforceLogin:
          type: "boolean"
          description: "If true, then only signed-in users can join this meeting"
        muteParticipantsOnEntry:
          type: "boolean"
          description: "If true, then participants are muted on entry"
        occurrences:
          type: "array"
          items:
            $ref: "#/components/schemas/MeetingOccurrenceInfo"
        enableWaitingRoom:
          type: "boolean"
          description: "If true, then the waiting room for participants is enabled"
        globalDialInCountries:
          type: "array"
          description: "List of global dial-in countries (eg. US, UK, AU, etc.)"
          items:
            type: "string"
        alternativeHosts:
          type: "string"
    MonthlyWeek:
      type: "string"
      description: "Supported together with `weeklyByDay`"
      enum:
      - "Last"
      - "First"
      - "Second"
      - "Third"
      - "Fourth"
    MeetingFrequency:
      type: "string"
      description: "Recurrence time frame"
      enum:
      - "Daily"
      - "Weekly"
      - "Monthly"
    DepartmentMemberList:
      type: "object"
      description: |
        Please note that legacy 'Department' extension type corresponds to
        'Call Queue' extensions in modern RingCentral product terminology
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URL of the resource"
        records:
          type: "array"
          description: "List of call queue member extensions"
          items:
            $ref: "#/components/schemas/ExtensionInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    ExtensionInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        name:
          type: "string"
          description: "Extension name"
        extensionNumber:
          type: "string"
          description: "Extension short number"
        partnerId:
          type: "string"
          description: |
            For partner applications. Internal identifier of an extension
            created by partner. The RingCentral supports the mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
      description: |
        Information on the extension, to which the phone number is assigned.
        Returned only for the request of Account phone number list
    BulkAssignItem:
      type: "object"
      properties:
        departmentId:
          type: "string"
        addedExtensionIds:
          type: "array"
          items:
            type: "string"
        removedExtensionIds:
          type: "array"
          items:
            type: "string"
    DepartmentBulkAssignResource:
      type: "object"
      description: |
        Please note that legacy 'Department' extension type corresponds to
        'Call Queue' extensions in modern RingCentral product terminology
      properties:
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/BulkAssignItem"
    PresenceNavigationInfoURI:
      type: "object"
      description: "Canonical URI for the corresponding page of the list"
      properties:
        uri:
          type: "string"
          format: "uri"
    ActiveCallInfo:
      type: "object"
      properties:
        id:
          type: "string"
        direction:
          type: "string"
          enum:
          - "Inbound"
          - "Outbound"
        queueCall:
          type: "boolean"
          description: "Identifies if a call belongs to the call queue"
        from:
          type: "string"
          description: "Phone number or extension number of a caller. For GCM transport type '_from' property should be used"
        fromName:
          type: "string"
          description: "Name of a caller"
        to:
          type: "string"
          description: "Phone number or extension number of a callee"
        toName:
          type: "string"
          description: "Name of a callee"
        startTime:
          type: "string"
          format: "date-time"
          description: "Time when the call is actually started"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status"
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        sipData:
          $ref: "#/components/schemas/DetailedCallInfo"
        sessionId:
          type: "string"
        telephonySessionId:
          type: "string"
          description: "Telephony identifier of a call session"
        onBehalfOf:
          type: "string"
          description: "Extension ID of the call owner on whose behalf a call is performed"
        partyId:
          type: "string"
          description: "Internal identifier of a call party"
        terminationType:
          type: "string"
        callInfo:
          $ref: "#/components/schemas/CallInfoCQ"
    PrimaryCQInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: "Call information to be displayed as 'Line 1' for a call queue call session"
          enum:
          - "PhoneNumberLabel"
          - "PhoneNumber"
          - "QueueExtension"
          - "QueueName"
          - "CallerIdName"
          - "CallerIdNumber"
          - "None"
        value:
          type: "string"
          description: "Call information value"
      description: "Primary call session information. Supported for Call Queues only"
    AdditionalCQInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: "Call information to be displayed as 'Line 2' for a call queue call session"
          enum:
          - "PhoneNumberLabel"
          - "PhoneNumber"
          - "QueueExtension"
          - "QueueName"
          - "CallerIdName"
          - "CallerIdNumber"
          - "None"
        value:
          type: "string"
          description: "Call information value"
      description: "Additional call session information. Supported for Call Queues only"
    AccountPresenceInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of account presence resource"
        records:
          type: "array"
          description: "List of Prompts"
          items:
            $ref: "#/components/schemas/GetPresenceInfo"
        navigation:
          $ref: "#/components/schemas/PresenceNavigationInfo"
        paging:
          $ref: "#/components/schemas/PresencePagingInfo"
    AccountPresenceEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter name"
        timestamp:
          type: "string"
          format: "date-time"
          description: "Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/AccountPresenceEventBody"
    PresencePagingInfo:
      type: "object"
      description: "Information on paging"
      properties:
        page:
          type: "integer"
          format: "int32"
          description: "The current page number. 1-indexed, so the first page is 1 by default. May be omitted if result is empty (because non-existent page was specified or perPage=0 was requested)"
        perPage:
          type: "integer"
          format: "int32"
          description: "Current page size, describes how many items are in each page. Default value is 100. Maximum value is 1000. If perPage value in the request is greater than 1000, the maximum value (1000) is applied"
        pageStart:
          type: "integer"
          format: "int32"
          description: "The zero-based number of the first element on the current page. Omitted if the page is omitted or result is empty"
        pageEnd:
          type: "integer"
          format: "int32"
          description: "The zero-based index of the last element on the current page. Omitted if the page is omitted or result is empty"
        totalPages:
          type: "integer"
          format: "int32"
          description: "The total number of pages in a dataset. May be omitted for some resources due to performance reasons"
        totalElements:
          type: "integer"
          format: "int32"
          description: "The total number of elements in a dataset. May be omitted for some resource due to performance reasons"
    DetailedCallInfo:
      type: "object"
      properties:
        callId:
          type: "string"
        toTag:
          type: "string"
        fromTag:
          type: "string"
        remoteUri:
          format: "uri"
          type: "string"
        localUri:
          format: "uri"
          type: "string"
        rcSessionId:
          type: "string"
    GetPresenceInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a presence info resource"
        allowSeeMyPresence:
          type: "boolean"
          description: "If set to `true` - enables other extensions to see the extension presence status"
        callerIdVisibility:
          type: "string"
          description: "Configures the user presence visibility. When the `allowSeeMyPresence` parameter is set to `true`, \nthe following visibility options are supported via this parameter - All, None, PermittedUsers\n"
          enum:
          - "All"
          - "None"
          - "PermittedUsers"
        dndStatus:
          type: "string"
          description: |
            Extended DnD (Do not Disturb) status. Cannot be set for Department/Announcement/Voicemail
            (Take Messages Only)/Fax User/Shared Lines Group/Paging Only Group/IVR
            Menu/Application Extension/Park Location extensions. The 'DoNotAcceptDepartmentCalls'
            and 'TakeDepartmentCallsOnly' values are applicable only for extensions
            - members of a Department; if these values are set for department outsiders,
            the 400 Bad Request error code is returned. The 'TakeDepartmentCallsOnly'
            status can be set through the old RingCentral user interface and is available
            for some migrated accounts only.
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
        extension:
          $ref: "#/components/schemas/GetPresenceExtensionInfo"
        message:
          type: "string"
          description: "Custom status message (as previously published by user)"
        pickUpCallsOnHold:
          type: "boolean"
          description: "If `true` enables the extension user to pick up a monitored line on hold"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        ringOnMonitoredCall:
          type: "boolean"
          description: "If `true` enables to ring extension phone, if any user monitored by this extension is ringing"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status"
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        userStatus:
          type: "string"
          description: "User-defined presence status (as previously published by the user)"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        meetingStatus:
          type: "string"
          description: "RingCentral Meetings presence"
          enum:
          - "Connected"
          - "Disconnected"
        activeCalls:
          type: "array"
          description: "Information on active calls"
          items:
            $ref: "#/components/schemas/ActiveCallInfo"
    CallInfoCQ:
      type: "object"
      description: "Primary/additional CQ information"
      properties:
        primary:
          $ref: "#/components/schemas/PrimaryCQInfo"
        additional:
          $ref: "#/components/schemas/AdditionalCQInfo"
    GetPresenceExtensionInfo:
      type: "object"
      description: "Information on extension, for which this presence data is returned"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Extension number (usually 3 or 4 digits)"
    AccountPresenceEventBody:
      type: "object"
      description: "Notification payload body"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension. Optional parameter"
          default: "~"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status. Returned if telephony status is changed."
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        sequence:
          type: "integer"
          format: "int32"
          description: "Order number of a notification to state the chronology"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        userStatus:
          type: "string"
          description: "User-defined presence status (as previously published by the user)"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        dndStatus:
          type: "string"
          description: "Extended DnD (Do not Disturb) status"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
        allowSeeMyPresence:
          type: "boolean"
          description: "If `true` enables other extensions to see the extension presence status"
        ringOnMonitoredCall:
          type: "boolean"
          description: "If `true` enables to ring extension phone, if any user monitored by this extension is ringing"
        pickUpCallsOnHold:
          type: "boolean"
          description: "If `true` enables the extension user to pick up a monitored line on hold"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    PresenceNavigationInfo:
      type: "object"
      description: "Information on navigation"
      properties:
        firstPage:
          $ref: "#/components/schemas/PresenceNavigationInfoURI"
        nextPage:
          $ref: "#/components/schemas/PresenceNavigationInfoURI"
        previousPage:
          $ref: "#/components/schemas/PresenceNavigationInfoURI"
        lastPage:
          $ref: "#/components/schemas/PresenceNavigationInfoURI"
    CallRecordingIds:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          description: "Call recordings ID(s) to delete"
          items:
            type: "string"
          minItems: 1
          maxItems: 100
    ExtensionWithRolesCollectionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ExtensionWithRolesResource"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    AssignedRoleResource:
      type: "object"
      properties:
        uri:
          type: "string"
          description: "Link to an assigned role resource"
          format: "uri"
          readOnly: true
        id:
          type: "string"
          description: "Internal identifier of a role"
        autoAssigned:
          type: "boolean"
          default: false
          description: "Specifies if a role can be auto assigned"
        displayName:
          type: "string"
          description: "Name of a default role"
        siteCompatible:
          type: "boolean"
          description: "Site compatibility flag"
        siteRestricted:
          type: "boolean"
          description: "Site restricted flag"
    ExtensionWithRolesResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        extensionId:
          type: "string"
        roles:
          type: "array"
          items:
            $ref: "#/components/schemas/AssignedRoleResource"
    MeetingRecordingInfo:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Unique identifier of a meeting instance"
        id:
          type: "string"
        contentDownloadUri:
          type: "string"
          format: "uri"
          description: "Link for downloading the recorded file (mp4, mp3 audio and text/plain chat file)"
        contentType:
          type: "string"
          enum:
          - "video/mp4"
          - "audio/m4a"
          - "text/vtt"
        size:
          type: "integer"
          format: "int32"
        startTime:
          type: "string"
          format: "date-time"
          description: "Starting time of a recording"
        endTime:
          type: "string"
          format: "date-time"
          description: "Ending time of a recording"
        status:
          type: "string"
          enum:
          - "Completed"
          - "Processing"
    MeetingRecordingsNavigationInfoUri:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
      description: "Canonical URI for the corresponding page of the list"
    MeetingInfo:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Unique identifier of a meeting instance"
        id:
          type: "string"
        topic:
          type: "string"
        startTime:
          type: "string"
          format: "date-time"
    ListMeetingRecordingsResponse:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/MeetingRecordings"
        paging:
          $ref: "#/components/schemas/MeetingRecordingsPagingInfo"
        navigation:
          $ref: "#/components/schemas/MeetingRecordingsNavigationInfo"
    MeetingRecordingsPagingInfo:
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
          description: "The current page number. 1-indexed, so the first page is 1 by default. May be omitted if result is empty (because non-existent page was specified or perPage=0 was requested)"
        perPage:
          type: "integer"
          format: "int32"
          description: "Current page size, describes how many items are in each page. Default value is 100. Maximum value is 1000. If perPage value in the request is greater than 1000, the maximum value (1000) is applied"
        pageStart:
          type: "integer"
          format: "int32"
          description: "The zero-based number of the first element on the current page. Omitted if the page is omitted or result is empty"
        pageEnd:
          type: "integer"
          format: "int32"
          description: "The zero-based index of the last element on the current page. Omitted if the page is omitted or result is empty"
        totalPages:
          type: "integer"
          format: "int32"
          description: "The total number of pages in a dataset. May be omitted for some resources due to performance reasons"
        totalElements:
          type: "integer"
          format: "int32"
          description: "The total number of elements in a dataset. May be omitted for some resource due to performance reasons"
    MeetingRecordings:
      type: "object"
      properties:
        meeting:
          $ref: "#/components/schemas/MeetingInfo"
        recordings:
          type: "array"
          items:
            $ref: "#/components/schemas/MeetingRecordingInfo"
    MeetingRecordingsNavigationInfo:
      type: "object"
      properties:
        firstPage:
          $ref: "#/components/schemas/MeetingRecordingsNavigationInfoUri"
        nextPage:
          $ref: "#/components/schemas/MeetingRecordingsNavigationInfoUri"
        previousPage:
          $ref: "#/components/schemas/MeetingRecordingsNavigationInfoUri"
        lastPage:
          $ref: "#/components/schemas/MeetingRecordingsNavigationInfoUri"
    ForwardAllCompanyCallsRequest:
      type: "object"
      required:
      - "enabled"
      properties:
        enabled:
          type: "boolean"
          description: "Indicates whether the *Forward All Company Calls* feature is enabled or disabled for an account"
    ForwardAllCallsReason:
      type: "object"
      properties:
        code:
          type: "string"
          enum:
          - "ExtensionLimitation"
          - "FeatureLimitation"
          description: |
            Specifies the type of limitation. `ExtensionLimitation` means that the feature is turned off for this particular extension.
            `FeatureLimitation` means that the user may enable this feature and setup the rule via the Service Web UI
        message:
          type: "string"
          description: "Error message depending on the type of limitation"
    ForwardAllCompanyCallsInfo:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Indicates whether the *Forward All Company Calls* feature is enabled or disabled for an account"
        ranges:
          type: "array"
          description: "Specific data ranges. If specified, weeklyRanges cannot be specified"
          items:
            $ref: "#/components/schemas/RangesInfo"
        callHandlingAction:
          $ref: "#/components/schemas/IvrCallHandlingActionEnum"
        extension:
          $ref: "#/components/schemas/ExtensionShortInfoResource"
        reason:
          $ref: "#/components/schemas/ForwardAllCallsReason"
    ExtensionShortInfoResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        name:
          type: "string"
          description: "Extension name"
        extensionNumber:
          type: "string"
          description: "Extension number"
    IvrCallHandlingActionEnum:
      type: "string"
      description: |
        Specifies how incoming calls are forwarded. The default value
        is 'Operator' 'Operator' - play company greeting and forward to operator
        extension 'Disconnect' - play company greeting and disconnect 'Bypass'
        - bypass greeting to go to selected extension = ['Operator', 'Disconnect',
        'Bypass']
      enum:
      - "Operator"
      - "Disconnect"
      - "Bypass"
    CallMonitoringGroups:
      required:
      - "navigation"
      - "paging"
      - "records"
      - "uri"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call monitoring groups resource"
        records:
          type: "array"
          description: "List of call monitoring group members"
          items:
            $ref: "#/components/schemas/CallMonitoringGroup"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CallMonitoringGroup:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call monitoring group resource"
        id:
          type: "string"
          description: "Internal identifier of a group"
        name:
          type: "string"
          description: "Name of a group"
    CreateCallMonitoringGroupRequest:
      required:
      - "name"
      type: "object"
      properties:
        name:
          type: "string"
          description: "Name of a group"
    CallMonitoringBulkAssign:
      type: "object"
      properties:
        addedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallMonitoringExtensionInfo"
        updatedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallMonitoringExtensionInfo"
        removedExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallMonitoringExtensionInfo"
    CallMonitoringExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of an extension. Only the following extension
            types are allowed: User, DigitalUser, VirtualUser, FaxUser, Limited
        permissions:
          type: "array"
          description: |
            Set of call monitoring group permissions granted to a specified
            extension. In order to remove a specified extension from a call monitoring
            group use an empty value
          items:
            type: "string"
            enum:
            - "Monitoring"
            - "Monitored"
    CallMonitoringGroupMemberInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call monitoring group member"
        id:
          type: "string"
          description: |
            Internal identifier of a call monitoring group member
        extensionNumber:
          type: "string"
          description: |
            Extension number of a call monitoring group member
        permissions:
          type: "array"
          items:
            type: "string"
            description: |
              Call monitoring permission; multiple values are allowed:
              - `Monitoring` - User can monitor a group;
              - `Monitored` - User can be monitored.
            enum:
            - "Monitoring"
            - "Monitored"
    CallMonitoringGroupMemberList:
      required:
      - "navigation"
      - "paging"
      - "records"
      - "uri"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a call monitoring group members resource"
        records:
          type: "array"
          description: "List of a call monitoring group members"
          items:
            $ref: "#/components/schemas/CallMonitoringGroupMemberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    ModifyAccountBusinessAddressRequest:
      type: "object"
      properties:
        company:
          type: "string"
          description: "Company business name"
        email:
          type: "string"
          format: "email"
          description: "Company business email address"
        businessAddress:
          $ref: "#/components/schemas/BusinessAddressInfo"
        mainSiteName:
          type: "string"
          description: "Custom site name"
    BusinessAddressInfo:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Name of a country"
        state:
          type: "string"
          description: "Name of a state/province"
        city:
          type: "string"
          description: "Name of a city"
        street:
          type: "string"
          description: "Street address"
        zip:
          type: "string"
          description: "Zip code"
      description: "Company business address"
    AccountBusinessAddressResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        company:
          type: "string"
          description: "Company business name"
        email:
          type: "string"
          format: "email"
          description: "Company business email address"
        mainSiteName:
          type: "string"
          description: "Custom site name"
    AccountHistoryRecordTarget:
      type: "object"
      description: "Action target object (company/extension)"
      properties:
        objectId:
          type: "string"
          description: "Extension identifier of the affected entity or \"0\" for Company level"
          example: "404611540004"
        objectType:
          type: "string"
          description: "Type of the entity."
          example: "Extension"
          enum:
          - "Extension"
          - "Account"
          - "Company"
          - "Template"
        name:
          type: "string"
          description: "Target extension name"
          example: "Charlie Williams"
        extensionNumber:
          type: "string"
          description: "Target extension (short) number  of the affected entity (if the objectType is EXTENSION)."
          example: "103"
        siteId:
          type: "string"
          description: "Target extension site identifier (if any)"
          example: "871836004"
    AccountHistoryRecordPublicDetails:
      type: "object"
      properties:
        parameters:
          type: "array"
          description: "Event details (additional parameters)"
          items:
            $ref: "#/components/schemas/AccountHistoryRecordDetailsParameters"
    AccountHistoryRecordDetailsParameters:
      required:
      - "key"
      - "value"
      type: "object"
      properties:
        key:
          type: "string"
          example: "settingName"
        value:
          type: "string"
          example: "Password"
    AccountHistoryPaging:
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: "The current page number. 1-indexed, so the first page is 1 by default. May be omitted if result is empty \n(because non-existent page was specified or perPage=0 was requested)\n"
        perPage:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: "Current page size, describes how many items are in each page. Matches \"perPage\" parameter from the request"
          example: 50
        total:
          type: "integer"
          format: "int32"
          minimum: 0
          description: "Total number of pages in a dataset. May be omitted for some resources due to performance reasons"
          example: 25
        totalFound:
          type: "integer"
          format: "int32"
          minimum: 0
          description: "Total number of elements in a dataset. May be omitted for some resources due to performance reasons"
          example: 25
    AccountHistorySearchPublicResponse:
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of records"
          items:
            $ref: "#/components/schemas/AccountHistoryPublicRecord"
        paging:
          $ref: "#/components/schemas/AccountHistoryPaging"
    AccountHistoryPublicRecord:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal record identifier"
          example: "9835bead-397b-4ba8-b457-73f07ab79997"
        eventTime:
          type: "string"
          description: "Timestamp of an event (provided by a client), RFC3339 date-time format, UTC time zone."
          format: "date-time"
        initiator:
          $ref: "#/components/schemas/AccountHistoryRecordPublicInitiator"
        actionId:
          type: "string"
          description: "Action type"
          example: "CHANGE_SECRET_INFO"
        eventType:
          type: "string"
          description: "Operation: \"CREATE\", \"UPDATE\", \"DELETE\" or custom"
          example: "UPDATE"
        accountId:
          type: "string"
          description: "Account identifier which is related with the particular record."
          example: "403858014008"
        accountName:
          type: "string"
          description: "Account (company) name"
          example: "Some Company"
        target:
          $ref: "#/components/schemas/AccountHistoryRecordTarget"
        clientIp:
          type: "string"
          description: "IP-address of a client."
          example: "192.168.42.6"
        comment:
          type: "string"
          description: "Custom top-level comment"
        details:
          $ref: "#/components/schemas/AccountHistoryRecordPublicDetails"
    AccountHistorySearchPublicRequest:
      type: "object"
      properties:
        eventTimeFrom:
          type: "string"
          format: "date-time"
          description: |
            The beginning of the time range to return records in ISO 8601 format in UTC timezone, default is "eventTimeFrom"-24 hours
        eventTimeTo:
          type: "string"
          format: "date-time"
          description: "The end of the time range to return records in ISO 8601 format in UTC timezone, default is the current time"
        initiatorIds:
          type: "array"
          description: "List of extension IDs of change initiators."
          items:
            type: "string"
        page:
          type: "integer"
          format: "int32"
          example: 1
          description: "Page number in the result set"
        perPage:
          type: "integer"
          format: "int32"
          example: 25
          description: "Number of records to be returned per page."
        targetIds:
          type: "array"
          example:
          - "404611540004"
          description: "List of extension (user) IDs affected by this action."
          items:
            type: "string"
        siteId:
          type: "string"
          example: "871836004"
          description: "Site ID to apply as a filter"
        actionIds:
          type: "array"
          example:
          - "CHANGE_SECRET_INFO"
          - "CHANGE_USER_INFO"
          description: "List of action IDs (exact keys) to search for (alternatively \"excludeActionIds\" option can be used)."
          items:
            type: "string"
            enum:
            - "CHANGE_SECRET_INFO"
            - "CHANGE_USER_INFO"
        searchString:
          type: "string"
          example: "542617"
          description: |-
            The (sub)string to search, applied to the following fields:

            - initiator.name
            - initiator.role
            - initiator.extensionNumber
            - target.name
            - target.extensionNumber
            - details.parameters.value
        excludeActionIds:
          type: "array"
          example:
          - "CHANGE_SECRET_INFO"
          - "CHANGE_USER_INFO"
          description: "List of action IDs (exact keys) to exclude from your search (alternatively \"actionIds\" option can be used)."
          items:
            type: "string"
            enum:
            - "CHANGE_SECRET_INFO"
            - "CHANGE_USER_INFO"
    AccountHistoryRecordPublicInitiator:
      type: "object"
      description: "Event initiator info"
      properties:
        extensionId:
          type: "string"
          description: "Current user extension identifier"
          example: "402539300008"
        extensionNumber:
          type: "string"
          description: "Current user extension (short) number"
          example: "101"
        name:
          type: "string"
          description: "Current user full name"
          example: "Alice Smith"
        role:
          type: "string"
          description: "Current user role"
          example: "Super Admin"
    IvrMenuPromptInfo:
      type: "object"
      properties:
        mode:
          type: "string"
          description: "Prompt mode: custom media or text"
          enum:
          - "Audio"
          - "TextToSpeech"
        audio:
          $ref: "#/components/schemas/AudioPromptInfo"
        text:
          type: "string"
          description: "For 'TextToSpeech' mode only. Prompt text"
        language:
          $ref: "#/components/schemas/PromptLanguageInfo"
      description: "Prompt metadata"
    IvrMenuSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site. If the value is not specified in request, then the `main-site` default value is used"
        name:
          type: "string"
          description: "Site name"
      description: "Site data"
    PromptLanguageInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a prompt language"
        id:
          type: "string"
          description: "Internal identifier of a language"
        name:
          type: "string"
          description: "Language name"
        localeCode:
          type: "string"
          description: "Language locale code"
      description: "For 'TextToSpeech' mode only. Prompt language metadata"
    IVRMenuExtensionInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an extension resource"
        id:
          type: "string"
          description: "Internal identifier of an extension"
        name:
          type: "string"
          description: "Name of an extension"
      description: "For 'Connect' or 'Voicemail' actions only. Extension reference"
    IVRMenuListInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an IVR Menu extension"
          example: "7258440006"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an IVR Menu extension resource"
          example: "https://api-example.rincentral.com/restapi/v1.0/account/5936989006/ivr-menus/7258440006"
        name:
          type: "string"
          description: "First name of an IVR Menu user"
          example: "IVR Menu 1001"
        extensionNumber:
          type: "string"
          description: "Number of an IVR Menu extension"
          example: "1001"
    IVRMenuInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an IVR Menu extension"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an IVR Menu extension resource"
        name:
          type: "string"
          description: "First name of an IVR Menu user"
        extensionNumber:
          type: "string"
          description: "Number of an IVR Menu extension"
        site:
          $ref: "#/components/schemas/IvrMenuSiteInfo"
        prompt:
          $ref: "#/components/schemas/IvrMenuPromptInfo"
        actions:
          type: "array"
          description: "Keys handling settings"
          items:
            $ref: "#/components/schemas/IVRMenuActionsInfo"
    AudioPromptInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a prompt audio file"
        id:
          type: "string"
          description: "Internal identifier of a prompt"
      description: "For 'Audio' mode only. Prompt media reference"
    IVRMenuActionsInfo:
      type: "object"
      properties:
        input:
          type: "string"
          description: "Key. The following values are supported: numeric: '1' to '9' Star Hash NoInput "
        action:
          type: "string"
          description: "Internal identifier of an answering rule"
          enum:
          - "Connect"
          - "Voicemail"
          - "DialByName"
          - "Transfer"
          - "Repeat"
          - "ReturnToRoot"
          - "ReturnToPrevious"
          - "Disconnect"
          - "ReturnToTopLevelMenu"
          - "DoNothing"
          - "ConnectToOperator"
        extension:
          $ref: "#/components/schemas/IVRMenuExtensionInfo"
        phoneNumber:
          type: "string"
          description: "For 'Transfer' action only. PSTN number in E.164 format"
    IVRMenuList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an IVR Menu list"
        records:
          type: "array"
          description: "List of ivr menus"
          items:
            $ref: "#/components/schemas/IVRMenuListInfo"
    CreateMessageStoreReportRequest:
      type: "object"
      properties:
        dateTo:
          type: "string"
          format: "date-time"
          description: |
            The end of the time range to collect message records in ISO 8601 format including timezone.
            Default is the current time
        dateFrom:
          type: "string"
          format: "date-time"
          description: |
            The beginning of the time range to collect call log records in ISO 8601 format including timezone.
            Default is the current time minus 24 hours
        messageTypes:
          type: "array"
          description: "Types of messages to be collected. If not specified, all messages without message type filtering will be returned. Multiple values are accepted"
          items:
            $ref: "#/components/schemas/PicMessageTypeEnum"
          example:
          - "Fax"
          - "VoiceMail"
    MessageStoreReport:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a message store report task"
          example: "400142200026-400142200026-bd162f24028442489385eb3f44c18354"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a task"
        status:
          type: "string"
          description: "Status of a message store report task"
          enum:
          - "Accepted"
          - "Pending"
          - "InProgress"
          - "AttemptFailed"
          - "Failed"
          - "Completed"
          - "Cancelled"
        accountId:
          type: "string"
          description: "Internal identifier of an account"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        dateTo:
          type: "string"
          format: "date-time"
          description: "The end of the time range to collect message records in ISO 8601 format including timezone"
        dateFrom:
          type: "string"
          format: "date-time"
          description: "The beginning of the time range to collect call log records in ISO 8601 format including timezone"
        startTime:
          type: "string"
          format: "date-time"
          description: "The time when this task was started"
        finishTime:
          type: "string"
          format: "date-time"
          description: "The time when this task was finished"
        messageTypes:
          type: "array"
          description: "Type of messages to be collected."
          items:
            $ref: "#/components/schemas/PicMessageTypeEnum"
          example:
          - "Fax"
          - "VoiceMail"
    PicMessageTypeEnum:
      type: "string"
      description: "Type of messages to be collected"
      enum:
      - "Fax"
      - "SMS"
      - "VoiceMail"
      - "Pager"
      example: "Fax"
    MessageStoreReportArchive:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ArchiveInfo"
    ArchiveInfo:
      type: "object"
      properties:
        size:
          type: "integer"
          format: "int64"
          description: "Archive size in bytes"
          example: 201412
        uri:
          type: "string"
          format: "uri"
          description: "Link for archive download"
    ADGError:
      type: "object"
      properties:
        errorCode:
          type: "string"
          description: "Code that characterizes this error. Code uniquely identifies the source of the error."
          readOnly: true
          enum:
          - "ErrorCode{code='ADG-000', httpStatus=503, description='Service temporary unavailable.'}"
          - "ErrorCode{code='ADG-010', httpStatus=503, description='Federation data temporary unavailable.'}"
          - "ErrorCode{code='ADG-001', httpStatus=500, description='Service internal error.'}"
          - "ErrorCode{code='ADG-100', httpStatus=403, description='Insufficient permissions.'}"
          - "ErrorCode{code='ADG-101', httpStatus=403, description='Unauthorized access.'}"
          - "ErrorCode{code='ADG-102', httpStatus=405, description='Method not allowed.'}"
          - "ErrorCode{code='ADG-111', httpStatus=400, description='Need Content-Type header.'}"
          - "ErrorCode{code='ADG-112', httpStatus=400, description='Request body is invalid.'}"
          - "ErrorCode{code='ADG-121', httpStatus=400, description='Parameter [${paramName}] is invalid. ${additionalInfo:-}'}"
          - "ErrorCode{code='ADG-115', httpStatus=415, description='Unsupported Media Type.'}"
          - "ErrorCode{code='ADG-105', httpStatus=404, description='Current account is not linked to any federation.'}"
          - "ErrorCode{code='ADG-107', httpStatus=404, description='Account not found.'}"
          - "ErrorCode{code='ADG-122', httpStatus=404, description='Contact not found.'}"
          - "ErrorCode{code='ADG-200', httpStatus=404, description='Invalid URI'}"
        message:
          type: "string"
          description: "Message that describes the error. This message can be used in UI."
          readOnly: true
      description: "Description of an error occurred during request processing. This data type can be used only in readonly mode, no writing is allowed"
    BusinessSiteResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "872781820006"
        name:
          type: "string"
          example: "Sales site"
        code:
          type: "string"
          example: "1007"
    GroupResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "63723034"
        name:
          type: "string"
          example: "Leaders"
    PhoneNumberResource:
      type: "object"
      properties:
        formattedPhoneNumber:
          type: "string"
          example: "+1 (205) 6812029"
        phoneNumber:
          type: "string"
          example: "+12056812029"
        type:
          type: "string"
          example: "VoiceFax"
        label:
          type: "string"
          description: "Custom user name of a phone number, if any"
          example: "Boss"
        usageType:
          type: "string"
          description: "Usage type of phone number"
          enum:
          - "MobileNumber"
          - "ContactNumber"
          - "DirectNumber"
          - "ForwardedNumber"
          example: "DirectNumber"
        hidden:
          type: "boolean"
          description: "Specifies if a phone number should be hidden or not"
        primary:
          type: "boolean"
          description: "Specifies if the number is primary, i.e. displayed as 'main number' and called by default"
    CallQueueResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "873014540006"
        name:
          type: "string"
          example: "Sales CQ"
    ContactSubTypeEnum:
      type: "string"
      description: "Extension subtype"
      example: "Unknown"
      enum:
      - "Unknown"
      - "VideoPro"
      - "VideoProPlus"
      - "DigitalSignage"
      - "Emergency"
    ExternalIntegrationResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "9813"
        typeId:
          type: "string"
          example: "1"
        type:
          type: "string"
          example: "External"
        displayName:
          type: "string"
          example: "Integration X"
        routingType:
          type: "string"
          example: "Account"
        outboundEdgeId:
          type: "string"
          example: "1726"
    ContactResource:
      required:
      - "id"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Contact extension identifier"
          example: "865706371004"
        type:
          type: "string"
          description: "Contact type"
          example: "User"
          enum:
          - "User"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "ParkLocation"
          - "IvrMenu"
          - "Limited"
          - "ApplicationExtension"
          - "Site"
          - "Bot"
          - "Room"
          - "ProxyAdmin"
          - "DelegatedLinesGroup"
          - "GroupCallPickup"
          - "External"
          - "RoomConnector"
          - "Unknown"
        status:
          type: "string"
          description: "Contact status"
          example: "Enabled"
          enum:
          - "Enabled"
          - "Disabled"
          - "Frozen"
          - "NotActivated"
          - "Unassigned"
          - "Unknown"
        account:
          $ref: "#/components/schemas/AccountResource"
        department:
          type: "string"
          example: "External"
        email:
          type: "string"
          format: "email"
          example: "john.doe@mycompany.com"
        extensionNumber:
          type: "string"
          example: "103"
        firstName:
          type: "string"
          description: "First name of a contact, for user extensions only"
          example: "John"
        lastName:
          type: "string"
          description: "Last name of a contact, for user extensions only"
          example: "Doe"
        name:
          type: "string"
          description: "Name of a contact, for non-user extensions"
          example: "Conference room ?5"
        jobTitle:
          type: "string"
          example: "Sales manager"
        phoneNumbers:
          type: "array"
          items:
            $ref: "#/components/schemas/PhoneNumberResource"
        profileImage:
          $ref: "#/components/schemas/AccountDirectoryProfileImageResource"
        site:
          $ref: "#/components/schemas/BusinessSiteResource"
        hidden:
          type: "boolean"
        role:
          $ref: "#/components/schemas/DirectoryRoleResource"
        callQueues:
          type: "array"
          items:
            $ref: "#/components/schemas/CallQueueResource"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldResource"
        groups:
          type: "array"
          items:
            $ref: "#/components/schemas/GroupResource"
        costCenter:
          $ref: "#/components/schemas/CostCenterResource"
        integration:
          $ref: "#/components/schemas/ExternalIntegrationResource"
        subType:
          $ref: "#/components/schemas/ContactSubTypeEnum"
    AccountResource:
      required:
      - "id"
      type: "object"
      properties:
        companyName:
          type: "string"
          example: "My lovely company"
        federatedName:
          type: "string"
          example: "Lovely Holding"
        id:
          type: "string"
          example: "400131426008"
        mainNumber:
          $ref: "#/components/schemas/PhoneNumberResource"
    DirectoryResource:
      required:
      - "records"
      - "paging"
      type: "object"
      properties:
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ContactResource"
    CustomFieldResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "1032854"
        name:
          type: "string"
          example: "Rank"
        value:
          type: "string"
          example: "5"
    DirectoryRoleResource:
      required:
      - "id"
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        domain:
          type: "string"
        displayName:
          type: "string"
    CostCenterResource:
      type: "object"
      properties:
        id:
          type: "string"
          example: "83266549237542"
        code:
          type: "string"
          example: "Main"
        name:
          type: "string"
          example: "Cost Center A"
    AccountDirectoryProfileImageResource:
      type: "object"
      properties:
        etag:
          type: "string"
          example: "tag"
        uri:
          type: "string"
          format: "uri"
    ADGErrorResponse:
      type: "object"
      properties:
        errors:
          type: "array"
          description: "Collection of all gathered errors"
          readOnly: true
          items:
            $ref: "#/components/schemas/ADGError"
      description: "Format of response in case that any error occurred during request processing"
    SearchDirectoryExtensionTypes:
      type: "array"
      description: "Types of extension to filter the contacts"
      items:
        $ref: "#/components/schemas/SearchDirectoryExtensionType"
    SearchDirectoryExtensionType:
      type: "string"
      description: "Type of extension to filter the contacts"
      enum:
      - "User"
      - "Department"
      - "Announcement"
      - "Voicemail"
      - "DigitalUser"
      - "VirtualUser"
      - "FaxUser"
      - "PagingOnly"
      - "SharedLinesGroup"
      - "IvrMenu"
      - "ApplicationExtension"
      - "ParkLocation"
      - "Limited"
      - "Bot"
      - "Site"
      - "Room"
      - "ProxyAdmin"
      - "DelegatedLinesGroup"
      - "FlexibleUser"
      - "GroupCallPickup"
      - "RoomConnector"
      example: "User"
    SearchDirectoryEntriesRequest:
      type: "object"
      properties:
        searchString:
          type: "string"
          description: |
            String value to filter the contacts. The value specified is
            searched through the following fields: `firstName`, `lastName`, `extensionNumber`, `phoneNumber`, `email`,
            `jobTitle`, `department`, `customFieldValue`
        searchFields:
          type: "array"
          description: "The list of field to be searched for"
          items:
            type: "string"
            enum:
            - "firstName"
            - "lastName"
            - "extensionNumber"
            - "phoneNumber"
            - "email"
            - "jobTitle"
            - "department"
            - "customFieldValue"
        showFederated:
          type: "boolean"
          description: "If `true` then contacts of all accounts in federation are returned, if it is in federation, account section will be returned. If `false` then only contacts of the current account are returned, and account section is eliminated in this case"
        showAdminOnlyContacts:
          type: "boolean"
          description: "Should show AdminOnly Contacts"
          default: false
        extensionType:
          $ref: "#/components/schemas/SearchDirectoryContactType"
        siteId:
          type: "string"
          description: "Internal identifier of the business site to which extensions belong"
          example: "872781797006"
        showExternalContacts:
          type: "boolean"
          default: false
          description: "Allows to control whether External (Hybrid) contacts should be returned in the response or not"
          example: true
        accountIds:
          type: "array"
          description: "The list of Internal identifiers of an accounts"
          items:
            type: "string"
          example:
          - "854874047006"
          - "422456828004"
          - "854874151006"
        department:
          type: "string"
          description: "Department"
        siteIds:
          type: "array"
          description: "The list of Internal identifiers of the business sites to which extensions belong"
          items:
            type: "string"
        extensionStatuses:
          type: "array"
          description: "Extension current state."
          items:
            type: "string"
            enum:
            - "Enabled"
            - "Disabled"
            - "NotActivated"
        extensionTypes:
          $ref: "#/components/schemas/SearchDirectoryExtensionTypes"
        orderBy:
          type: "array"
          description: "Sorting settings"
          items:
            $ref: "#/components/schemas/OrderBy"
        page:
          type: "integer"
          format: "int32"
        perPage:
          type: "integer"
          format: "int32"
      example:
        searchString: "John Doe"
        searchFields:
        - "lastName"
        - "email"
        showFederated: true
        siteIds:
        - "872781797006"
        - "872781820006"
        extensionStatuses:
        - "Enabled"
        department: "R&D department"
        page: 1
        perPage: 30
    SearchDirectoryContactType:
      type: "string"
      description: "Type of directory contact to filter"
      enum:
      - "User"
      - "Department"
      - "Announcement"
      - "Voicemail"
      - "SharedLinesGroup"
      - "PagingOnly"
      - "ParkLocation"
      - "IvrMenu"
      - "Limited"
      - "ApplicationExtension"
      - "Site"
      - "Bot"
      - "Room"
      - "DelegatedLinesGroup"
      - "GroupCallPickup"
      - "External"
      example: "User"
    OrderBy:
      type: "object"
      properties:
        index:
          type: "integer"
          format: "int32"
          default: 1
          description: "Sorting priority index, starting from '1'. Optional if only one element in `orderBy` array is specified"
          example: 1
        fieldName:
          type: "string"
          description: "Field name by which to sort the contacts"
          enum:
          - "firstName"
          - "lastName"
          - "extensionNumber"
          - "phoneNumber"
          - "email"
          - "jobTitle"
          - "department"
          example: "department"
        direction:
          type: "string"
          default: "Asc"
          description: "Sorting direction"
          enum:
          - "Asc"
          - "Desc"
          example: "Asc"
    FederationType:
      type: "string"
      description: "Federation type"
      enum:
      - "Regular"
      - "AdminOnly"
    FederationTypes:
      type: "string"
      description: "Federation types for search"
      enum:
      - "All"
      - "Regular"
      - "AdminOnly"
    FederationResource:
      type: "object"
      properties:
        accounts:
          type: "array"
          items:
            $ref: "#/components/schemas/FederatedAccountResource"
        creationTime:
          type: "string"
          format: "date-time"
        displayName:
          type: "string"
        id:
          type: "string"
        lastModifiedTime:
          type: "string"
          format: "date-time"
        type:
          $ref: "#/components/schemas/FederationType"
    FederatedAccountResource:
      type: "object"
      required:
      - "id"
      properties:
        companyName:
          type: "string"
        conflictCount:
          type: "integer"
          format: "int32"
        federatedName:
          type: "string"
        id:
          type: "string"
        linkCreationTime:
          type: "string"
          format: "date-time"
        mainNumber:
          $ref: "#/components/schemas/PhoneNumberResource"
    PagingGroupExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a paging group user extension"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a paging group user extension"
        extensionNumber:
          type: "string"
          description: "Extension number of a paging group user"
        name:
          type: "string"
          description: "Name of a paging group user"
    PagingOnlyGroupUsers:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: |
            Link to a list of users allowed to page the Paging Only group
        records:
          type: "array"
          description: "List of users allowed to page the Paging Only group"
          items:
            $ref: "#/components/schemas/PagingGroupExtensionInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    EditPagingGroupRequest:
      type: "object"
      properties:
        addedUserIds:
          type: "array"
          description: |
            List of users that will be allowed to page a group specified
          items:
            type: "string"
        removedUserIds:
          type: "array"
          description: |
            List of users that will be disallowed to page a group specified
          items:
            type: "string"
        addedDeviceIds:
          type: "array"
          description: |
            List of account devices that will be assigned to a paging group
            specified
          items:
            type: "string"
        removedDeviceIds:
          type: "array"
          description: |
            List of account devices that will be unassigned from a paging
            group specified
          items:
            type: "string"
    PagingOnlyGroupDevices:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a list of devices assigned to the paging only group"
        records:
          type: "array"
          description: "List of paging devices assigned to this group"
          items:
            $ref: "#/components/schemas/PagingDeviceInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    PagingDeviceInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a paging device"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a paging device resource"
        name:
          type: "string"
          description: "Name of a paging device"
    RegionalSettings:
      type: "object"
      properties:
        homeCountry:
          $ref: "#/components/schemas/CountryInfoShortModel"
        timezone:
          $ref: "#/components/schemas/TimezoneInfo"
        language:
          $ref: "#/components/schemas/RegionalLanguageInfo"
        greetingLanguage:
          $ref: "#/components/schemas/GreetingLanguageInfo"
        formattingLocale:
          $ref: "#/components/schemas/FormattingLocaleInfo"
        timeFormat:
          type: "string"
          description: "Time format setting. The default value is '12h' = ['12h', '24h']"
          enum:
          - "12h"
          - "24h"
      description: |
        Regional data (timezone, home country, language) of an extension/account.
        The default is Company (Auto-Receptionist) settings
    SiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site extension"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a site resource"
        name:
          type: "string"
          description: "Extension user first name"
        extensionNumber:
          type: "string"
          description: "Extension number"
        callerIdName:
          type: "string"
          description: |
            Custom name of a caller. Max number of characters is 15 (only
            alphabetical symbols, numbers and commas are supported)
        email:
          type: "string"
          format: "email"
          description: "Site extension contact email"
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        operator:
          $ref: "#/components/schemas/OperatorInfo"
        code:
          type: "string"
          description: |
            Site code value. Returned only if specified
    SitesList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a sites resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/SiteInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CreateSiteRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Extension user first name"
        extensionNumber:
          type: "string"
          description: "Extension number"
        callerIdName:
          type: "string"
          description: |
            Custom name of a caller. Max number of characters is 15 (only
            alphabetical symbols, numbers and commas are supported)
        email:
          type: "string"
          format: "email"
          description: "Extension user email"
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        operator:
          $ref: "#/components/schemas/SiteOperatorReference"
        code:
          type: "string"
          description: "Site code value"
    OperatorInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an operator"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an operator resource"
        extensionNumber:
          type: "string"
          description: "Extension number (pin)"
        name:
          type: "string"
          description: "Operator extension user full name"
      description: |
        Site Fax/SMS recipient (operator) reference. Multi-level IVR should
        be enabled
    SiteOperatorReference:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an operator extension"
      description: |
        Site Fax/SMS recipient (operator) reference. Multi-level IVR should
        be enabled
    SiteUpdateRequest:
      required:
      - "name"
      type: "object"
      properties:
        name:
          type: "string"
          description: "Extension user first name"
        extensionNumber:
          type: "string"
          description: "Extension number"
        callerIdName:
          type: "string"
          description: |
            Custom name of a caller. Max number of characters is 15 (only
            alphabetical symbols, numbers and commas are supported)
        email:
          type: "string"
          format: "email"
          description: "Site extension contact email"
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        operator:
          $ref: "#/components/schemas/OperatorInfo"
    SiteMembersBulkUpdate:
      type: "object"
      properties:
        removedExtensionIds:
          type: "array"
          description: "List of removed extensions"
          items:
            type: "string"
        addedExtensionIds:
          type: "array"
          description: "List of added extensions"
          items:
            type: "string"
    SiteMembersList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a site members list resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/SiteMemberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    SiteMemberInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
        extensionNumber:
          type: "string"
        type:
          type: "string"
        name:
          type: "string"
    SiteIVRActionsExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        name:
          type: "string"
          description: "Name of an extension user"
      description: "Extension information"
    SiteIvrActionsUpdate:
      type: "object"
      properties:
        input:
          type: "string"
          enum:
          - "Star"
          - "Hash"
          - "NoInput"
          - "0"
        action:
          type: "string"
          description: |
            Key handling action:
            - Repeat - repeat menu greeting, for Star and Hash only;
            - ReturnToRoot - return to root IVR menu, for Star and Hash only;
            - ReturnToPrevious - return to previous IVR menu, for Star and Hash only;
            - Connect - connect to specific extension, for NoInput and "0" (zero) only;
            - Disconnect - end call, for NoInput only.
          enum:
          - "Repeat"
          - "ReturnToRoot"
          - "ReturnToPrevious"
          - "ReturnToTopLevelMenu"
          - "Connect"
          - "ConnectToOperator"
          - "Disconnect"
          - "DoNothing"
        extension:
          $ref: "#/components/schemas/SiteIVRActionsExtensionInfoUpdate"
      description: "Keys handling settings"
    SiteIVRSettings:
      type: "object"
      properties:
        topMenu:
          $ref: "#/components/schemas/SiteIVRTopMenu"
        actions:
          type: "array"
          items:
            $ref: "#/components/schemas/SiteIvrActions"
    SiteIVRActionsExtensionInfoUpdate:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
      description: "Extension information"
    SiteIvrActions:
      type: "object"
      properties:
        input:
          type: "string"
          enum:
          - "Star"
          - "Hash"
          - "NoInput"
        action:
          type: "string"
          description: |
            Key handling action:
            - Repeat - repeat menu greeting, for Star and Hash only;
            - ReturnToRoot - return to root IVR menu, for Star and Hash only;
            - ReturnToPrevious - return to previous IVR menu, for Star and Hash only;
            - Connect - connect to specific extension, for NoInput only;
            - Disconnect - end call, for NoInput only.
          enum:
          - "Repeat"
          - "ReturnToRoot"
          - "ReturnToPrevious"
          - "ReturnToTopLevelMenu"
          - "Connect"
          - "Disconnect"
          - "DoNothing"
        extension:
          $ref: "#/components/schemas/SiteIVRActionsExtensionInfo"
      description: "Keys handling settings"
    SiteIVRTopMenuUpdate:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of an IVR menu extension
      description: "Top IVR Menu extension"
    SiteIVRTopMenu:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an IVR menu extension"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an IVR menu extension resource"
        name:
          type: "string"
          description: "Full name of an IVR menu extension user"
      description: |
        Top IVR Menu extension. Mandatory for MultiLevel mode
    SiteIVRSettingsUpdate:
      type: "object"
      properties:
        topMenu:
          $ref: "#/components/schemas/SiteIVRTopMenuUpdate"
        actions:
          type: "array"
          items:
            $ref: "#/components/schemas/SiteIvrActionsUpdate"
    GetCallRecordingResponse:
      type: "object"
      required:
      - "id"
      - "contentUri"
      - "contentType"
      - "duration"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call recording"
        contentUri:
          type: "string"
          format: "uri"
          description: |
            Link to a call recording binary content. Has to be retrieved with proper authorization
            (access token must be passed via `Authorization` header or query parameter)
        contentType:
          type: "string"
          description: "Call recording file MIME format. Supported format is `audio/wav` and `audio/mpeg`"
          example: "audio/wav"
        duration:
          type: "integer"
          format: "int32"
          description: "Recorded call duration"
    MessageStoreConfiguration:
      type: "object"
      properties:
        retentionPeriod:
          maximum: 90
          minimum: 7
          type: "integer"
          format: "int32"
          description: |
            Retention policy setting, specifying how long to keep messages;
            the supported value range is 7-90 days. Currently, the retention period is supported for `Fax` and `Voicemail` messages only.
            SMS messages are stored with no time limits
    AnsweringRuleQueryRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
    CustomCompanyGreetingLanguageInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a greeting language"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a greeting language"
        name:
          type: "string"
          description: "Name of a greeting language"
        localeCode:
          type: "string"
          description: "Locale code of a greeting language"
      description: "Information on a greeting language. Supported for types 'StopRecording', 'StartRecording', 'AutomaticRecording'"
    CustomCompanyGreetingInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an extension custom greeting"
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
        type:
          type: "string"
          description: "Type of company greeting"
          enum:
          - "Company"
          - "StartRecording"
          - "StopRecording"
          - "AutomaticRecording"
          - "TemplateGreeting"
        contentType:
          type: "string"
          description: "Content media type"
          enum:
          - "audio/mpeg"
          - "audio/wav"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to a greeting content (audio file)"
        answeringRule:
          $ref: "#/components/schemas/CustomGreetingAnsweringRuleInfo"
        language:
          $ref: "#/components/schemas/CustomCompanyGreetingLanguageInfo"
    CustomGreetingAnsweringRuleInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an answering rule"
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
      description: "Information on an answering rule that the greeting is applied to"
    RoleResource:
      type: "object"
      properties:
        uri:
          type: "string"
          description: "Link to a role resource"
          format: "uri"
          readOnly: true
        id:
          type: "string"
          description: "Internal identifier of a role"
        displayName:
          maxLength: 128
          minLength: 0
          pattern: "^((?!(<|>|\\/|\\\")).)*$"
          type: "string"
          example: "Super Admin"
          description: "Dispayed name of a role"
        description:
          maxLength: 2000
          minLength: 0
          pattern: "^((?!(<|>|\\/|\\\")).)*$"
          type: "string"
          description: "Role description"
          example: "Primary company administrator role"
        siteCompatible:
          type: "boolean"
          description: "Site compatibility of a user role"
        custom:
          type: "boolean"
          default: false
          description: "Specifies if a user role is custom"
        scope:
          type: "string"
          description: "Specifies resource for permission"
          enum:
          - "Account"
          - "AllExtensions"
          - "Federation"
          - "Group"
          - "NonUserExtensions"
          - "RoleBased"
          - "Self"
          - "UserExtensions"
        hidden:
          type: "boolean"
          default: false
        lastUpdated:
          type: "string"
          format: "date-time"
        permissions:
          type: "array"
          items:
            $ref: "#/components/schemas/PermissionIdResource"
    PermissionsCapabilities:
      type: "object"
      description: "Advanced permissions capabilities. Returned if `advancedPermissions` query parameter is set to `true`."
      properties:
        enabled:
          type: "boolean"
          description: "Specifies whether the user is enabled with the listed permission or not"
        manageEnabled:
          type: "boolean"
          description: "Specifies if the user can manage the listed permission and is allowed to enable it on other users"
        grantEnabled:
          type: "boolean"
          description: "Specifies if the users who were enabled with the listed permission can grant it further to other users"
    RolesCollectionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/RoleResource"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    PermissionIdResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        siteCompatible:
          type: "string"
          description: "Site compatibility flag set for permission"
          enum:
          - "Compatible"
          - "Incompatible"
          - "Independent"
        readOnly:
          type: "boolean"
          description: "Specifies if the permission is editable on UI (if set to `true`) or not (if set to `false`)"
        assignable:
          type: "boolean"
          description: "Specifies if the permission can be assigned by the account administrator"
        permissionsCapabilities:
          $ref: "#/components/schemas/PermissionsCapabilities"
    DefaultUserRole:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a default role resource"
        id:
          type: "string"
          description: "Internal identifier of a default role"
        displayName:
          maxLength: 128
          minLength: 0
          pattern: "^((?!(<|>|\\/|\\\")).)*$"
          type: "string"
          description: "Custom name of a default role"
          example: "My Custom User Role"
    DefaultUserRoleRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user role to be set as default"
    BulkRoleAssignResource:
      type: "object"
      properties:
        siteRestricted:
          type: "boolean"
          example: true
        siteCompatible:
          type: "boolean"
        uri:
          type: "string"
          format: "uri"
        addedExtensionIds:
          type: "array"
          items:
            type: "string"
        removedExtensionIds:
          type: "array"
          items:
            type: "string"
    PermissionInfoAdmin:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Specifies if a permission is enabled or not"
      description: "Admin permission"
    ProfileImageInfoURI:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
    ExtensionPermissions:
      type: "object"
      properties:
        admin:
          $ref: "#/components/schemas/PermissionInfoAdmin"
        internationalCalling:
          $ref: "#/components/schemas/PermissionInfoInt"
      description: |
        Extension permissions, corresponding to the Service Web permissions
        'Admin' and 'InternationalCalling'
    ContactInfoCreationRequest:
      type: "object"
      properties:
        firstName:
          type: "string"
          description: |
            For User extension type only. Extension user first name
        lastName:
          type: "string"
          description: |
            For User extension type only. Extension user last name
        company:
          type: "string"
          description: "Extension user company name"
        jobTitle:
          type: "string"
        email:
          type: "string"
          format: "email"
          description: "Email of extension user"
        businessPhone:
          type: "string"
          description: |
            Extension user contact phone number in
            [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            format
        mobilePhone:
          type: "string"
          description: |
            Extension user mobile (**non** Toll Free) phone number in
            [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        emailAsLoginName:
          type: "boolean"
          description: |
            If `true` then contact email is enabled as login name for
            this user. Please note that email should be unique in this case.
            The default value is `false`
        pronouncedName:
          $ref: "#/components/schemas/PronouncedNameInfo"
        department:
          type: "string"
          description: "Extension user department, if any"
      description: "Contact Information"
    CallQueueExtensionInfo:
      type: "object"
      properties:
        slaGoal:
          type: "integer"
          format: "int32"
          description: |
            Target percentage of calls that must be answered by agents
            within the service level time threshold
        slaThresholdSeconds:
          type: "integer"
          format: "int32"
          description: |
            Period of time in seconds that is considered to be an acceptable
            service level
        includeAbandonedCalls:
          type: "boolean"
          description: |
            If `true` abandoned calls (hanged up prior to being served)
            are included into service level calculation
        abandonedThresholdSeconds:
          type: "integer"
          format: "int32"
          description: |
            Period of time in seconds specifying abandoned calls duration
            - calls that are shorter will not be included into the calculation of
            service level.; zero value means that abandoned calls of any duration
            will be included into calculation
      description: |
        For Call Queue extension type only. Please note that legacy
        'Department' extension type corresponds to 'Call Queue' extensions
        in modern RingCentral product terminology
    ProfileImageInfo:
      required:
      - "uri"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: |
            Link to a profile image. If an image is not uploaded for an
            extension, only `uri` is returned
        etag:
          type: "string"
          description: "Identifier of an image"
        lastModified:
          type: "string"
          description: |
            Date/time when an image was last updated, in ISO 8601 format,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        contentType:
          type: "string"
          description: "The type of image"
        scales:
          type: "array"
          description: |
            List of URIs to profile images in different dimensions
          items:
            $ref: "#/components/schemas/ProfileImageInfoURI"
      description: "Information on profile image"
    PermissionInfoInt:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Specifies if a permission is enabled or not"
      description: "International Calling permission"
    ExtensionCreationResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of an extension"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        contact:
          $ref: "#/components/schemas/ContactInfo"
        costCenter:
          $ref: "#/components/schemas/CostCenterInfo"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldInfo"
        extensionNumber:
          type: "string"
          description: "Extension number"
        name:
          type: "string"
          description: |
            Extension name. For user extension types the value is a combination
            of the specified first name and last name
        partnerId:
          type: "string"
          description: |
            For Partner Applications Internal identifier of an extension
            created by partner. The RingCentral supports the mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
        permissions:
          $ref: "#/components/schemas/ExtensionPermissions"
        profileImage:
          $ref: "#/components/schemas/ProfileImageInfo"
        references:
          type: "array"
          description: |
            List of non-RC internal identifiers assigned to an extension
          items:
            $ref: "#/components/schemas/ReferenceInfo"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        serviceFeatures:
          type: "array"
          description: |
            Extension service features returned in response only when the
            logged-in user requests his/her own extension info, see also Extension
            Service Features
          items:
            $ref: "#/components/schemas/ExtensionServiceFeatureInfo"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateForUpdateEnum"
        site:
          $ref: "#/components/schemas/ProvisioningSiteInfo"
        status:
          type: "string"
          description: |
            Extension current state. If 'Unassigned' is specified, then
            extensions without `extensionNumber` are returned. If not specified, then
            all extensions are returned
          enum:
          - "Enabled"
          - "Disabled"
          - "Frozen"
          - "NotActivated"
          - "Unassigned"
        statusInfo:
          $ref: "#/components/schemas/ExtensionStatusInfo"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension type
            corresponds to 'Call Queue' extensions in modern RingCentral product terminology
          enum:
          - "User"
          - "VirtualUser"
          - "DigitalUser"
          - "FlexibleUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "ParkLocation"
          - "Limited"
        hidden:
          type: "boolean"
          description: |
            Hides an extension from showing in company directory. Supported
            for extensions of 'User' type only
        assignedCountry:
          $ref: "#/components/schemas/AssignedCountryInfo"
    ExtensionServiceFeatureInfo:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Feature status; shows feature availability for an extension"
        featureName:
          type: "string"
          description: "Feature name"
          enum:
          - "AccountFederation"
          - "Archiver"
          - "AutomaticCallRecordingMute"
          - "AutomaticInboundCallRecording"
          - "AutomaticOutboundCallRecording"
          - "BlockedMessageForwarding"
          - "Calendar"
          - "CallerIdControl"
          - "CallForwarding"
          - "CallPark"
          - "CallParkLocations"
          - "CallSupervision"
          - "CallSwitch"
          - "CallQualitySurvey"
          - "Conferencing"
          - "ConferencingNumber"
          - "ConfigureDelegates"
          - "DeveloperPortal"
          - "DND"
          - "DynamicConference"
          - "EmergencyAddressAutoUpdate"
          - "EmergencyCalling"
          - "EncryptionAtRest"
          - "ExternalDirectoryIntegration"
          - "Fax"
          - "FaxReceiving"
          - "FreeSoftPhoneLines"
          - "HDVoice"
          - "HipaaCompliance"
          - "Intercom"
          - "InternationalCalling"
          - "InternationalSMS"
          - "LinkedSoftphoneLines"
          - "MMS"
          - "MobileVoipEmergencyCalling"
          - "OnDemandCallRecording"
          - "Pager"
          - "PagerReceiving"
          - "Paging"
          - "PasswordAuth"
          - "PromoMessage"
          - "Reports"
          - "Presence"
          - "RCTeams"
          - "RingOut"
          - "SalesForce"
          - "SharedLines"
          - "SingleExtensionUI"
          - "SiteCodes"
          - "SMS"
          - "SMSReceiving"
          - "SoftPhoneUpdate"
          - "TelephonySessions"
          - "UserManagement"
          - "VideoConferencing"
          - "VoipCalling"
          - "VoipCallingOnMobile"
          - "Voicemail"
          - "VoicemailToText"
          - "WebPhone"
        reason:
          type: "string"
          description: |
            Reason for limitation of a particular service feature. Returned
            only if the enabled parameter value is `false`, see Service Feature
            Limitations and Reasons. When retrieving service features for an extension,
            the reasons for limitations, if any, are returned in response
    AssignedCountryInfo:
      type: "object"
      description: "Information on a country assigned to an extension user. Returned for the User extension type only"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an assigned country"
        uri:
          type: "string"
          description: "Canonical URI of an assigned country resource"
        isoCode:
          type: "string"
          description: "Country code according to the ISO standard, see [ISO 3166](https://www.iso.org/iso-3166-country-codes.html)"
        name:
          type: "string"
          description: "Official name of a country"
    ExtensionCreationRequest:
      type: "object"
      properties:
        contact:
          $ref: "#/components/schemas/ContactInfoCreationRequest"
        extensionNumber:
          type: "string"
          description: "Extension short number"
        costCenter:
          $ref: "#/components/schemas/CostCenterInfo"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldInfo"
        password:
          type: "string"
          description: "Password for extension. If not specified, the password is auto-generated"
        references:
          type: "array"
          description: "List of non-RC internal identifiers assigned to an extension"
          items:
            $ref: "#/components/schemas/ReferenceInfo"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        partnerId:
          type: "string"
          description: |
            Additional extension identifier, created by partner application
            and applied on client side
        ivrPin:
          type: "string"
          description: "IVR PIN"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateForUpdateEnum"
        site:
          $ref: "#/components/schemas/SiteInfo"
        status:
          type: "string"
          description: "Extension current state"
          enum:
          - "Enabled"
          - "Disabled"
          - "NotActivated"
          - "Unassigned"
          - "Frozen"
        statusInfo:
          $ref: "#/components/schemas/ExtensionStatusInfo"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension type
            corresponds to 'Call Queue' extensions in modern RingCentral product
            terminology
          enum:
          - "User"
          - "VirtualUser"
          - "DigitalUser"
          - "FlexibleUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "ParkLocation"
          - "Limited"
        hidden:
          type: "boolean"
          description: |
            Hides extension from showing in company directory. Supported
            for extensions of 'User' type only. For unassigned extensions the value
            is set to `true` by default. For assigned extensions the value is set
            to `false` by default
    GetExtensionListResponse:
      required:
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to an extension list resource"
        records:
          type: "array"
          description: "List of extensions with extension information"
          items:
            $ref: "#/components/schemas/GetExtensionListInfoResponse"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    ExtensionListEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        eventType:
          type: "string"
          description: "Type of extension info change"
          enum:
          - "Create"
          - "Update"
          - "Delete"
        ownerId:
          type: "string"
          description: |
            Internal identifier of a subscription owner extension
      description: "Notification payload body"
    ExtensionListEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: |
            Universally unique identifier of a notification
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/ExtensionListEventBody"
    ContactInfo:
      type: "object"
      properties:
        firstName:
          type: "string"
          description: |
            User's first name (for extensions of `User` type only)
        lastName:
          type: "string"
          description: |
            For User extension type only. User's last name (for extensions of `User` type only)
        name:
          type: "string"
          description: |
            Extension name (for extensions of `User` type - concatenation of first and last name)
        company:
          type: "string"
          description: "User's company name"
        jobTitle:
          type: "string"
          description: "User's job title"
        email:
          type: "string"
          format: "email"
          description: "User's contact email"
        businessPhone:
          type: "string"
          description: |
            User's contact phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
        mobilePhone:
          type: "string"
          description: |
            User's mobile (**non** Toll Free) phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
        businessAddress:
          $ref: "#/components/schemas/ContactBusinessAddressInfo"
        emailAsLoginName:
          type: "boolean"
          description: |
            Indicates that the contact email is enabled as a login name for this
            user. Please note that the email must be unique in this case.
          default: false
        pronouncedName:
          $ref: "#/components/schemas/PronouncedNameInfo"
        department:
          type: "string"
          description: |
            User's department name
      description: "Detailed contact information"
    GetExtensionListInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of an extension"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        contact:
          $ref: "#/components/schemas/ContactInfo"
        extensionNumber:
          type: "string"
          description: "Extension short number"
        name:
          type: "string"
          description: |
            Extension name. For user extension types the value is a combination
            of the specified first name and last name
        permissions:
          $ref: "#/components/schemas/ExtensionPermissions"
        profileImage:
          $ref: "#/components/schemas/ProfileImageInfo"
        status:
          type: "string"
          description: |
            Extension current state. If 'Unassigned' is specified, then
            extensions without `extensionNumber` are returned. If not specified,
            then all extensions are returned
          enum:
          - "Enabled"
          - "Disabled"
          - "Frozen"
          - "NotActivated"
          - "Unassigned"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension type
            corresponds to 'Call Queue' extensions in modern RingCentral product
            terminology
          enum:
          - "User"
          - "FaxUser"
          - "FlexibleUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "Bot"
          - "Room"
          - "Limited"
          - "Site"
          - "ProxyAdmin"
          - "DelegatedLinesGroup"
          - "GroupCallPickup"
        subType:
          type: "string"
          description: |
            Extension subtype, if applicable. For any unsupported subtypes the
            `Unknown` value will be returned
          enum:
          - "VideoPro"
          - "VideoProPlus"
          - "DigitalSignage"
          - "Unknown"
          - "Emergency"
        callQueueInfo:
          $ref: "#/components/schemas/CallQueueExtensionInfo"
        hidden:
          type: "boolean"
          description: |
            Hides extension from showing in company directory.
            Supported for extensions of User type only
        site:
          $ref: "#/components/schemas/ProvisioningSiteInfo"
        assignedCountry:
          $ref: "#/components/schemas/AssignedCountryInfo"
        costCenter:
          $ref: "#/components/schemas/CostCenterInfo"
    ExtensionInfoEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/ExtensionInfoEventBody"
    GetExtensionAccountInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an account"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an account resource"
      description: "Account information"
    DepartmentInfo:
      type: "object"
      description: |
        Please note that the `Department` extension type corresponds to
        'Call Queue' extensions in modern RingCentral product terminology
      properties:
        id:
          type: "string"
          format: "uri"
          description: "Internal identifier of a department extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension resource"
        extensionNumber:
          type: "string"
          description: "Short number of a department extension"
    ExtensionInfoEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        eventType:
          type: "string"
          description: "Type of extension info change"
          enum:
          - "Update"
          - "Delete"
        hints:
          type: "array"
          description: "Returned for 'Update' event type only"
          items:
            type: "string"
            enum:
            - "AccountSettings"
            - "AccountStatus"
            - "AnsweringRules"
            - "CompanyNumbers"
            - "DialingPlan"
            - "ExtensionInfo"
            - "Features"
            - "Limits"
            - "Permissions"
            - "ProfileImage"
            - "VideoConfiguration"
        ownerId:
          type: "string"
          description: |
            Internal identifier of a subscription owner extension
      description: "Notification payload body"
    SiteReference:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site"
    ExtensionUpdateRequest:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Disabled"
          - "Enabled"
          - "NotActivated"
          - "Frozen"
        statusInfo:
          $ref: "#/components/schemas/ExtensionStatusInfo"
        extensionNumber:
          type: "string"
          description: "Extension number available"
        contact:
          $ref: "#/components/schemas/ContactInfoUpdateRequest"
        regionalSettings:
          $ref: "#/components/schemas/ExtensionRegionalSettingRequest"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateForUpdateEnum"
        partnerId:
          type: "string"
          description: |
            Additional extension identifier, created by partner application
            and applied on client side
        ivrPin:
          type: "string"
          description: "IVR PIN"
        password:
          type: "string"
          description: "Password for extension"
        callQueueInfo:
          $ref: "#/components/schemas/CallQueueInfoRequest"
        transition:
          $ref: "#/components/schemas/UserTransitionInfo"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldInfo"
        site:
          $ref: "#/components/schemas/SiteReference"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension
            type corresponds to 'Call Queue' extensions in modern RingCentral
            product terminology
          enum:
          - "User"
          - "FaxUser"
          - "FlexibleUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "DelegatedLinesGroup"
          - "GroupCallPickup"
        subType:
          type: "string"
          description: |
            Extension subtype, if applicable. For any unsupported subtypes
            the 'Unknown' value will be returned
          enum:
          - "VideoPro"
          - "VideoProPlus"
          - "DigitalSignageOnlyRooms"
          - "Unknown"
          - "Emergency"
        references:
          type: "array"
          description: |
            List of non-RC internal identifiers assigned to an extension
          items:
            $ref: "#/components/schemas/ReferenceInfo"
    GetExtensionInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of an extension"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        account:
          $ref: "#/components/schemas/GetExtensionAccountInfo"
        contact:
          $ref: "#/components/schemas/ContactInfo"
        costCenter:
          $ref: "#/components/schemas/CostCenterInfo"
        customFields:
          type: "array"
          items:
            $ref: "#/components/schemas/CustomFieldInfo"
        departments:
          type: "array"
          description: |
            Information on department extension(s), to which the requested
            extension belongs. Returned only for user extensions, members of
            department, requested by single extensionId. Please note that
            legacy 'Department' extension type corresponds to 'Call Queue'
            extensions in modern RingCentral product terminology
          items:
            $ref: "#/components/schemas/DepartmentInfo"
        extensionNumber:
          type: "string"
          description: "Extension short number"
        extensionNumbers:
          type: "array"
          items:
            type: "string"
        name:
          type: "string"
          description: |
            Extension name. For user extension types the value is a combination
            of the specified first name and last name
        partnerId:
          type: "string"
          description: |
            For Partner Applications Internal identifier of an extension
            created by partner. The RingCentral supports mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
        permissions:
          $ref: "#/components/schemas/ExtensionPermissions"
        profileImage:
          $ref: "#/components/schemas/ProfileImageInfo"
        references:
          type: "array"
          description: |
            List of non-RC internal identifiers assigned to an extension
          items:
            $ref: "#/components/schemas/ReferenceInfo"
        roles:
          type: "array"
          items:
            $ref: "#/components/schemas/Roles"
        regionalSettings:
          $ref: "#/components/schemas/RegionalSettings"
        serviceFeatures:
          type: "array"
          description: |
            Extension service features is returned in response only when the
            logged-in user requests their own extension info, see also Extension
            Service Features
          items:
            $ref: "#/components/schemas/ExtensionServiceFeatureInfo"
        setupWizardState:
          $ref: "#/components/schemas/SetupWizardStateForUpdateEnum"
        status:
          type: "string"
          description: |
            Extension current state. If 'Unassigned' is specified, then
            extensions without `extensionNumber` are returned. If not specified,
            then all extensions are returned
          enum:
          - "Enabled"
          - "Disabled"
          - "Frozen"
          - "NotActivated"
          - "Unassigned"
        statusInfo:
          $ref: "#/components/schemas/ExtensionStatusInfo"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension type
            corresponds to 'Call Queue' extensions in modern RingCentral product
            terminology
          enum:
          - "User"
          - "FaxUser"
          - "FlexibleUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "Bot"
          - "Room"
          - "RoomConnector"
          - "Limited"
          - "Site"
          - "ProxyAdmin"
          - "DelegatedLinesGroup"
          - "GroupCallPickup"
        subType:
          type: "string"
          description: |
            Extension subtype, if applicable. For any unsupported subtypes the
            `Unknown` value will be returned
          enum:
          - "VideoPro"
          - "VideoProPlus"
          - "DigitalSignage"
          - "Unknown"
          - "Emergency"
        callQueueInfo:
          $ref: "#/components/schemas/CallQueueExtensionInfo"
        hidden:
          type: "boolean"
          description: |
            Hides extension from showing in company directory. Supported for
            extensions of User type only
        site:
          $ref: "#/components/schemas/ProvisioningSiteInfo"
        assignedCountry:
          $ref: "#/components/schemas/AssignedCountryInfo"
    Roles:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a role"
        id:
          type: "string"
          description: "Internal identifier of a role"
        autoAssigned:
          type: "boolean"
          default: false
        displayName:
          type: "string"
        siteCompatible:
          type: "boolean"
        siteRestricted:
          type: "boolean"
    GetUserBusinessHoursResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a business-hours resource"
        schedule:
          $ref: "#/components/schemas/ScheduleInfoUserBusinessHours"
      example:
        uri: "https://restapi/v1.0/account/401800045008/extension/401800045008/business-hours"
        schedule:
          weeklyRanges:
            wednesday:
            - from: "09:00"
              to: "18:00"
            friday:
            - from: "09:00"
              to: "18:00"
            tuesday:
            - from: "09:00"
              to: "18:00"
            monday:
            - from: "09:00"
              to: "18:00"
            thursday:
            - from: "09:00"
              to: "18:00"
    UserBusinessHoursScheduleInfo:
      type: "object"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/WeeklyScheduleInfo"
      description: "Schedule when an answering rule is applied"
    UserBusinessHoursUpdateRequest:
      required:
      - "schedule"
      type: "object"
      properties:
        schedule:
          $ref: "#/components/schemas/UserBusinessHoursScheduleInfo"
    ScheduleInfoUserBusinessHours:
      type: "object"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/WeeklyScheduleInfo"
      description: "Schedule when an answering rule is applied"
    UserBusinessHoursUpdateResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a business-hours resource"
        schedule:
          $ref: "#/components/schemas/UserBusinessHoursScheduleInfo"
    UserVideoConfiguration:
      type: "object"
      properties:
        provider:
          type: "string"
          description: "Video provider of the user"
          enum:
          - "RCMeetings"
          - "RCVideo"
          - "None"
        userLicenseType:
          type: "string"
          description: |
            Specifies if the user is 'paid' (has meeting license) or 'free' (w/o meeting license)
          enum:
          - "Paid"
          - "Free"
    FavoriteCollection:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/FavoriteContactResource"
    ExtensionFavoritesEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          format: "date-time"
          type: "string"
          description: |
            Date/time of sending a notification in
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/ExtensionFavoritesEventBody"
    ExtensionFavoritesEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
      description: "Notification payload body"
    FavoriteContactList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/FavoriteContactResource"
    FavoriteContactResource:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
        extensionId:
          type: "string"
        accountId:
          type: "string"
        contactId:
          type: "string"
    GetExtensionDevicesResponse:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a list of extension devices"
        records:
          type: "array"
          description: "List of extension devices"
          items:
            $ref: "#/components/schemas/DeviceResource"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    ExtensionGrantListEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
      description: "Notification payload body"
    ExtensionInfoGrants:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Extension short number (usually 3 or 4 digits)"
        name:
          type: "string"
          description: "Name of extension"
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department'
            extension type corresponds to 'Call Queue' extensions in modern RingCentral
            product terminology
          enum:
          - "User"
          - "Fax User"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "DelegatedLinesGroup"
      description: "Extension information"
    ExtensionGrantListEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/ExtensionGrantListEventBody"
    GrantInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a grant"
        extension:
          $ref: "#/components/schemas/ExtensionInfoGrants"
        callPickup:
          type: "boolean"
          description: |
            Specifies if picking up of other extensions' calls is allowed
            for the extension. If 'Presence' feature is disabled for the given extension,
            the flag is not returned
        callMonitoring:
          type: "boolean"
          description: |
            Specifies if monitoring of other extensions' calls is allowed
            for the extension. If 'CallMonitoring' feature is disabled for the given
            extension, the flag is not returned
        callOnBehalfOf:
          type: "boolean"
          description: |
            Specifies whether the current extension is able to make or
            receive calls on behalf of the user referenced in extension object
        callDelegation:
          type: "boolean"
          description: |
            Specifies whether the current extension can delegate a call
            to the user referenced in extension object
        groupPaging:
          type: "boolean"
          description: |
            Specifies whether the current extension is allowed to call
            Paging Only group referenced to in extension object
        callQueueSetup:
          type: "boolean"
          description: |
            Specifies whether the current extension is assigned as a Full-Access
            manager in the call queue referenced in extension object
        callQueueMembersSetup:
          type: "boolean"
          description: |
            Specifies whether the current extension is assigned as a Members-Only
            manager in the call queue referenced in extension object
        callQueueMessages:
          type: "boolean"
          description: |
            Specifies whether the current extension is assigned as a Messages Manager
            in the queue referenced in extension object
        callQueueFacSetup:
          type: "boolean"
          description: |
            Specifies whether the current extension is granted *Forward All Calls (FAC)* permission
        sharedVoicemails:
          type: "boolean"
          description: |
            Specifies whether the user referenced in extension object is sharing voicemails
            with the current extension
    GetExtensionGrantListResponse:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of extension grants"
        records:
          type: "array"
          description: "List of extension grants with details"
          items:
            $ref: "#/components/schemas/GrantInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    ConferencePhoneNumberInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Dial-in phone number to connect to a conference"
        default:
          type: "boolean"
          description: |
            The value should be `true` if the number is default for the conference. Default
            conference number is a domestic number that can be set by user (otherwise
            it is set by the system). Only one default number per country is allowed
    PhoneNumberInfoConferencing:
      type: "object"
      properties:
        country:
          $ref: "#/components/schemas/CountryInfoShortModel"
        default:
          type: "boolean"
          description: |
            The value should be `true` if the number is default for the conference. Default
            conference number is a domestic number that can be set by user (otherwise
            it is set by the system). Only one default number per country is allowed
        hasGreeting:
          type: "boolean"
          description: |
            The value should be `true` if any greeting message is played on this number
        location:
          type: "string"
          description: |
            Location (city, region, state) of a conference phone number
        phoneNumber:
          type: "string"
          description: "Dial-in phone number to connect to a conference"
        premium:
          type: "boolean"
          description: |
            Indicates if the number is 'premium' (account phone number
            with the `ConferencingNumber` usageType)
    GetConferencingInfoResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a conferencing"
        allowJoinBeforeHost:
          type: "boolean"
          description: |
            Determines if host user allows conference participants to join
            before the host
        hostCode:
          type: "string"
          description: "Access code for a host user"
        mode:
          type: "string"
          description: |
            Internal parameter specifying a conferencing engine
        participantCode:
          type: "string"
          description: "Access code for any participant"
        phoneNumber:
          type: "string"
          description: |
            Primary conference phone number for user's home country returned
            in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format
        supportUri:
          description: "Link to a branded support page"
          type: "string"
          example: "http://success.ringcentral.com"
        tapToJoinUri:
          type: "string"
          format: "uri"
          description: |
            Short URL leading to the service web page Tap to Join for audio
            conference bridge
        phoneNumbers:
          type: "array"
          description: |
            List of multiple dial-in phone numbers to connect to audio
            conference service, relevant for the user's brand. Each number is given with
            the country and location information, in order to let the user choose
            less expensive way to connect to a conference. The first number in
            the list is a primary conference number, that is default and domestic
          items:
            $ref: "#/components/schemas/PhoneNumberInfoConferencing"
    UpdateConferencingInfoRequest:
      type: "object"
      properties:
        phoneNumbers:
          type: "array"
          description: |
            Multiple dial-in phone numbers to connect to audio conference
            service, relevant for user's brand. Each number is given with the country
            and location information, in order to let the user choose the less expensive
            way to connect to a conference. The first number in the list is the primary
            conference number, that is default and domestic
          items:
            $ref: "#/components/schemas/ConferencePhoneNumberInfo"
        allowJoinBeforeHost:
          type: "boolean"
          description: "Determines if host user allows conference participants to join before the host"
    ExtensionCallQueuePresenceList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ExtensionCallQueuePresence"
    CallQueueId:
      type: "object"
      description: "Call queue information"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call queue"
    PresenceCallQueueInfo:
      type: "object"
      description: "Call queue information"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call queue"
        name:
          type: "string"
          description: "Name of a call queue"
        extensionNumber:
          type: "string"
          description: "Extension number of a call queue"
        editableMemberStatus:
          type: "boolean"
          description: "Flag allow members to change their queue status"
    ExtensionCallQueueUpdatePresenceList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/ExtensionCallQueueUpdatePresence"
    ExtensionCallQueuePresence:
      type: "object"
      properties:
        callQueue:
          $ref: "#/components/schemas/PresenceCallQueueInfo"
        acceptCalls:
          type: "boolean"
          description: "Call queue agent availability for calls of this queue"
    ExtensionCallQueueUpdatePresence:
      type: "object"
      properties:
        callQueue:
          $ref: "#/components/schemas/CallQueueId"
        acceptCalls:
          type: "boolean"
          description: "Call queue agent availability for calls of this queue"
    MessageTypeEnum:
      type: "string"
      enum:
      - "Fax"
      - "SMS"
      - "VoiceMail"
      - "Pager"
      description: "Type of the message"
    MessageStatusEnum:
      type: "string"
      description: |
        Message status. Different message types may have different
        allowed status values. For outbound faxes the aggregated message status
        is returned. If, for outbound message, a status for at least one recipient is 'Queued', then
        the 'Queued' value is returned. If a status for at least one recipient is
        'SendingFailed', then the 'SendingFailed' value is returned. In other cases
        the 'Sent' status is returned
      enum:
      - "Queued"
      - "Sent"
      - "Delivered"
      - "DeliveryFailed"
      - "SendingFailed"
      - "Received"
    ConversationInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a conversation"
        uri:
          type: "string"
          format: "uri"
          description: "Deprecated. Link to a conversation resource"
      description: "SMS and Pager only. Information about a conversation the message belongs to"
    MessageStoreCallerInfoResponseFrom:
      type: "object"
      properties:
        extensionNumber:
          type: "string"
          description: |
            Extension short number (usually 3 or 4 digits). This property
            is filled when parties communicate by means of short internal numbers,
            for example when calling to other extension or sending/receiving Company
            Pager message
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        location:
          type: "string"
          description: |
            Contains party location (city, state) if one can be determined
            from phoneNumber. This property is filled only when phoneNumber is not
            empty and server can calculate location information from it (for example,
            this information is unavailable for US toll-free numbers)
        name:
          type: "string"
          description: |
            Symbolic name associated with a party. If the phone does not
            belong to the known extension, only the location is returned, the name
            is not determined then
        phoneNumber:
          type: "string"
          description: |
            Phone number of a party. Usually it is a plain number including
            country and area code like 18661234567. But sometimes it could be returned
            from database with some formatting applied, for example (866)123-4567.
            This property is filled in all cases where parties communicate by means
            of global phone numbers, for example when calling to direct numbers or
            sending/receiving SMS
      description: "Sender information"
    GetMessageSyncResponse:
      required:
      - "records"
      - "syncInfo"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the message sync resource"
        records:
          type: "array"
          description: "List of message records with synchronization information"
          items:
            $ref: "#/components/schemas/GetMessageInfoResponse"
        syncInfo:
          $ref: "#/components/schemas/SyncInfoMessages"
    MessageAttachmentTypeEnum:
      type: "string"
      description: "Type of message attachment"
      enum:
      - "AudioRecording"
      - "AudioTranscription"
      - "Text"
      - "SourceDocument"
      - "RenderedDocument"
      - "MmsAttachment"
    FaxErrorCodeEnum:
      type: "string"
      enum:
      - "AllLinesInUse"
      - "Undefined"
      - "NoFaxSendPermission"
      - "NoInternationalPermission"
      - "NoFaxMachine"
      - "NoAnswer"
      - "LineBusy"
      - "CallerHungUp"
      - "NotEnoughCredits"
      - "SentPartially"
      - "InternationalCallingDisabled"
      - "DestinationCountryDisabled"
      - "UnknownCountryCode"
      - "NotAccepted"
      - "InvalidNumber"
      - "CallDeclined"
      - "TooManyCallsPerLine"
      - "CallFailed"
      - "RenderingFailed"
      - "TooManyPages"
      - "ReturnToDBQueue"
      - "NoCallTime"
      - "WrongNumber"
      - "ProhibitedNumber"
      - "InternalError"
      - "FaxSendingProhibited"
      - "ThePhoneIsBlacklisted"
      - "UserNotFound"
      - "ConvertError"
      - "DBGeneralError"
      - "SkypeBillingFailed"
      - "AccountSuspended"
      - "ProhibitedDestination"
      - "InternationalDisabled"
    MessageAttachmentInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a message attachment"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message attachment"
        type:
          $ref: "#/components/schemas/MessageAttachmentTypeEnum"
        contentType:
          type: "string"
          description: "MIME type for a given attachment, for instance 'audio/wav'"
        vmDuration:
          type: "integer"
          format: "int32"
          description: |
            Supported for `Voicemail` only. Duration of a voicemail in
            seconds
        fileName:
          type: "string"
          description: "Name of a file attached"
        size:
          type: "integer"
          format: "int32"
          description: "Size of attachment in bytes"
        height:
          type: "integer"
          format: "int32"
          description: "Attachment height in pixels if available"
        width:
          type: "integer"
          format: "int32"
          description: "Attachment width in pixels if available"
    SyncInfoMessages:
      type: "object"
      properties:
        syncType:
          $ref: "#/components/schemas/SyncTypeEnum"
        syncToken:
          type: "string"
          description: "Synchronization token"
        syncTime:
          type: "string"
          description: |
            Last synchronization date/time in ISO 8601 format including
            timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        olderRecordsExist:
          type: "boolean"
          default: false
      description: "Sync type, token and time"
    MessageDirectionEnum:
      type: "string"
      enum:
      - "Inbound"
      - "Outbound"
      description: |
        Text message direction. Note that for some message types not all
        directions are allowed. For example voicemail messages can
        be only inbound
    MessageReadStatusEnum:
      description: "Message read status"
      type: "string"
      enum:
      - "Read"
      - "Unread"
    MessageStoreCallerInfoResponseTo:
      type: "object"
      properties:
        extensionNumber:
          type: "string"
          description: |
            Extension short number (usually 3 or 4 digits). This property
            is filled when parties communicate by means of short internal numbers,
            for example when calling to other extension or sending/receiving Company
            Pager messages
        extensionId:
          type: "string"
        location:
          type: "string"
          description: |
            Contains party location (city, state) if one can be determined
            from a phone number. This property is filled only when `phoneNumber` is not
            empty and a server can calculate location information from it (for example,
            this information is unavailable for US toll-free numbers)
        target:
          type: "boolean"
          description: |
            The `true` value specifies that message is sent exactly to this recipient.
            Returned in the `to` field for group MMS. Useful if one extension has several
            phone numbers'
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        faxErrorCode:
          $ref: "#/components/schemas/FaxErrorCodeEnum"
        name:
          type: "string"
          description: |
            Symbolic name associated with a party. If the phone does not
            belong to the known extension, only the location is returned, the name
            is not determined then
        phoneNumber:
          type: "string"
          description: |
            Phone number of a party. Usually it is a plain number including
            country and area code like 18661234567. But sometimes it could be returned
            from database with some formatting applied, for example (866)123-4567.
            This property is filled in all cases where parties communicate by means
            of global phone numbers, for example when calling to direct numbers or
            sending/receiving SMS
        recipientId:
          type: "string"
          description: "Internal identifier of a message recipient"
    MessageAvailabilityEnum:
      type: "string"
      enum:
      - "Alive"
      - "Deleted"
      - "Purged"
      description: |
        Message availability status. Message in 'Deleted' state is still
        preserved with all its attachments and can be restored. 'Purged' means
        that all attachments are already deleted and the message itself is about
        to be physically deleted shortly
    GetMessageInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a message"
          example: 1724099032020
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        attachments:
          type: "array"
          description: "List of message attachments"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfo"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        conversationId:
          type: "integer"
          format: "int64"
          description: |
            SMS and Pager only. Identifier of a conversation the message
            belongs to
        conversation:
          $ref: "#/components/schemas/ConversationInfo"
        creationTime:
          type: "string"
          description: |
            Message creation date/time in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        deliveryErrorCode:
          type: "string"
          description: "SMS only. Delivery error code returned by gateway"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        faxPageCount:
          type: "integer"
          format: "int32"
          description: "Fax only. Page count in a fax message"
        faxResolution:
          $ref: "#/components/schemas/FaxResolutionEnum"
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoResponseFrom"
        lastModifiedTime:
          type: "string"
          description: |
            The date/time when the message was modified on server in ISO
            8601 format including timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        pgToDepartment:
          type: "boolean"
          description: |
            Pager only. `true` if at least one of the message recipients is
            'Department' extension
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        smsDeliveryTime:
          type: "string"
          description: |
            SMS only. Date/time when outbound SMS was delivered to recipient's
            handset in ISO 8601 format including timezone, for example
            2016-03-10T18:07:52.534Z. It is filled only if a carrier sends a delivery
            receipt to RingCentral
          format: "date-time"
        smsSendingAttemptsCount:
          type: "integer"
          format: "int32"
          description: |
            SMS only. Number of attempts made to send an outbound SMS to
            the Gateway (if Gateway is temporary unavailable)
        subject:
          type: "string"
          description: |
            Message subject. For SMS and Pager messages it replicates message
            text which is also returned as an attachment
        to:
          type: "array"
          description: "Recipient information"
          items:
            $ref: "#/components/schemas/MessageStoreCallerInfoResponseTo"
        type:
          type: "string"
          description: "Message type"
          enum:
          - "Fax"
          - "SMS"
          - "VoiceMail"
          - "Pager"
          - "Text"
        vmTranscriptionStatus:
          type: "string"
          description: |
            Voicemail only. Status of a voicemail to text transcription.
            If 'VoicemailToText' feature is not activated for account,
            the 'NotAvailable' value is returned
          enum:
          - "NotAvailable"
          - "InProgress"
          - "TimedOut"
          - "Completed"
          - "CompletedPartially"
          - "Failed"
          - "Unknown"
        coverIndex:
          type: "integer"
          format: "int32"
          description: |
            Cover page identifier. If coverIndex is set to '0' (zero) cover
            page is not attached. For the list of available cover page identifiers
            (1-13) please call the Fax Cover Pages method. If not specified,
            the default cover page is attached (which is configured in 'Outbound
            Fax Settings')
        coverPageText:
          type: "string"
          description: |
            Cover page text, entered by the fax sender and printed on the
            cover page. Maximum length is limited to 1024 symbols
    SyncTypeEnum:
      type: "string"
      enum:
      - "FSync"
      - "ISync"
      description: |
        Type of message synchronization request:
          - FSync -- full sync
          - ISync -- incremental sync
    MessagePriorityEnum:
      type: "string"
      description: "Message priority"
      enum:
      - "Normal"
      - "High"
    FaxResolutionEnum:
      type: "string"
      description: |
        Fax only. Resolution of a fax message. 'High' for black and
        white image scanned at 200 dpi, 'Low' for black and white image scanned
        at 100 dpi
      enum:
      - "High"
      - "Low"
    CallerIdByFeatureInfoRequest:
      type: "object"
      properties:
        type:
          type: "string"
          description: |
            If 'PhoneNumber' value is specified, then a certain phone number
            is shown as a caller ID when using this telephony feature. If 'Blocked'
            value is specified, then a caller ID is hidden. The value 'CurrentLocation'
            can be specified for 'RingOut' feature only. The default is 'PhoneNumber'
            = ['PhoneNumber', 'Blocked', 'CurrentLocation']
        phoneInfo:
          $ref: "#/components/schemas/CallerIdPhoneInfoRequest"
    ExtensionCallerIdInfoRequest:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URL of a caller ID resource"
        byDevice:
          type: "array"
          items:
            $ref: "#/components/schemas/CallerIdByDeviceRequest"
        byFeature:
          type: "array"
          items:
            $ref: "#/components/schemas/CallerIdByFeatureRequest"
        extensionNameForOutboundCalls:
          type: "boolean"
          description: |
            If `true`, then the user first name and last name will be used
            as caller ID when making outbound calls from extension
        extensionNumberForInternalCalls:
          type: "boolean"
          description: |
            If `true`, then extension number will be used as caller ID
            when making internal calls
    CallerIdByFeature:
      type: "object"
      properties:
        feature:
          type: "string"
          enum:
          - "RingOut"
          - "RingMe"
          - "CallFlip"
          - "FaxNumber"
          - "AdditionalSoftphone"
          - "Alternate"
          - "CommonPhone"
          - "MobileApp"
          - "Delegated"
        callerId:
          $ref: "#/components/schemas/CallerIdByFeatureInfo"
      description: "Caller ID settings by feature"
    CallerIdByFeatureInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: |
            If 'PhoneNumber' value is specified, then a certain phone number
            is shown as a caller ID when using this telephony feature. If 'Blocked'
            value is specified, then a caller ID is hidden. The value 'CurrentLocation'
            can be specified for 'RingOut' feature only. The default is 'PhoneNumber'
            = ['PhoneNumber', 'Blocked', 'CurrentLocation']
        phoneInfo:
          $ref: "#/components/schemas/CallerIdPhoneInfo"
    CallerIdPhoneInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a phone number"
    CallerIdByDeviceRequest:
      type: "object"
      properties:
        device:
          $ref: "#/components/schemas/CallerIdDeviceInfoRequest"
        callerId:
          $ref: "#/components/schemas/CallerIdByDeviceInfoRequest"
      description: "Caller ID settings by device"
    CallerIdByFeatureRequest:
      type: "object"
      properties:
        feature:
          type: "string"
          enum:
          - "RingOut"
          - "RingMe"
          - "CallFlip"
          - "FaxNumber"
          - "AdditionalSoftphone"
          - "Alternate"
          - "CommonPhone"
          - "MobileApp"
          - "Delegated"
        callerId:
          $ref: "#/components/schemas/CallerIdByFeatureInfoRequest"
      description: "Caller ID settings by feature"
    CallerIdByDeviceInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: |
            If 'PhoneNumber' value is specified, then a certain phone number
            is shown as a caller ID when using this telephony feature. If 'Blocked'
            value is specified, then a caller ID is hidden. The value 'CurrentLocation'
            can be specified for 'RingOut' feature only. The default is 'PhoneNumber'
            = ['PhoneNumber', 'Blocked', 'CurrentLocation']
        phoneInfo:
          $ref: "#/components/schemas/CallerIdPhoneInfo"
    CallerIdPhoneInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a phone number"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a phone number resource"
        phoneNumber:
          type: "string"
          description: |
            Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
    CallerIdDeviceInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a device resource"
        name:
          type: "string"
          description: "Name of a device"
    CallerIdByDeviceInfoRequest:
      type: "object"
      properties:
        type:
          type: "string"
          description: |
            If 'PhoneNumber' value is specified, then a certain phone number
            is shown as a caller ID when using this telephony feature. If 'Blocked'
            value is specified, then a caller ID is hidden. The value 'CurrentLocation'
            can be specified for 'RingOut' feature only. The default is 'PhoneNumber'
            = ['PhoneNumber', 'Blocked', 'CurrentLocation']
        phoneInfo:
          $ref: "#/components/schemas/CallerIdPhoneInfoRequest"
    ExtensionCallerIdInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URL of a caller ID resource"
        byDevice:
          type: "array"
          items:
            $ref: "#/components/schemas/CallerIdByDevice"
        byFeature:
          type: "array"
          items:
            $ref: "#/components/schemas/CallerIdByFeature"
        extensionNameForOutboundCalls:
          type: "boolean"
          description: |
            If `true`, then user first name and last name will be used
            as caller ID when making outbound calls from extension
        extensionNumberForInternalCalls:
          type: "boolean"
          description: |
            If `true`, then extension number will be used as caller ID
            when making internal calls
    CallerIdByDevice:
      type: "object"
      properties:
        device:
          $ref: "#/components/schemas/CallerIdDeviceInfo"
        callerId:
          $ref: "#/components/schemas/CallerIdByDeviceInfo"
      description: "Caller ID settings by device"
    CallerIdDeviceInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
    TransferredExtension:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          readOnly: true
          description: "Canonical URI of an extension resource"
      description: "Transfer extension settings, set/returned if `callHandlingAction` is specified as `TransferToExtension`"
    RecipientInfo:
      type: "object"
      description: "Recipient data"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a voicemail recipient extension resource"
        id:
          description: "Internal identifier of a voicemail recipient"
          type: "string"
    TransferInfo:
      type: "object"
      properties:
        extension:
          $ref: "#/components/schemas/TransferExtensionInfo"
        action:
          type: "string"
          description: "Event that initiates transferring to the specified extension"
          enum:
          - "HoldTimeExpiration"
          - "MaxCallers"
          - "NoAnswer"
    UnconditionalForwardingInfo:
      type: "object"
      description: |
        Unconditional forwarding parameters.
        Returned if 'UnconditionalForwarding' value is specified for the `callHandlingAction` parameter
      properties:
        phoneNumber:
          type: "string"
          description: |
            Phone number to which the call is forwarded. In addition to
            common e.164 format, the following number patterns are supported: 11xxxxxxxxxxx,
            444xxxxxxxxxxx, 616xxxxxxxxxxx, 1700yyyy; where xxxxxxxxxxx is a phone number in
            e.164 format (without '+' sign) and yyyy is an external short extension number.
            Max number of digits is 15
        action:
          type: "string"
          description: "Event that initiates forwarding to the specified phone number"
          enum:
          - "HoldTimeExpiration"
          - "MaxCallers"
          - "NoAnswer"
    TransferredExtensionInfo:
      type: "object"
      properties:
        extension:
          $ref: "#/components/schemas/TransferredExtension"
    QueueInfo:
      type: "object"
      properties:
        transferMode:
          type: "string"
          description: "Specifies how calls are transferred to group members"
          enum:
          - "Rotating"
          - "Simultaneous"
          - "FixedOrder"
        transfer:
          type: "array"
          description: "Call transfer information"
          items:
            $ref: "#/components/schemas/TransferInfo"
        noAnswerAction:
          type: "string"
          description: |
            Specifies the type of action to be taken if: members are available
            but no one answers, or all members are busy/unavailable. This option is
            available for Business hours only. For simultaneous transfer mode only
            'WaitPrimaryMembers' and 'WaitPrimaryAndOverflowMembers' are supported
          enum:
          - "WaitPrimaryMembers"
          - "WaitPrimaryAndOverflowMembers"
          - "Voicemail"
          - "TransferToExtension"
          - "UnconditionalForwarding"
        fixedOrderAgents:
          type: "array"
          description: "Information on a call forwarding rule"
          items:
            $ref: "#/components/schemas/FixedOrderAgents"
        holdAudioInterruptionMode:
          type: "string"
          description: "Connecting audio interruption mode"
          enum:
          - "Never"
          - "WhenMusicEnds"
          - "Periodically"
        holdAudioInterruptionPeriod:
          type: "integer"
          format: "int32"
          description: "Connecting audio interruption message period in seconds"
        holdTimeExpirationAction:
          type: "string"
          description: |
            Specifies the type of action to be taken after the hold time
            (waiting for an available call queue member) expires. If 'TransferToExtension'
            option is selected, the extension specified in `transfer` field is used.
            The default value is `Voicemail`
          default: "Voicemail"
          enum:
          - "TransferToExtension"
          - "UnconditionalForwarding"
          - "Voicemail"
        agentTimeout:
          type: "integer"
          format: "int32"
          description: "Maximum time in seconds to wait for a call queue member before trying the next member"
        wrapUpTime:
          type: "integer"
          format: "int32"
          default: 15
          minimum: 0
          maximum: 300
          description: |
            Minimum post-call wrap up time in seconds before agent status
            is automatically set; the value range is from 0 to 300 sec.
        holdTime:
          type: "integer"
          format: "int32"
          description: "Maximum hold time in seconds to wait for an available call queue member"
        maxCallers:
          type: "integer"
          format: "int32"
          maximum: 25
          description: "Maximum count of callers on hold; the limitation is 25 callers"
        maxCallersAction:
          type: "string"
          description: "Specifies the type of action to be taken if count of callers on hold exceeds the supported maximum"
          enum:
          - "Voicemail"
          - "Announcement"
          - "TransferToExtension"
          - "UnconditionalForwarding"
        unconditionalForwarding:
          type: "array"
          items:
            $ref: "#/components/schemas/UnconditionalForwardingInfo"
      description: |
        Queue settings applied for department (call queue) extension type,
        with the 'AgentQueue' value specified as a call handling action
    CallersInfo:
      type: "object"
      properties:
        callerId:
          type: "string"
          description: "Phone number of a caller"
        name:
          type: "string"
          description: "Contact name of a caller"
    TransferExtensionInfo:
      allOf:
      - $ref: "#/components/schemas/TransferredExtension"
      - type: "object"
        properties:
          name:
            type: "string"
            description: "Extension name"
          extensionNumber:
            type: "string"
            description: "Extension number"
    CreateAnsweringRuleForwardingNumberInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a forwarding number"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a forwarding/call flip phone number"
        phoneNumber:
          type: "string"
          description: "Forwarding/Call flip phone number"
        label:
          type: "string"
          description: "Forwarding/Call flip number title"
        type:
          type: "string"
          description: "Type of forwarding number"
          enum:
          - "Home"
          - "Mobile"
          - "Work"
          - "PhoneLine"
          - "Outage"
          - "Other"
          - "BusinessMobilePhone"
          - "ExternalCarrier"
          - "ExtensionApps"
    MissedCallExtensionInfo:
      type: "object"
      description: "Specifies an extension (a calling group) which should be used for the missed call transfer. Returned only if the `actionType` is set to 'ConnectToExtension'"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension which should be used for the missed call transfer"
        externalNumber:
          $ref: "#/components/schemas/MissedCallExtensionInfoExternalNumber"
    SharedLinesInfo:
      type: "object"
      properties:
        timeout:
          type: "integer"
          format: "int32"
          minimum: 10
          maximum: 80
          description: |
            Number of seconds to wait before forwarding unanswered calls. The value range is 10 - 80
      description: "SharedLines call handling action settings"
    CallersInfoRequest:
      type: "object"
      properties:
        callerId:
          type: "string"
          description: "Phone number of a caller"
        name:
          type: "string"
          description: "Contact name of a caller"
    FixedOrderAgents:
      type: "object"
      properties:
        extension:
          $ref: "#/components/schemas/FixedOrderAgentsExtensionInfo"
        index:
          type: "integer"
          format: "int32"
          description: "Ordinal of an agent (call queue member)"
    ScheduleInfo:
      type: "object"
      description: "Schedule when an answering rule should be applied"
      properties:
        weeklyRanges:
          $ref: "#/components/schemas/WeeklyScheduleInfo"
        ranges:
          type: "array"
          description: "Specific data ranges"
          items:
            $ref: "#/components/schemas/RangesInfo"
        ref:
          type: "string"
          description: "The user's schedule specified for business hours or after hours; it can also be set/retrieved calling the corresponding method"
          enum:
          - "BusinessHours"
          - "AfterHours"
    MissedCallExtensionInfoExternalNumber:
      type: "object"
      description: "Specifies an external PSTN number which should be used for the missed call transfer. Returned only if the actionType is set to `ConnectToExternalNumber`"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number to which the call is forwarded. In addition to common [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format, the following number patterns are supported: 11xxxxxxxxxxx, 444xxxxxxxxxxx, 616xxxxxxxxxxx, 1700yyyy; where `xxxxxxxxxxx` is a phone number in e.164 format (without '+' sign) and `yyyy` is an external short extension number. Maximum number of digits is 15"
    CustomAnsweringRuleInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI to an answering rule resource"
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
        type:
          type: "string"
          description: "Type of an answering rule"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        name:
          type: "string"
          description: "Name of an answering rule specified by user"
        enabled:
          type: "boolean"
          description: "Specifies if an answering rule is active or inactive"
        schedule:
          $ref: "#/components/schemas/ScheduleInfo"
        calledNumbers:
          type: "array"
          description: "Answering rules are applied when calling to selected number(s)"
          items:
            $ref: "#/components/schemas/CalledNumberInfo"
        callers:
          type: "array"
          description: "Answering rules are applied when calls are received from specified caller(s)"
          items:
            $ref: "#/components/schemas/CallersInfo"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded"
          enum:
          - "ForwardCalls"
          - "UnconditionalForwarding"
          - "AgentQueue"
          - "TransferToExtension"
          - "TakeMessagesOnly"
          - "PlayAnnouncementOnly"
          - "SharedLines"
        forwarding:
          $ref: "#/components/schemas/ForwardingInfo"
        unconditionalForwarding:
          $ref: "#/components/schemas/UnconditionalForwardingInfo"
        queue:
          $ref: "#/components/schemas/QueueInfo"
        transfer:
          $ref: "#/components/schemas/TransferredExtensionInfo"
        voicemail:
          $ref: "#/components/schemas/VoicemailInfo"
        greetings:
          type: "array"
          description: "Greetings applied for an answering rule; only predefined greetings can be applied, see Dictionary Greeting List"
          items:
            $ref: "#/components/schemas/GreetingInfo"
        screening:
          type: "string"
          description: "Call screening status. 'Off' - no call screening; 'NoCallerId' - if caller ID is missing, then callers are asked to say their name before connecting; 'UnknownCallerId' - if caller ID is not in contact list, then callers are asked to say their name before connecting; 'Always' - the callers are always asked to say their name before connecting. The default value is 'Off'"
          enum:
          - "Off"
          - "NoCallerId"
          - "UnknownCallerId"
          - "Always"
          default: "Off"
        sharedLines:
          $ref: "#/components/schemas/SharedLinesInfo"
    CreateAnsweringRuleRequest:
      required:
      - "name"
      - "type"
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: |
            Specifies if the rule is active or inactive. The default value
            is `true`
        type:
          type: "string"
          description: "Type of an answering rule. The 'Custom' value should be specified"
        name:
          type: "string"
          description: "Name of an answering rule specified by user"
        callers:
          type: "array"
          description: "Answering rule will be applied when calls are received from the specified caller(s)"
          items:
            $ref: "#/components/schemas/CallersInfoRequest"
        calledNumbers:
          type: "array"
          description: "Answering rules are applied when calling to selected number(s)"
          items:
            $ref: "#/components/schemas/CalledNumberInfo"
        schedule:
          $ref: "#/components/schemas/ScheduleInfo"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded"
          enum:
          - "ForwardCalls"
          - "UnconditionalForwarding"
          - "AgentQueue"
          - "TransferToExtension"
          - "TakeMessagesOnly"
          - "PlayAnnouncementOnly"
          - "SharedLines"
        forwarding:
          $ref: "#/components/schemas/ForwardingInfo"
        unconditionalForwarding:
          $ref: "#/components/schemas/UnconditionalForwardingInfo"
        queue:
          $ref: "#/components/schemas/QueueInfo"
        transfer:
          $ref: "#/components/schemas/TransferredExtensionInfo"
        voicemail:
          $ref: "#/components/schemas/VoicemailInfo"
        missedCall:
          $ref: "#/components/schemas/MissedCallInfo"
        greetings:
          type: "array"
          description: |
            Greetings applied for an answering rule; only predefined greetings
            can be applied, see Dictionary Greeting List
          items:
            $ref: "#/components/schemas/GreetingInfo"
        screening:
          type: "string"
          description: |
            Call screening status. 'Off' - no call screening; 'NoCallerId'
            - if caller ID is missing, then callers are asked to say their name before
            connecting; 'UnknownCallerId' - if caller ID is not in contact list, then
            callers are asked to say their name before connecting; 'Always' - the
            callers are always asked to say their name before connecting. The default
            value is 'Off'
          enum:
          - "Off"
          - "NoCallerId"
          - "UnknownCallerId"
          - "Always"
          default: "Off"
    UserAnsweringRuleList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an answering rule list resource"
          example: "https://platform.ringcentral.com/restapi/v1.0/account/240913004/extension/240972004/answering-rule?page=1&perPage=100"
        records:
          type: "array"
          description: "List of answering rules"
          items:
            $ref: "#/components/schemas/AnsweringRuleInfo"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    ForwardingInfo:
      type: "object"
      properties:
        notifyMySoftPhones:
          type: "boolean"
          description: "Specifies if the user's softphone(s) are notified before forwarding the incoming call to desk phones and forwarding numbers"
        notifyAdminSoftPhones:
          type: "boolean"
          description: "Deprecated parameter. Specifies if the administrator's softphone is notified before forwarding the incoming call to desk phones and forwarding numbers. The default value is `false`"
          deprecated: true
        softPhonesRingCount:
          type: "integer"
          format: "int32"
          description: "Number of rings before forwarding starts"
        softPhonesAlwaysRing:
          type: "boolean"
          description: "Specifies that desktop and mobile applications of the user will ring till the end of their forwarding list. If set to `true` then `softPhonesRingCount` is ignored"
          default: true
        ringingMode:
          type: "string"
          description: "Specifies the order in which the forwarding numbers ring. 'Sequentially' means that forwarding numbers are ringing one at a time, in order of priority. 'Simultaneously' means that forwarding numbers are ring all at the same time"
          enum:
          - "Sequentially"
          - "Simultaneously"
        rules:
          type: "array"
          description: "Information on a call forwarding rule"
          items:
            $ref: "#/components/schemas/ForwardingRuleInfo"
        softPhonesPositionTop:
          type: "boolean"
          description: "Specifies if desktop and mobile applications of the user are notified before (true) or after (false) forwarding the incoming call to desk phones and forwarding numbers. Applicable only if `notifyMySoftPhones` parameter is set to `true`"
        mobileTimeout:
          type: "boolean"
          description: "Deprecated parameter. Specifies if mobile timeout is activated for the rule"
          deprecated: true
      description: "Forwarding parameters. Returned if 'ForwardCalls' is specified in 'callHandlingAction'. These settings determine the forwarding numbers to which the call will be forwarded"
    ForwardingRuleInfo:
      type: "object"
      properties:
        index:
          type: "integer"
          format: "int32"
          description: "Forwarding number (or group) ordinal"
        ringCount:
          type: "integer"
          format: "int32"
          description: "Number of rings for a forwarding number (or group)"
        enabled:
          type: "boolean"
          description: "Forwarding number status. Returned only if `showInactiveNumbers` is set to `true`"
        forwardingNumbers:
          type: "array"
          description: "Forwarding number (or group) data"
          items:
            $ref: "#/components/schemas/CreateAnsweringRuleForwardingNumberInfo"
    VoicemailInfo:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "If `true` then voicemails are allowed to be received"
        recipient:
          $ref: "#/components/schemas/RecipientInfo"
      description: "Specifies whether to take a voicemail and who should do it"
    AnsweringRuleInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI to an answering rule resource"
        id:
          type: "string"
          description: "Internal identifier of an answering rule"
        type:
          type: "string"
          description: "Type of an answering rule"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        name:
          type: "string"
          description: "Name of an answering rule specified by user"
        enabled:
          type: "boolean"
          description: "Specifies if an answering rule is active or inactive"
        schedule:
          $ref: "#/components/schemas/ScheduleInfo"
        calledNumbers:
          type: "array"
          description: "Answering rules are applied when calling to selected number(s)"
          items:
            $ref: "#/components/schemas/CalledNumberInfo"
        callers:
          type: "array"
          description: "Answering rules are applied when calls are received from specified caller(s)"
          items:
            $ref: "#/components/schemas/CallersInfo"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded"
          enum:
          - "ForwardCalls"
          - "UnconditionalForwarding"
          - "AgentQueue"
          - "TransferToExtension"
          - "TakeMessagesOnly"
          - "PlayAnnouncementOnly"
          - "SharedLines"
        forwarding:
          $ref: "#/components/schemas/ForwardingInfo"
        unconditionalForwarding:
          $ref: "#/components/schemas/UnconditionalForwardingInfo"
        queue:
          $ref: "#/components/schemas/QueueInfo"
        transfer:
          $ref: "#/components/schemas/TransferredExtensionInfo"
        voicemail:
          $ref: "#/components/schemas/VoicemailInfo"
        greetings:
          type: "array"
          description: "Greetings applied for an answering rule; only predefined greetings can be applied, see Dictionary Greeting List"
          items:
            $ref: "#/components/schemas/GreetingInfo"
        screening:
          type: "string"
          description: "Call screening status. 'Off' - no call screening; 'NoCallerId' - if caller ID is missing, then callers are asked to say their name before connecting; 'UnknownCallerId' - if caller ID is not in contact list, then callers are asked to say their name before connecting; 'Always' - the callers are always asked to say their name before connecting. The default value is 'Off'"
          enum:
          - "Off"
          - "NoCallerId"
          - "UnknownCallerId"
          - "Always"
          default: "Off"
        sharedLines:
          $ref: "#/components/schemas/SharedLinesInfo"
        missedCall:
          $ref: "#/components/schemas/MissedCallInfo"
    FixedOrderAgentsExtensionInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Number of extension"
        name:
          type: "string"
          description: "Name of agent extension"
    MissedCallInfo:
      type: "object"
      description: "Specifies behavior for the missed call scenario. Returned only if `enabled` parameter of a voicemail is set to 'false'"
      properties:
        actionType:
          type: "string"
          description: "Specifies the action that should be executed on a missed call. It can either be playing greeting message and disconnection, or sending call to a calling group. If 'ConnectToExtension' is set, then calling group extension should be specified"
          enum:
          - "PlayGreetingAndDisconnect"
          - "ConnectToExtension"
          - "ConnectToExternalNumber"
        extension:
          $ref: "#/components/schemas/MissedCallExtensionInfo"
    UpdateAnsweringRuleRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Identifier of an answering rule"
        forwarding:
          $ref: "#/components/schemas/ForwardingInfoCreateRuleRequest"
        enabled:
          type: "boolean"
          description: "Specifies if the rule is active or inactive. The default value is `true`"
        name:
          type: "string"
          description: "Name of an answering rule specified by user"
        callers:
          type: "array"
          description: "Answering rule will be applied when calls are received from the specified caller(s)"
          items:
            $ref: "#/components/schemas/CallersInfoRequest"
        calledNumbers:
          type: "array"
          description: "Answering rules are applied when calling to selected number(s)"
          items:
            $ref: "#/components/schemas/CalledNumberInfo"
        schedule:
          $ref: "#/components/schemas/ScheduleInfo"
        callHandlingAction:
          type: "string"
          description: "Specifies how incoming calls are forwarded"
          enum:
          - "ForwardCalls"
          - "UnconditionalForwarding"
          - "AgentQueue"
          - "TransferToExtension"
          - "TakeMessagesOnly"
          - "PlayAnnouncementOnly"
          - "SharedLines"
        type:
          type: "string"
          description: "Type of an answering rule"
          enum:
          - "BusinessHours"
          - "AfterHours"
          - "Custom"
        unconditionalForwarding:
          $ref: "#/components/schemas/UnconditionalForwardingInfo"
        queue:
          $ref: "#/components/schemas/QueueInfo"
        voicemail:
          $ref: "#/components/schemas/VoicemailInfo"
        missedCall:
          $ref: "#/components/schemas/MissedCallInfo"
        greetings:
          type: "array"
          description: |
            Greetings applied for an answering rule; only predefined greetings
            can be applied, see Dictionary Greeting List
          items:
            $ref: "#/components/schemas/GreetingInfo"
        screening:
          type: "string"
          description: |
            Call screening status. 'Off' - no call screening; 'NoCallerId'
            - if caller ID is missing, then callers are asked to say their name before
            connecting; 'UnknownCallerId' - if caller ID is not in contact list, then
            callers are asked to say their name before connecting; 'Always' - the
            callers are always asked to say their name before connecting. The default
            value is 'Off'
          enum:
          - "Off"
          - "NoCallerId"
          - "UnknownCallerId"
          - "Always"
          default: "Off"
        showInactiveNumbers:
          type: "boolean"
          description: "Indicates whether inactive numbers should be returned or not"
        transfer:
          $ref: "#/components/schemas/TransferredExtensionInfo"
    ForwardingInfoCreateRuleRequest:
      type: "object"
      properties:
        notifyMySoftPhones:
          type: "boolean"
          description: "Specifies if the first ring on desktop/mobile apps is enabled. The default value is `true`"
        notifyAdminSoftPhones:
          type: "boolean"
          description: "Deprecated parameter. Specifies if the administrator's softphone (desktop application) is notified before forwarding the incoming call to desk phones and forwarding numbers. The default value is `true`."
          deprecated: true
        softPhonesRingCount:
          type: "integer"
          format: "int32"
          description: "Specifies delay between ring on apps and starting of a call forwarding. To activate this parameter use the value > 0, and turn off the `softPhonesAlwaysRing` setting. If the value is 1 or 0, the `softPhonesAlwaysRing` setting cannot be turned off"
        softPhonesAlwaysRing:
          type: "boolean"
          description: "Specifies that desktop and mobile applications of the user will ring till the end of their forwarding list. If set to `true` then `softPhonesRingCount` is ignored"
          default: true
        ringingMode:
          type: "string"
          description: "Specifies the order in which forwarding numbers ring. 'Sequentially' means that forwarding numbers are ringing one at a time, in order of priority. 'Simultaneously' means that forwarding numbers are ringing all at the same time. The default value is 'Sequentially'"
          enum:
          - "Sequentially"
          - "Simultaneously"
        rules:
          type: "array"
          description: "Information on a call forwarding rule"
          items:
            $ref: "#/components/schemas/ForwardingRuleCreateRequest"
        mobileTimeout:
          type: "boolean"
          description: "Deprecated parameter. Specifies if mobile timeout is activated for the rule"
          deprecated: true
      description: "Forwarding parameters. Returned if 'ForwardCalls' is specified in 'callHandlingAction'. These settings determine the forwarding numbers to which the call will be forwarded"
    ForwardingRuleCreateRequest:
      type: "object"
      properties:
        index:
          type: "integer"
          format: "int32"
          description: "Forwarding number (or group) ordinal. Not returned for inactive numbers"
        ringCount:
          type: "integer"
          format: "int32"
          description: |
            Number of rings for a forwarding number (or group). For inactive
            numbers the default value ('4') is returned
        enabled:
          type: "boolean"
          description: "Phone number status"
        forwardingNumbers:
          type: "array"
          description: "Forwarding number (or group) data"
          items:
            $ref: "#/components/schemas/ForwardingNumberInfoRulesCreateRuleRequest"
    ForwardingNumberInfoRulesCreateRuleRequest:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a forwarding number"
        type:
          type: "string"
          description: "Forwarding phone number type"
          enum:
          - "Home"
          - "Mobile"
          - "Work"
          - "PhoneLine"
          - "Outage"
          - "Other"
          - "BusinessMobilePhone"
          - "ExternalCarrier"
          - "ExtensionApps"
        phoneNumber:
          type: "string"
          description: "Forwarding/Call flip phone number"
        label:
          type: "string"
          description: "Forwarding/Call flip number title"
    GetInternalTextMessageInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a message"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message"
        attachments:
          type: "array"
          description: "The list of message attachments"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfo"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        conversationId:
          type: "integer"
          format: "int64"
          description: |
            SMS and Pager only. Identifier of a conversation that the message
            belongs to
        conversation:
          $ref: "#/components/schemas/ConversationInfo"
        creationTime:
          type: "string"
          description: |
            Message creation date/time in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoResponseFrom"
        lastModifiedTime:
          type: "string"
          description: |
            Date/time when the message was modified on server in ISO
            8601 format including timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        pgToDepartment:
          type: "boolean"
          description: |
            Pager only. `true` if at least one of a message recipients
            is 'Department' extension
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        subject:
          type: "string"
          description: |
            Message subject. For SMS and Pager messages it replicates message
            text which is also returned as an attachment
        to:
          type: "array"
          description: "Recipient information"
          items:
            $ref: "#/components/schemas/MessageStoreCallerInfoResponseTo"
        type:
          type: "string"
          description: "Message type"
          enum:
          - "Fax"
          - "SMS"
          - "VoiceMail"
          - "Pager"
          - "Text"
    CreateInternalTextMessageRequest:
      required:
      - "text"
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/PagerCallerInfoRequest"
        replyOn:
          type: "integer"
          format: "int32"
          description: "Internal identifier of a message this message replies to"
        text:
          type: "string"
          description: |
            Text of a pager message. Max length is 1024 symbols (2-byte
            UTF-16 encoded). If a character is encoded in 4 bytes in UTF-16 it is
            treated as 2 characters, thus restricting the maximum message length to
            512 symbols
          example: "hello world"
        to:
          type: "array"
          description: |
            Optional if `replyOn` parameter is specified. Receiver of a pager
            message.
          items:
            $ref: "#/components/schemas/PagerCallerInfoRequest"
    PagerCallerInfoRequest:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Extension identifier"
          example: "123456789"
        extensionNumber:
          type: "string"
          description: "Extension number"
          example: "105"
      description: "Sender of a pager message."
    RoleIdResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
    AuthProfileResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        permissions:
          type: "array"
          items:
            $ref: "#/components/schemas/ActivePermissionResource"
    ActivePermissionResource:
      type: "object"
      properties:
        permission:
          $ref: "#/components/schemas/PermissionIdResource"
        effectiveRole:
          $ref: "#/components/schemas/RoleIdResource"
        scopes:
          type: "array"
          items:
            type: "string"
            enum:
            - "Account"
            - "AllExtensions"
            - "Federation"
            - "NonUserExtensions"
            - "RoleBased"
            - "Self"
            - "UserExtensions"
    AuthProfileCheckResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        successful:
          type: "boolean"
          default: false
        details:
          $ref: "#/components/schemas/ActivePermissionResource"
    UserCallQueues:
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of queues where an extension is an agent"
          items:
            $ref: "#/components/schemas/QueueShortInfoResource"
    QueueShortInfoResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Call queue extension identifier"
        name:
          type: "string"
          description: "Call queue name (read-only)"
    CreateUserEmergencyLocationRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Name of a new personal emergency response location"
        addressFormatId:
          type: "string"
          description: "Address format ID"
        trusted:
          type: "boolean"
          description: "If 'true' address validation for non-us addresses is skipped"
        address:
          $ref: "#/components/schemas/CommonEmergencyLocationAddressInfo"
    GetExtensionForwardingNumberListResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the forwarding number list resource"
        records:
          type: "array"
          description: "List of forwarding phone numbers"
          items:
            $ref: "#/components/schemas/ForwardingNumberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CreateForwardingNumberDeviceInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the other extension device"
      description: |
        Forwarding device information. Applicable for 'PhoneLine' type only.
        Cannot be specified together with 'phoneNumber' parameter
    ForwardingNumberId:
      type: "object"
      properties:
        forwardingNumberId:
          type: "string"
          description: "Forwarding number id"
    DeleteForwardingNumbersRequest:
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of forwarding number IDs"
          items:
            $ref: "#/components/schemas/ForwardingNumberId"
    ForwardingNumberInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a forwarding/call flip phone number"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a forwarding/call flip phone number"
        phoneNumber:
          type: "string"
          description: "Forwarding/Call flip phone number"
        label:
          type: "string"
          description: "Forwarding/Call flip number title"
        features:
          type: "array"
          description: "Type of option this phone number is used for. Multiple values are accepted"
          items:
            type: "string"
            enum:
            - "CallFlip"
            - "CallForwarding"
        flipNumber:
          type: "string"
          description: "Number assigned to the call flip phone number, corresponds to the shortcut dial number"
        device:
          $ref: "#/components/schemas/CreateForwardingNumberDeviceInfo"
        type:
          type: "string"
          description: "Forwarding phone number type"
          enum:
          - "Home"
          - "Mobile"
          - "Work"
          - "PhoneLine"
          - "Outage"
          - "Other"
          - "BusinessMobilePhone"
          - "ExternalCarrier"
          - "ExtensionApps"
        extension:
          type: "object"
          description: "Extension information. Returned only if extension type is 'ExtensionApps'"
          properties:
            id:
              type: "string"
              description: "Internal identifier of an extension"
            extensionNumber:
              type: "string"
              description: "Number of an extension"
            name:
              type: "string"
              description: "Extension name"
    CreateForwardingNumberRequest:
      type: "object"
      properties:
        flipNumber:
          type: "integer"
          format: "int32"
          description: "Number assigned to the call flip phone number, corresponds to the shortcut dial number"
        phoneNumber:
          type: "string"
          description: "Forwarding/Call flip phone number"
        label:
          type: "string"
          description: "Forwarding/Call flip number title"
        type:
          type: "string"
          description: "Forwarding/Call flip phone type. If specified, 'label' attribute value is ignored. The default value is 'Other'"
          enum:
          - "PhoneLine"
          - "Home"
          - "Mobile"
          - "Work"
          - "Other"
        device:
          $ref: "#/components/schemas/CreateForwardingNumberDeviceInfo"
    ForwardingNumberResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        phoneNumber:
          type: "string"
        label:
          type: "string"
        features:
          type: "array"
          items:
            type: "string"
            enum:
            - "CallFlip"
            - "CallForwarding"
        flipNumber:
          pattern: "[1-8]"
          type: "string"
        type:
          type: "string"
          description: "Forwarding phone number type"
          enum:
          - "Home"
          - "Mobile"
          - "Work"
          - "PhoneLine"
          - "Outage"
          - "Other"
    UpdateForwardingNumberRequest:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Forwarding/Call flip phone number"
        label:
          type: "string"
          description: "Forwarding/Call flip number title"
        flipNumber:
          type: "string"
          description: "Number assigned to the call flip phone number, corresponds to the shortcut dial number"
        type:
          type: "string"
          description: "Forwarding phone number type"
          enum:
          - "Home"
          - "Mobile"
          - "Work"
          - "PhoneLine"
          - "Outage"
          - "Other"
          - "BusinessMobilePhone"
          - "ExternalCarrier"
    MeetingsResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/MeetingResponseResource"
        paging:
          $ref: "#/components/schemas/MeetingsPagingInfo"
        navigation:
          $ref: "#/components/schemas/MeetingsNavigationInfo"
    MeetingsPagingInfo:
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
        totalPages:
          type: "integer"
          format: "int32"
        perPage:
          type: "integer"
          format: "int32"
        totalElements:
          type: "integer"
          format: "int32"
        pageStart:
          type: "integer"
          format: "int32"
        pageEnd:
          type: "integer"
          format: "int32"
    MeetingRequestResource:
      type: "object"
      properties:
        topic:
          type: "string"
          description: "Custom topic of a meeting"
        meetingType:
          type: "string"
          enum:
          - "Instant"
          - "Scheduled"
          - "ScheduledRecurring"
          - "Recurring"
        schedule:
          $ref: "#/components/schemas/MeetingScheduleResource"
        password:
          type: "string"
          format: "password"
          description: "Meeting password"
        host:
          $ref: "#/components/schemas/HostInfoRequest"
        allowJoinBeforeHost:
          type: "boolean"
          default: false
        startHostVideo:
          type: "boolean"
          default: false
        startParticipantsVideo:
          type: "boolean"
          description: "Starting meetings with participant video on/off (true/false)"
          default: false
        usePersonalMeetingId:
          type: "boolean"
          description: "If true, then personal user's meeting ID is applied for creation of this meeting"
        audioOptions:
          type: "array"
          items:
            type: "string"
            enum:
            - "Phone"
            - "ComputerAudio"
        recurrence:
          $ref: "#/components/schemas/RecurrenceInfo"
        autoRecordType:
          type: "string"
          description: "Automatic record type"
          default: "none"
          enum:
          - "local"
          - "cloud"
          - "none"
        enforceLogin:
          type: "boolean"
          description: "If true, then only signed-in users can join this meeting"
        muteParticipantsOnEntry:
          type: "boolean"
          description: "If true, then participants are muted on entry"
        enableWaitingRoom:
          type: "boolean"
          description: "If true, then the waiting room for participants is enabled"
        globalDialInCountries:
          type: "array"
          description: "List of global dial-in countries (eg. US, UK, AU, etc.)"
          items:
            type: "string"
        alternativeHosts:
          type: "string"
    MeetingsNavigationInfoUri:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
    MeetingsNavigationInfo:
      type: "object"
      properties:
        nextPage:
          $ref: "#/components/schemas/MeetingsNavigationInfoUri"
        previousPage:
          $ref: "#/components/schemas/MeetingsNavigationInfoUri"
        firstPage:
          $ref: "#/components/schemas/MeetingsNavigationInfoUri"
        lastPage:
          $ref: "#/components/schemas/MeetingsNavigationInfoUri"
    MeetingUserSettingsResponse:
      type: "object"
      properties:
        recording:
          $ref: "#/components/schemas/UserMeetingRecordingSetting"
        scheduleMeeting:
          $ref: "#/components/schemas/ScheduleUserMeetingInfo"
        telephony:
          $ref: "#/components/schemas/TelephonyUserMeetingSettings"
        inMeetings:
          $ref: "#/components/schemas/UserInMeetingResponse"
    ScheduleUserMeetingInfo:
      type: "object"
      properties:
        enforceLogin:
          type: "boolean"
          description: "If true, then only signed-in users can join this meeting"
        startHostVideo:
          type: "boolean"
          description: "Starting meetings with host video on/off (true/false)"
        startParticipantsVideo:
          type: "boolean"
          description: "Starting meetings with participant video on/off (true/false)"
        audioOptions:
          type: "array"
          description: "Determines how participants can join the audio channel of a meeting"
          items:
            type: "string"
            enum:
            - "Phone"
            - "ComputerAudio"
            - "ThirdParty"
        allowJoinBeforeHost:
          type: "boolean"
          description: "Allows participants to join the meeting before the host arrives"
        usePmiForScheduledMeetings:
          type: "boolean"
          description: "Determines whether to use Personal Meeting ID (PMI) when scheduling a meeting"
        usePmiForInstantMeetings:
          type: "boolean"
          description: "Determines whether to use Personal Meeting ID (PMI) when starting an instant meeting"
        requirePasswordForSchedulingNewMeetings:
          type: "boolean"
          description: "A password will be generated when scheduling a meeting and participants will require password to join a meeting. The Personal Meeting ID (PMI) meetings are not included"
        requirePasswordForScheduledMeetings:
          type: "boolean"
          description: "Specifies whether to require a password for meetings which have already been scheduled"
        defaultPasswordForScheduledMeetings:
          type: "string"
          description: "Password for already scheduled meetings. Users can set it individually"
        requirePasswordForInstantMeetings:
          type: "boolean"
          description: "A random password will be generated for an instant meeting, if set to `true`. If you use PMI for your instant meetings, this option will be disabled"
        requirePasswordForPmiMeetings:
          type: "string"
          description: "Specifies whether to require a password for meetings using Personal Meeting ID (PMI). The supported values are: 'none', 'all' and 'jbhOnly' (joined before host only)"
          enum:
          - "all"
          - "none"
          - "jbhOnly"
        pmiPassword:
          type: "string"
          description: "The default password for Personal Meeting ID (PMI) meetings"
        pstnPasswordProtected:
          type: "boolean"
          description: "Specifies whether to generate and require a password for participants joining by phone"
        muteParticipantsOnEntry:
          type: "boolean"
      description: "Scheduling meeting settings locked on account level || Settings defining how to schedule user meetings"
    GlobalDialInCountryResponse:
      type: "object"
      properties:
        countryCode:
          type: "string"
        countryName:
          type: "string"
        checked:
          type: "boolean"
        order:
          type: "integer"
          format: "int32"
    UserMeetingRecordingSetting:
      type: "object"
      properties:
        localRecording:
          type: "boolean"
          description: "Allows hosts and participants to record a meeting to a local file"
        cloudRecording:
          type: "boolean"
          description: "Allows hosts to record and save a meeting/webinar in the cloud"
        recordSpeakerView:
          type: "boolean"
          description: "Allows to record active speaker with the shared screen"
          default: false
        recordGalleryView:
          type: "boolean"
          description: "Allows to record gallery view with the shared screen"
          default: false
        recordAudioFile:
          type: "boolean"
          description: "Allows to record an audio-only file"
          default: false
        saveChatText:
          type: "boolean"
          description: "Allows to save chat text from a meeting"
          default: false
        showTimestamp:
          type: "boolean"
          description: "Allows to show timestamp on video"
          default: false
        autoRecording:
          type: "string"
          description: "Automatic recording (local/cloud/none) of meetings as they start"
          default: "local"
          enum:
          - "local"
          - "cloud"
          - "none"
        autoDeleteCmr:
          type: "string"
          description: "Automatic deletion of cloud recordings"
          default: "false"
        autoDeleteCmrDays:
          type: "integer"
          format: "int32"
          description: "A specified number of days for automatic deletion of cloud recordings, the value range is 1-60"
      description: "Meeting recording settings locked on account level"
    UserInMeetingResponse:
      type: "object"
      properties:
        enableWaitingRoom:
          type: "boolean"
        breakoutRoom:
          type: "boolean"
        chat:
          type: "boolean"
        polling:
          type: "boolean"
        annotation:
          type: "boolean"
        virtualBackground:
          type: "boolean"
        screenSharing:
          type: "boolean"
        requestPermissionToUnmute:
          type: "boolean"
    TelephonyUserMeetingSettings:
      type: "object"
      properties:
        thirdPartyAudio:
          type: "boolean"
          description: "ThirdParty audio option"
        audioConferenceInfo:
          type: "boolean"
          description: "Users can join the meeting using the existing 3rd party audio configuration"
        globalDialCountries:
          type: "array"
          items:
            $ref: "#/components/schemas/GlobalDialInCountryResponse"
    PublicMeetingInvitationResponse:
      type: "object"
      properties:
        invitation:
          type: "string"
          description: "Meeting invitation"
    MeetingsCountryResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        name:
          type: "string"
        isoCode:
          type: "string"
        callingCode:
          type: "string"
        emergencyCalling:
          type: "boolean"
          default: false
        numberSelling:
          type: "boolean"
          default: false
        loginAllowed:
          type: "boolean"
          default: false
    MeetingExternalUserInfoResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        userId:
          type: "string"
        accountId:
          type: "string"
        userType:
          type: "integer"
          format: "int64"
        userToken:
          type: "string"
        hostKey:
          type: "string"
        personalMeetingId:
          type: "string"
        personalLink:
          type: "string"
          description: "Link to the user's personal meeting room, used as an alias for personal meeting URL (with personal meeting ID)"
          example: "https://meetings.ringcentral.com/my/jsmith"
        personalLinkName:
          type: "string"
        usePmiForInstantMeetings:
          type: "boolean"
          description: "Enables using personal meeting ID for instant meetings"
          default: false
    DialInNumberResource:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
        formattedNumber:
          type: "string"
        location:
          type: "string"
        country:
          $ref: "#/components/schemas/MeetingsCountryResource"
    MeetingServiceInfoResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        supportUri:
          type: "string"
          format: "uri"
        intlDialInNumbersUri:
          type: "string"
          format: "uri"
        externalUserInfo:
          $ref: "#/components/schemas/MeetingExternalUserInfoResource"
        dialInNumbers:
          type: "array"
          items:
            $ref: "#/components/schemas/DialInNumberResource"
    MeetingServiceInfoRequest:
      type: "object"
      properties:
        externalUserInfo:
          $ref: "#/components/schemas/MeetingExternalUserInfoResource"
    DetailedExtensionPresenceWithSIPEventBody:
      type: "object"
      description: "Notification payload body"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
          default: "~"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status. Returned if telephony status is changed."
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        activeCalls:
          type: "array"
          description: "List of the latest 7 active calls on extension"
          items:
            $ref: "#/components/schemas/ActiveCallInfo"
        sequence:
          type: "integer"
          format: "int32"
          description: "Order number of a notification to state the chronology"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        userStatus:
          type: "string"
          description: "User-defined presence status (as previously published by the user)"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        meetingStatus:
          type: "string"
          description: "Meetings presence status"
          enum:
          - "Connected"
          - "Disconnected"
        dndStatus:
          type: "string"
          description: "Extended DnD (Do not Disturb) status"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
        allowSeeMyPresence:
          type: "boolean"
          description: "If `true` enables other extensions to see the extension presence status"
        ringOnMonitoredCall:
          type: "boolean"
          description: "If `true` enables to ring extension phone, if any user monitored by this extension is ringing"
        pickUpCallsOnHold:
          type: "boolean"
          description: "If `true` enables the extension user to pick up a monitored line on hold"
        totalActiveCalls:
          type: "integer"
          format: "int32"
          description: "Total number of active calls on extension at the present moment"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    IncomingCallEvent:
      type: "object"
      properties:
        aps:
          $ref: "#/components/schemas/APSInfo"
        event:
          type: "string"
          description: "Event filter name"
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        timestamp:
          type: "string"
          format: "date-time"
          description: "The timestamp of a call action in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example 2016-03-10T18:07:52.534Z"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
          default: "~"
        action:
          type: "string"
          description: "Calling action, for example 'StartRing'"
        sessionId:
          type: "string"
          description: "Identifier of a call session"
        serverId:
          type: "string"
          description: "Identifier of a server"
        from:
          type: "string"
          description: "Phone number of a caller. For GCM transport type '_from' property should be used"
        fromName:
          type: "string"
          description: "Caller name"
        to:
          type: "string"
          description: "Phone number of a callee"
        toName:
          type: "string"
          description: "Callee name"
        sid:
          type: "string"
          description: "Unique identifier of a session"
        toUrl:
          type: "string"
          description: "SIP proxy registration name"
        srvLvl:
          type: "string"
          description: "User data"
        srvLvlExt:
          type: "string"
          description: "User data"
        recUrl:
          type: "string"
          description: "File containing recorded caller name"
        pn_ttl:
          type: "integer"
          format: "int32"
          description: "Notification lifetime value in seconds, the default value is 30 seconds"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    ExtensionPresenceEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter name"
        timestamp:
          type: "string"
          format: "date-time"
          description: "Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/ExtensionPresenceEventBody"
    DetailedExtensionPresenceWithSIPEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter name"
        timestamp:
          type: "string"
          format: "date-time"
          description: "Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/DetailedExtensionPresenceWithSIPEventBody"
    APSInfo:
      type: "object"
      description: "APS (Apple Push Service) information/ priority data"
      properties:
        content-available:
          type: "integer"
          format: "int32"
          description: "If the value is '1' then notification is turned on even if the application is in background"
    APNSInfo:
      type: "object"
      description: "APNS (Apple Push Notification Service) information"
      properties:
        aps:
          $ref: "#/components/schemas/APSInfo"
    DetailedExtensionPresenceEventBody:
      type: "object"
      description: "Notification payload body"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
          default: "~"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status. Returned if telephony status is changed."
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        activeCalls:
          type: "array"
          description: "List of the latest 7 active calls on extension"
          items:
            $ref: "#/components/schemas/ActiveCallInfoWithoutSIP"
        sequence:
          type: "integer"
          format: "int32"
          description: "Order number of a notification to state the chronology"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        userStatus:
          type: "string"
          description: "User-defined presence status (as previously published by the user)"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        meetingStatus:
          type: "string"
          description: "Meetings presence status"
          enum:
          - "Connected"
          - "Disconnected"
        dndStatus:
          type: "string"
          description: "Extended DnD (Do not Disturb) status"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
        allowSeeMyPresence:
          type: "boolean"
          description: "If `true` enables other extensions to see the extension presence status"
        ringOnMonitoredCall:
          type: "boolean"
          description: "If `true` enables to ring extension phone, if any user monitored by this extension is ringing"
        pickUpCallsOnHold:
          type: "boolean"
          description: "If `true` enables the extension user to pick up a monitored line on hold"
        totalActiveCalls:
          type: "integer"
          format: "int32"
          description: "Total number of active calls on extension at the present moment"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    PresenceInfoRequest:
      type: "object"
      properties:
        userStatus:
          type: "string"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        dndStatus:
          type: "string"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
          - "DoNotAcceptAnyCalls"
          - "Unknown"
        message:
          maxLength: 75
          minLength: 0
          type: "string"
        allowSeeMyPresence:
          type: "boolean"
          default: false
        ringOnMonitoredCall:
          type: "boolean"
          default: false
        pickUpCallsOnHold:
          type: "boolean"
          default: false
        callerIdVisibility:
          type: "string"
          description: "Configures the user presence visibility. When the `allowSeeMyPresence` parameter is set to `true`, \nthe following visibility options are supported via this parameter - All, None, PermittedUsers\n"
          enum:
          - "All"
          - "None"
          - "PermittedUsers"
    ActiveCallInfoWithoutSIP:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call"
        direction:
          type: "string"
          description: "Call direction"
          enum:
          - "Inbound"
          - "Outbound"
        queueCall:
          type: "boolean"
          description: "Identifies if a call belongs to the call queue"
        from:
          type: "string"
          description: "Phone number or extension number of a caller. For GCM transport type '_from' property should be used"
        fromName:
          type: "string"
          description: "Name of a caller"
        to:
          type: "string"
          description: "Phone number or extension number of a callee"
        toName:
          type: "string"
          description: "Name of a callee"
        partyId:
          type: "string"
          description: "Internal identifier of a call party"
        startTime:
          type: "string"
          format: "date-time"
          description: "Time when the call is actually started"
        sessionId:
          type: "string"
          description: "Internal identifier of a call session"
        telephonySessionId:
          type: "string"
          description: "Telephony identifier of a call session"
        telephonyStatus:
          type: "string"
          description: "Telephony call status"
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        terminationType:
          type: "string"
          description: "Type of call termination. Supported for calls in 'NoCall' status. If the returned termination type is 'intermediate' it means the call is not actually ended, the connection is established on one of the devices"
          enum:
          - "final"
          - "intermediate"
        callInfo:
          $ref: "#/components/schemas/CallInfoCQ"
    ExtensionPresenceEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension. Optional parameter"
          default: "~"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status. Returned if telephony status is changed."
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        sequence:
          type: "integer"
          format: "int32"
          description: "Order number of a notification to state the chronology"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        userStatus:
          type: "string"
          description: "User-defined presence status (as previously published by the user)"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        dndStatus:
          type: "string"
          description: "Extended DnD (Do not Disturb) status"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
        allowSeeMyPresence:
          type: "boolean"
          description: "If `true` enables other extensions to see the extension presence status"
        ringOnMonitoredCall:
          type: "boolean"
          description: "If `true` enables to ring extension phone, if any user monitored by this extension is ringing"
        pickUpCallsOnHold:
          type: "boolean"
          description: "If `true` enables the extension user to pick up a monitored line on hold"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    PresenceInfoResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the presence resource"
        userStatus:
          type: "string"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
        dndStatus:
          type: "string"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptDepartmentCalls"
          - "TakeDepartmentCallsOnly"
          - "DoNotAcceptAnyCalls"
          - "Unknown"
        message:
          maxLength: 75
          minLength: 0
          type: "string"
        allowSeeMyPresence:
          type: "boolean"
          default: false
        callerIdVisibility:
          type: "string"
          description: "Configures the user presence visibility. When the `allowSeeMyPresence` parameter is set to `true`, \nthe following visibility options are supported via this parameter - All, None, PermittedUsers\n"
          enum:
          - "All"
          - "None"
          - "PermittedUsers"
        ringOnMonitoredCall:
          type: "boolean"
          default: false
        pickUpCallsOnHold:
          type: "boolean"
          default: false
        activeCalls:
          type: "array"
          items:
            $ref: "#/components/schemas/ActiveCallInfo"
        extension:
          $ref: "#/components/schemas/GetPresenceExtensionInfo"
        meetingStatus:
          type: "string"
          description: "Meetings presence status"
          enum:
          - "Connected"
          - "Disconnected"
        telephonyStatus:
          type: "string"
          description: "Telephony presence status. Returned if telephony status is changed"
          enum:
          - "NoCall"
          - "CallConnected"
          - "Ringing"
          - "OnHold"
          - "ParkedCall"
        presenceStatus:
          type: "string"
          description: "Aggregated presence status, calculated from a number of sources"
          enum:
          - "Offline"
          - "Busy"
          - "Available"
    DetailedExtensionPresenceEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter name"
        timestamp:
          type: "string"
          format: "date-time"
          description: "Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/DetailedExtensionPresenceEventBody"
    MissedCallEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        pn_apns:
          $ref: "#/components/schemas/APNSInfo"
        event:
          type: "string"
          description: "Event filter name"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        timestamp:
          type: "string"
          format: "date-time"
          description: "The timestamp of a call action in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example 2016-03-10T18:07:52.534Z"
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
          default: "~"
        action:
          type: "string"
          description: "Calling action, for example 'StartRing'"
        sessionId:
          type: "string"
          description: "Identifier of a call session"
        serverId:
          type: "string"
          description: "Identifier of a server"
        from:
          type: "string"
          description: "Phone number of a caller. For GCM transport type '_from' property should be used"
        fromName:
          type: "string"
          description: "Caller name"
        to:
          type: "string"
          description: "Phone number of a callee"
        toName:
          type: "string"
          description: "Callee name"
        sid:
          type: "string"
          description: "Unique identifier of a session"
        toUrl:
          type: "string"
          description: "SIP proxy registration name"
        srvLvl:
          type: "string"
          description: "User data"
        srvLvlExt:
          type: "string"
          description: "User data"
        recUrl:
          type: "string"
          description: "File containing recorded caller name"
        pn_ttl:
          type: "integer"
          format: "int32"
          description: "Notification lifetime value in seconds, the default value is 30 seconds"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    FaxResponseTo:
      type: "object"
      properties:
        recipientId:
          type: "string"
          description: "Internal identifier of a fax recipient"
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 (with '+' sign) format"
          example: "+18661234567"
        name:
          type: "string"
          description: "Name of a fax recipient listed on a fax cover page"
        messageStatus:
          type: "string"
          $ref: "#/components/schemas/MessageStatusEnum"
        location:
          type: "string"
          description: |
            Contains party location (city, state) if one can be determined
            from phoneNumber. This property is filled only when phoneNumber is not
            empty and server can calculate location information from it (for example,
            this information is unavailable for US toll-free numbers)
    MessageAttachmentInfoIntId:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of a message attachment"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message attachment"
        type:
          type: "string"
          description: "Type of message attachment"
          enum:
          - "AudioRecording"
          - "AudioTranscription"
          - "Text"
          - "SourceDocument"
          - "RenderedDocument"
          - "MmsAttachment"
        contentType:
          type: "string"
          description: "MIME type for a given attachment, for instance 'audio/wav'"
        filename:
          type: "string"
          description: "Name of a file attached"
        size:
          type: "integer"
          format: "int32"
          description: "Size of an attachment in bytes"
    FaxRequestTo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 (with '+' sign) format"
          example: "+18661234567"
        name:
          type: "string"
          description: "Name of a fax recipient that will be listed on a fax cover page"
    FaxResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          description: "Internal identifier of a message"
          format: "int64"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message"
        type:
          type: "string"
          description: "Message type - 'Fax'"
          enum:
          - "Fax"
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoResponseFrom"
        to:
          type: "array"
          description: "Recipient information"
          items:
            $ref: "#/components/schemas/FaxResponseTo"
        creationTime:
          type: "string"
          description: |
            Message creation date/time in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        attachments:
          type: "array"
          description: "List of message attachments"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfoIntId"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        faxResolution:
          $ref: "#/components/schemas/FaxResolutionEnum"
        faxPageCount:
          type: "integer"
          format: "int32"
          description: "Page count in a fax message"
        lastModifiedTime:
          type: "string"
          description: |
            Date/time when the message was modified on server in ISO 8601
            format including timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        coverIndex:
          type: "integer"
          format: "int32"
          description: |
            Cover page identifier. If `coverIndex` is set to '0' (zero), a cover
            page is not attached. For a list of available cover page identifiers
            (1-13) please call the Fax Cover Pages method. If not specified,
            the default cover page is attached (which is configured in
            'Outbound Fax Settings')
        coverPageText:
          type: "string"
          description: |
            Cover page text, entered by a fax sender and printed on a
            cover page. Maximum length is limited to 1024 symbols
    RingOutStatusInfo:
      type: "object"
      properties:
        callStatus:
          type: "string"
          description: "Status of a call"
          enum:
          - "Invalid"
          - "Success"
          - "InProgress"
          - "Busy"
          - "NoAnswer"
          - "Rejected"
          - "GenericError"
          - "Finished"
          - "InternationalDisabled"
          - "DestinationBlocked"
          - "NotEnoughFunds"
          - "NoSuchUser"
        callerStatus:
          type: "string"
          description: "Status of a calling party"
          enum:
          - "Invalid"
          - "Success"
          - "InProgress"
          - "Busy"
          - "NoAnswer"
          - "Rejected"
          - "GenericError"
          - "Finished"
          - "InternationalDisabled"
          - "DestinationBlocked"
          - "NotEnoughFunds"
          - "NoSuchUser"
        calleeStatus:
          type: "string"
          description: "Status of a called party"
          enum:
          - "Invalid"
          - "Success"
          - "InProgress"
          - "Busy"
          - "NoAnswer"
          - "Rejected"
          - "GenericError"
          - "Finished"
          - "InternationalDisabled"
          - "DestinationBlocked"
          - "NotEnoughFunds"
          - "NoSuchUser"
      description: "RingOut status information"
    MakeRingOutCallerInfoRequestTo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 format"
      description: |
        Phone number of a called party. This number corresponds to the
        2nd leg of a RingOut call
    GetRingOutStatusResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a RingOut call"
        uri:
          type: "string"
          description: "Link to a RingOut call resource"
          format: "uri"
        status:
          $ref: "#/components/schemas/RingOutStatusInfo"
    MakeRingOutRequest:
      required:
      - "from"
      - "to"
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/MakeRingOutCallerInfoRequestFrom"
        to:
          $ref: "#/components/schemas/MakeRingOutCallerInfoRequestTo"
        callerId:
          $ref: "#/components/schemas/MakeRingOutCallerIdInfo"
        playPrompt:
          type: "boolean"
          description: |
            Audio prompt that a calling party hears when a call
            is connected
        country:
          $ref: "#/components/schemas/MakeRingOutCountryInfo"
    MakeRingOutCallerInfoRequestFrom:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 format"
        forwardingNumberId:
          type: "string"
          description: |
            Internal identifier of a forwarding number; returned in response
            as an 'id' field value. Can be specified instead of a `phoneNumber` attribute
      description: |
        Phone number of a caller. This number corresponds to the 1st
        leg of a RingOut call. This number can be one of the user's configured forwarding
        numbers or an arbitrary number
    MakeRingOutCountryInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Dialing plan country identifier"
      description: |
        Optional. Dialing plan country data. If not specified, then an extension
        home country is applied by default
    MakeRingOutCallerIdInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 format"
      description: "Phone number which will be displayed to the called party"
    BusinessSiteCollectionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/RolesBusinessSiteResource"
    RolesCountryResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        name:
          type: "string"
        isoCode:
          type: "string"
        callingCode:
          type: "string"
        emergencyCalling:
          type: "boolean"
        numberSelling:
          type: "boolean"
        loginAllowed:
          type: "boolean"
        freeSoftphoneLine:
          type: "boolean"
        signupAllowed:
          type: "boolean"
    CurrencyResource:
      type: "object"
      properties:
        id:
          type: "string"
        code:
          type: "string"
        name:
          type: "string"
        symbol:
          type: "string"
        minorSymbol:
          type: "string"
    BusinessSiteCollectionRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/RolesBusinessSiteResource"
    RolesBusinessSiteResource:
      type: "object"
      required:
      - "id"
      properties:
        uri:
          type: "string"
          description: "Link to a business site resource"
        id:
          type: "string"
        email:
          type: "string"
          format: "email"
        code:
          type: "string"
        name:
          type: "string"
        extensionNumber:
          type: "string"
        callerIdName:
          type: "string"
        operator:
          $ref: "#/components/schemas/BasicExtensionInfoResource"
        regionalSettings:
          $ref: "#/components/schemas/RolesRegionalSettingsResource"
        businessAddress:
          $ref: "#/components/schemas/ContactAddressInfoResource"
    BasicExtensionInfoResource:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        extensionNumber:
          type: "string"
    ContactAddressInfoResource:
      type: "object"
      properties:
        street:
          type: "string"
        city:
          type: "string"
        state:
          type: "string"
        zip:
          type: "string"
        country:
          type: "string"
    RolesTimezoneResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        name:
          type: "string"
        description:
          type: "string"
        bias:
          type: "string"
    RolesLanguageResource:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        localeCode:
          type: "string"
    RolesRegionalSettingsResource:
      type: "object"
      properties:
        timezone:
          $ref: "#/components/schemas/RolesTimezoneResource"
        homeCountry:
          $ref: "#/components/schemas/RolesCountryResource"
        language:
          $ref: "#/components/schemas/RolesLanguageResource"
        greetingLanguage:
          $ref: "#/components/schemas/RolesLanguageResource"
        formattingLocale:
          $ref: "#/components/schemas/RolesLanguageResource"
        timeFormat:
          type: "string"
          enum:
          - "12h"
          - "24h"
        currency:
          $ref: "#/components/schemas/CurrencyResource"
    UserContactsGroupsInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of address book groups"
      description: "Information on address book groups"
    UserContactsNavigationInfoUri:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
      description: "Canonical URI for a corresponding page of a list"
    ContactList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of user personal contacts"
        records:
          type: "array"
          description: |
            List of personal contacts from the extension address book
          items:
            $ref: "#/components/schemas/PersonalContactResource"
        navigation:
          $ref: "#/components/schemas/UserContactsNavigationInfo"
        paging:
          $ref: "#/components/schemas/UserContactsPagingInfo"
        groups:
          $ref: "#/components/schemas/UserContactsGroupsInfo"
    PersonalContactRequest:
      type: "object"
      properties:
        firstName:
          type: "string"
          description: "First name of a contact"
          example: "Charlie"
        lastName:
          type: "string"
          description: "Last name of a contact"
          example: "Williams"
        middleName:
          type: "string"
          description: "Middle name of a contact"
          example: "J"
        nickName:
          type: "string"
          description: "Nick name of a contact"
          example: "The Boss"
        company:
          type: "string"
          description: "Company name of a contact"
          example: "Example, Inc."
        jobTitle:
          type: "string"
          description: "Job title of a contact"
          example: "CEO"
        email:
          type: "string"
          format: "email"
          description: "Email of a contact"
          example: "charlie.williams@example.com"
        email2:
          type: "string"
          format: "email"
          description: "Second email of a contact"
          example: "charlie-example@gmail.com"
        email3:
          type: "string"
          format: "email"
          description: "Third email of a contact"
          example: "theboss-example@hotmail.com"
        birthday:
          type: "string"
          description: "Date of birth of a contact"
          format: "date-time"
        webPage:
          type: "string"
          format: "uri"
          description: "Contact home page URL"
          example: "http://www.example.com"
        notes:
          type: "string"
          description: "Notes for a contact"
          example: "#1 Customer"
        homePhone:
          type: "string"
          description: "Home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        homePhone2:
          type: "string"
          description: "Second home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone:
          type: "string"
          description: "Business phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone2:
          type: "string"
          description: "Second business phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        mobilePhone:
          type: "string"
          description: "Mobile phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessFax:
          type: "string"
          description: "Business fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        companyPhone:
          type: "string"
          description: "Company number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        assistantPhone:
          type: "string"
          description: "Phone number of a contact assistant in e.164 (with \"+\") format"
          example: "+15551234567"
        carPhone:
          type: "string"
          description: "Car phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherPhone:
          type: "string"
          description: "Other phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherFax:
          type: "string"
          description: "Other fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        callbackPhone:
          type: "string"
          description: "Callback phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        homeAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        businessAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        otherAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        ringtoneIndex:
          type: "string"
          description: "Contact ringtone. Max number of symbols is 64"
    ContactAddressInfo:
      type: "object"
      properties:
        street:
          type: "string"
          description: "Street address"
          example: "20 Davis Dr."
        city:
          type: "string"
          description: "City name"
          example: "Belmont"
        country:
          type: "string"
          description: "Country name"
        state:
          type: "string"
          description: "State/province name"
          example: "CA"
        zip:
          type: "string"
          description: "Zip/Postal code"
          example: "94002"
    PersonalContactResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a contact"
          example: "https://platform.ringcentral.com/restapi/v1.0/account/230919004/extension/230919004/address-book/contact/623045004"
        availability:
          type: "string"
          description: |
            This property has a special meaning only on Address Book Sync
            (e.g. a contact can be `Deleted`). For simple contact list reading it
            has always the default value - `Alive`
          enum:
          - "Alive"
          - "Deleted"
          - "Purged"
        email:
          type: "string"
          format: "email"
          description: "Email of a contact"
          example: "charlie.williams@example.com"
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of availability contact"
          example: 623045004
        notes:
          type: "string"
          description: "Notes for a contact"
          example: "#1 Customer"
        company:
          type: "string"
          description: "Company name of a contact"
          example: "Example, Inc."
        firstName:
          type: "string"
          description: "First name of a contact"
          example: "Charlie"
        lastName:
          type: "string"
          description: "Last name of a contact"
          example: "Williams"
        jobTitle:
          type: "string"
          description: "Job title of a contact"
          example: "CEO"
        birthday:
          type: "string"
          description: "Date of birth of a contact"
          format: "date-time"
        webPage:
          type: "string"
          format: "uri"
          description: "The contact home page URL"
          example: "http://www.example.com"
        middleName:
          type: "string"
          description: "Middle name of a contact"
          example: "J"
        nickName:
          type: "string"
          description: "Nick name of a contact"
          example: "The Boss"
        email2:
          type: "string"
          format: "email"
          description: "Second email of a contact"
          example: "charlie-example@gmail.com"
        email3:
          type: "string"
          format: "email"
          description: "Third email of a contact"
          example: "theboss-example@hotmail.com"
        homePhone:
          type: "string"
          description: "Home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        homePhone2:
          type: "string"
          description: "Second home phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone:
          type: "string"
          description: "Business phone of the contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessPhone2:
          type: "string"
          description: "Second business phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        mobilePhone:
          type: "string"
          description: "Mobile phone of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessFax:
          type: "string"
          description: "Business fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        companyPhone:
          type: "string"
          description: "Company number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        assistantPhone:
          type: "string"
          description: "Phone number of a contact assistant in e.164 (with \"+\") format"
          example: "+15551234567"
        carPhone:
          type: "string"
          description: "Car phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherPhone:
          type: "string"
          description: "Other phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        otherFax:
          type: "string"
          description: "Other fax number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        callbackPhone:
          type: "string"
          description: "Callback phone number of a contact in e.164 (with \"+\") format"
          example: "+15551234567"
        businessAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        homeAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        otherAddress:
          $ref: "#/components/schemas/ContactAddressInfo"
        ringtoneIndex:
          type: "string"
          description: "Contact ringtone. Max number of symbols is 64"
    UserContactsNavigationInfo:
      type: "object"
      properties:
        firstPage:
          $ref: "#/components/schemas/UserContactsNavigationInfoUri"
        nextPage:
          $ref: "#/components/schemas/UserContactsNavigationInfoUri"
        previousPage:
          $ref: "#/components/schemas/UserContactsNavigationInfoUri"
        lastPage:
          $ref: "#/components/schemas/UserContactsNavigationInfoUri"
      description: "Information on navigation"
    UserContactsPagingInfo:
      type: "object"
      properties:
        page:
          type: "integer"
          description: |
            Current page number. 1-indexed, so the first page is 1
            by default. May be omitted if the result is empty (because non-existent page
            was specified or perPage=0 was requested)
          format: "int32"
        perPage:
          type: "integer"
          description: |
            Current page size, describes how many items each page contains.
            Default value is 100. Maximum value is 1000. If perPage value in the request
            is greater than 1000, the maximum value (1000) is applied
          format: "int32"
        pageStart:
          type: "integer"
          description: |
            Zero-based number of the first element on the current page.
            Omitted if a page is omitted or the result is empty
          format: "int32"
        pageEnd:
          type: "integer"
          description: |
            Zero-based index of the last element on the current page.
            Omitted if a page is omitted or the result is empty
          format: "int32"
        totalPages:
          type: "integer"
          description: |
            Total number of pages in a dataset. May be omitted for
            some resources due to performance reasons
          format: "int32"
        totalElements:
          type: "integer"
          description: |
            Total number of elements in a dataset. May be omitted for
            some resource due to performance reasons
          format: "int32"
      description: "Information on paging"
    AssistedUserResource:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
    AssistedUsersResource:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/AssistedUserResource"
    AssistantsResource:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/AssistantResource"
    AssistantResource:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
    SmsRequestCountryInfo:
      type: "object"
      description: "Target number country information. Either `id` or `isoCode` can be specified."
      properties:
        id:
          type: "string"
          description: "Internal identifier of a country"
        isoCode:
          type: "string"
          minLength: 2
          maxLength: 2
          description: "ISO 3166-1 alpha-2 code of a country"
    GetSMSMessageInfoResponse:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a message"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a message"
        attachments:
          type: "array"
          description: "List of message attachments"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfo"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        conversationId:
          type: "integer"
          format: "int64"
          description: |
            SMS and Pager only. Identifier of a conversation that the message
            belongs to
        conversation:
          $ref: "#/components/schemas/ConversationInfo"
        creationTime:
          type: "string"
          description: |
            Message creation date/time in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        deliveryErrorCode:
          type: "string"
          description: "SMS only. Delivery error code returned by gateway"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoResponseFrom"
        lastModifiedTime:
          type: "string"
          description: |
            Date/time when the message was modified on server in ISO
            8601 format including timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        smsDeliveryTime:
          type: "string"
          description: |
            SMS only. The date/time when outbound SMS was delivered to
            recipient's handset in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z. It is filled only if
            the carrier sends a delivery receipt to RingCentral
          format: "date-time"
        smsSendingAttemptsCount:
          type: "integer"
          format: "int32"
          description: |
            SMS only. Number of attempts made to send an outbound SMS to
            the Gateway (if Gateway is temporary unavailable)
        subject:
          type: "string"
          description: |
            Message subject. For SMS and Pager messages it replicates message
            text which is also returned as an attachment
        to:
          type: "array"
          description: "Recipient information"
          items:
            $ref: "#/components/schemas/MessageStoreCallerInfoResponseTo"
        type:
          type: "string"
          description: "Message type"
          enum:
          - "Fax"
          - "SMS"
          - "VoiceMail"
          - "Pager"
          - "Text"
    CreateSMSMessage:
      required:
      - "from"
      - "text"
      - "to"
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoRequest"
        to:
          type: "array"
          description: "Message receiver(s) information. The `phoneNumber` value is required"
          items:
            $ref: "#/components/schemas/MessageStoreCallerInfoRequest"
        text:
          type: "string"
          description: |
            Text of a message. Max length is 1000 symbols (2-byte UTF-16
            encoded). If a character is encoded in 4 bytes in UTF-16 it is treated
            as 2 characters, thus restricting the maximum message length to 500 symbols
        country:
          $ref: "#/components/schemas/SmsRequestCountryInfo"
    MessageStoreCallerInfoRequest:
      type: "object"
      required:
      - "phoneNumber"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 format"
      description: |
        Message sender information. The `phoneNumber` value should be one
        the account phone numbers allowed to send the current type of messages
    AssignedRolesResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/AssignedRoleResource"
    NotificationSettingsUpdateRequest:
      type: "object"
      properties:
        emailAddresses:
          type: "array"
          description: |
            List of notification recipient email addresses. Should not be empty
            if 'includeManagers' parameter is set to false
          items:
            type: "string"
        smsEmailAddresses:
          type: "array"
          description: "List of notification recipient email addresses"
          items:
            type: "string"
        advancedMode:
          type: "boolean"
          description: |
            Specifies notifications settings mode. If `true` then advanced
            mode is on, it allows using different emails and/or phone numbers for
            each notification type. If `false` then basic mode is on. Advanced mode
            settings are returned in both modes, if specified once, but if basic mode
            is switched on, they are not applied
        voicemails:
          $ref: "#/components/schemas/VoicemailsInfo"
        inboundFaxes:
          $ref: "#/components/schemas/InboundFaxesInfo"
        outboundFaxes:
          $ref: "#/components/schemas/OutboundFaxesInfo"
        inboundTexts:
          $ref: "#/components/schemas/InboundTextsInfo"
        missedCalls:
          $ref: "#/components/schemas/MissedCallsInfo"
        includeManagers:
          type: "boolean"
          description: |
            Specifies if managers' emails are included in the list of emails to
            which notifications are sent. If not specified, then the value is `true`
          default: true
    NotificationSettings:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of notifications settings resource"
        emailRecipients:
          type: "array"
          description: |
            List of extensions specified as email notification recipients.
            Returned only for call queues where queue managers are assigned as user
            extensions.
          items:
            $ref: "#/components/schemas/EmailRecipientInfo"
        emailAddresses:
          type: "array"
          description: |
            List of notification recipient email addresses
          items:
            type: "string"
        includeManagers:
          type: "boolean"
          description: |
            Specifies if managers' emails are included in the list of emails to which
            notifications are sent
        smsEmailAddresses:
          type: "array"
          description: "List of notification recipient email addresses"
          items:
            type: "string"
        advancedMode:
          type: "boolean"
          description: |
            Specifies notifications settings mode. If `true` then advanced
            mode is on, it allows using different emails and/or phone numbers for
            each notification type. If `false` then basic mode is on. Advanced mode
            settings are returned in both modes, if specified once, but if basic mode
            is switched on, they are not applied
        voicemails:
          $ref: "#/components/schemas/VoicemailsInfo"
        inboundFaxes:
          $ref: "#/components/schemas/InboundFaxesInfo"
        outboundFaxes:
          $ref: "#/components/schemas/OutboundFaxesInfo"
        inboundTexts:
          $ref: "#/components/schemas/InboundTextsInfo"
        missedCalls:
          $ref: "#/components/schemas/MissedCallsInfo"
    InboundFaxesInfo:
      type: "object"
      properties:
        notifyByEmail:
          type: "boolean"
          description: "Email notification flag"
        notifyBySms:
          type: "boolean"
          description: "SMS notification flag"
        advancedEmailAddresses:
          type: "array"
          description: |
            List of recipient email addresses for inbound fax notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        advancedSmsEmailAddresses:
          type: "array"
          description: |
            List of recipient phone numbers for inbound fax notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        includeAttachment:
          type: "boolean"
          description: |
            Indicates whether fax should be attached to email
        markAsRead:
          type: "boolean"
          description: |
            Indicates whether email should be automatically marked as read
    InboundTextsInfo:
      type: "object"
      properties:
        notifyByEmail:
          type: "boolean"
          description: "Email notification flag"
        notifyBySms:
          type: "boolean"
          description: "SMS notification flag"
        advancedEmailAddresses:
          type: "array"
          description: |
            List of recipient email addresses for inbound text message
            notifications. Returned if specified, in both modes (advanced/basic).
            Applied in advanced mode only
          items:
            type: "string"
        advancedSmsEmailAddresses:
          type: "array"
          description: |
            List of recipient phone numbers for inbound text message notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
    OutboundFaxesInfo:
      type: "object"
      properties:
        notifyByEmail:
          type: "boolean"
          description: "Email notification flag"
        notifyBySms:
          type: "boolean"
          description: "SMS notification flag"
        advancedEmailAddresses:
          type: "array"
          description: |
            List of recipient email addresses for outbound fax notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        advancedSmsEmailAddresses:
          type: "array"
          description: |
            List of recipient phone numbers for outbound fax notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
    MissedCallsInfo:
      type: "object"
      properties:
        notifyByEmail:
          type: "boolean"
          description: "Email notification flag"
        notifyBySms:
          type: "boolean"
          description: "SMS notification flag"
        advancedEmailAddresses:
          type: "array"
          description: |
            List of recipient email addresses for missed call notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        advancedSmsEmailAddresses:
          type: "array"
          description: |
            List of recipient phone numbers for missed call notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
    VoicemailsInfo:
      type: "object"
      properties:
        notifyByEmail:
          type: "boolean"
          description: "Email notification flag"
        notifyBySms:
          type: "boolean"
          description: "SMS notification flag"
        advancedEmailAddresses:
          type: "array"
          description: |
            List of recipient email addresses for voicemail notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        advancedSmsEmailAddresses:
          type: "array"
          description: |
            List of recipient phone numbers for voicemail notifications.
            Returned if specified, in both modes (advanced/basic). Applied in advanced
            mode only
          items:
            type: "string"
        includeAttachment:
          type: "boolean"
          description: |
            Indicates whether voicemail should be attached to email
        includeTranscription:
          type: "boolean"
          description: |
            Specifies whether to add voicemail transcription or not
        markAsRead:
          type: "boolean"
          description: |
            Indicates whether a voicemail should be automatically marked
            as read
    EmailRecipientInfo:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        fullName:
          type: "string"
          description: "User full name"
        extensionNumber:
          type: "string"
          description: "User extension number"
        status:
          type: "string"
          description: "Current state of an extension"
          enum:
          - "Enabled"
          - "Disable"
          - "NotActivated"
          - "Unassigned"
        emailAddresses:
          type: "array"
          description: |
            List of user email addresses from extension notification settings.
            By default, main email address from contact information is returned
          items:
            type: "string"
        permission:
          type: "string"
          description: "Call queue manager permission"
          enum:
          - "FullAccess"
          - "Messages"
          - "MemberManagement"
    CreateMMSMessage:
      required:
      - "attachments"
      - "from"
      - "to"
      type: "object"
      properties:
        from:
          $ref: "#/components/schemas/MessageStoreCallerInfoRequest"
        to:
          type: "array"
          description: "Message receiver(s) information. The `phoneNumber` value is required"
          items:
            $ref: "#/components/schemas/MessageStoreCallerInfoRequest"
        text:
          type: "string"
          description: |
            Text of a message. Max length is 1000 symbols (2-byte UTF-16
            encoded). If a character is encoded in 4 bytes in UTF-16 it is treated
            as 2 characters, thus restricting the maximum message length to 500 symbols
        country:
          $ref: "#/components/schemas/SmsRequestCountryInfo"
        attachments:
          type: "array"
          description: "Media file(s) to upload"
          items:
            type: "string"
            format: "binary"
    ReasonInfo:
      type: "object"
      properties:
        code:
          type: "string"
          description: "Reason code"
          enum:
          - "ServicePlanLimitation"
          - "AccountLimitation"
          - "ExtensionTypeLimitation"
          - "ExtensionLimitation"
          - "InsufficientPermissions"
          - "ConfigurationLimitation"
        message:
          type: "string"
          description: "Reason description"
        permission:
          type: "string"
      description: |
        Reason for the feature unavailability. Returned only if `available`
        is set to `false`
    ParamsInfo:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Parameter name"
        value:
          type: "string"
          description: "Parameter value"
    FeatureList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/FeatureInfo"
    FeatureInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a feature"
        available:
          type: "boolean"
          description: |
            Specifies if the feature is available for the current user
            according to services enabled for the account, type, entitlements and
            permissions of the extension. If the authorized user gets features of
            the other extension, only features that can be delegated are returned
            (such as configuration by administrators).
        params:
          type: "array"
          items:
            $ref: "#/components/schemas/ParamsInfo"
        reason:
          $ref: "#/components/schemas/ReasonInfo"
    MessagingNavigationInfo:
      type: "object"
      properties:
        firstPage:
          $ref: "#/components/schemas/MessagingNavigationInfoURI"
        nextPage:
          $ref: "#/components/schemas/MessagingNavigationInfoURI"
        previousPage:
          $ref: "#/components/schemas/MessagingNavigationInfoURI"
        lastPage:
          $ref: "#/components/schemas/MessagingNavigationInfoURI"
      description: "Information on navigation"
    MessagingNavigationInfoURI:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
      description: "Canonical URI for the corresponding page of the list"
    AlertInfo:
      type: "object"
      properties:
        title:
          type: "string"
          description: "Title of a message"
        body:
          type: "string"
          description: "Message Description"
      description: "Alert information"
    InboundMessageEvent:
      type: "object"
      properties:
        aps:
          $ref: "#/components/schemas/NotificationInfo"
        messageId:
          type: "string"
          description: "Internal identifier of a message"
        conversationId:
          type: "string"
          description: "Internal identifier of a conversation"
        from:
          type: "string"
          description: "Sender phone number. For GCM transport type '_from' property should be used"
        to:
          type: "string"
          description: "Receiver phone number"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
    NotificationRecipientInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 (with '+' sign) format"
        extensionNumber:
          type: "string"
          description: "Extension number"
        target:
          type: "boolean"
          description: |
            True specifies that message is sent exactly to this recipient.
            Returned in to field for group MMS. Useful if one extension has several
            phone numbers'
        location:
          type: "string"
          description: |
            Contains party location (city, state) if one can be determined
            from phoneNumber. This property is filled only when phoneNumber is not
            empty and server can calculate location information from it (for example,
            this information is unavailable for US toll-free numbers)
        name:
          type: "string"
          description: |
            Symbolic name associated with a caller/callee. If the phone
            does not belong to the known extension, only the location is returned,
            the name is not determined then
    SenderInfo:
      type: "object"
      properties:
        phoneNumber:
          type: "string"
          description: "Phone number in E.164 (with '+' sign) format"
        extensionNumber:
          type: "string"
          description: "Extension number"
        location:
          type: "string"
          description: |
            Contains party location (city, state) if one can be determined
            from phoneNumber. This property is filled only when phoneNumber is not
            empty and server can calculate location information from it (for example,
            this information is unavailable for US toll-free numbers)
        name:
          type: "string"
          description: |
            Symbolic name associated with a caller/callee. If the phone
            does not belong to the known extension, only the location is returned,
            the name is not determined then
      description: "Extension Type. For GCM transport type '_from' property should be used || Message sender information"
    InstantMessageEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/InstantMessageEventBody"
    NotificationInfo:
      type: "object"
      properties:
        alert:
          $ref: "#/components/schemas/AlertInfo"
        badge:
          type: "string"
          description: "Number of incoming messages"
        sound:
          type: "string"
          description: "Message sound"
        content-available:
          type: "string"
          description: "Content availability"
        category:
          type: "string"
          description: "Category of a message"
      description: "Information on a notification"
    GetMessageList:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a list of user messages"
        records:
          type: "array"
          description: "List of records with message information"
          items:
            $ref: "#/components/schemas/GetMessageInfoResponse"
        navigation:
          $ref: "#/components/schemas/MessagingNavigationInfo"
        paging:
          $ref: "#/components/schemas/MessagingPagingInfo"
    InstantMessageEventBody:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a message"
        to:
          type: "array"
          description: "Message receiver(s) information"
          items:
            $ref: "#/components/schemas/NotificationRecipientInfo"
        from:
          $ref: "#/components/schemas/SenderInfo"
        type:
          type: "string"
          description: "Type of message. The default value is 'SMS'"
        creationTime:
          type: "string"
          description: |
            Message creation date/time in ISO 8601 format including timezone,
            for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: |
            Date/time when the message was modified in ISO 8601 format including
            timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        attachments:
          type: "array"
          description: "Message attachment data"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfo"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        subject:
          type: "string"
          description: |
            Message subject. It replicates message text which is also returned
            as an attachment
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        conversationId:
          type: "string"
          description: |
            Deprecated. Identifier of a conversation the message belongs
            to
        conversation:
          $ref: "#/components/schemas/ConversationInfo"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
      description: "Notification payload body"
    MessagingPagingInfo:
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
          description: |
            Current page number. 1-indexed, so the first page is 1
            by default. May be omitted if result is empty (because non-existent page
            was specified or perPage=0 was requested)
        perPage:
          type: "integer"
          format: "int32"
          description: |
            Current page size, describes how many items are in each page.
            Default value is 100. Maximum value is 1000. If perPage value in the request
            is greater than 1000, the maximum value (1000) is applied
        pageStart:
          type: "integer"
          format: "int32"
          description: |
            Zero-based number of the first element on the current page.
            Omitted if the page is omitted or result is empty
        pageEnd:
          type: "integer"
          format: "int32"
          description: |
            Zero-based index of the last element on the current page.
            Omitted if the page is omitted or result is empty
        totalPages:
          type: "integer"
          format: "int32"
          description: |
            Total number of pages in a dataset. May be omitted for
            some resources due to performance reasons
        totalElements:
          type: "integer"
          format: "int32"
          description: |
            Total number of elements in a dataset. May be omitted for
            some resource due to performance reasons
      description: "Information on paging"
    MessageEventBody:
      type: "object"
      properties:
        extensionId:
          type: "string"
          description: "Internal identifier of an extension"
        lastUpdated:
          type: "string"
          description: |
            Date/time when the message was last modified in ISO 8601 format
            including timezone, for example 2016-03-10T18:07:52.534Z
          format: "date-time"
        changes:
          type: "array"
          description: "Message Changes"
          items:
            $ref: "#/components/schemas/MessageChanges"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
      description: "Notification payload body"
    MessageEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: |
            Date/time of sending a notification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z*
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        body:
          $ref: "#/components/schemas/MessageEventBody"
    MessageChanges:
      type: "object"
      properties:
        type:
          $ref: "#/components/schemas/MessageTypeEnum"
        newCount:
          type: "integer"
          format: "int32"
          description: "Number of new messages. Can be omitted if the value is zero"
        updatedCount:
          type: "integer"
          format: "int32"
          description: "Number of updated messages. Can be omitted if the value is zero"
        newMessageIds:
          description: "Identifiers of the new messages, applicable for all message types"
          type: "array"
          items:
            type: "integer"
            format: "int64"
    DeleteMessageBulkRequest:
      type: "array"
      minItems: 1
      items:
        type: "string"
        description: "Internal identifier of a message to be deleted"
    PatchMessageBulkRequest:
      type: "array"
      minItems: 1
      items:
        allOf:
        - $ref: "#/components/schemas/MultipartRequestEntryBase"
        - type: "object"
          required:
          - "body"
          properties:
            body:
              $ref: "#/components/schemas/PatchMessageRequest"
    GetMessageInfoMultiResponse:
      allOf:
      - $ref: "#/components/schemas/MultipartResponseEntryBase"
      - type: "object"
        required:
        - "body"
        properties:
          body:
            $ref: "#/components/schemas/GetMessageInfoResponse"
    UpdateMessageRequest:
      type: "object"
      required:
      - "readStatus"
      properties:
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
    MultipartResponseEntryBase:
      type: "object"
      required:
      - "resourceId"
      - "status"
      properties:
        resourceId:
          type: "string"
          description: "Internal identifier of a resource"
          example: "1724099032020"
        status:
          type: "integer"
          format: "int32"
          description: "HTTP status code of an operation on given resource"
          example: 200
    VoicemailMessageEvent:
      type: "object"
      properties:
        uuid:
          type: "string"
          description: "Universally unique identifier of a notification"
        event:
          type: "string"
          description: "Event filter URI"
        timestamp:
          type: "string"
          description: "Date/time of sending a notification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*"
        subscriptionId:
          type: "string"
          description: "Internal identifier of a subscription"
        ownerId:
          type: "string"
          description: "Internal identifier of a subscription owner extension"
        body:
          $ref: "#/components/schemas/VoicemailMessageEventBody"
    PatchMessageRequest:
      type: "object"
      description: "Either `readStatus` or `availability` or both are required"
      properties:
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
    UpdateMessageBulkRequest:
      type: "array"
      minItems: 1
      items:
        allOf:
        - $ref: "#/components/schemas/MultipartRequestEntryBase"
        - type: "object"
          required:
          - "body"
          properties:
            body:
              $ref: "#/components/schemas/UpdateMessageRequest"
    GetMessageMultiResponse:
      type: "array"
      items:
        $ref: "#/components/schemas/GetMessageInfoMultiResponse"
    VoicemailMessageEventBody:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a message"
        to:
          type: "array"
          description: "Message receiver(s) information"
          items:
            $ref: "#/components/schemas/NotificationRecipientInfo"
        from:
          $ref: "#/components/schemas/SenderInfo"
        type:
          type: "string"
          description: "Type of message"
          enum:
          - "Voicemail"
        creationTime:
          type: "string"
          format: "date-time"
          description: |
            Message creation date/time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2019-03-10T18:07:52.534Z*
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: |
            Date/time when a message was modified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2019-03-10T18:07:52.534Z*
        readStatus:
          $ref: "#/components/schemas/MessageReadStatusEnum"
        priority:
          $ref: "#/components/schemas/MessagePriorityEnum"
        attachments:
          type: "array"
          description: "Message attachment data"
          items:
            $ref: "#/components/schemas/MessageAttachmentInfo"
        direction:
          $ref: "#/components/schemas/MessageDirectionEnum"
        availability:
          $ref: "#/components/schemas/MessageAvailabilityEnum"
        subject:
          type: "string"
          description: "Message subject. It replicates message text which is also returned as an attachment"
        messageStatus:
          $ref: "#/components/schemas/MessageStatusEnum"
        vmTranscriptionStatus:
          type: "string"
          description: |
            Status of a voicemail to text transcription. Specifies if a voicemail message transcription is already completed or not
            If 'VoicemailToText' feature is not activated for account, the 'NotAvailable' value is returned
          enum:
          - "NotAvailable"
          - "InProgress"
          - "TimedOut"
          - "Completed"
          - "CompletedPartially"
          - "Failed"
          - "Unknown"
      description: "Notification payload body"
    MultipartRequestEntryBase:
      type: "object"
      properties:
        resourceId:
          type: "string"
          description: "Internal identifier of a resource (required when alternative syntax with '*' is used)"
          example: "1724099032020"
    CustomUserGreetingInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a custom user greeting"
        id:
          type: "string"
          description: "Internal identifier of a custom user greeting"
        type:
          type: "string"
          description: "Type of custom user greeting"
          enum:
          - "Introductory"
          - "Announcement"
          - "InterruptPrompt"
          - "ConnectingAudio"
          - "ConnectingMessage"
          - "Voicemail"
          - "Unavailable"
          - "HoldMusic"
          - "PronouncedName"
          - "TemplateGreeting"
        contentType:
          type: "string"
          description: "Content media type"
          enum:
          - "audio/mpeg"
          - "audio/wav"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to a greeting content (audio file)"
        answeringRule:
          $ref: "#/components/schemas/CustomGreetingAnsweringRuleInfo"
    UpdateUnifiedPresence:
      type: "object"
      properties:
        glip:
          $ref: "#/components/schemas/UpdateUnifiedPresenceGlip"
        telephony:
          $ref: "#/components/schemas/UpdateUnifiedPresenceTelephony"
    UnifiedPresenceList:
      type: "array"
      items:
        $ref: "#/components/schemas/UnifiedPresenceListEntry"
    UnifiedPresence:
      type: "object"
      properties:
        status:
          type: "string"
          description: "Aggregated presence status of the user"
          enum:
          - "Available"
          - "Offline"
          - "DND"
          - "Busy"
        glip:
          $ref: "#/components/schemas/UnifiedPresenceGlip"
        telephony:
          $ref: "#/components/schemas/UnifiedPresenceTelephony"
        meeting:
          $ref: "#/components/schemas/UnifiedPresenceMeeting"
    UnifiedPresenceListEntry:
      type: "object"
      properties:
        resourceId:
          type: "string"
          description: "Internal identifier of the resource"
        status:
          type: "integer"
          format: "int32"
          description: "Status code of resource retrieval"
        body:
          $ref: "#/components/schemas/UnifiedPresence"
    UpdateUnifiedPresenceTelephony:
      type: "object"
      properties:
        availability:
          type: "string"
          description: "Telephony DND status"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptQueueCalls"
    UnifiedPresenceGlip:
      type: "object"
      properties:
        status:
          type: "string"
          description: "Glip connection status calculated from all user's apps. Returned always for the requester's extension; returned for another users if their glip visibility is set to 'Visible'"
          enum:
          - "Offline"
          - "Online"
        visibility:
          type: "string"
          description: "Visibility setting allowing other users to see the user's Glip presence status; returned only for requester's extension"
          enum:
          - "Visible"
          - "Invisible"
        availability:
          type: "string"
          description: "Shows whether user wants to receive Glip notifications or not."
          enum:
          - "Available"
          - "DND"
      description: "Returned if *Glip* feature is switched on"
    UnifiedPresenceMeeting:
      type: "object"
      properties:
        status:
          type: "string"
          description: "Meeting status calculated from all user`s meetings"
          enum:
          - "NoMeeting"
          - "InMeeting"
      description: "Returned if *Meetings* feature is switched on"
    UpdateUnifiedPresenceGlip:
      type: "object"
      properties:
        visibility:
          type: "string"
          description: "Visibility setting allowing other users to see Glip presence status"
          enum:
          - "Visible"
          - "Invisible"
        availability:
          type: "string"
          description: "Availability setting specifying whether to receive Glip notifications or not"
          enum:
          - "Available"
          - "DND"
    UnifiedPresenceTelephony:
      type: "object"
      properties:
        status:
          type: "string"
          description: "Telephony status calculated from all user's phone numbers. Returned always for the requester's extension; returned for another users if their telephony visibility is set to 'Visible'"
          enum:
          - "NoCall"
          - "Ringing"
          - "CallConnected"
          - "OnHold"
          - "ParkedCall"
        visibility:
          type: "string"
          description: "Specifies if the user's phone presence status is visible to other users; returned only for requester's extension"
          enum:
          - "Visible"
          - "Invisible"
        availability:
          type: "string"
          description: "Telephony DND status. Returned if *DND* feature is switched on"
          enum:
          - "TakeAllCalls"
          - "DoNotAcceptAnyCalls"
          - "DoNotAcceptQueueCalls"
      description: "Returned if *BLF* feature is switched on"
    BlockedCallerGreetingInfo:
      type: "object"
      properties:
        type:
          type: "string"
          description: "Type of greeting"
        preset:
          $ref: "#/components/schemas/PresetInfo"
    CallerBlockingSettings:
      type: "object"
      properties:
        mode:
          type: "string"
          description: "Call blocking options: either specific or all calls and faxes"
          enum:
          - "Specific"
          - "All"
        noCallerId:
          type: "string"
          description: "Determines how to handle calls with no caller ID in `Specific` mode"
          enum:
          - "BlockCallsAndFaxes"
          - "BlockFaxes"
          - "Allow"
        payPhones:
          type: "string"
          description: "Blocking settings for pay phones"
          enum:
          - "Block"
          - "Allow"
        greetings:
          type: "array"
          description: "List of greetings played for blocked callers"
          items:
            $ref: "#/components/schemas/BlockedCallerGreetingInfo"
      description: "Returns the lists of blocked and allowed phone numbers"
    CallerBlockingSettingsUpdate:
      type: "object"
      description: "Returns the lists of blocked and allowed phone numbers"
      properties:
        mode:
          type: "string"
          description: "Call blocking options: either specific or all calls and faxes"
          enum:
          - "Specific"
          - "All"
        noCallerId:
          type: "string"
          description: "Determines how to handle calls with no caller ID in 'Specific' mode"
          enum:
          - "BlockCallsAndFaxes"
          - "BlockFaxes"
          - "Allow"
        payPhones:
          type: "string"
          description: "Blocking settings for pay phones"
          enum:
          - "Block"
          - "Allow"
        greetings:
          type: "array"
          description: "List of greetings played for blocked callers"
          items:
            $ref: "#/components/schemas/BlockedCallerGreetingInfo"
    BlockedNumberStatusEnum:
      type: "string"
      description: "Status of a phone number"
      default: "Blocked"
      enum:
      - "Blocked"
      - "Allowed"
    BlockedAllowedPhoneNumberInfo:
      type: "object"
      description: "Information on a blocked/allowed phone number"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a blocked/allowed phone number"
        id:
          type: "string"
          description: "Internal identifier of a blocked/allowed phone number"
        phoneNumber:
          type: "string"
          description: "A blocked/allowed phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format"
        label:
          type: "string"
          description: "Custom name of a blocked/allowed phone number"
        status:
          $ref: "#/components/schemas/BlockedNumberStatusEnum"
    BlockedAllowedPhoneNumbersList:
      type: "object"
      description: "List of blocked or allowed phone numbers"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a list of blocked/allowed phone numbers resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/BlockedAllowedPhoneNumberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    AddBlockedAllowedPhoneNumber:
      type: "object"
      description: "Updates either blocked or allowed phone number list with a new phone number."
      properties:
        phoneNumber:
          type: "string"
          description: "A blocked/allowed phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format"
        label:
          type: "string"
          description: "Custom name of a blocked/allowed phone number"
        status:
          $ref: "#/components/schemas/BlockedNumberStatusEnum"
    SyncInfo:
      type: "object"
      properties:
        syncType:
          type: "string"
          enum:
          - "FSync"
          - "ISync"
        syncToken:
          type: "string"
        syncTime:
          type: "string"
          format: "date-time"
        olderRecordsExist:
          type: "boolean"
          default: false
    AddressBookSync:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/PersonalContactResource"
        syncInfo:
          $ref: "#/components/schemas/SyncInfo"
        nextPageId:
          type: "integer"
          format: "int64"
        nextPageUri:
          type: "string"
          format: "uri"
    GetExtensionPhoneNumbersResponse:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the user phone number list resource"
        records:
          type: "array"
          description: "List of phone numbers"
          items:
            $ref: "#/components/schemas/UserPhoneNumberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    UserPhoneNumberExtensionInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of an extension"
        extensionNumber:
          type: "string"
          description: "Extension short number"
        partnerId:
          type: "string"
          description: |
            For Partner Applications Internal identifier of an extension
            created by partner. The RingCentral supports the mapping of accounts and
            stores the corresponding account ID/extension ID for each partner ID of
            a client application. In request URIs partner IDs are accepted instead
            of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
            Though in response URIs contain the corresponding account IDs and extension
            IDs. In all request and response bodies these values are reflected via
            partnerId attributes of account and extension
        type:
          type: "string"
          description: |
            Extension type. Please note that legacy 'Department' extension type
            corresponds to 'Call Queue' extensions in modern RingCentral product terminology
          enum:
          - "User"
          - "FaxUser"
          - "VirtualUser"
          - "DigitalUser"
          - "Department"
          - "Announcement"
          - "Voicemail"
          - "SharedLinesGroup"
          - "PagingOnly"
          - "IvrMenu"
          - "ApplicationExtension"
          - "ParkLocation"
          - "Site"
        contactCenterProvider:
          $ref: "#/components/schemas/ContactCenterProvider"
        name:
          type: "string"
          description: |
            Extension name. For user extension types the value is a combination
            of the specified first name and last name
      description: |
        Information on the extension, to which the phone number is assigned.
        Returned only for the request of Account phone number list
    PlatformPaymentType:
      type: "string"
      description: |
        Payment type. 'External' is returned for forwarded numbers
        which are not terminated in the RingCentral phone system
      enum:
      - "External"
      - "TollFree"
      - "Local"
      - "BusinessMobileNumberProvider"
      - "ExternalNumberProvider"
      - "ExternalNumberProviderTollFree"
    ContactCenterProvider:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the provider"
        name:
          type: "string"
          description: "Provider's name"
      description: |
        CCRN (Contact Center Routing Number) provider. If not specified
        then the default value 'InContact/North America' is used, its ID is '1'
    UserPhoneNumberInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the user phone number resource"
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a phone number"
        country:
          $ref: "#/components/schemas/CountryInfoBasicModel"
        contactCenterProvider:
          $ref: "#/components/schemas/ContactCenterProvider"
        extension:
          $ref: "#/components/schemas/UserPhoneNumberExtensionInfo"
        label:
          type: "string"
          description: "Custom user-defined name of a phone number, if any"
        location:
          type: "string"
          description: "Location (City, State). Filled for local US numbers"
        paymentType:
          $ref: "#/components/schemas/PlatformPaymentType"
        phoneNumber:
          type: "string"
          description: "Phone number"
        primary:
          type: "boolean"
          description: |
            Indicates if a phone number is primary, i.e. displayed as 'main number' and called by default
          example: false
        status:
          type: "string"
          description: |
            Status of a phone number. If the value is 'Normal', the phone
            number is ready to be used. Otherwise, it is an external number not yet
            ported to RingCentral
          enum:
          - "Normal"
          - "Pending"
          - "PortedIn"
          - "Temporary"
        type:
          type: "string"
          description: "Phone number type"
          enum:
          - "VoiceFax"
          - "FaxOnly"
          - "VoiceOnly"
        subType:
          type: "string"
          description: |
            Extension subtype, if applicable. For any unsupported subtypes the 'Unknown' value will be returned
          enum:
          - "VideoPro"
          - "VideoProPlus"
          - "DigitalSignage"
          - "Unknown"
          - "Emergency"
        usageType:
          type: "string"
          description: |
            Usage type of phone number. Numbers of 'NumberPool' type will not be returned for phone number list requests
          enum:
          - "MainCompanyNumber"
          - "AdditionalCompanyNumber"
          - "CompanyNumber"
          - "DirectNumber"
          - "CompanyFaxNumber"
          - "ForwardedNumber"
          - "ForwardedCompanyNumber"
          - "ContactCenterNumber"
          - "ConferencingNumber"
          - "NumberPool"
          - "BusinessMobileNumber"
          - "PartnerBusinessMobileNumber"
          - "IntegrationNumber"
        features:
          type: "array"
          description: "List of features of a phone number"
          items:
            type: "string"
            enum:
            - "CallerId"
            - "SmsSender"
            - "A2PSmsSender"
            - "MmsSender"
            - "InternationalSmsSender"
            - "Delegated"
    CallQueueOverflowSettingsRequestResource:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Call queue overflow status"
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/CallQueueIdResource"
    CallQueueOverflowSettings:
      type: "object"
      properties:
        enabled:
          type: "boolean"
          description: "Call queue overflow status"
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/CallQueueInfo"
    CallQueueIdResource:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a call queue"
    AutomaticLocationUpdatesTaskInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a task"
        status:
          type: "string"
          description: "Status of a task"
          enum:
          - "Accepted"
          - "InProgress"
          - "Completed"
          - "Failed"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Task creation time"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Time of the task latest modification"
        type:
          type: "string"
          description: "Type of task"
          enum:
          - "WirelessPointsBulkCreate"
          - "WirelessPointsBulkUpdate"
          - "SwitchesBulkCreate"
          - "SwitchesBulkUpdate"
        result:
          $ref: "#/components/schemas/TaskResultInfo"
    TaskResultRecord:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the created/updated element - wireless point or network switch"
        bssid:
          type: "string"
          description: "Unique 48-bit identifier of the wireless access point complying with MAC address conventions. Returned only for 'Wireless Points Bulk Create' tasks"
        chassisId:
          type: "string"
          description: "Unique identifier of a network switch. Returned only for 'Switches Bulk Create' tasks"
        port:
          type: "string"
          description: "Switch entity extension for better diversity. Should be used together with chassisId."
        status:
          type: "string"
          description: "Operation status"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/TaskResultRecordErrorsInfo"
    TaskResultInfo:
      type: "object"
      properties:
        records:
          type: "array"
          description: "Detailed task results by elements from initial request"
          items:
            $ref: "#/components/schemas/TaskResultRecord"
      description: "Task detailed result. Returned for failed and completed tasks"
    TaskResultRecordErrorsInfo:
      type: "object"
      properties:
        errorCode:
          type: "string"
        message:
          type: "string"
        parameterName:
          type: "string"
        description:
          type: "string"
    AutomaticLocationUpdatesUserList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the users list resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/AutomaticLocationUpdatesUserInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    AutomaticLocationUpdatesSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a site resource"
        name:
          type: "string"
          description: "Name of a site"
        code:
          type: "string"
          description: "Site code value. Returned only if specified"
      description: |
        Site data. If multi-site feature is turned on for the account,
        then ID of a site must be specified. In order to assign a wireless
        point to the main site (company) site ID should be set to `main-site`
    AutomaticLocationUpdatesUserInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
        fullName:
          type: "string"
          description: "User name"
        extensionNumber:
          type: "string"
        featureEnabled:
          type: "boolean"
          description: "Specifies whether Automatic Location Updates feature is enabled"
        type:
          type: "string"
          description: "User extension type"
          enum:
          - "User"
          - "Limited"
        site:
          $ref: "#/components/schemas/AutomaticLocationUpdatesSiteInfo"
        department:
          type: "string"
          description: "Department name"
    EmergencyAddressAutoUpdateUsersBulkAssignResource:
      type: "object"
      properties:
        enabledUserIds:
          type: "array"
          items:
            type: "string"
        disabledUserIds:
          type: "array"
          items:
            type: "string"
    EmergencyAddressInfo:
      allOf:
      - $ref: "#/components/schemas/CommonEmergencyLocationAddressInfo"
      - type: "object"
        properties:
          syncStatus:
            type: "string"
            description: |
              Resulting status of emergency address synchronization. Returned
              for 'Get Device Info' request if `syncEmergencyAddress` parameter is set
              to `true`
            enum:
            - "Verified"
            - "Updated"
            - "Deleted"
            - "NotRequired"
            - "Unsupported"
            - "Failed"
    EmergencyAddressAutoUpdateSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a site"
        name:
          type: "string"
          description: "Name pf a site"
    CreateMultipleWirelessPointsResponse:
      type: "object"
      properties:
        task:
          $ref: "#/components/schemas/BulkTaskInfo"
    CreateMultipleWirelessPointsRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CreateWirelessPoint"
    CreateWirelessPoint:
      required:
      - "bssid"
      - "name"
      type: "object"
      properties:
        bssid:
          type: "string"
          description: "Unique 48-bit identifier of wireless access point that follows MAC address conventions.  Mask: XX:XX:XX:XX:XX:XX, where X can be a symbol in the range of 0-9 or A-F"
        name:
          type: "string"
          description: "Wireless access point name"
        site:
          $ref: "#/components/schemas/EmergencyAddressAutoUpdateSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
        emergencyLocation:
          $ref: "#/components/schemas/EmergencyLocationInfo"
    EmergencyLocationInfo:
      type: "object"
      required:
      - "id"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an emergency response location"
        name:
          type: "string"
          description: "Emergency response location name"
        addressFormatId:
          type: "string"
          description: "Address format ID"
      description: "Emergency response location information"
    BulkTaskInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a task for multiple switches creation"
        status:
          type: "string"
          description: "Status of a task"
          enum:
          - "Accepted"
          - "Failed"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Task creation time"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Time of the task latest modification"
    ERLLocationInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an emergency response location"
        name:
          type: "string"
          description: "Emergency response location name"
        addressFormatId:
          type: "string"
          description: "Address format ID"
      description: "Emergency response location information"
    PublicIpRangeInfo:
      type: "object"
      properties:
        id:
          type: "string"
        startIp:
          type: "string"
        endIp:
          type: "string"
        matched:
          type: "boolean"
    PrivateIpRangeInfo:
      type: "object"
      properties:
        id:
          type: "string"
        startIp:
          type: "string"
        endIp:
          type: "string"
        name:
          type: "string"
          description: "Network name"
        emergencyAddress:
          $ref: "#/components/schemas/CommonEmergencyLocationAddressInfo"
        emergencyLocationId:
          type: "string"
          description: |
            Emergency response location (address) internal identifier.
            Only one of a pair `emergencyAddress` or `emergencyLocationId` should
            be specified, otherwise an error is returned
        matched:
          type: "boolean"
        emergencyLocation:
          $ref: "#/components/schemas/EmergencyLocationInfo"
    NetworkInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a network"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a network resource"
        name:
          type: "string"
        site:
          $ref: "#/components/schemas/AutomaticLocationUpdatesSiteInfo"
        publicIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PublicIpRangeInfo"
        privateIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PrivateIpRangeInfo"
    CreateNetworkRequest:
      type: "object"
      required:
      - "name"
      - "publicIpRanges"
      - "privateIpRanges"
      properties:
        name:
          type: "string"
        site:
          $ref: "#/components/schemas/AutomaticLocationUpdatesSiteInfo"
        publicIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PublicIpRangeInfo"
        privateIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PrivateIpRangeInfoRequest"
    NetworksList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a networks resource"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/NetworkInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    PrivateIpRangeInfoRequest:
      type: "object"
      properties:
        id:
          type: "string"
        startIp:
          type: "string"
        endIp:
          type: "string"
        name:
          type: "string"
          description: "Network name"
        emergencyAddress:
          $ref: "#/components/schemas/LocationUpdatesEmergencyAddressInfoRequest"
        emergencyLocationId:
          type: "string"
          description: |
            Emergency response location (address) internal identifier.
            Only one of a pair `emergencyAddress` or `emergencyLocationId` should
            be specified, otherwise the error is returned
        emergencyLocation:
          $ref: "#/components/schemas/ERLLocationInfo"
    LocationUpdatesEmergencyAddressInfoRequest:
      type: "object"
      properties:
        country:
          type: "string"
          description: "Country name"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        countryName:
          type: "string"
          description: "Full name of a country"
        customerName:
          type: "string"
          description: "Customer name"
        state:
          type: "string"
          description: "State/Province name. Mandatory for the USA, the UK and Canada"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        city:
          type: "string"
          description: "City name"
        street:
          type: "string"
          description: "First line address"
        street2:
          type: "string"
          description: |
            Second line address (apartment, suite, unit, building, floor,
            etc.)
        zip:
          type: "string"
          description: "Postal (Zip) code"
      description: |
        Emergency address assigned to the switch. Only one of a pair `emergencyAddress`
        or `emergencyLocationId` should be specified, otherwise the error is returned
    UpdateNetworkRequest:
      type: "object"
      required:
      - "name"
      - "publicIpRanges"
      - "privateIpRanges"
      properties:
        id:
          type: "string"
          example: "2874044"
          description: "Internal identifier of a network"
        name:
          type: "string"
        site:
          $ref: "#/components/schemas/AutomaticLocationUpdatesSiteInfo"
        publicIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PublicIpRangeInfo"
        privateIpRanges:
          type: "array"
          items:
            $ref: "#/components/schemas/PrivateIpRangeInfoRequest"
    ValidateMultipleSwitchesRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/SwitchInfo"
    ValidateMultipleSwitchesResponse:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/SwitchValidated"
    ValidationError:
      type: "object"
      properties:
        errorCode:
          type: "string"
          description: "Error code"
        message:
          type: "string"
          description: "Error message"
        parameterName:
          type: "string"
          description: "Name of invalid parameter"
    SwitchValidated:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a switch"
        chassisId:
          type: "string"
          description: "Unique identifier of a network switch"
        port:
          type: "string"
          description: "Switch entity extension for better diversity. Should be used together with chassisId."
        status:
          type: "string"
          description: "Validation result status"
          enum:
          - "Valid"
          - "Invalid"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/ValidationError"
    SwitchSiteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of a site. The company identifier value
            is 'main-site'
        name:
          type: "string"
          description: "Name of a site"
    SwitchInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the network switch resource"
        id:
          type: "string"
          description: "Internal identifier of a network switch"
        chassisId:
          type: "string"
          description: "Unique identifier of a network switch"
        port:
          type: "string"
          description: "Switch entity extension for better diversity. Should be used together with chassisId."
        name:
          type: "string"
          description: "Name of a network switch"
        site:
          $ref: "#/components/schemas/SwitchSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
        emergencyLocation:
          $ref: "#/components/schemas/EmergencyLocationInfo"
    CreateSwitchInfo:
      required:
      - "chassisId"
      type: "object"
      properties:
        chassisId:
          type: "string"
          description: "Unique identifier of a network switch. The supported formats are: XX:XX:XX:XX:XX:XX (symbols 0-9 and A-F) for MAC address and X.X.X.X for IP address (symbols 0-255)"
        port:
          type: "string"
          description: "Switch entity extension for better diversity. Should be used together with chassisId."
        name:
          type: "string"
          description: "Name of a network switch"
        site:
          $ref: "#/components/schemas/SwitchSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
        emergencyLocation:
          $ref: "#/components/schemas/EmergencyLocationInfo"
    SwitchesList:
      type: "object"
      properties:
        records:
          type: "array"
          description: "Switches map"
          items:
            $ref: "#/components/schemas/SwitchInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    UpdateSwitchInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a switch"
        chassisId:
          type: "string"
          description: |
            Unique identifier of a network switch. The supported formats
            are: XX:XX:XX:XX:XX:XX (symbols 0-9 and A-F) for MAC address and X.X.X.X
            for IP address (symbols 0-255)
        port:
          type: "string"
          description: "Switch entity extension for better diversity. Should be used together with chassisId."
        name:
          type: "string"
          description: "Name of a network switch"
        site:
          $ref: "#/components/schemas/SwitchSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
    WirelessPointInfo:
      required:
      - "bssid"
      - "emergencyAddress"
      - "name"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the wireless point resource"
        id:
          type: "string"
          description: "Internal identifier of a wireless point"
        bssid:
          type: "string"
          description: "Unique 48-bit identifier of the wireless access point that follows MAC address conventions"
        name:
          type: "string"
          description: "Wireless access point name"
        site:
          $ref: "#/components/schemas/EmergencyAddressAutoUpdateSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
        emergencyLocation:
          $ref: "#/components/schemas/ERLLocationInfo"
        emergencyLocationId:
          type: "string"
          description: "Deprecated. Emergency response location (address) internal identifier. Only one of a pair `emergencyAddress` or `emergencyLocationId` should be specified, otherwise the error is returned"
    ValidateMultipleWirelessPointsRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/WirelessPointInfo"
    WirelessPointValidated:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a wireless point"
        bssid:
          type: "string"
          description: |
            Unique 48-bit identifier of the wireless access point that
            follows MAC address conventions
        status:
          type: "string"
          description: "Validation result status"
          enum:
          - "Valid"
          - "Invalid"
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/ValidationError"
    ValidateMultipleWirelessPointsResponse:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/WirelessPointValidated"
    WirelessPointsList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a wireless points resource"
        records:
          type: "array"
          description: "List of wireless points with assigned emergency addresses"
          items:
            $ref: "#/components/schemas/WirelessPointInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    UpdateWirelessPoint:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a wireless point"
        bssid:
          type: "string"
          description: |
            Unique 48-bit identifier of wireless access point that follows
            MAC address conventions. Mask: XX:XX:XX:XX:XX:XX, where X can be a symbol
            in the range of 0-9 or A-F
        name:
          type: "string"
          description: "Name of a wireless access point"
        site:
          $ref: "#/components/schemas/EmergencyAddressAutoUpdateSiteInfo"
        emergencyAddress:
          $ref: "#/components/schemas/EmergencyAddressInfo"
    ListDevicesAutomaticLocationUpdates:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a devices resource"
        records:
          type: "array"
          description: |
            List of the user(s) devices with the current status of Emergency
            Address Auto Update Feature
          items:
            $ref: "#/components/schemas/AutomaticLocationUpdatesDeviceInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    AutomaticLocationUpdatesDeviceType:
      type: "string"
      description: "Device type"
      default: "HardPhone"
      enum:
      - "HardPhone"
      - "SoftPhone"
      - "OtherPhone"
    AutomaticLocationUpdatesDeviceInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a device"
        type:
          $ref: "#/components/schemas/AutomaticLocationUpdatesDeviceType"
        serial:
          type: "string"
          description: "Serial number for HardPhone (is returned only when the phone is shipped and provisioned)"
        featureEnabled:
          type: "boolean"
          description: "Specifies if Automatic Location Updates feature is enabled"
        name:
          type: "string"
          description: "Device name"
        model:
          $ref: "#/components/schemas/AutomaticLocationUpdatesModelInfo"
        site:
          $ref: "#/components/schemas/AutomaticLocationUpdatesSiteInfo"
        phoneLines:
          type: "array"
          description: "Phone lines information"
          items:
            $ref: "#/components/schemas/AutomaticLocationUpdatesPhoneLine"
    AutomaticLocationUpdatesPhoneLine:
      type: "object"
      properties:
        lineType:
          $ref: "#/components/schemas/AutomaticLocationUpdatesPhoneLineType"
        phoneInfo:
          $ref: "#/components/schemas/AutomaticLocationUpdatesPhoneNumberInfo"
    AutomaticLocationUpdatesPhoneLineType:
      type: "string"
      enum:
      - "Unknown"
      - "Standalone"
      - "StandaloneFree"
      - "BlaPrimary"
      - "BlaSecondary"
      - "BLF"
    AutomaticLocationUpdatesModelFeature:
      type: "string"
      enum:
      - "BLA"
      - "Intercom"
      - "Paging"
      - "HELD"
    AutomaticLocationUpdatesModelInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Device model identifier"
        name:
          type: "string"
          description: "Device name"
        features:
          type: "array"
          description: "Device feature or multiple features supported"
          items:
            $ref: "#/components/schemas/AutomaticLocationUpdatesModelFeature"
      description: "HardPhone model information"
    AutomaticLocationUpdatesPhoneNumberInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a phone number"
        phoneNumber:
          type: "string"
          description: "Phone number"
    AssignMultipleDevicesAutomaticLocationUpdates:
      type: "object"
      properties:
        enabledDeviceIds:
          type: "array"
          items:
            type: "string"
            description: "List of common devices for feature activation"
        disabledDeviceIds:
          type: "array"
          items:
            type: "string"
            description: "List of common devices for feature disabling"
    CreateMultipleSwitchesResponse:
      type: "object"
      properties:
        task:
          type: "array"
          items:
            $ref: "#/components/schemas/BulkTaskInfo"
      description: "Information on a task for multiple switches creation"
    CreateMultipleSwitchesRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/CreateSwitchInfo"
    UpdateMultipleWirelessPointsResponse:
      type: "object"
      properties:
        task:
          $ref: "#/components/schemas/BulkTaskInfo"
    UpdateMultipleWirelessPointsRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/UpdateWirelessPoint"
    UpdateMultipleSwitchesRequest:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/UpdateSwitchInfo"
    UpdateMultipleSwitchesResponse:
      type: "object"
      properties:
        task:
          $ref: "#/components/schemas/BulkTaskInfo"
    CompanyPhoneNumberInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a company phone number resource"
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a phone number"
        country:
          $ref: "#/components/schemas/CountryInfoBasicModel"
        extension:
          $ref: "#/components/schemas/ExtensionInfo"
        label:
          type: "string"
          description: "Custom user-defined name of a phone number, if any"
        location:
          type: "string"
          description: "Location (City, State). Filled for local US numbers"
        paymentType:
          $ref: "#/components/schemas/PlatformPaymentType"
        phoneNumber:
          type: "string"
          description: "Phone number"
        status:
          type: "string"
          description: |
            Status of a phone number. If the value is 'Normal', the phone
            number is ready to be used. If the value is 'Pending' it is an
            external number not yet ported to RingCentral.
          enum:
          - "Normal"
          - "Pending"
          - "PortedIn"
          - "Temporary"
        type:
          type: "string"
          description: "Phone number type"
          enum:
          - "VoiceFax"
          - "FaxOnly"
          - "VoiceOnly"
        usageType:
          type: "string"
          description: |
            Usage type of phone number. Usage type of phone number.
            Numbers of 'NumberPool' type are not returned in phone number list
            requests
          enum:
          - "MainCompanyNumber"
          - "AdditionalCompanyNumber"
          - "CompanyNumber"
          - "DirectNumber"
          - "CompanyFaxNumber"
          - "ForwardedNumber"
          - "ForwardedCompanyNumber"
          - "ContactCenterNumber"
          - "ConferencingNumber"
          - "MeetingsNumber"
          - "NumberPool"
          - "BusinessMobileNumber"
          - "PartnerBusinessMobileNumber"
          - "IntegrationNumber"
        temporaryNumber:
          $ref: "#/components/schemas/TemporaryNumberInfo"
        contactCenterProvider:
          $ref: "#/components/schemas/ContactCenterProvider"
        vanityPattern:
          type: "string"
          description: "Vanity pattern for this number. Returned only when vanity search option is requested. Vanity pattern corresponds to request parameters `nxx` plus `line` or `numberPattern`"
        primary:
          type: "boolean"
          description: "Specifies if a phone number is primary, i.e. displayed as 'main number' and called by default"
    TemporaryNumberInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Temporary phone number identifier"
        phoneNumber:
          type: "string"
          description: |
            Temporary phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            (with '+' sign) format
      description: |
        Temporary phone number, if any. Returned for phone numbers in `Pending` porting status only
    AccountPhoneNumbers:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a list of account phone numbers"
        records:
          type: "array"
          description: "List of account phone numbers"
          items:
            $ref: "#/components/schemas/CompanyPhoneNumberInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    NotificationDeliveryModeRequest:
      description: "Notification delivery transport information"
      anyOf:
      - $ref: "#/components/schemas/WebhookDeliveryModeRequest"
      - $ref: "#/components/schemas/MobileDeliveryModeRequest"
      - $ref: "#/components/schemas/PubNubDeliveryModeRequest"
      discriminator:
        propertyName: "transportType"
        mapping:
          WebHook: "#/components/schemas/WebhookDeliveryModeRequest"
          RC/APNS: "#/components/schemas/MobileDeliveryModeRequest"
          RC/GCM: "#/components/schemas/MobileDeliveryModeRequest"
          PubNub: "#/components/schemas/PubNubDeliveryModeRequest"
    CreateSubscriptionRequest:
      allOf:
      - $ref: "#/components/schemas/UpdateSubscriptionRequest"
      - type: "object"
        required:
        - "deliveryMode"
        properties:
          deliveryMode:
            $ref: "#/components/schemas/NotificationDeliveryModeRequest"
    GetCountryInfoNumberParser:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a country"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a country resource"
        callingCode:
          type: "string"
          description: |
            Country calling code defined by ITU-T recommendations `E.123`
            and `E.164`, see Calling Codes
          example: "1"
        isoCode:
          type: "string"
          description: "Country code in `ISO 3166` alpha-2 format"
          pattern: "^[A-Za-z]{2}$"
          example: "US"
        name:
          type: "string"
          description: "The official name of the country."
          example: "United States"
    PhoneNumberInfoNumberParser:
      type: "object"
      properties:
        originalString:
          type: "string"
          description: "Original phone number string as it was passed in the request"
          example: "(650) 722-1621"
        country:
          $ref: "#/components/schemas/GetCountryInfoNumberParser"
        areaCode:
          type: "string"
          description: |
            Area code of location. The portion of the [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I)
            number that identifies a specific geographic region/numbering area of
            the national numbering plan (NANP); that can be summarized as `NPA-NXX-xxxx`
            and covers Canada, the United States, parts of the Caribbean Sea, and
            some Atlantic and Pacific islands.
            See [North American Numbering Plan](https://en.wikipedia.org/wiki/North_American_Numbering_Plan)
            for details
          example: "650"
        dialable:
          type: "string"
          description: "Dialing format of a phone number"
        e164:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format"
        formattedInternational:
          type: "string"
          description: "The formatted phone number string in international format"
        formattedNational:
          type: "string"
          description: "The formatted phone number string in domestic format"
        special:
          type: "boolean"
          description: "Indicates if the number is in a special format (for example N11 code)'"
        normalized:
          type: "string"
          description: "Phone number in [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) format without plus sign ('+')"
        tollFree:
          type: "boolean"
          description: "Indicates if the number is toll free"
        subAddress:
          type: "string"
          description: "Sub-Address. The portion of the number that identifies a subscriber into the subscriber internal (non-public) network."
        subscriberNumber:
          type: "string"
          description: "Subscriber number. The portion of the [E.164](https://www.itu.int/rec/T-REC-E.164-201011-I) number that identifies a subscriber in a network or numbering area."
        dtmfPostfix:
          type: "string"
          description: "DTMF (Dual Tone Multi-Frequency) postfix"
    ParsePhoneNumberRequest:
      type: "object"
      properties:
        originalStrings:
          type: "array"
          description: "The list of phone numbers passed as an array of strings (not more than 64 items). The maximum size of each string is 64 characters"
          maxItems: 64
          items:
            type: "string"
            maxLength: 64
            example: "(650) 722-1621"
    ParsePhoneNumberResponse:
      required:
      - "homeCountry"
      - "phoneNumbers"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a resource"
        homeCountry:
          $ref: "#/components/schemas/GetCountryInfoNumberParser"
        phoneNumbers:
          type: "array"
          description: "Parsed phone numbers information"
          items:
            $ref: "#/components/schemas/PhoneNumberInfoNumberParser"
    ContractedCountryListResponse:
      type: "object"
      required:
      - "records"
      properties:
        records:
          type: "array"
          description: "List of countries with the country data"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a country"
              name:
                type: "string"
                description: "Official name of a country"
    CountryListDictionaryModel:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the list of countries supported"
        records:
          type: "array"
          description: "List of countries with the country data"
          items:
            $ref: "#/components/schemas/CountryInfoDictionaryModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    CountryInfoDictionaryModel:
      allOf:
      - $ref: "#/components/schemas/CountryInfoShortModel"
      - type: "object"
        properties:
          emergencyCalling:
            type: "boolean"
            description: |
              Emergency calling feature availability/emergency address requirement indicator
          isoCode:
            type: "string"
            description: |
              Country code according to the ISO standard, see
              [ISO 3166](https://www.iso.org/iso-3166-country-codes.html)
          name:
            type: "string"
            description: "The official name of a country"
          numberSelling:
            type: "boolean"
            description: "Indicates that phone numbers are available for this country"
          loginAllowed:
            type: "boolean"
            description: "Indicates that login with the phone number of this country is allowed"
          signupAllowed:
            type: "boolean"
            description: "Indicates that signup/billing is allowed for this country"
          freeSoftphoneLine:
            type: "boolean"
            description: "Indicates that free phone line for softphone is available for this country"
          localDialing:
            type: "boolean"
            description: "Indicates that the local dialing is supported in this country and default area code can be set"
    GetStateInfoResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a state"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a state"
        country:
          $ref: "#/components/schemas/CountryInfoMinimalModel"
        isoCode:
          type: "string"
          description: "Short code for a state (2-letter usually)"
        name:
          type: "string"
          description: "Official name of a state"
    GetStateListResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to a states list resource"
        records:
          type: "array"
          description: "List of states"
          items:
            $ref: "#/components/schemas/GetStateInfoResponse"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    GetLocationListResponse:
      required:
      - "navigation"
      - "paging"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the location list resource"
        records:
          type: "array"
          description: "List of locations"
          items:
            $ref: "#/components/schemas/LocationInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    LocationStateInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a state"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a state resource"
      description: "Information on a state this location belongs to"
    LocationInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a location"
        areaCode:
          type: "string"
          description: "Area code of the location"
        city:
          type: "string"
          description: |
            Official name of the city, belonging to the certain state
        npa:
          type: "string"
          description: |
            Area code of the location (3-digit usually), according to the
            NANP number format, that can be summarized as NPA-NXX-xxxx and covers
            Canada, the United States, parts of the Caribbean Sea, and some Atlantic
            and Pacific islands. See for details North American Numbering Plan
        nxx:
          type: "string"
          description: |
            Central office code of the location, according to the NANP
            number format, that can be summarized as NPA-NXX-xxxx and covers Canada,
            the United States, parts of the Caribbean Sea, and some Atlantic and Pacific
            islands. See for details North American Numbering Plan
        state:
          $ref: "#/components/schemas/LocationStateInfo"
    PermissionCollectionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/PermissionResource"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    PermissionCategoryIdResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
    PermissionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        displayName:
          type: "string"
        description:
          type: "string"
        assignable:
          type: "boolean"
          default: false
        readOnly:
          type: "boolean"
          default: false
        siteCompatible:
          type: "string"
          description: "Site compatibility flag set for permission"
          enum:
          - "Incompatible"
          - "Compatible"
          - "Independent"
        category:
          $ref: "#/components/schemas/PermissionCategoryIdResource"
        includedPermissions:
          type: "array"
          items:
            $ref: "#/components/schemas/PermissionIdResource"
    LanguageList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of the language list resource"
        records:
          type: "array"
          description: "Language data"
          items:
            $ref: "#/components/schemas/LanguageInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    LanguageInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a language"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a language"
        greeting:
          type: "boolean"
          description: |
            Indicates whether a language is available as
            greeting language
        formattingLocale:
          type: "boolean"
          description: |
            Indicates whether a language is available as
            formatting locale
        localeCode:
          type: "string"
          description: "Localization code of a language"
        isoCode:
          type: "string"
          description: "Country code according to the ISO standard, see [ISO 3166](https://www.iso.org/iso-3166-country-codes.html)"
        name:
          type: "string"
          description: "Official name of a language"
        ui:
          type: "boolean"
          description: |
            Indicates whether a language is available as UI language
        timeFormat:
          type: "string"
          description: "Time format"
        dateFormat:
          type: "string"
          description: "Date format"
      description: "User interface language data"
    PermissionCategoryResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        id:
          type: "string"
        displayName:
          type: "string"
        description:
          type: "string"
    PermissionCategoryCollectionResource:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/PermissionCategoryResource"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
    DictionaryGreetingList:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of greetings list resource"
        records:
          type: "array"
          description: "List of greetings"
          items:
            $ref: "#/components/schemas/DictionaryGreetingInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    DictionaryGreetingInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a greeting"
        uri:
          type: "string"
          format: "uri"
          description: "Link to a greeting"
        name:
          type: "string"
          description: "Name of a greeting"
        usageType:
          type: "string"
          description: "Usage type of greeting, specifying if the greeting is applied for user extension or department (call queue) extension."
          enum:
          - "UserExtensionAnsweringRule"
          - "ExtensionAnsweringRule"
          - "DepartmentExtensionAnsweringRule"
          - "BlockedCalls"
          - "CallRecording"
          - "CompanyAnsweringRule"
          - "CompanyAfterHoursAnsweringRule"
          - "LimitedExtensionAnsweringRule"
          - "VoicemailExtensionAnsweringRule"
          - "AnnouncementExtensionAnsweringRule"
          - "SharedLinesGroupAnsweringRule"
        text:
          type: "string"
          description: "Text of a greeting, if any"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to a greeting content (audio file), if any"
        type:
          $ref: "#/components/schemas/GreetingTypeEnum"
        category:
          type: "string"
          description: "Category of a greeting, specifying data form. The category value 'None' specifies that greetings of a certain type ('Introductory', 'ConnectingAudio', etc.) are switched off for an extension = ['Music', 'Message', 'RingTones', 'None']"
          enum:
          - "Music"
          - "Message"
          - "RingTones"
          - "None"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    GetTimezoneInfoResponse:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a timezone"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a timezone"
        name:
          type: "string"
          description: "Short name of a timezone"
        description:
          type: "string"
          description: "Description of a timezone"
        bias:
          type: "string"
    GetTimezoneListResponse:
      required:
      - "navigation"
      - "paging"
      - "records"
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Link to the timezone list resource"
        records:
          type: "array"
          description: "List of timezones"
          items:
            $ref: "#/components/schemas/GetTimezoneInfoResponse"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    FaxCoverPageInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: |
            Internal identifier of a fax cover page. The supported value
            range is 0-13 (for language setting en-US) and 0, 15-28
            (for all other languages)
        name:
          type: "string"
          description: "Name of a fax cover page pattern"
    ListFaxCoverPagesResponse:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/FaxCoverPageInfo"
        navigation:
          $ref: "#/components/schemas/PageNavigationModel"
        paging:
          $ref: "#/components/schemas/EnumeratedPagingModel"
    SipRegistrationDeviceInfo:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of the resource"
        id:
          type: "string"
          description: "Internal identifier of a device"
        type:
          type: "string"
          description: "Device type"
          enum:
          - "HardPhone"
          - "SoftPhone"
          - "OtherPhone"
          - "Paging"
          - "WebPhone"
          - "Room"
        sku:
          type: "string"
          description: |
            Device identification number (SKU, Stock Keeping Unit) in the format
            TP-ID [-AT-AC], where TP is device type (HP for RC desk phones, DV for all
            other devices including soft phones); ID - device model ID; AT - add-on type
            ID; AC - add-on count (if any). For example 'HP-56-2-2'
        status:
          type: "string"
          enum:
          - "Online"
          - "Offline"
        name:
          type: "string"
          description: |
            Device name. Mandatory if ordering  SoftPhone or OtherPhone.
            Optional for HardPhone. If not specified for HardPhone, then device  model  name
            is used as device  name
        serial:
          type: "string"
          description: |
            Serial number for HardPhone (is returned only when the phone
            is shipped and provisioned); endpoint_id for Softphone and mobile applications
        computerName:
          type: "string"
          description: "Computer name (for devices of `SoftPhone` type only)"
        model:
          $ref: "#/components/schemas/DeviceModelInfo"
        extension:
          $ref: "#/components/schemas/DeviceExtensionInfo"
        emergencyServiceAddress:
          $ref: "#/components/schemas/DeviceEmergencyServiceAddressResourceDefault"
        emergency:
          $ref: "#/components/schemas/SipRegistrationDeviceEmergencyInfo"
        shipping:
          $ref: "#/components/schemas/ShippingInfo"
        phoneLines:
          type: "array"
          description: "Phone lines information"
          items:
            $ref: "#/components/schemas/DevicePhoneLinesInfo"
        boxBillingId:
          type: "integer"
          format: "int64"
          description: |
            Box billing identifier of a device. Applicable only for devices of `HardPhone` type.
        useAsCommonPhone:
          type: "boolean"
          description: "Supported only for devices assigned to Limited extensions. If true, enables users to log in to this phone as a common phone."
        linePooling:
          $ref: "#/components/schemas/LinePoolingEnum"
        inCompanyNet:
          type: "boolean"
          description: |
            Network location status. `true` if the device is located in
            the configured corporate network (On-Net); `false` for Off-Net location.
            Parameter is not returned if `EmergencyAddressAutoUpdate` feature is not
            enabled for the account/user, or if device network location is not determined
        site:
          $ref: "#/components/schemas/DeviceSiteInfo"
        lastLocationReportTime:
          type: "string"
          format: "date-time"
          description: |
            Timestamp of receiving last location report in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
            format including timezone, for example *2016-03-10T18:07:52.534Z
    DevicePhoneNumberInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of a phone number"
        country:
          $ref: "#/components/schemas/DevicePhoneNumberCountryInfo"
        paymentType:
          type: "string"
          description: "Payment type. 'External' is returned for forwarded numbers which are not terminated in the RingCentral phone system = ['External', 'TollFree', 'Local']"
          enum:
          - "External"
          - "TollFree"
          - "Local"
        phoneNumber:
          maxLength: 128
          minLength: 0
          type: "string"
          description: "Phone number"
        usageType:
          type: "string"
          enum:
          - "CompanyNumber"
          - "MainCompanyNumber"
          - "AdditionalCompanyNumber"
          - "DirectNumber"
          - "CompanyFaxNumber"
          - "ForwardedNumber"
          - "ForwardedCompanyNumber"
          - "ContactCenterNumber"
        type:
          type: "string"
          description: "Type of phone number"
          enum:
          - "VoiceFax"
          - "FaxOnly"
          - "VoiceOnly"
      description: "Phone number information"
    DeviceEmergencyServiceAddressResourceAu:
      type: "object"
      properties:
        street:
          type: "string"
        street2:
          type: "string"
        city:
          type: "string"
        zip:
          type: "string"
        customerName:
          type: "string"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        country:
          type: "string"
          description: "Country name"
        countryName:
          type: "string"
          description: "Full name of a country"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
        buildingName:
          type: "string"
          description: "(Optional) Building name"
        streetType:
          type: "string"
          description: "Street type"
        buildingNumber:
          type: "string"
          description: "Building/street number"
      description: "Address for emergency cases. The same emergency address is assigned to all the numbers of one device"
    SipInfoResponse:
      type: "object"
      properties:
        username:
          type: "string"
          description: "User credentials"
        password:
          type: "string"
          format: "password"
          description: "User password. Not returned if SipDigest is not enabled"
        authorizationTypes:
          type: "array"
          description: "Supported authorization types and their priority for clients"
          items:
            $ref: "#/components/schemas/AuthorizationType"
        authorizationId:
          type: "string"
          description: "Identifier for SIP authorization"
        domain:
          type: "string"
          description: "SIP domain"
        outboundProxy:
          type: "string"
          description: "SIP outbound proxy server address (in the format <host:port>)"
        outboundProxyIPv6:
          type: "string"
          description: "SIP outbound IPv6 proxy server address (in the format <host:port>)"
        outboundProxyBackup:
          type: "string"
          description: "SIP outbound proxy server backup address (in the format <host:port>)"
        outboundProxyIPv6Backup:
          type: "string"
          description: "SIP outbound IPv6 proxy server backup address (in the format <host:port>)"
        transport:
          type: "string"
          description: "Preferred transport. SIP info will be returned for this transport if supported"
          enum:
          - "UDP"
          - "TCP"
          - "TLS"
          - "WSS"
        certificate:
          type: "string"
          description: "For TLS transport only, Base64 encoded certificate"
        switchBackInterval:
          type: "integer"
          format: "int32"
          description: |
            The interval in seconds after which the app must try to switch
            back to primary proxy if it was previously switched to backup. If this
            parameter is not returned, the app must stay on backup proxy and try to
            switch to primary proxy after the next SIP-provision call.
        stunServers:
          type: "array"
          description: "List of stun servers in the format <host:port>"
          items:
            type: "string"
    DevicePhoneNumberCountryInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a home country"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI of a home country"
        name:
          type: "string"
          description: "Official name of a home country"
      description: "Brief information on a phone number country"
    DevicePhoneLinesEmergencyAddressInfo:
      type: "object"
      properties:
        required:
          type: "boolean"
          description: "Indicates that emergency address is required"
        localOnly:
          type: "boolean"
          description: "Indicates that only local emergency address can be specified"
    SipRegistrationDeviceEmergencyInfo:
      type: "object"
      description: "Emergency response location settings of a device"
      properties:
        address:
          oneOf:
          - $ref: "#/components/schemas/DeviceEmergencyServiceAddressResourceDefault"
          - $ref: "#/components/schemas/DeviceEmergencyServiceAddressResourceAu"
          - $ref: "#/components/schemas/DeviceEmergencyServiceAddressResourceFr"
        location:
          $ref: "#/components/schemas/SipRegistrationDeviceLocationInfo"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
        addressStatus:
          type: "string"
          description: "Emergency address status"
          enum:
          - "Valid"
          - "Invalid"
          - "Processing"
        visibility:
          type: "string"
          description: |
            Specifies whether to return only private or only public (company) ERLs (Emergency Response Locations)
          enum:
          - "Private"
          - "Public"
        syncStatus:
          type: "string"
          description: |
            Resulting status of emergency address synchronization. Returned
            if `syncEmergencyAddress` parameter is set to `true`
          enum:
          - "Verified"
          - "Updated"
          - "Deleted"
          - "NotRequired"
          - "Unsupported"
          - "Failed"
        addressEditableStatus:
          type: "string"
          description: |
            Ability to register new emergency address for a phone line
            using devices sharing this line or only main device (line owner)
          enum:
          - "MainDevice"
          - "AnyDevice"
        addressRequired:
          type: "boolean"
          description: "Indicates if emergency address is required for the country of a phone line"
        addressLocationOnly:
          type: "boolean"
          description: "Indicates if out of country emergency address is not allowed for the country of a phone line"
    CreateSipRegistrationResponse:
      required:
      - "device"
      - "sipFlags"
      - "sipInfo"
      type: "object"
      properties:
        device:
          $ref: "#/components/schemas/SipRegistrationDeviceInfo"
        sipInfo:
          type: "array"
          description: "SIP settings for device"
          items:
            $ref: "#/components/schemas/SipInfoResponse"
        sipInfoPstn:
          type: "array"
          description: "SIP PSTN settings for device"
          items:
            $ref: "#/components/schemas/SipInfoResponse"
        sipFlags:
          $ref: "#/components/schemas/SipFlagsResponse"
        sipErrorCodes:
          type: "array"
          items:
            type: "string"
        pollingInterval:
          type: "integer"
          format: "int32"
          description: |
            Suggested interval in seconds to periodically call SIP-provision API and update the local cache
    SIPInfoRequest:
      type: "object"
      properties:
        transport:
          type: "string"
          description: "Supported transport. SIP info will be returned for this transport if supported"
          enum:
          - "UDP"
          - "TCP"
          - "TLS"
          - "WSS"
    SipFlagsResponse:
      type: "object"
      description: "SIP flags information"
      properties:
        voipFeatureEnabled:
          type: "boolean"
          description: "Indicates that VoIP calling feature is enabled"
        voipCountryBlocked:
          type: "boolean"
          description: |
            Indicates that the request is sent from IP address of a country where VoIP calling is disallowed
        outboundCallsEnabled:
          type: "boolean"
          description: "Indicates that outbound calls are enabled"
        dscpEnabled:
          type: "boolean"
        dscpSignaling:
          type: "integer"
          format: "int32"
        dscpVoice:
          type: "integer"
          format: "int32"
        dscpVideo:
          type: "integer"
          format: "int32"
    SipRegistrationDeviceLocationInfo:
      type: "object"
      description: "Company emergency response location details"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an emergency response location"
        name:
          type: "string"
          description: "Emergency response location name"
        addressFormatId:
          type: "string"
          description: "Address format ID"
    DeviceEmergencyServiceAddressResourceDefault:
      type: "object"
      properties:
        street:
          type: "string"
        street2:
          type: "string"
        city:
          type: "string"
        zip:
          type: "string"
        customerName:
          type: "string"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        country:
          type: "string"
          description: "Country name"
        countryName:
          type: "string"
          description: "Full name of a country"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
      description: "Address for emergency cases. The same emergency address is assigned to all the numbers of one device"
    DevicePhoneLinesInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a phone line"
        lineType:
          type: "string"
          description: "Type of phone line"
          enum:
          - "Standalone"
          - "StandaloneFree"
          - "BlaPrimary"
          - "BlaSecondary"
        emergencyAddress:
          $ref: "#/components/schemas/DevicePhoneLinesEmergencyAddressInfo"
        phoneInfo:
          $ref: "#/components/schemas/DevicePhoneNumberInfo"
    AuthorizationType:
      type: "string"
      enum:
      - "SipDigest"
      - "BearerToken"
    DeviceAddonInfo:
      type: "object"
      properties:
        id:
          type: "string"
        name:
          type: "string"
        count:
          type: "integer"
          format: "int32"
    DeviceEmergencyServiceAddressResourceFr:
      type: "object"
      properties:
        street:
          type: "string"
        street2:
          type: "string"
        city:
          type: "string"
        zip:
          type: "string"
        customerName:
          type: "string"
        state:
          type: "string"
          description: "State/province name"
        stateId:
          type: "string"
          description: "Internal identifier of a state"
        stateIsoCode:
          type: "string"
          description: "ISO code of a state"
        stateName:
          type: "string"
          description: "Full name of a state"
        countryId:
          type: "string"
          description: "Internal identifier of a country"
        countryIsoCode:
          type: "string"
          description: "ISO code of a country"
        country:
          type: "string"
          description: "Country name"
        countryName:
          type: "string"
          description: "Full name of a country"
        outOfCountry:
          type: "boolean"
          description: "Specifies if emergency address is out of country"
        buildingName:
          type: "string"
          description: "(Optional) Building name"
        buildingNumber:
          type: "string"
          description: "Building/street number"
      description: "Address for emergency cases. The same emergency address is assigned to all the numbers of one device"
    DeviceExtensionInfo:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
          description: "Internal identifier of an extension"
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URL of an extension resource"
        extensionNumber:
          type: "string"
          description: "Short extension number"
    DeviceModelInfo:
      required:
      - "addons"
      type: "object"
      description: "HardPhone model information"
      properties:
        id:
          type: "string"
          description: "Addon identifier. For HardPhones of certain types, which are compatible with this add-on identifier"
        name:
          type: "string"
          description: "Device name"
        addons:
          type: "array"
          description: "Add-ons description"
          items:
            $ref: "#/components/schemas/DeviceAddonInfo"
        features:
          type: "array"
          description: "Device feature or multiple features supported"
          items:
            type: "string"
            enum:
            - "BLA"
            - "Intercom"
            - "Paging"
            - "HELD"
    CreateSipRegistrationRequest:
      type: "object"
      properties:
        device:
          $ref: "#/components/schemas/DeviceInfoRequest"
        sipInfo:
          type: "array"
          description: "SIP settings for device"
          items:
            $ref: "#/components/schemas/SIPInfoRequest"
        softPhoneLineReassignment:
          type: "string"
          description: |
            Supported for Softphone clients only. If 'SoftphoneLineReassignment' feature is enabled
            the reassignment process can be initialized, however if there is no DL for the given user's device
            then SPR-131 error code will be returned.
          default: "None"
          enum:
          - "None"
          - "Initialize"
          - "Reassign"
    DeviceInfoRequest:
      type: "object"
      description: "Device information"
      properties:
        id:
          type: "string"
          description: "Device unique identifier, retrieved at previous session (if any)"
        appExternalId:
          type: "string"
          description: |
            Supported for iOS devices only. Certificate name (used by iOS
            applications for APNS subscription)
        computerName:
          type: "string"
          description: "Computer name (for devices of `SoftPhone` type only)"
        serial:
          type: "string"
          description: |
            Endpoint/device instance identifier for Softphone and mobile applications
    UtteranceInsightsObject:
      required:
      - "end"
      - "start"
      - "text"
      type: "object"
      properties:
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        text:
          type: "string"
          example: "Hello! This is John."
        confidence:
          type: "number"
          format: "float"
          example: 0.97
        speakerId:
          type: "string"
          example: "JohnDoe"
        wordTimings:
          type: "array"
          items:
            $ref: "#/components/schemas/WordTimingsUnit"
        insights:
          type: "array"
          items:
            $ref: "#/components/schemas/UtteranceInsightsUnit"
    SpeakerIdentifyApiResponse:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          oneOf:
          - $ref: "#/components/schemas/SpeakerIdentificationObject"
          - $ref: "#/components/schemas/CaiErrorResponse"
    WordSegment:
      required:
      - "end"
      - "start"
      - "word"
      type: "object"
      properties:
        speakerId:
          type: "string"
          example: "JohnDoe"
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        confidence:
          type: "number"
          format: "float"
          example: 0.97
        word:
          type: "string"
          example: "hello"
    UtteranceObject:
      required:
      - "end"
      - "start"
      - "text"
      type: "object"
      properties:
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        text:
          type: "string"
          example: "Hello! This is John."
        confidence:
          type: "number"
          format: "float"
          example: 0.97
        speakerId:
          type: "string"
          example: "JohnDoe"
        wordTimings:
          type: "array"
          items:
            $ref: "#/components/schemas/WordTimingsUnit"
    DiarizeApiResponse:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          oneOf:
          - $ref: "#/components/schemas/DiarizedObject"
          - $ref: "#/components/schemas/CaiErrorResponse"
    SummaryOutput:
      type: "object"
      properties:
        summaries:
          type: "array"
          items:
            $ref: "#/components/schemas/SummaryOutputUnit"
    WordTimingsUnit:
      type: "object"
      properties:
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        word:
          type: "string"
          example: "Hello"
    CaiErrorResponse:
      type: "object"
      properties:
        errors:
          type: "array"
          items:
            $ref: "#/components/schemas/CaiErrorCodeResponse"
    PunctuateApiOutput:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          $ref: "#/components/schemas/PunctuateApiResponse"
    EmotionApiResponse:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          oneOf:
          - $ref: "#/components/schemas/EmotionObject"
          - $ref: "#/components/schemas/CaiErrorResponse"
    JobStatusResponse:
      allOf:
      - type: "object"
        properties:
          jobId:
            type: "string"
          creationTime:
            type: "string"
            format: "date-time"
          completionTime:
            type: "string"
            format: "date-time"
          expirationTime:
            type: "string"
            format: "date-time"
      - oneOf:
        - $ref: "#/components/schemas/SummaryApiOutput"
        - $ref: "#/components/schemas/PunctuateApiOutput"
        - $ref: "#/components/schemas/DiarizeApiResponse"
        - $ref: "#/components/schemas/SpeakerIdentifyApiResponse"
        - $ref: "#/components/schemas/AsrApiResponse"
        - $ref: "#/components/schemas/EmotionApiResponse"
        - $ref: "#/components/schemas/InteractionApiResponse"
    InteractionObject:
      type: "object"
      properties:
        utteranceInsights:
          type: "array"
          items:
            $ref: "#/components/schemas/UtteranceInsightsObject"
        speakerInsights:
          $ref: "#/components/schemas/SpeakerInsightsObject"
        conversationalInsights:
          type: "array"
          items:
            $ref: "#/components/schemas/ConversationalInsightsUnit"
    SummaryApiResponse:
      oneOf:
      - $ref: "#/components/schemas/SummaryOutput"
      - $ref: "#/components/schemas/CaiErrorResponse"
    PunctuateApiResponse:
      oneOf:
      - $ref: "#/components/schemas/PunctuateOutput"
      - $ref: "#/components/schemas/CaiErrorResponse"
    CaiErrorCodeResponse:
      required:
      - "errorCode"
      - "message"
      type: "object"
      properties:
        errorCode:
          type: "string"
          enum:
          - "CAI-101"
          - "CAI-102"
          - "CAI-103"
          - "CAI-104"
          - "CAI-105"
          - "CAI-106"
          - "CAI-107"
          - "CAI-108"
          - "CAI-109"
          - "CAI-110"
        message:
          type: "string"
          description: "Helpful description of the errorCode"
        parameterName:
          type: "string"
          description: "Name of parameter if specified in the message"
    PunctuateOutput:
      required:
      - "texts"
      type: "object"
      properties:
        texts:
          type: "array"
          items:
            type: "string"
    AsrApiResponse:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          oneOf:
          - $ref: "#/components/schemas/TranscribedObject"
          - $ref: "#/components/schemas/CaiErrorResponse"
    EmotionObject:
      type: "array"
      items:
        $ref: "#/components/schemas/EmotionSegment"
    InteractionApiResponse:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          oneOf:
          - $ref: "#/components/schemas/InteractionObject"
          - $ref: "#/components/schemas/CaiErrorResponse"
    EmotionSegment:
      required:
      - "emotion"
      - "end"
      - "start"
      type: "object"
      properties:
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        emotion:
          type: "string"
          example: "Neutral"
          enum:
          - "Anger"
          - "Excitement"
          - "Frustration"
          - "Joy"
          - "Sadness"
          - "Neutral"
        confidence:
          type: "number"
          format: "float"
          example: 0.97
    DiarizeSegment:
      required:
      - "end"
      - "speakerId"
      - "start"
      type: "object"
      properties:
        speakerId:
          type: "string"
          example: "JohnDoe"
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
        confidence:
          type: "number"
          format: "float"
          example: 0.97
    UtteranceInsightsUnit:
      required:
      - "name"
      - "value"
      type: "object"
      properties:
        name:
          type: "string"
          example: "Emotion"
          enum:
          - "Emotion"
        value:
          type: "string"
          example: "Neutral"
        confidence:
          type: "number"
          format: "float"
          example: 0.97
      additionalProperties:
        type: "string"
    SummaryTimingsUnit:
      required:
      - "value"
      type: "object"
      properties:
        confidence:
          type: "number"
          format: "float"
          example: 0.97
        value:
          type: "string"
          example: "This meeting is focussed on rise of on demand marketplaces, online marketplaces and regulated services"
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 3600.1
    TranscribedObject:
      required:
      - "transcript"
      - "words"
      type: "object"
      properties:
        speakerCount:
          type: "integer"
          description: "The number of speakers detected. Field is set only when enableSpeakerDiarization is true."
          format: "int32"
          example: 2
        utterances:
          type: "array"
          description: "Speaker wise utterances. Field is set only when enableSpeakerDiarization is true."
          items:
            $ref: "#/components/schemas/UtteranceObject"
        words:
          type: "array"
          items:
            $ref: "#/components/schemas/WordSegment"
        confidence:
          type: "number"
          description: "Overall transcription confidence."
          format: "float"
        transcript:
          type: "string"
          description: "The entire transcript with/without punctuations according to the input."
    DiarizedObject:
      required:
      - "speakerCount"
      - "utterances"
      type: "object"
      properties:
        speakerCount:
          type: "integer"
          format: "int32"
          example: 2
        utterances:
          type: "array"
          items:
            $ref: "#/components/schemas/DiarizeSegment"
    SpeakerIdentificationObject:
      required:
      - "utterances"
      type: "object"
      properties:
        utterances:
          type: "array"
          items:
            $ref: "#/components/schemas/DiarizeSegment"
    ConversationalInsightsUnitValues:
      required:
      - "end"
      - "start"
      - "value"
      type: "object"
      properties:
        confidence:
          type: "number"
          format: "float"
          example: 0.97
        value:
          type: "string"
          example: "RingCentral"
        start:
          type: "number"
          format: "float"
          example: 4.7
        end:
          type: "number"
          format: "float"
          example: 5.1
        groupId:
          type: "string"
          example: "0"
          description: "Paragraph index of the long summary."
        speakerId:
          type: "string"
          example: "JohnDoe"
        assignee:
          type: "string"
          example: "Speaker"
        category:
          type: "string"
          example: "NextStep"
        text:
          type: "string"
          example: "All right, now let us go down to a CD settings."
        question:
          type: "string"
          example: "So so you want me to add it to the B D as well?"
        answer:
          type: "string"
          example: "Or or you can add another tab and have it resigned."
      additionalProperties:
        type: "string"
    ConversationalInsightsUnit:
      required:
      - "name"
      - "values"
      type: "object"
      properties:
        name:
          type: "string"
          example: "KeyPhrases"
          enum:
          - "ExtractiveSummary"
          - "AbstractiveSummaryLong"
          - "AbstractiveSummaryShort"
          - "KeyPhrases"
          - "QuestionsAsked"
          - "OverallSentiment"
          - "Topics"
        values:
          type: "array"
          items:
            $ref: "#/components/schemas/ConversationalInsightsUnitValues"
    SpeakerInsightsValuesItems:
      required:
      - "speakerId"
      - "value"
      type: "object"
      properties:
        speakerId:
          type: "string"
          example: "JohnDoe"
        value:
          type: "string"
          description: "The value corresponding to the insight for the speaker"
          example: "20:80"
      additionalProperties:
        type: "string"
    SummaryApiOutput:
      type: "object"
      properties:
        status:
          type: "string"
          enum:
          - "Success"
          - "Fail"
        response:
          $ref: "#/components/schemas/SummaryApiResponse"
    SpeakerInsightsObject:
      type: "object"
      properties:
        speakerCount:
          type: "integer"
          format: "int32"
          example: 2
        insights:
          type: "array"
          items:
            $ref: "#/components/schemas/SpeakerInsightsUnit"
    SummaryOutputUnit:
      type: "object"
      properties:
        name:
          type: "string"
          example: "AbstractiveShort"
          enum:
          - "Extractive"
          - "AbstractiveLong"
          - "AbstractiveShort"
          - "All"
        values:
          type: "array"
          description: "Summary output units sorted by their occurrence in the conversation"
          items:
            $ref: "#/components/schemas/SummaryTimingsUnit"
    SpeakerInsightsUnit:
      required:
      - "name"
      - "values"
      type: "object"
      properties:
        name:
          type: "string"
          example: "TalkToListenRatio"
          enum:
          - "Energy"
          - "Pace"
          - "TalkToListenRatio"
          - "QuestionsAsked"
        values:
          type: "array"
          items:
            $ref: "#/components/schemas/SpeakerInsightsValuesItems"
    SummaryUnit:
      required:
      - "text"
      - "speakerId"
      - "start"
      - "end"
      type: "object"
      properties:
        speakerId:
          type: "string"
          example: "JohnDoe"
        text:
          type: "string"
          example: "Hello! This is John."
        start:
          type: "number"
          format: "float"
          example: 0.3
        end:
          type: "number"
          format: "float"
          example: 5.1
    CaiAsyncApiResponse:
      type: "object"
      properties:
        jobId:
          type: "string"
    SummaryInput:
      required:
      - "summaryType"
      - "utterances"
      type: "object"
      properties:
        summaryType:
          type: "string"
          description: "Type of summary to be computed"
          example: "AbstractiveShort"
          enum:
          - "Extractive"
          - "AbstractiveShort"
          - "AbstractiveLong"
          - "AbstractiveAll"
          - "All"
        utterances:
          type: "array"
          items:
            $ref: "#/components/schemas/SummaryUnit"
    PunctuateInput:
      required:
      - "texts"
      type: "object"
      properties:
        texts:
          type: "array"
          items:
            type: "string"
    EnrollmentStatus:
      required:
      - "enrollmentComplete"
      - "speakerId"
      - "totalSpeechDuration"
      type: "object"
      properties:
        enrollmentQuality:
          type: "string"
          description: "Quality of the enrollment."
          example: "Average"
          enum:
          - "Poor"
          - "Average"
          - "Good"
          - "High"
        enrollmentComplete:
          type: "boolean"
          description: "Status of the enrollment."
          example: true
        speakerId:
          type: "string"
          example: "JohnDoe"
        totalEnrollDuration:
          type: "number"
          description: "Total speech duration of the enrollment in seconds."
          format: "float"
          example: 20.1
        totalSpeechDuration:
          type: "number"
          description: "Total duration of the enrollment in seconds."
          format: "float"
          example: 30.5
    EnrollmentInput:
      required:
      - "content"
      - "encoding"
      - "speakerId"
      allOf:
      - $ref: "#/components/schemas/EnrollmentPatchInput"
      - type: "object"
        properties:
          speakerId:
            type: "string"
            description: "The enrollment ID to be registered. Acceptable format [a-zA-Z0-9_]+"
            example: "JohnDoe"
    EnrollmentPatchInput:
      required:
      - "content"
      - "encoding"
      type: "object"
      properties:
        encoding:
          type: "string"
          description: "The encoding of the original audio"
          example: "Wav"
          enum:
          - "Mpeg"
          - "Mp4"
          - "Wav"
          - "Webm"
          - "Webp"
          - "Aac"
          - "Avi"
          - "Ogg"
        languageCode:
          type: "string"
          description: "Language spoken in the audio file."
          example: "en-US"
        content:
          type: "string"
          description: "Base64-encoded audio file data."
          example: "base64EncodedAudioInput"
    PagingSchema:
      required:
      - "page"
      - "perPage"
      - "totalPages"
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
          example: 2
        totalPages:
          type: "integer"
          format: "int32"
          example: 10
        perPage:
          type: "integer"
          format: "int32"
          example: 5
    ListEnrolledSpeakers:
      required:
      - "paging"
      - "records"
      type: "object"
      properties:
        paging:
          $ref: "#/components/schemas/PagingSchema"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/EnrollmentStatus"
    AudioInput:
      required:
      - "encoding"
      - "languageCode"
      allOf:
      - $ref: "#/components/schemas/ContentInput"
      - type: "object"
        properties:
          encoding:
            type: "string"
            description: "The encoding of the original audio"
            example: "Wav"
            enum:
            - "Mpeg"
            - "Mp4"
            - "Wav"
            - "Webm"
            - "Webp"
            - "Aac"
            - "Avi"
            - "Ogg"
          languageCode:
            type: "string"
            description: "Language spoken in the audio file."
            example: "en-US"
          source:
            type: "string"
            description: "Source of the audio file eg: Phone, RingCentral, GoogleMeet, Zoom etc"
            example: "RingCentral"
          audioType:
            type: "string"
            description: "Type of the audio"
            example: "CallCenter"
            enum:
            - "CallCenter"
            - "Meeting"
            - "EarningsCalls"
            - "Interview"
            - "PressConference"
            - "Voicemail"
    SpeechContextPhrasesInput:
      required:
      - "phrases"
      type: "object"
      minItems: 1
      maxItems: 50
      properties:
        phrases:
          type: "array"
          description: "Words or Phrases to boost"
          example:
          - "Mohit"
          - "Sushant"
          - "RingCentral"
          items:
            type: "string"
    DiarizeInput:
      allOf:
      - $ref: "#/components/schemas/AudioInput"
      - type: "object"
        properties:
          separateSpeakerPerChannel:
            type: "boolean"
            description: "Set to True if the input audio is multi-channel and each channel has a separate speaker."
            example: false
          speakerCount:
            type: "integer"
            description: "Number of speakers in the file, omit parameter if unknown"
            format: "int32"
            example: 2
          speakerIds:
            type: "array"
            description: "Optional set of speakers to be identified from the call."
            example:
            - "speakerId1"
            - "speakerId2"
            items:
              type: "string"
          enableVoiceActivityDetection:
            type: "boolean"
            description: "Apply voice activity detection."
    AsrInput:
      allOf:
      - $ref: "#/components/schemas/DiarizeInput"
      - type: "object"
        properties:
          enablePunctuation:
            type: "boolean"
            description: "Enables Smart Punctuation API."
          enableSpeakerDiarization:
            type: "boolean"
            description: "Tags each word corresponding to the speaker."
            default: false
          separateSpeakerPerChannel:
            type: "boolean"
            description: "Indicates that the input audio is multi-channel and each channel has a separate speaker."
            default: false
          speechContexts:
            type: "array"
            description: "Indicates the words/phrases that will be used for boosting the transcript. This can help to boost accuracy for cases like Person Names, Company names etc."
            items:
              $ref: "#/components/schemas/SpeechContextPhrasesInput"
    ContentInput:
      type: "object"
      properties:
        contentUri:
          type: "string"
          description: "Publicly facing uri"
          format: "uri"
    IdentifyInput:
      required:
      - "speakerIds"
      allOf:
      - $ref: "#/components/schemas/AudioInput"
      - type: "object"
        properties:
          speakerIds:
            type: "array"
            description: "Set of enrolled speakers to be identified from the media."
            example:
            - "speakerId1"
            - "speakerId2"
            items:
              type: "string"
          enableVoiceActivityDetection:
            type: "boolean"
            description: "Apply voice activity detection."
    InteractionInput:
      allOf:
      - $ref: "#/components/schemas/DiarizeInput"
      - type: "object"
        properties:
          insights:
            type: "array"
            items:
              $ref: "#/components/schemas/InsightsEnum"
          speechContexts:
            type: "array"
            description: "Indicates the words/phrases that will be used for boosting the transcript. This can help to boost accuracy for cases like Person Names, Company names etc."
            items:
              $ref: "#/components/schemas/SpeechContextPhrasesInput"
    InsightsEnum:
      type: "string"
      enum:
      - "All"
      - "KeyPhrases"
      - "Emotion"
      - "AbstractiveSummaryLong"
      - "AbstractiveSummaryShort"
      - "ExtractiveSummary"
      - "Topics"
      - "TalkToListenRatio"
      - "Energy"
      - "Pace"
      - "QuestionsAsked"
    SocMsgPhoneNumber:
      description: "Phone number."
      type: "string"
      example: "+33634231224"
    ContentPublished:
      description: "True if the content is published on the remote channel."
      type: "boolean"
      example: true
    ContentCreatedFrom:
      description: "Created from of the content."
      type: "string"
      enum:
      - "Synchronizer"
      - "Interface"
      - "Api"
      - "AutoSurvey"
      - "AutoResponseTrigger"
      - "AutoRequestEmail"
    ContentSynchronizationError:
      description: "Synchronization error details."
      type: "string"
    SocMsgCreationTime:
      description: "Creation time of the resource."
      format: "date-time"
      type: "string"
      example: "2023-02-04T12:43:07Z"
    ContentInReplyToAuthorIdentityId:
      description: "The identity identifier of the content to which this content is a reply to."
      type: "string"
      example: "541014e17asdd8ccf000023"
    ContentAttachments:
      description: |
        An array containing the attachments that are attached to the content.
      type: "array"
      minItems: 0
      items:
        $ref: "#/components/schemas/ContentAttachment"
    ContentTemplateName:
      type: "string"
      description: |
        Applicable to WhatsApp channels only.

        Name of the Whatsapp template to use for the content.

        All available template names are visible on the Whatsapp Business Manager interface.
      example: "customer_order_shipment_template"
    ContentComponents:
      type: "array"
      minItems: 0
      description: |
        Applicable to WhatsApp channels only.

        Component configuration of the Whatsapp template to use for the content.

        All available components are visible on the Whatsapp Business Manager interface.
      items:
        type: "object"
        properties:
          type:
            type: "string"
          parameters:
            type: "array"
            minItems: 0
            items:
              type: "object"
              properties:
                type:
                  type: "string"
                text:
                  type: "string"
      example:
      - Message1:
        - param11:
            type: "Name"
            text: "John"
        - param12:
            type: "Message"
            text: "Product rocks!"
      - Message2:
        - param21:
            type: "Agent Name"
            text: "Alice"
        - param22:
            type: "Message"
            text: "Thank you"
    SocMsgLastModifiedTime:
      description: "The time when the last modification was completed."
      format: "date-time"
      type: "string"
      example: "2023-02-04T12:43:07Z"
    SocMsgCreationTimeOrder:
      description: "Ordering by creationTime is descending by default."
      type: "string"
      enum:
      - "-creationTime"
      - "+creationTime"
      - "creationTime"
      default: "-creationTime"
      example: "+creationTime"
    ContentType:
      description: "Type of the content."
      type: "string"
      enum:
      - "Album"
      - "AuthenticateMessage"
      - "AuthenticateResponse"
      - "Carousel"
      - "CarouselMessage"
      - "Comment"
      - "ContactMessage"
      - "Content"
      - "Email"
      - "FormMessage"
      - "FormResponse"
      - "HsmMessage"
      - "Link"
      - "ListMessage"
      - "Media"
      - "Message"
      - "OutboundMessage"
      - "PaymentMessage"
      - "Photo"
      - "PostbackMessage"
      - "PrivateTweet"
      - "PromptMessage"
      - "Question"
      - "Review"
      - "ReviewResponse"
      - "RichLinkMessage"
      - "SelectMessage"
      - "Status"
      - "TemplateMessage"
      - "TimePickerMessage"
      - "Tweet"
      - "Video"
      - "VideoCallRequestMessage"
      example: "Email"
    ContentAutoSubmittedField:
      description: |
        Auto submitted content:
          - won't reopen tasks or interventions
          - can be used to send automatic messages like asking an user to follow on twitter, sending a survey, etc,
          - doesn't get included in statistics
      type: "boolean"
    ContentCategoryIds:
      description: |
        List of the category identifiers of the content.
      items:
        type: "string"
      type: "array"
      example:
      - "541014e17aa58d8ccf000023"
      - "541014e17aa58d8ccf002023"
    ContentStatus:
      description: "Content status."
      type: "string"
      enum:
      - "New"
      - "Assigned"
      - "Replied"
      - "UserReply"
      - "UserInitiated"
      - "Ignored"
    ContentList:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/ContentModel"
        paging:
          $ref: "#/components/schemas/NonEnumeratedPagingModel"
    ContentBody:
      description: |
        The content's body.

        On creation this field is mandatory except for WhatsApp content using templates.

        The following are the max length restrictions for the different channels supported.
        Channel and max length
          * Apple Messages For Business (max length 10000)
          * Email (max length 262144)
          * RingCX Digital Messaging (max length 1024)
          * Facebook (max length 8000)
          * GoogleBusinessMessages (max length 3000)
          * Google My Business (max length 4000)
          * Instagram (max length 950)
          * Instagram Messaging (max length 1000)
          * LinkedIn (max length 3000)
          * Messenger (max length 2000)
          * Twitter (max length 280)
          * Viber (max length 7000)
          * WhatsApp (max length 3800)
          * Youtube (max length 8000)
      type: "string"
      example: "Body of the content"
    ContentModel:
      type: "object"
      required:
      - "id"
      - "attachments"
      - "authorIdentityId"
      - "autoSubmitted"
      - "body"
      - "bodyFormatted"
      - "bodyInputFormat"
      - "categoryIds"
      - "creationTime"
      - "createdFrom"
      - "creatorId"
      - "inReplyToAuthorIdentityId"
      - "inReplyToContentId"
      - "interventionId"
      - "language"
      - "public"
      - "published"
      - "rating"
      - "remotelyDeleted"
      - "sourceId"
      - "sourceType"
      - "sourceUri"
      - "status"
      - "synchronizationStatus"
      - "synchronizationError"
      - "threadId"
      - "title"
      - "type"
      - "lastModifiedTime"
      - "capabilitiesSupported"
      properties:
        attachments:
          $ref: "#/components/schemas/ContentAttachments"
        authorIdentityId:
          $ref: "#/components/schemas/ContentAuthorIdentityId"
        autoSubmitted:
          $ref: "#/components/schemas/ContentAutoSubmittedField"
        body:
          $ref: "#/components/schemas/ContentBody"
        bodyFormatted:
          $ref: "#/components/schemas/ContentBodyFormatted"
        bodyInputFormat:
          $ref: "#/components/schemas/ContentBodyInputFormat"
        categoryIds:
          $ref: "#/components/schemas/ContentCategoryIds"
        contextData:
          $ref: "#/components/schemas/ContentContextData"
        creationTime:
          $ref: "#/components/schemas/SocMsgCreationTime"
        createdFrom:
          $ref: "#/components/schemas/ContentCreatedFrom"
        creatorId:
          $ref: "#/components/schemas/ContentCreatorId"
        foreignCategories:
          $ref: "#/components/schemas/ContentForeignCategories"
        id:
          $ref: "#/components/schemas/ContentId"
        inReplyToAuthorIdentityId:
          $ref: "#/components/schemas/ContentInReplyToAuthorIdentityId"
        inReplyToContentId:
          $ref: "#/components/schemas/ContentInReplyToContentId"
        interventionId:
          $ref: "#/components/schemas/ContentInterventionId"
        language:
          $ref: "#/components/schemas/ContentLanguage"
        public:
          $ref: "#/components/schemas/ContentPublic"
        published:
          $ref: "#/components/schemas/ContentPublished"
        rating:
          $ref: "#/components/schemas/ContentRating"
        remotelyDeleted:
          $ref: "#/components/schemas/ContentRemotelyDeleted"
        sourceId:
          $ref: "#/components/schemas/ContentSourceId"
        sourceType:
          $ref: "#/components/schemas/ContentSourceType"
        sourceUri:
          $ref: "#/components/schemas/ContentSourceUri"
        status:
          $ref: "#/components/schemas/ContentStatus"
        synchronizationStatus:
          $ref: "#/components/schemas/ContentSynchronizationStatus"
        synchronizationError:
          $ref: "#/components/schemas/ContentSynchronizationError"
        threadId:
          $ref: "#/components/schemas/ContentThreadId"
        title:
          $ref: "#/components/schemas/ContentTitle"
        type:
          $ref: "#/components/schemas/ContentType"
        lastModifiedTime:
          $ref: "#/components/schemas/SocMsgLastModifiedTime"
        capabilitiesSupported:
          $ref: "#/components/schemas/ContentCapabilitiesSupported"
    ContentLanguage:
      description: "Language of the content."
      type: "string"
      example: "En"
    ContentEmailAddresses:
      type: "array"
      minItems: 0
      items:
        $ref: "#/components/schemas/SocMsgEmailAddress"
      description: |
        Applicable on Email channels only.

        An array containing the email addresses used in sections of the email.

        This parameter is mandatory when initiating a discussion.
    ContentAttachmentIds:
      description: |
        An array containing the attachment identifiers that need to be attached to the content.
      type: "array"
      minItems: 0
      items:
        $ref: "#/components/schemas/AttachmentId"
      example:
      - "541014e17aa58d8ccf000023"
      - "541014e17aa58d8ccf000023"
    ContentAuthorIdentityId:
      description: |
        Identity identifier of the author of content.

        Not mandatory on creation, by default it uses the token's user first identity on channel.
      type: "string"
      example: "541014e17aa58d8ccf000023"
    ContentTemplateLanguage:
      type: "string"
      description: |
        Applicable to WhatsApp channels only.

        Language of the Whatsapp template to use for the content. All available template languages are visible on the Whatsapp Business Manager interface.

        Language specified must conform to the ISO 639-1 alpha-2 codes for representing the names of languages.
      example: "fr"
    ContentInterventionId:
      description: "The intervention identifier of the content."
      type: "string"
      example: "123415437asdd8ccf000023"
    ContentAttachment:
      type: "object"
      properties:
        contentType:
          description: |
            Type of the attachment, which is generally a MIME attachment type like "image/jpeg", etc.

            Security level in ED determines what type of attachment is allowed.

            Based on the security level the following attachment types are supported.

            "Strict" level allows safe extensions below:
            Content name and supported types
            * audio (supports aac mp3 ogg m4a)
            * image (supports bmp gif jpg jpeg png svg webp)
            * pdf (supports pdf)
            * text (supports csv txt log)
            * video (supports avi flv m4v mkv mov mp4 mpg qt wmv)
            * other (supports amr dms vcard tif tiff mpeg)

            "Relaxed" level allows documents:
            Content name and supported types
            * excel (supports xls xlsm xlsx xlc xlt xltm xltx)
            * presentation (supports key odp otp)
            * powerpoint (supports pps ppt pptx pot)
            * spreadsheet (supports numbers ods ots)
            * word (supports doc docm docx dotm dotx)
            * word_processing (supports pages odt ott rtf)

            "Permissive" level allows all documents.

            However, there are no security level restrictions for content posted through the channel.
          type: "string"
          example: "image/jpeg"
        creationTime:
          description: "Creation time of the attachment."
          format: "date-time"
          type: "string"
          example: "2023-02-04T12:43:07Z"
        embedded:
          description: "Embedded in a content."
          type: "boolean"
          example: false
        filename:
          description: "Filename of the attachment."
          type: "string"
          example: "0.jpeg"
        id:
          description: "Identifier of the attachment."
          type: "string"
          example: "54085e5b7aa58d8b5d00006c"
        public:
          description: "Privacy setting of the attachment."
          type: "boolean"
          example: false
        size:
          description: "Size of the attachment."
          type: "integer"
          format: "int32"
          example: 217571
        lastModifiedTime:
          description: "The time when the last modification was completed."
          format: "date-time"
          type: "string"
          example: "2023-02-04T12:43:07Z"
        uri:
          description: "Uri of the attachment."
          type: "string"
          format: "uri"
          example: "https://example.digital.ringcentral.com/files/attachments/54085e5b7aa58d8b5d00006c"
    ContentCapabilitiesSupported:
      description: "Types of structured messages that can be used to reply to this type of message."
      items:
        type: "string"
      type: "array"
    SocMsgEmailAddress:
      description: "Email address."
      type: "string"
      format: "email"
      example: "user@example.com"
    AttachmentId:
      type: "string"
      description: "Attachment identifier."
      example: "506d9e817aa58d1259000f12"
    ContentRating:
      description: |
        Rating of the content.

        Present only if the content supports rating and rating is filled.
      type: "integer"
      format: "int32"
      example: 4
    ContentId:
      description: "Identifier of the content."
      type: "string"
      example: "541014e17aa58d8ccf000023"
    ContentSynchronizationStatus:
      description: "Synchronization status."
      type: "string"
      example: "success"
    ContentRemotelyDeleted:
      description: "True if the content has been deleted on the remote channel."
      type: "boolean"
      example: false
    ContentPublic:
      description: |
        True if the content is publicly visible on the remote channel (default).

        Private content is NOT supported on every channel.
      type: "boolean"
      default: true
    ContentContextData:
      description: |
        Additional data of the content.

        The contextData hash keys are the custom fields keys.
      type: "object"
      additionalProperties:
        type: "string"
      example:
        test1: "value1"
        test2: "value2"
    ContentInReplyToContentId:
      description: |
        The content identifier to which this content is a reply to.

        On creation, if omitted, a new discussion will be created. If the channel does not support to initiate discussion this parameter is mandatory.
      type: "string"
      example: "123414e17asdd8ccf000023"
    CreateContentRequest:
      type: "object"
      properties:
        authorIdentityId:
          $ref: "#/components/schemas/ContentAuthorIdentityId"
        body:
          $ref: "#/components/schemas/ContentBody"
        inReplyToContentId:
          $ref: "#/components/schemas/ContentInReplyToContentId"
        public:
          $ref: "#/components/schemas/ContentPublic"
        sourceId:
          $ref: "#/components/schemas/ContentSourceId"
        attachmentIds:
          $ref: "#/components/schemas/ContentAttachmentIds"
        title:
          $ref: "#/components/schemas/ContentTitle"
        to:
          anyOf:
          - $ref: "#/components/schemas/ContentPhoneNumbers"
          - $ref: "#/components/schemas/ContentEmailAddresses"
        cc:
          $ref: "#/components/schemas/ContentEmailAddresses"
        bcc:
          $ref: "#/components/schemas/ContentEmailAddresses"
        templateName:
          $ref: "#/components/schemas/ContentTemplateName"
        templateLanguage:
          $ref: "#/components/schemas/ContentTemplateLanguage"
        components:
          $ref: "#/components/schemas/ContentComponents"
        contextData:
          $ref: "#/components/schemas/ContentContextData"
        autoSubmitted:
          $ref: "#/components/schemas/ContentAutoSubmittedField"
    ContentPhoneNumbers:
      type: "array"
      minItems: 0
      items:
        $ref: "#/components/schemas/SocMsgPhoneNumber"
      description: |
        Applicable on SMS/WhatsApp channels only.

        Must be a phone number to which the message will be sent. It must be in the E.164 format. For example: +33634231224.

        This parameter is mandatory when initiating a discussion.
    ContentBodyInputFormat:
      description: "Values can be Text or Html."
      enum:
      - "Text"
      - "Html"
      type: "string"
    ContentForeignCategories:
      description: |
        External categories of the content.

        Present only if the content has foreignCategories.
      items:
        type: "string"
      type: "array"
      minItems: 0
      example:
      - "foreign_category_id"
    ContentSourceType:
      description: "Type of the channel."
      type: "string"
      enum:
      - "AppleMessagesForBusiness"
      - "Email"
      - "EngageMessaging"
      - "Facebook"
      - "GoogleBusinessMessages"
      - "GoogleMyBusiness"
      - "Instagram"
      - "InstagramMessaging"
      - "Linkedin"
      - "Messenger"
      - "Twitter"
      - "Viber"
      - "WhatsApp"
      - "Youtube"
    ContentThreadId:
      description: "Content thread identifier of the content."
      type: "string"
    NonEnumeratedPagingModel:
      type: "object"
      required:
      - "perPage"
      additionalProperties: false
      properties:
        perPage:
          type: "integer"
          format: "int32"
          minimum: 1
          maximum: 1000
          description: |
            Current page size, describes how many items are in each page.
            Matches "perPage" parameter from the request.
          example: 50
        pageToken:
          type: "string"
          description: |
            Current page token. May be omitted if result is empty (because non-existent page
            was specified or perPage=0 was requested)
        nextPageToken:
          type: "string"
          description: "A page token to be used to fetch the next page of the result set. May be omitted if the current page is the last one."
        previousPageToken:
          type: "string"
          description: |
            A page token to be used to fetch the previous page of the result set.
            May be omitted if the current page is the first one or if the result set does not support backward navigation.
        firstPageToken:
          type: "string"
          description: "A page token to be used to fetch the first page of the result set."
    ContentSourceUri:
      description: "External Uri of the content channel."
      type: "string"
      format: "uri"
    ContentBodyFormatted:
      description: "Text and HTML formatted versions of the content body."
      type: "object"
      properties:
        html:
          type: "string"
        text:
          type: "string"
    ContentTitle:
      description: |
        Applicable to Email channels only.

        The subject of the email.

        This field is mandatory when initiating a discussion.
      type: "string"
      example: "An email title"
    ContentSourceId:
      description: |
        Identifier of the channel.

        On creation if `inReplyToContentId` is specified, the channel will be determined from it. Otherwise, this parameter is mandatory.
      type: "string"
      example: "fff415437asdd8ccf000023"
    ContentCreatorId:
      description: "RC user id of the creator"
      type: "string"
      example: "2683222036"
    ContentStatuses:
      type: "array"
      items:
        $ref: "#/components/schemas/ContentStatus"
    IdentityTwDescription:
      description: |
        Twitter description of the identity.

        Applicable to Twitter channels only.
      type: "string"
      example: "Software Engineer"
    IdentityTwLocation:
      description: |
        Twitter location of the identity.

        Applicable to Twitter channels only.
      type: "string"
      example: "Paris"
    IdentityAvatarURI:
      description: "Identity's avatar Uri."
      type: "string"
      format: "uri"
      example: "https://example.com/assets/avatar/default-79fd530c58c2a6b83a11fcc0e842ed7023ceb69292cfeb857bc2af2c624b90fd.png"
    IdentityMcc:
      description: |
        Viber mobile country code of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "1"
    IdentityApiVersion:
      description: |
        Viber API version of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "10"
    IdentityDeviceType:
      description: |
        Viber device type of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "SM-G970U1"
    IdentityTwStatusesCount:
      description: |
        Count of tweets of the identity.

        Applicable to Twitter channels only.
      type: "integer"
      format: "int32"
      example: 42
    IdentityTwFollowingCount:
      description: |
        Count of Twitter accounts followed by the identity.

        Applicable to Twitter channels only.
      type: "integer"
      format: "int32"
      example: 500
    SocMsgCompany:
      description: "Company."
      type: "string"
      example: "Test Company"
    IdentitiesList:
      type: "object"
      required:
      - "records"
      - "paging"
      properties:
        records:
          type: "array"
          minItems: 0
          items:
            $ref: "#/components/schemas/IdentityModel"
        paging:
          $ref: "#/components/schemas/NonEnumeratedPagingModel"
    IdentityModel:
      type: "object"
      required:
      - "id"
      - "type"
      - "creationTime"
      - "lastModifiedTime"
      properties:
        id:
          $ref: "#/components/schemas/IdentityId"
        avatarUri:
          $ref: "#/components/schemas/IdentityAvatarURI"
        company:
          $ref: "#/components/schemas/SocMsgCompany"
        creationTime:
          $ref: "#/components/schemas/SocMsgCreationTime"
        displayName:
          $ref: "#/components/schemas/IdentityDisplayName"
        emailAddress:
          $ref: "#/components/schemas/SocMsgEmailAddress"
        extraValues:
          $ref: "#/components/schemas/IdentityExtraValues"
        firstName:
          $ref: "#/components/schemas/SocMsgFirstName"
        gender:
          $ref: "#/components/schemas/SocMsgGender"
        homePhone:
          $ref: "#/components/schemas/SocMsgPhoneNumber"
        identityGroupId:
          $ref: "#/components/schemas/IdentityGroupId"
        lastName:
          $ref: "#/components/schemas/SocMsgLastName"
        mobilePhone:
          $ref: "#/components/schemas/SocMsgPhoneNumber"
        screenName:
          $ref: "#/components/schemas/IdentityScreenName"
        type:
          $ref: "#/components/schemas/IdentityType"
        lastModifiedTime:
          $ref: "#/components/schemas/SocMsgLastModifiedTime"
        userIds:
          $ref: "#/components/schemas/IdentityUserIds"
        uuid:
          $ref: "#/components/schemas/IdentityUUID"
        mobileDeviceInfo:
          $ref: "#/components/schemas/IdentityMobileDeviceInfo"
        fbBio:
          $ref: "#/components/schemas/IdentityFbBio"
        fbCategory:
          $ref: "#/components/schemas/IdentityFbCategory"
        fbLocale:
          $ref: "#/components/schemas/IdentityFbLocale"
        igFollowersCount:
          $ref: "#/components/schemas/IdentityIgFollowersCount"
        twDescription:
          $ref: "#/components/schemas/IdentityTwDescription"
        twFollowersCount:
          $ref: "#/components/schemas/IdentityTwFollowersCount"
        twFollowingCount:
          $ref: "#/components/schemas/IdentityTwFollowingCount"
        twStatusesCount:
          $ref: "#/components/schemas/IdentityTwStatusesCount"
        twLocation:
          $ref: "#/components/schemas/IdentityTwLocation"
        apiVersion:
          $ref: "#/components/schemas/IdentityApiVersion"
        country:
          $ref: "#/components/schemas/IdentityCountry"
        deviceType:
          $ref: "#/components/schemas/IdentityDeviceType"
        language:
          $ref: "#/components/schemas/IdentityLanguage"
        mcc:
          $ref: "#/components/schemas/IdentityMcc"
        mnc:
          $ref: "#/components/schemas/IdentityMnc"
        primaryDeviceOs:
          $ref: "#/components/schemas/IdentityPrimaryDeviceOs"
        viberVersion:
          $ref: "#/components/schemas/IdentityViberVersion"
    IdentityGroupId:
      description: |
        The identity group id references the identity group that contains
        all information (phone, notes, etc.). Many identities may belong to
        this group. If the identity group id is null, it means that identity
        does not have a group and any extra information.
      type: "string"
      example: "54085e5b7aa58d8b5d00006c"
    IdentityPrimaryDeviceOs:
      description: |
        Viber primary device OS of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "Android 11"
    IdentityId:
      type: "string"
      description: "Identity identifier."
      example: "506d9e817aa58d1259000f12"
    IdentityCountry:
      description: |
        Viber country of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "FR"
    IdentityFbBio:
      description: |
        Facebook biography of the identity.

        Applicable to Facebook and Messenger channels only.
      type: "string"
      example: "Painter living in Paris"
    IdentityLanguage:
      description: |
        Viber language of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "fr-FR"
    SocMsgLastName:
      description: "LastName."
      type: "string"
      example: "Doe"
    IdentityExtraValues:
      description: "Additional data to store along the identity."
      type: "object"
      additionalProperties:
        type: "string"
      example:
        key: "value"
    IdentityMnc:
      description: |
        Viber mobile network code of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "220"
    IdentityViberVersion:
      description: |
        Viber application version of the identity.

        Applicable to Viber channels only.
      type: "string"
      example: "19.5.0"
    IdentityFbCategory:
      description: |
        Facebook category of the identity.

        Applicable to Facebook and Messenger channels only.
      type: "string"
      example: "Computers/Internet"
    SocMsgFirstName:
      description: "FirstName."
      type: "string"
      example: "John"
    SocMsgGender:
      description: "Gender."
      type: "string"
      example: "Woman"
      enum:
      - "Man"
      - "Woman"
      nullable: true
    IdentityTwFollowersCount:
      description: |
        Twitter followers count of the identity.

        Applicable to Twitter channels only.
      type: "integer"
      format: "int32"
      example: 10
    IdentityScreenName:
      description: "Screen name of the identity."
      type: "string"
      example: "John D."
    IdentityFbLocale:
      description: |
        Facebook locale of the identity.

        Applicable to Facebook and Messenger channels only.
      type: "string"
      example: "fr_FR"
    IdentityMobileDeviceInfo:
      description: |
        Device info of the identity.

        Applicable to RingCX Digital Messaging channels only.
      type: "string"
      example: "iPhone (iPhone); iOS 15.0.2"
    IdentityUserIds:
      description: "List of the associated user identifiers who can use the identity."
      items:
        type: "string"
        example: "54085e5b7aa58d8b5d00006c"
      type: "array"
      minItems: 0
    IdentityType:
      description: "Type of the identity."
      type: "string"
      enum:
      - "AppleMessagesForBusiness"
      - "Email"
      - "EngageMessaging"
      - "Facebook"
      - "GoogleBusinessMessages"
      - "GoogleMyBusiness"
      - "Instagram"
      - "Linkedin"
      - "Twitter"
      - "Viber"
      - "WhatsApp"
      - "Youtube"
    IdentityIgFollowersCount:
      description: |
        Instagram followers count of the identity.

        Applicable to Instagram and InstagramMessaging channels only.
      type: "integer"
      format: "int32"
      example: 10
    IdentityDisplayName:
      description: "Display name of the identity."
      type: "string"
      example: "John Doe"
    IdentityUUID:
      description: "UUID of the identity."
      type: "string"
      example: "9680ab94-3b78-495c-bb2c-a969954d8260"
    ScimErrorResponse:
      type: "object"
      properties:
        detail:
          type: "string"
          description: "Detailed error message"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:Error"
        scimType:
          type: "string"
          description: "Bad request type when status code is 400"
          enum:
          - "uniqueness"
          - "tooMany"
          - "mutability"
          - "sensitive"
          - "invalidSyntax"
          - "invalidFilter"
          - "invalidPath"
          - "invalidValue"
          - "invalidVers"
          - "noTarget"
        status:
          type: "string"
          description: "Same as HTTP status code, e.g. 400, 401, etc."
    ScimSchemaAttribute:
      required:
      - "name"
      - "type"
      - "multiValued"
      - "required"
      - "mutability"
      - "returned"
      - "uniqueness"
      type: "object"
      properties:
        name:
          type: "string"
          description: "The name of the attribute"
        type:
          type: "string"
          enum:
          - "string"
          - "boolean"
          - "decimal"
          - "integer"
          - "dateTime"
          - "reference"
          - "complex"
        subAttributes:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimSchemaAttribute"
        multiValued:
          type: "boolean"
          description: "A Boolean value indicating the attribute's plurality"
          default: false
        description:
          type: "string"
          description: "The description of the attribute"
        required:
          type: "boolean"
          default: false
        canonicalValues:
          type: "array"
          items:
            type: "string"
          description: "A collection of suggested canonical values"
        caseExact:
          type: "boolean"
          default: false
        mutability:
          type: "string"
          enum:
          - "readOnly"
          - "readWrite"
          - "immutable"
          - "writeOnly"
          description: "Indicates the circumstances under which the value of the attribute can be (re)defined"
        returned:
          type: "string"
          enum:
          - "always"
          - "never"
          - "default"
          - "request"
          description: "Indicates when an attribute and associated values are returned"
        uniqueness:
          type: "string"
          enum:
          - "none"
          - "server"
          - "global"
          description: "Specifies how the service provider enforces uniqueness of attribute values"
        referenceTypes:
          type: "array"
          items:
            type: "string"
          description: "Indicates the SCIM resource types that be referenced"
    ScimMeta:
      type: "object"
      properties:
        created:
          type: "string"
          format: "date-time"
        lastModified:
          type: "string"
          format: "date-time"
        location:
          type: "string"
          description: "Resource location URI"
        resourceType:
          type: "string"
          enum:
          - "User"
          - "Group"
          - "ResourceType"
          - "Schema"
      description: "Resource metadata"
    ScimSchemaSearchResponse:
      type: "object"
      properties:
        Resources:
          type: "array"
          description: "Resource type list"
          items:
            $ref: "#/components/schemas/ScimSchemaResponse"
        itemsPerPage:
          type: "integer"
          format: "int64"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        startIndex:
          type: "integer"
          format: "int64"
        totalResults:
          type: "integer"
          format: "int64"
    ScimSchemaResponse:
      required:
      - "id"
      type: "object"
      properties:
        id:
          type: "string"
          description: "The unique URI of the schema"
        name:
          type: "string"
          description: "The name of the schema"
        description:
          type: "string"
          description: "The description of the schema"
        attributes:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimSchemaAttribute"
        meta:
          $ref: "#/components/schemas/ScimMeta"
    ScimEnterpriseUser:
      type: "object"
      properties:
        department:
          type: "string"
    ScimUserAddress:
      required:
      - "type"
      type: "object"
      properties:
        country:
          type: "string"
        locality:
          type: "string"
        postalCode:
          type: "string"
        region:
          type: "string"
        streetAddress:
          type: "string"
        type:
          type: "string"
          enum:
          - "work"
    ScimUserSearchResponse:
      type: "object"
      properties:
        Resources:
          type: "array"
          description: "User list"
          items:
            $ref: "#/components/schemas/ScimUserResponse"
        itemsPerPage:
          type: "integer"
          format: "int64"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        startIndex:
          type: "integer"
          format: "int64"
        totalResults:
          type: "integer"
          format: "int64"
    ScimEmail:
      required:
      - "type"
      - "value"
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "work"
        value:
          type: "string"
    ScimPhoto:
      required:
      - "type"
      - "value"
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "photo"
        value:
          type: "string"
    ScimUser:
      required:
      - "emails"
      - "name"
      - "schemas"
      - "userName"
      type: "object"
      properties:
        active:
          type: "boolean"
          description: "User status"
          default: false
        addresses:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimUserAddress"
        emails:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimEmail"
        externalId:
          type: "string"
          description: "External unique resource ID defined by provisioning client"
        id:
          type: "string"
          description: "Unique resource ID defined by RingCentral"
        name:
          $ref: "#/components/schemas/ScimName"
        phoneNumbers:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimPhoneNumber"
        photos:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimPhoto"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:schemas:core:2.0:User"
        title:
          type: "string"
          description: "User title"
        urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
          $ref: "#/components/schemas/ScimEnterpriseUser"
        userName:
          type: "string"
          description: "MUST be same as work type email address"
    ScimPhoneNumber:
      required:
      - "type"
      - "value"
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "work"
          - "mobile"
          - "other"
        value:
          type: "string"
    ScimUserResponse:
      required:
      - "emails"
      - "name"
      - "schemas"
      - "userName"
      type: "object"
      properties:
        active:
          type: "boolean"
          description: "User status"
          default: false
        addresses:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimUserAddress"
        emails:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimEmail"
        externalId:
          type: "string"
          description: "External unique resource ID defined by provisioning client"
        id:
          type: "string"
          description: "Unique resource ID defined by RingCentral"
        name:
          $ref: "#/components/schemas/ScimName"
        phoneNumbers:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimPhoneNumber"
        photos:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimPhoto"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:schemas:core:2.0:User"
        title:
          type: "string"
          description: "User title"
        urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:
          $ref: "#/components/schemas/ScimEnterpriseUser"
        userName:
          type: "string"
          description: "MUST be same as work type email address"
        meta:
          $ref: "#/components/schemas/ScimMeta"
    ScimName:
      required:
      - "familyName"
      - "givenName"
      type: "object"
      properties:
        familyName:
          type: "string"
        givenName:
          type: "string"
    ScimSearchRequest:
      type: "object"
      properties:
        count:
          type: "integer"
          description: "Page size"
          format: "int32"
        filter:
          type: "string"
          description: "Only support 'userName' or 'email' filter expressions for now"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:SearchRequest"
        startIndex:
          type: "integer"
          description: "Start index (1-based)"
          format: "int32"
    ScimUserPatch:
      required:
      - "Operations"
      - "schemas"
      type: "object"
      properties:
        Operations:
          type: "array"
          description: "Patch operations list"
          items:
            $ref: "#/components/schemas/ScimPatchOperation"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ScimPatchOperation:
      required:
      - "op"
      type: "object"
      properties:
        op:
          type: "string"
          enum:
          - "add"
          - "replace"
          - "remove"
        path:
          type: "string"
        value:
          type: "string"
          description: "Corresponding 'value' of that field specified by 'path'"
    ScimProviderConfig:
      type: "object"
      properties:
        authenticationSchemes:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimAuthenticationScheme"
        bulk:
          $ref: "#/components/schemas/ScimBulkSupported"
        changePassword:
          $ref: "#/components/schemas/ScimSupported"
        etag:
          $ref: "#/components/schemas/ScimSupported"
        filter:
          $ref: "#/components/schemas/ScimFilterSupported"
        patch:
          $ref: "#/components/schemas/ScimSupported"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
        sort:
          $ref: "#/components/schemas/ScimSupported"
        xmlDataFormat:
          $ref: "#/components/schemas/ScimSupported"
    ScimFilterSupported:
      type: "object"
      properties:
        maxResults:
          type: "integer"
          format: "int32"
        supported:
          type: "boolean"
          default: false
    ScimAuthenticationScheme:
      type: "object"
      properties:
        description:
          type: "string"
        documentationUri:
          type: "string"
        name:
          type: "string"
        specUri:
          type: "string"
        primary:
          type: "boolean"
    ScimBulkSupported:
      type: "object"
      properties:
        maxOperations:
          type: "integer"
          format: "int32"
        maxPayloadSize:
          type: "integer"
          format: "int32"
        supported:
          type: "boolean"
          default: false
    ScimSupported:
      type: "object"
      properties:
        supported:
          type: "boolean"
          default: false
    ScimSchemaExtension:
      required:
      - "schema"
      - "required"
      type: "object"
      properties:
        schema:
          type: "string"
          enum:
          - "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
        required:
          type: "boolean"
          default: false
    ScimResourceTypeSearchResponse:
      type: "object"
      properties:
        Resources:
          type: "array"
          description: "Resource type list"
          items:
            $ref: "#/components/schemas/ScimResourceTypeResponse"
        itemsPerPage:
          type: "integer"
          format: "int64"
        schemas:
          type: "array"
          items:
            type: "string"
            enum:
            - "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        startIndex:
          type: "integer"
          format: "int64"
        totalResults:
          type: "integer"
          format: "int64"
    ScimResourceTypeResponse:
      required:
      - "name"
      - "endpoint"
      - "schema"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Unique resource type ID, same value as the \"name\" attribute"
        name:
          type: "string"
          description: "Resource type name"
        endpoint:
          type: "string"
          description: "The resource type's HTTP-addressable endpoint"
        description:
          type: "string"
          description: "Description of the resource type"
        schema:
          type: "string"
          enum:
          - "urn:ietf:params:scim:schemas:core:2.0:User"
        schemaExtensions:
          type: "array"
          items:
            $ref: "#/components/schemas/ScimSchemaExtension"
        meta:
          $ref: "#/components/schemas/ScimMeta"
    QueueOpportunities:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          type: "number"
          description: "Value for queue opportunities"
          format: "double"
      description: "Queue opportunities data for the specified grouping"
    QueueSlaOptions:
      type: "string"
      enum:
      - "InSla"
      - "OutSla"
    CallsByDirection:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByDirectionBreakdown"
      description: "Data for calls with breakdown by direction (Inbound, Outbound)"
    DirectGrouping:
      required:
      - "groupBy"
      type: "object"
      properties:
        groupBy:
          $ref: "#/components/schemas/GroupingOptions"
        keys:
          type: "array"
          items:
            type: "string"
          description: "This field can be used to specify unique identifiers of entities selected in `groupBy` field. The response data will be limited to these entities only"
      description: "This grouping allows to specify the `groupBy` option by which the data in the response will be grouped"
    CallsByOriginBreakdown:
      required:
      - "internal"
      - "external"
      type: "object"
      properties:
        internal:
          type: "number"
          description: "Value for Internal origin"
          format: "double"
        external:
          type: "number"
          description: "Value for External origin"
          format: "double"
      description: "Result breakdown by origin"
    AggregationType:
      type: "string"
      description: "Counter aggregation type. Can be `Sum`, `Average`, `Min`, `Max` or `Percent`"
      enum:
      - "Sum"
      - "Average"
      - "Max"
      - "Min"
      - "Percent"
    AggregationInterval:
      type: "string"
      description: "Time interval which will be used for aggregation. Can be `Hour`, `Day`, `Week` or `Month`"
      enum:
      - "Hour"
      - "Day"
      - "Week"
      - "Month"
    AdvancedTimeSettings:
      type: "object"
      properties:
        includeDays:
          type: "array"
          items:
            $ref: "#/components/schemas/DayOfWeek"
          description: "Days of the week for which the report is calculated"
        includeHours:
          type: "array"
          items:
            $ref: "#/components/schemas/HoursInterval"
          description: "Hours of the day for which the report is calculated"
      description: "Allows more granular control over time included in the report"
    CallsByActions:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByActionsBreakdown"
      description: "Data for calls with breakdown by action (HoldOff, HoldOn, ParkOn, ParkOff, BlindTransfer, WarmTransfer, DTMFTransfer)"
    CallsByResult:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByResultBreakdown"
      description: "Data for calls with breakdown by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)"
    CallsByResponse:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByResponseBreakdown"
      description: "Data for calls with breakdown by response (Answered, NotAnswered, Connected, NotConnected)"
    Origin:
      type: "string"
      enum:
      - "Internal"
      - "External"
    CallResult:
      type: "string"
      enum:
      - "Completed"
      - "Abandoned"
      - "Voicemail"
      - "Unknown"
      - "Missed"
      - "Accepted"
    CallsCounters:
      type: "object"
      properties:
        allCalls:
          $ref: "#/components/schemas/AllCalls"
        callsByDirection:
          $ref: "#/components/schemas/CallsByDirection"
        callsByOrigin:
          $ref: "#/components/schemas/CallsByOrigin"
        callsByResponse:
          $ref: "#/components/schemas/CallsByResponse"
        callsSegments:
          $ref: "#/components/schemas/CallsBySegments"
        callsByResult:
          $ref: "#/components/schemas/CallsByResult"
        callsActions:
          $ref: "#/components/schemas/CallsByActions"
        callsByCompanyHours:
          $ref: "#/components/schemas/CallsByCompanyHours"
        callsByQueueSla:
          $ref: "#/components/schemas/CallsByQueueSla"
        callsByType:
          $ref: "#/components/schemas/CallsByType"
        queueOpportunities:
          $ref: "#/components/schemas/QueueOpportunities"
      description: "Call volume data for the specified grouping"
    TimeSettings:
      required:
      - "timeZone"
      - "timeRange"
      type: "object"
      properties:
        timeZone:
          type: "string"
          description: "Name of the timezone that will be used for `includeDays` and `includeHours` filters and aggregation intervals. For example 'America/Los_Angeles', 'Europe/Zurich'. See also *[Time Zones](https://www.iana.org/time-zones)*. Value in this field doesn't affect interpretation of time in `timeRange`, as it already includes offset from UTC"
        timeRange:
          $ref: "#/components/schemas/TimeRange"
        advancedTimeSettings:
          $ref: "#/components/schemas/AdvancedTimeSettings"
      description: "Date-time range for the calls. The call is considered to be within time range if it started within time range. Both borders are inclusive"
    AllCalls:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          type: "number"
          description: "Value for all calls"
          format: "double"
      description: "Data for all calls"
    Grouping:
      description: "This field specifies the dimensions by which the response should be grouped and specific keys to narrow the response. See also [Call Aggregate reports](https://developers.ringcentral.com/guide/analytics/aggregate) or [Call Timeline reports](https://developers.ringcentral.com/guide/analytics/timeline) pages in the developer guide for more information"
      oneOf:
      - $ref: "#/components/schemas/DirectGrouping"
      - $ref: "#/components/schemas/GroupingByMembers"
    GroupingOptions:
      type: "string"
      description: "The selected grouping option"
      enum:
      - "Company"
      - "CompanyNumbers"
      - "Users"
      - "Queues"
      - "IVRs"
      - "SharedLines"
      - "UserGroups"
      - "Sites"
      - "Departments"
    AggregationResponseOptionsCounters:
      type: "object"
      properties:
        allCalls:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of all calls count"
        callsByDirection:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by direction (Inbound, Outbound)"
        callsByOrigin:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by origin (Internal, External)"
        callsByResponse:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by response (Answered, NotAnswered, Connected, NotConnected)"
        callsSegments:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)"
        callsByResult:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)"
        callsByCompanyHours:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by company hours (BusinessHours, AfterHours)"
        callsByQueueSla:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by queue SLA (InSLA, OutSLA). This counter is only applicable to Queues grouping"
        callsByActions:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by action (HoldOff, HoldOn, ParkOn, ParkOff, BlindTransfer, WarmTransfer, DTMFTransfer)"
        callsByType:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls count by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)"
        queueOpportunities:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/QueueOpportunitiesAggregationType"
          description: "Aggregation of calls count by the total number of times a Queue call was presented to the user. It is limited to `groupBy` Users and `groupByMembers` (Department, Queue, Site, UserGroup) grouping. Only the listed below options for call filters are applicable to `queueOpportunities` and provide meaningful results: `queues` (selected queue extension ids), `callResults` (Missed, Abandoned), `callResponses` (Answered, NotAnswered), `origins` (Internal, External)"
      description: |-
        The formula is defined by `aggregationType` and `aggregationInterval` for every counter individually.
        If `aggregationType` is `Sum` or `Percent`, `aggregationInterval` is not supported.
        If `aggregationType` is `Min`, `Max` or `Average`, `aggregationInterval` is required
    AggregationResponseOptionsTimers:
      type: "object"
      properties:
        allCallsDuration:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of all calls duration"
        callsDurationByDirection:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by direction (Inbound, Outbound)"
        callsDurationByOrigin:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by origin (Internal, External)"
        callsDurationByResponse:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by response (Answered, NotAnswered, Connected, NotConnected)"
        callsSegmentsDuration:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)"
        callsDurationByResult:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)"
        callsDurationByCompanyHours:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by company hours (BusinessHours, AfterHours)"
        callsDurationByQueueSla:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by queue SLA (InSLA, OutSLA). This timer is only applicable to Queues grouping"
        callsDurationByType:
          required:
          - "aggregationType"
          type: "object"
          properties:
            aggregationType:
              $ref: "#/components/schemas/AggregationType"
            aggregationInterval:
              $ref: "#/components/schemas/AggregationInterval"
          description: "Aggregation of calls duration by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)"
      description: |-
        The formula is defined by `aggregationType` and `aggregationInterval` for every timer individually.
        If `aggregationType` is `Sum` or `Percent`, `aggregationInterval` is not supported.
        If `aggregationType` is `Min`, `Max` or `Average`, `aggregationInterval` is supported, but not required.
        If left empty, aggregation will be performed on per-call basis
    ValueType:
      type: "string"
      description: "Unit of the result value"
      enum:
      - "Percent"
      - "Seconds"
      - "Instances"
    TimeSpentFilter:
      type: "object"
      properties:
        minSeconds:
          type: "integer"
          description: "Minimum duration in seconds"
          format: "int64"
        maxSeconds:
          type: "integer"
          description: "Maximum duration in seconds"
          format: "int64"
      description: "Filtering of calls based on the time spent by specified mailbox(es) on call"
    DayOfWeek:
      type: "string"
      enum:
      - "Sunday"
      - "Monday"
      - "Tuesday"
      - "Wednesday"
      - "Thursday"
      - "Friday"
      - "Saturday"
    CompanyHoursOptions:
      type: "string"
      enum:
      - "BusinessHours"
      - "AfterHours"
    AggregationResponse:
      required:
      - "paging"
      - "data"
      type: "object"
      properties:
        paging:
          $ref: "#/components/schemas/ResponsePaging"
        data:
          $ref: "#/components/schemas/AggregationResponseData"
    Direction:
      type: "string"
      enum:
      - "Inbound"
      - "Outbound"
    CallResponse:
      type: "string"
      enum:
      - "Answered"
      - "NotAnswered"
      - "Connected"
      - "NotConnected"
    CallsByOrigin:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByOriginBreakdown"
      description: "Data for calls with breakdown by origin (Internal, External)"
    QueueOpportunitiesAggregationType:
      type: "string"
      description: "Counter aggregation type for queue opportunities, limited to `Sum` only."
      enum:
      - "Sum"
    CallType:
      type: "string"
      enum:
      - "Direct"
      - "FromQueue"
      - "ParkRetrieval"
      - "Transferred"
      - "Outbound"
      - "Overflow"
    CallFilters:
      type: "object"
      properties:
        extensionFilters:
          $ref: "#/components/schemas/ExtensionFilters"
        queues:
          type: "array"
          items:
            type: "string"
          description: "List of queues extension ids which allows to get data only for calls that were routed through any of these queues"
        calledNumbers:
          type: "array"
          items:
            type: "string"
          description: "The direct company numbers the caller called (joined via OR)"
        directions:
          type: "array"
          items:
            $ref: "#/components/schemas/Direction"
          description: "Specifies the call directions relative to the scope specified in grouping object (joined via OR). Not applicable to internal origin calls with company scope"
        origins:
          type: "array"
          items:
            $ref: "#/components/schemas/Origin"
          description: "Specifies whether an external party was present in the initial segment of the call (joined via OR)"
        callResponses:
          type: "array"
          items:
            $ref: "#/components/schemas/CallResponse"
          description: "Filtering of calls by first response (joined via OR)"
        callResults:
          type: "array"
          items:
            $ref: "#/components/schemas/CallResult"
          description: "Filtering of calls by the nature of call result (joined via OR)"
        callSegments:
          type: "array"
          items:
            $ref: "#/components/schemas/CallSegmentFilter"
          description: "Filtering of calls by presence of specific segment (joined via OR)"
        callActions:
          type: "array"
          items:
            $ref: "#/components/schemas/CallAction"
          description: "Filtering of calls by presence of specific action (joined via OR)"
        companyHours:
          type: "array"
          items:
            $ref: "#/components/schemas/CompanyHoursOptions"
          description: "Filtering of calls by company's business hours or after hours (joined via OR)"
        callDuration:
          $ref: "#/components/schemas/CallDurationFilter"
        timeSpent:
          $ref: "#/components/schemas/TimeSpentFilter"
        queueSla:
          type: "array"
          items:
            $ref: "#/components/schemas/QueueSlaOptions"
          description: "Filtering calls that were within or out of queue SLA (joined via OR). Only applicable to Queues grouping"
        callTypes:
          type: "array"
          items:
            $ref: "#/components/schemas/CallType"
          description: "Filtering of calls based on how the call started from the callee perspective (joined via OR). If the call is outbound relative to the grouping scope, CallType is Outbound"
      description: "Optional filters that limit the scope of calls (joined via AND)"
    AggregationResponseOptions:
      type: "object"
      properties:
        counters:
          $ref: "#/components/schemas/AggregationResponseOptionsCounters"
        timers:
          $ref: "#/components/schemas/AggregationResponseOptionsTimers"
      description: "This field provides mapping of possible breakdown options for call aggregation and aggregation formula"
    CallsByDirectionBreakdown:
      required:
      - "inbound"
      - "outbound"
      type: "object"
      properties:
        inbound:
          type: "number"
          description: "Value for Inbound direction"
          format: "double"
        outbound:
          type: "number"
          description: "Value for Outbound direction"
          format: "double"
      description: "Result breakdown by direction"
    AggregationRequest:
      required:
      - "grouping"
      - "timeSettings"
      - "responseOptions"
      type: "object"
      properties:
        grouping:
          $ref: "#/components/schemas/Grouping"
        timeSettings:
          $ref: "#/components/schemas/TimeSettings"
        callFilters:
          $ref: "#/components/schemas/CallFilters"
        responseOptions:
          $ref: "#/components/schemas/AggregationResponseOptions"
    CallSegmentLengthFilter:
      type: "object"
      properties:
        minSeconds:
          type: "integer"
          description: "Minimum duration of segment in seconds"
          format: "int64"
        maxSeconds:
          type: "integer"
          description: "Maximum duration of segment in seconds"
          format: "int64"
      description: "Duration bounds for the segment"
    CallsByQueueSla:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByQueueSlaBreakdown"
      description: "Data for calls with breakdown by queue SLA (InSLA, OutSLA). This counter is only applicable to Queues grouping"
    HoursInterval:
      required:
      - "from"
      - "to"
      type: "object"
      properties:
        from:
          type: "string"
          description: "Time in format hh:mm"
        to:
          type: "string"
          description: "Time in format hh:mm"
    AggregationResponseData:
      required:
      - "groupedBy"
      type: "object"
      properties:
        groupedBy:
          $ref: "#/components/schemas/GroupingOptions"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/AggregationResponseRecord"
          description: "A list of call aggregations as per the grouping and filtering options specified in the request"
      description: "Aggregation result"
    ResponsePaging:
      required:
      - "page"
      - "perPage"
      - "totalPages"
      - "totalElements"
      type: "object"
      properties:
        page:
          type: "integer"
          description: "The current page number"
          format: "int64"
        perPage:
          type: "integer"
          description: "How many items are displayed on the page"
          format: "int64"
        totalPages:
          type: "integer"
          description: "The total number of pages"
          format: "int64"
        totalElements:
          type: "integer"
          description: "The total number of items in the dataset"
          format: "int64"
      description: "Paging information"
    CallAction:
      type: "string"
      enum:
      - "HoldOff"
      - "HoldOn"
      - "ParkOn"
      - "ParkOff"
      - "BlindTransfer"
      - "WarmTransfer"
      - "DTMFTransfer"
    CallsByActionsBreakdown:
      required:
      - "parkOn"
      - "parkOff"
      - "holdOn"
      - "holdOff"
      - "blindTransfer"
      - "warmTransfer"
      - "dtmfTransfer"
      type: "object"
      properties:
        parkOn:
          type: "number"
          description: "Value for ParkOn action"
          format: "double"
        parkOff:
          type: "number"
          description: "Value for ParkOff action"
          format: "double"
        holdOn:
          type: "number"
          description: "Value for HoldOn action"
          format: "double"
        holdOff:
          type: "number"
          description: "Value for HoldOff action"
          format: "double"
        blindTransfer:
          type: "number"
          description: "Value for BlindTransfer action"
          format: "double"
        warmTransfer:
          type: "number"
          description: "Value for WarmTransfer action"
          format: "double"
        dtmfTransfer:
          type: "number"
          description: "Value for DTMFTransfer action"
          format: "double"
      description: "Result breakdown by actions"
    ExtensionFilters:
      type: "object"
      properties:
        fromIds:
          type: "array"
          items:
            type: "string"
          description: "List of extension ids to match against incoming calls, joined via OR condition. Only applicable for `groupByMembers` options and Users, IVRs, SharedLines and Queues in `groupBy`"
        toIds:
          type: "array"
          items:
            type: "string"
          description: "List of extension ids to match against outgoing calls, joined via OR condition. Limited to the extension id that first accepted the call. Only applicable for `groupByMembers` options and Users, IVRs and SharedLines in `groupBy`"
      description: "Specifies filtering based on extension ids"
    CallsByResponseBreakdown:
      required:
      - "answered"
      - "notAnswered"
      - "connected"
      - "notConnected"
      type: "object"
      properties:
        answered:
          type: "number"
          description: "Value for Answered response"
          format: "double"
        notAnswered:
          type: "number"
          description: "Value for NotAnswered response"
          format: "double"
        connected:
          type: "number"
          description: "Value for Connected response"
          format: "double"
        notConnected:
          type: "number"
          description: "Value for NotConnected response"
          format: "double"
      description: "Result breakdown by response"
    CallSegmentOptions:
      type: "string"
      description: "Call segment for filtering"
      enum:
      - "Ringing"
      - "LiveTalk"
      - "Hold"
      - "Park"
      - "Transfer"
      - "IvrPrompt"
      - "Voicemail"
      - "VmGreeting"
      - "Setup"
    CallSegmentFilter:
      required:
      - "segment"
      type: "object"
      properties:
        segment:
          $ref: "#/components/schemas/CallSegmentOptions"
        length:
          $ref: "#/components/schemas/CallSegmentLengthFilter"
    GroupingByMembers:
      required:
      - "groupByMembers"
      type: "object"
      properties:
        groupByMembers:
          $ref: "#/components/schemas/MembersGroupingOptions"
        keys:
          type: "array"
          items:
            type: "string"
          description: "This field can be used to further limit the users selection by specifying unique identifiers of corresponding entities. For example, providing unique queue ids along with `Queue` in `groupByMembers` field will limit the response to users that are queue agents in at least one of these queues"
      description: "This grouping allows to specify the `groupByMembers` option. The response data will be grouped by users and will only include users that belong to the scope selected in `groupByMembers` field"
    MembersGroupingOptions:
      type: "string"
      description: "The selected data scope"
      enum:
      - "Department"
      - "UserGroup"
      - "Queue"
      - "Site"
    CallsByResultBreakdown:
      required:
      - "completed"
      - "abandoned"
      - "voicemail"
      - "missed"
      - "accepted"
      - "unknown"
      type: "object"
      properties:
        completed:
          type: "number"
          description: "Value for Completed result"
          format: "double"
        abandoned:
          type: "number"
          description: "Value for Abandoned result"
          format: "double"
        voicemail:
          type: "number"
          description: "Value for Voicemail result"
          format: "double"
        missed:
          type: "number"
          description: "Value for Missed result"
          format: "double"
        accepted:
          type: "number"
          description: "Value for Accepted result"
          format: "double"
        unknown:
          type: "number"
          description: "Value for Unknown result"
          format: "double"
      description: "Result breakdown by call result"
    CallsByCompanyHours:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByCompanyHoursBreakdown"
      description: "Data for calls with breakdown by company hours (BusinessHours, AfterHours)"
    CallsByCompanyHoursBreakdown:
      required:
      - "businessHours"
      - "afterHours"
      type: "object"
      properties:
        businessHours:
          type: "number"
          description: "Value for BusinessHours company hours"
          format: "double"
        afterHours:
          type: "number"
          description: "Value for AfterHours company hours"
          format: "double"
      description: "Result breakdown by company hours"
    CallDurationFilter:
      type: "object"
      properties:
        minSeconds:
          type: "integer"
          description: "Minimum duration of call in seconds"
          format: "int64"
        maxSeconds:
          type: "integer"
          description: "Maximum duration of call in seconds"
          format: "int64"
      description: "Filtering of calls based on the overall call length"
    CallsByQueueSlaBreakdown:
      required:
      - "inSla"
      - "outOfSla"
      type: "object"
      properties:
        inSla:
          type: "number"
          description: "Value for InSla queue SLA"
          format: "double"
        outOfSla:
          type: "number"
          description: "Value for OutSla queue SLA"
          format: "double"
      description: "Result breakdown by queue SLA"
    CallsBySegments:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsBySegmentsBreakdown"
      description: "Data for calls with breakdown by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)"
    CallsByTypeBreakdown:
      required:
      - "direct"
      - "fromQueue"
      - "parkRetrieval"
      - "transferred"
      - "outbound"
      - "overflow"
      type: "object"
      properties:
        direct:
          type: "number"
          description: "Value for Direct type"
          format: "double"
        fromQueue:
          type: "number"
          description: "Value for FromQueue type"
          format: "double"
        parkRetrieval:
          type: "number"
          description: "Value for ParkRetrieval type"
          format: "double"
        transferred:
          type: "number"
          description: "Value for Transferred type"
          format: "double"
        outbound:
          type: "number"
          description: "Value for Outbound type"
          format: "double"
        overflow:
          type: "number"
          description: "Value for Overflow type"
          format: "double"
      description: "Result breakdown by type"
    CallsByType:
      required:
      - "valueType"
      - "values"
      type: "object"
      properties:
        valueType:
          $ref: "#/components/schemas/ValueType"
        values:
          $ref: "#/components/schemas/CallsByTypeBreakdown"
      description: "Data for calls with breakdown by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound, Overflow)"
    CallsBySegmentsBreakdown:
      required:
      - "ringing"
      - "liveTalk"
      - "hold"
      - "park"
      - "transfer"
      - "ivrPrompt"
      - "voicemail"
      - "vmGreeting"
      - "setup"
      type: "object"
      properties:
        ringing:
          type: "number"
          description: "Value for Ringing segment"
          format: "double"
        liveTalk:
          type: "number"
          description: "Value for LiveTalk segment"
          format: "double"
        hold:
          type: "number"
          description: "Value for Hold segment"
          format: "double"
        park:
          type: "number"
          description: "Value for Park segment"
          format: "double"
        transfer:
          type: "number"
          description: "Value for Transfer segment"
          format: "double"
        ivrPrompt:
          type: "number"
          description: "Value for IVRPrompt segment"
          format: "double"
        voicemail:
          type: "number"
          description: "Value for Voicemail segment"
          format: "double"
        vmGreeting:
          type: "number"
          description: "Value for VMGreeting segment"
          format: "double"
        setup:
          type: "number"
          description: "Value for Setup segment"
          format: "double"
      description: "Result breakdown by segments"
    AggregationResponseRecord:
      required:
      - "key"
      type: "object"
      properties:
        key:
          type: "string"
          description: "Grouping key"
        info:
          $ref: "#/components/schemas/KeyInfo"
        timers:
          $ref: "#/components/schemas/CallsTimers"
        counters:
          $ref: "#/components/schemas/CallsCounters"
    KeyInfo:
      type: "object"
      properties:
        extensionNumber:
          type: "string"
          description: "Extension's number"
        name:
          type: "string"
          description: "Extension's name"
      description: "Additional info about the key"
    CallsTimers:
      type: "object"
      properties:
        allCalls:
          $ref: "#/components/schemas/AllCalls"
        callsByDirection:
          $ref: "#/components/schemas/CallsByDirection"
        callsByOrigin:
          $ref: "#/components/schemas/CallsByOrigin"
        callsByResponse:
          $ref: "#/components/schemas/CallsByResponse"
        callsSegments:
          $ref: "#/components/schemas/CallsBySegments"
        callsByResult:
          $ref: "#/components/schemas/CallsByResult"
        callsByCompanyHours:
          $ref: "#/components/schemas/CallsByCompanyHours"
        callsByQueueSla:
          $ref: "#/components/schemas/CallsByQueueSla"
        callsByType:
          $ref: "#/components/schemas/CallsByType"
      description: "Call length data for the specified grouping"
    TimeRange:
      required:
      - "timeFrom"
      - "timeTo"
      type: "object"
      properties:
        timeFrom:
          type: "string"
          description: "The start date-time for resulting records in RFC 3339 format including offset between local time and UTC, for example 2016-03-15T18:07:52.534Z"
          format: "date-time"
        timeTo:
          type: "string"
          description: "The end date-time for resulting records in RFC 3339 format including offset between local time and UTC, for example 2016-03-15T18:07:52.534Z"
          format: "date-time"
      description: "Time range for the request"
    TimelineResponsePoint:
      required:
      - "time"
      type: "object"
      properties:
        time:
          type: "string"
          description: "Time point in RFC 3339 format"
          format: "date-time"
        timers:
          $ref: "#/components/schemas/CallsTimers"
        counters:
          $ref: "#/components/schemas/CallsCounters"
    TimelineResponse:
      required:
      - "paging"
      - "data"
      type: "object"
      properties:
        paging:
          $ref: "#/components/schemas/ResponsePaging"
        data:
          $ref: "#/components/schemas/TimelineResponseData"
    Interval:
      type: "string"
      enum:
      - "Hour"
      - "Day"
      - "Week"
      - "Month"
    TimelineResponseOptions:
      type: "object"
      properties:
        counters:
          $ref: "#/components/schemas/TimelineResponseOptionsCounters"
        timers:
          $ref: "#/components/schemas/TimelineResponseOptionsTimers"
      description: "Counters and timers options for calls breakdown"
    TimelineResponseOptionsTimers:
      type: "object"
      properties:
        allCallsDuration:
          type: "boolean"
          description: "Include data for all calls duration"
        callsDurationByDirection:
          type: "boolean"
          description: "Include breakdown of calls duration by direction (Inbound, Outbound)"
        callsDurationByOrigin:
          type: "boolean"
          description: "Include breakdown of calls duration by origin (Internal, External)"
        callsDurationByResponse:
          type: "boolean"
          description: "Include breakdown of calls duration by response (Answered, NotAnswered, Connected, NotConnected)"
        callsSegmentsDuration:
          type: "boolean"
          description: "Include breakdown of calls duration by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)"
        callsDurationByResult:
          type: "boolean"
          description: "Include breakdown of calls duration by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)"
        callsDurationByCompanyHours:
          type: "boolean"
          description: "Include breakdown of calls duration by company hours (BusinessHours, AfterHours)"
        callsDurationByQueueSla:
          type: "boolean"
          description: "Include breakdown of calls duration by queue SLA (InSLA, OutSLA). This timer is only applicable to Queues grouping"
        callsDurationByType:
          type: "boolean"
          description: "Include breakdown of calls duration by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)"
      description: "Options for selecting breakdown for calls duration"
    TimelineResponseRecord:
      required:
      - "key"
      type: "object"
      properties:
        key:
          type: "string"
          description: "Grouping key"
        info:
          $ref: "#/components/schemas/KeyInfo"
        points:
          type: "array"
          items:
            $ref: "#/components/schemas/TimelineResponsePoint"
          description: "List of requested call data time-value points"
    TimelineResponseOptionsCounters:
      type: "object"
      properties:
        allCalls:
          type: "boolean"
          description: "Include data for total calls count"
        callsByDirection:
          type: "boolean"
          description: "Include breakdown of calls count by direction (Inbound, Outbound)"
        callsByOrigin:
          type: "boolean"
          description: "Include breakdown of calls count by origin (Internal, External)"
        callsByResponse:
          type: "boolean"
          description: "Include breakdown of calls count by response (Answered, NotAnswered, Connected, NotConnected)"
        callsSegments:
          type: "boolean"
          description: "Include breakdown of calls count by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)"
        callsByResult:
          type: "boolean"
          description: "Include breakdown of calls count by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)"
        callsByCompanyHours:
          type: "boolean"
          description: "Include breakdown of calls count by company hours (BusinessHours, AfterHours)"
        callsByQueueSla:
          type: "boolean"
          description: "Include breakdown of calls count by queue SLA (InSLA, OutSLA). This counter is only applicable to Queues grouping"
        callsByActions:
          type: "boolean"
          description: "Include breakdown of calls count by action (HoldOff, HoldOn, ParkOn, ParkOff, BlindTransfer, WarmTransfer, DTMFTransfer)"
        callsByType:
          type: "boolean"
          description: "Include breakdown of calls count by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)"
        queueOpportunities:
          type: "boolean"
          description: "Include breakdown of calls count by the total number of times a Queue call was presented to the user. It is limited to `groupBy` Users and `groupByMembers` (Department, Queue, Site, UserGroup) grouping. Only the listed below options for call filters are applicable to `queueOpportunities` and provide meaningful results: `queues` (selected queue extension ids), `callResults` (Missed, Abandoned), `callResponses` (Answered, NotAnswered), `origins` (Internal, External)"
      description: "Options for selecting breakdown for calls count"
    TimelineRequest:
      required:
      - "grouping"
      - "timeSettings"
      - "responseOptions"
      type: "object"
      properties:
        grouping:
          $ref: "#/components/schemas/Grouping"
        timeSettings:
          $ref: "#/components/schemas/TimeSettings"
        callFilters:
          $ref: "#/components/schemas/CallFilters"
        responseOptions:
          $ref: "#/components/schemas/TimelineResponseOptions"
    TimelineResponseData:
      required:
      - "groupedBy"
      type: "object"
      properties:
        groupedBy:
          $ref: "#/components/schemas/GroupingOptions"
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/TimelineResponseRecord"
          description: "List of call data as per the grouping and filtering options specified in the request"
      description: "A list of time-value points of call data as per the grouping and filtering options specified in the request"
    TaskRecurrenceInfo:
      type: "object"
      description: "Task information"
      properties:
        schedule:
          type: "string"
          description: "Recurrence settings of a task. None for non-periodic tasks"
          default: "None"
          enum:
          - "None"
          - "Daily"
          - "Weekdays"
          - "Weekly"
          - "Monthly"
          - "Yearly"
        endingCondition:
          type: "string"
          description: "Ending condition of a task"
          default: "None"
          enum:
          - "None"
          - "Count"
          - "Date"
        endingAfter:
          maximum: 10.0
          minimum: 1
          type: "integer"
          format: "int32"
          description: "Count of iterations of periodic tasks"
        endingOn:
          type: "string"
          description: "End date of a periodic task in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) \nformat, UTC time zone\n"
          format: "date-time"
    TMUpdateTaskRequest:
      type: "object"
      properties:
        subject:
          type: "string"
          description: "Task name/subject. Max allowed length is 250 characters."
        assignees:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of an assignee"
        completenessCondition:
          type: "string"
          enum:
          - "Simple"
          - "AllAssignees"
          - "Percentage"
        startDate:
          type: "string"
          description: "Task start date in UTC time zone"
          format: "date-time"
        dueDate:
          type: "string"
          description: "Task due date/time in UTC time zone"
          format: "date-time"
        color:
          type: "string"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        section:
          type: "string"
          description: "Task section to group / search by. Max allowed length is 100 characters."
        description:
          type: "string"
          description: "Task details. Max allowed length is 102400 characters (100kB)"
        recurrence:
          $ref: "#/components/schemas/TaskRecurrenceInfo"
        attachments:
          type: "array"
          items:
            $ref: "#/components/schemas/TMAttachmentInfo"
    TMTaskList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/TMTaskInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMAttachmentInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an attachment"
        type:
          type: "string"
          description: "Type of an attachment"
          enum:
          - "File"
          - "Note"
          - "Event"
          - "Card"
    TMTaskInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a task"
        creationTime:
          type: "string"
          description: "Task creation date/time in UTC time zone"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Task the last modified time in UTC time zone"
          format: "date-time"
        type:
          type: "string"
          description: "Task type"
          enum:
          - "Task"
        creator:
          type: "object"
          properties:
            id:
              type: "string"
              description: "Internal identifier of a task creator"
        chatIds:
          type: "array"
          description: "Internal identifiers of the chats where the task is posted or shared"
          items:
            type: "string"
        status:
          type: "string"
          description: "Task execution status"
          enum:
          - "Pending"
          - "InProgress"
          - "Completed"
        subject:
          type: "string"
          description: "Task name/subject"
        assignees:
          type: "array"
          description: "Task name/subject"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of an assignee"
              status:
                type: "string"
                description: "Task execution status by assignee"
                enum:
                - "Pending"
                - "Completed"
        completenessCondition:
          type: "string"
          description: "How the task completeness should be determined"
          enum:
          - "Simple"
          - "AllAssignees"
          - "Percentage"
        completenessPercentage:
          maximum: 100.0
          minimum: 0
          type: "integer"
          format: "int32"
          description: "Current completeness percentage of the task with the specified percentage completeness condition"
        startDate:
          type: "string"
          description: "Task start date"
          format: "date-time"
        dueDate:
          type: "string"
          description: "Task due date/time"
          format: "date-time"
        color:
          type: "string"
          description: "Font color of a post with the current task"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        section:
          type: "string"
          description: "Task section to group / search by"
        description:
          type: "string"
          description: "Task details"
        recurrence:
          $ref: "#/components/schemas/TaskRecurrenceInfo"
        attachments:
          type: "array"
          items:
            $ref: "#/components/schemas/TaskAttachment"
    TaskAttachment:
      type: "object"
      properties:
        id:
          type: "string"
          description: "File ID."
        type:
          type: "string"
          description: "Possible value - File. Attachment type (currently, only File is possible)"
          enum:
          - "File"
        name:
          type: "string"
          description: "Name of the attached file (incl. extension name)"
        contentUri:
          type: "string"
          format: "uri"
          description: "URI"
    TMNavigationInfo:
      type: "object"
      properties:
        prevPageToken:
          type: "string"
          description: "Previous page token. To get previous page, user should pass one of returned token in next request and, in turn, required page will be returned with new tokens"
        nextPageToken:
          type: "string"
          description: "Next page token. To get next page, user should pass one of returned token in next request and, in turn, required page will be returned with new tokens"
    TMCompleteTaskRequest:
      type: "object"
      properties:
        status:
          type: "string"
          description: "Completeness status"
          enum:
          - "Incomplete"
          - "Complete"
        assignees:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of an assignee"
        completenessPercentage:
          maximum: 100.0
          minimum: 0
          type: "integer"
          format: "int32"
    EventRecurrenceInfo:
      type: "object"
      properties:
        schedule:
          type: "string"
          description: "Event recurrence settings. For non-periodic events the value \nis `None`. Must be greater or equal to event duration: 1- Day/Weekday; \n7 - Week; 28 - Month; 365 - Year\n"
          enum:
          - "None"
          - "Day"
          - "Weekday"
          - "Week"
          - "Month"
          - "Year"
        endingCondition:
          type: "string"
          description: "Condition of ending an event"
          enum:
          - "None"
          - "Count"
          - "Date"
        endingAfter:
          type: "integer"
          format: "int32"
          description: "Count of event iterations. For periodic events only. Value range is 1 - 10. \nMust be specified if `endingCondition` is `Count`\n"
        endingOn:
          type: "string"
          description: "Iterations ending datetime for periodic events in \n[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format\n"
          format: "date-time"
    TMEventInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an event"
        creatorId:
          type: "string"
          description: "Internal identifier of a person created an event"
        title:
          type: "string"
          description: "Event title"
        startTime:
          type: "string"
          format: "date-time"
          description: "Datetime of starting an event"
        endTime:
          type: "string"
          format: "date-time"
          description: "Datetime of ending an event"
        allDay:
          type: "boolean"
          description: "Indicates whether an event has some specific time slot or lasts for the whole day(s)"
          default: false
        recurrence:
          $ref: "#/components/schemas/EventRecurrenceInfo"
        color:
          type: "string"
          description: "Color of Event title (including its presentation in Calendar)"
          default: "Black"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        location:
          type: "string"
          description: "Event location"
        description:
          type: "string"
          description: "Event details"
    TMEventList:
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of events created by the current user"
          items:
            $ref: "#/components/schemas/TMEventInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMCreateEventRequest:
      required:
      - "endTime"
      - "startTime"
      - "title"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an event"
        creatorId:
          type: "string"
          description: "Internal identifier of a person created an event"
        title:
          type: "string"
          description: "Event title"
        startTime:
          type: "string"
          format: "date-time"
          description: "Datetime of starting an event"
        endTime:
          type: "string"
          format: "date-time"
          description: "Datetime of ending an event"
        allDay:
          type: "boolean"
          description: "Indicates whether event has some specific time slot or lasts for whole day(s)"
          default: false
        recurrence:
          $ref: "#/components/schemas/EventRecurrenceInfo"
        color:
          type: "string"
          description: "Color of Event title (including its presentation in Calendar)"
          default: "Black"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        location:
          type: "string"
          description: "Event location"
        description:
          type: "string"
          description: "Event details"
    TMChatListWithoutNavigation:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of chats"
          items:
            $ref: "#/components/schemas/TMChatInfo"
    TMChatInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a chat"
        type:
          type: "string"
          description: "Type of chat"
          enum:
          - "Everyone"
          - "Team"
          - "Group"
          - "Direct"
          - "Personal"
        public:
          type: "boolean"
          description: "For 'Team' chat type only. Team access level."
        name:
          type: "string"
          description: "For 'Team','Everyone' chats types only. Chat name."
        description:
          type: "string"
          description: "For 'Team','Everyone' chats types only. Chat description."
        status:
          type: "string"
          description: "For 'Team' chat type only. Team status."
          enum:
          - "Active"
          - "Archived"
        creationTime:
          type: "string"
          description: "Chat creation datetime in ISO 8601 format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Chat last change datetime in ISO 8601 format"
          format: "date-time"
        members:
          type: "array"
          items:
            $ref: "#/components/schemas/TMChatMemberInfo"
    TMChatMemberInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user"
    TMAddFileRequest:
      required:
      - "contentUri"
      - "id"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a file"
        contentUri:
          type: "string"
          format: "uri"
          description: "Link to binary content"
        name:
          type: "string"
          description: "Name of a file"
    TMChatList:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of chats"
          items:
            $ref: "#/components/schemas/TMChatInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMCreateTaskRequest:
      required:
      - "assignees"
      - "subject"
      type: "object"
      properties:
        subject:
          type: "string"
          description: "Task name/subject. Max allowed length is 250 characters"
        assignees:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of an assignee"
        completenessCondition:
          type: "string"
          default: "Simple"
          enum:
          - "Simple"
          - "AllAssignees"
          - "Percentage"
        startDate:
          type: "string"
          description: "Task start date in UTC time zone."
          format: "date-time"
        dueDate:
          type: "string"
          description: "Task due date/time in UTC time zone."
          format: "date-time"
        color:
          type: "string"
          default: "Black"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        section:
          type: "string"
          description: "Task section to group / search by. Max allowed length is 100 characters."
        description:
          type: "string"
          description: "Task details. Max allowed length is 102400 characters (100kB)."
        recurrence:
          $ref: "#/components/schemas/TaskRecurrenceInfo"
        attachments:
          type: "array"
          items:
            $ref: "#/components/schemas/TMAttachmentInfo"
    TMMessageAttachmentInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an attachment"
        type:
          type: "string"
          description: "Type of an attachment"
          default: "Card"
          enum:
          - "Card"
          - "Event"
          - "File"
          - "Note"
          - "Task"
        fallback:
          type: "string"
          description: "A string of default text that will be rendered in the case that the client does not support Interactive Messages"
        intro:
          type: "string"
          description: "A pretext to the message"
        author:
          $ref: "#/components/schemas/TMAttachmentAuthorInfo"
        title:
          type: "string"
          description: "Message title"
        text:
          type: "string"
          description: "A large string field (up to 1000 chars) to be displayed as the body of a message (Supports GlipDown)"
        imageUri:
          type: "string"
          format: "uri"
          description: "Link to an image displayed at the bottom of a message"
        thumbnailUri:
          type: "string"
          format: "uri"
          description: "Link to an image preview displayed to the right of a message (82x82)"
        fields:
          type: "array"
          description: "Information on navigation"
          items:
            $ref: "#/components/schemas/TMAttachmentFieldsInfo"
        footnote:
          $ref: "#/components/schemas/TMAttachmentFootnoteInfo"
        creatorId:
          type: "string"
          description: "Internal identifier of a person created an event"
        startTime:
          type: "string"
          format: "date-time"
          description: "Datetime of starting an event"
        endTime:
          type: "string"
          format: "date-time"
          description: "Datetime of ending an event"
        allDay:
          type: "boolean"
          description: "Indicates whether an event has some specific time slot or lasts for the whole day(s)"
          default: false
        recurrence:
          $ref: "#/components/schemas/EventRecurrenceInfo"
        color:
          type: "string"
          description: "Color of Event title, including its presentation in Calendar; or the color of the side border of an interactive message of a Card"
          default: "Black"
          enum:
          - "Black"
          - "Red"
          - "Orange"
          - "Yellow"
          - "Green"
          - "Blue"
          - "Purple"
          - "Magenta"
        location:
          type: "string"
          description: "Event location"
        description:
          type: "string"
          description: "Event details"
    TMMentionsInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user"
        type:
          type: "string"
          description: "Type of mention"
          enum:
          - "Person"
          - "Team"
          - "File"
          - "Link"
          - "Event"
          - "Task"
          - "Note"
          - "Card"
        name:
          type: "string"
          description: "Name of a user"
    TMAttachmentFieldsInfo:
      type: "object"
      properties:
        title:
          type: "string"
          description: "Title of an individual field"
        value:
          type: "string"
          description: "Value of an individual field (supports Markdown)"
        style:
          type: "string"
          description: "Style of width span applied to a field"
          default: "Short"
          enum:
          - "Short"
          - "Long"
    TMCreatePostRequest:
      type: "object"
      description: "Post data. At least one attribute should be provided (text or attachments)"
      properties:
        text:
          type: "string"
          description: "Text of a post. Maximum length is 10000 symbols. Mentions can be added in .md format `![:Type](id)`"
        attachments:
          type: "array"
          description: "Identifier(s) of attachments. Maximum number of attachments is 25"
          items:
            $ref: "#/components/schemas/TMAttachmentInfo"
    TMPostInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a post"
        groupId:
          type: "string"
          description: "Internal identifier of a group a post belongs to"
        type:
          type: "string"
          description: "Type of post"
          enum:
          - "TextMessage"
          - "PersonJoined"
          - "PersonsAdded"
        text:
          type: "string"
          description: "For 'TextMessage' post type only. Text of a message"
        creatorId:
          type: "string"
          description: "Internal identifier of a user - author of a post"
        addedPersonIds:
          type: "array"
          description: "For 'PersonsAdded' post type only. Identifiers of persons added to a group"
          items:
            type: "string"
        creationTime:
          type: "string"
          description: "Post creation datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Post last modification datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        attachments:
          type: "array"
          description: "List of posted attachments"
          items:
            $ref: "#/components/schemas/TMMessageAttachmentInfo"
        mentions:
          type: "array"
          items:
            $ref: "#/components/schemas/TMMentionsInfo"
        activity:
          type: "string"
          description: "Label of activity type"
        title:
          type: "string"
          description: "Title of a message. (Can be set for bot's messages only)"
        iconUri:
          type: "string"
          format: "uri"
          description: "Link to an image used as an icon for this message"
        iconEmoji:
          type: "string"
          description: "Emoji used as an icon for this message"
    TMAttachmentFootnoteInfo:
      type: "object"
      properties:
        text:
          type: "string"
          description: "Text of a footer"
        iconUri:
          type: "string"
          format: "uri"
          description: "Link to an icon displayed to the left of a footer; sized 32x32px"
        time:
          type: "string"
          description: "Message creation datetime in ISO 8601 format including timezone"
          format: "date-time"
          example: "2016-03-10T18:07:52.534Z"
    TMPostsList:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of posts"
          items:
            $ref: "#/components/schemas/TMPostInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMAttachmentAuthorInfo:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Name of a message author"
        uri:
          type: "string"
          format: "uri"
          description: "Link to an author's name"
        iconUri:
          type: "string"
          format: "uri"
          description: "Link to an image displayed to the left of an author's name; sized 82x82px"
    TMUpdatePostRequest:
      type: "object"
      properties:
        text:
          type: "string"
          description: "Post text."
    AdaptiveCardInfoRequest:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "Container"
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/AdaptiveCardInfoRequestItem"
    VerticalAlignment:
      description: "Describes how the image should be aligned if it must be cropped or if using repeat fill mode"
      anyOf:
      - type: "string"
        enum:
        - "top"
        - "center"
        - "bottom"
      - type: "string"
        pattern: "^([t|T][o|O][p|P])|([c|C][e|E][n|N][t|T][e|E][r|R])|([b|B][o|O][t|T][t|T][o|O][m|M])$"
    AdaptiveCardSelectAction:
      type: "object"
      description: "An action that will be invoked when the card is tapped or selected. `Action.ShowCard` is not supported"
      required:
      - "type"
      properties:
        type:
          type: "string"
          enum:
          - "Action.Submit"
          - "Action.OpenUrl"
          - "Action.ToggleVisibility"
    HorizontalAlignment:
      description: "Describes how the image should be aligned if it must be cropped or if using repeat fill mode"
      anyOf:
      - type: "string"
        enum:
        - "left"
        - "center"
        - "right"
      - type: "string"
        pattern: "^([l|L][e|E][f|F][t|T])|([c|C][e|E][n|N][t|T][e|E][r|R])|([r|R][i|I][g|G][h|H][t|T])$"
    AdaptiveCardAction:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "Action.ShowCard"
          - "Action.Submit"
          - "Action.OpenUrl"
          - "Action.ToggleVisibility"
        title:
          type: "string"
        card:
          $ref: "#/components/schemas/ActionAdaptiveCardInfo"
        url:
          type: "string"
          format: "uri"
    ActionAdaptiveCardInfo:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "AdaptiveCard"
        body:
          type: "array"
          items:
            $ref: "#/components/schemas/ActionCardBody"
    ImageFillMode:
      description: "Describes how the image should fill the area"
      anyOf:
      - type: "string"
        enum:
        - "cover"
        - "repeatHorizontally"
        - "repeatVertically"
        - "repeat"
      - type: "string"
        pattern: "^([c|C][o|O][v|V][e|E][r|R])|([r|R][e|E][p|P][e|E][a|A][t|T][h|H][o|O][r|R][i|I][z|Z][o|O][n|N][t|T][a|A][l|L][l|L][y|Y])|([r|R][e|E][p|P][e|E][a|A][t|T][v|V][e|E][r|R][t|T][i|I][c|C][a|A][l|L][l|L][y|Y])|([r|R][e|E][p|P][e|E][a|A][t|T])$"
    AdaptiveCardColumnInfo:
      type: "object"
      properties:
        type:
          type: "string"
        width:
          type: "string"
        items:
          type: "array"
          items:
            $ref: "#/components/schemas/AdaptiveCardColumnItemInfo"
    ActionCardBody:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "Input.Text"
        id:
          type: "string"
        isMultiline:
          type: "boolean"
          description: "If set to `true`, allows multiple lines of input"
          default: false
        placeholder:
          type: "string"
          description: "Description of the input desired. Displayed when no text has been input"
    BackgroundImage:
      type: "object"
      required:
      - "url"
      description: "Specifies a background image oa a card. Acceptable formats are PNG, JPEG, and GIF"
      properties:
        type:
          type: "string"
          enum:
          - "BackgroundImage"
          description: "Must be `BackgroundImage`"
        url:
          type: "string"
          format: "uri"
          description: "The URL/data URL of an image to be used as a background of a card. Acceptable formats are PNG, JPEG, and GIF"
        fillMode:
          $ref: "#/components/schemas/ImageFillMode"
        horizontalAlignment:
          $ref: "#/components/schemas/HorizontalAlignment"
        verticalAlignment:
          $ref: "#/components/schemas/VerticalAlignment"
    AdaptiveCardCreator:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a creator"
    AdaptiveCardColumnItemInfo:
      type: "object"
      properties:
        type:
          type: "string"
        url:
          type: "string"
          format: "uri"
        size:
          type: "string"
        style:
          type: "string"
        wrap:
          type: "boolean"
        spacing:
          type: "string"
        text:
          type: "string"
        isSubtle:
          type: "boolean"
    AdaptiveCardRequest:
      type: "object"
      required:
      - "type"
      - "version"
      properties:
        type:
          type: "string"
          description: |
            Type of attachment. This field is mandatory and filled on server side -
            will be ignored if set in request body
          enum:
          - "AdaptiveCard"
        version:
          type: "string"
          description: |
            Version. This field is mandatory and filled on server side -
            will be ignored if set in request body
        body:
          type: "array"
          description: "List of adaptive cards with the detailed information"
          items:
            $ref: "#/components/schemas/AdaptiveCardInfoRequest"
        actions:
          type: "array"
          items:
            $ref: "#/components/schemas/AdaptiveCardAction"
        selectAction:
          $ref: "#/components/schemas/AdaptiveCardSelectAction"
        fallbackText:
          type: "string"
        backgroundImage:
          description: "Specifies the background image of a card"
          oneOf:
          - type: "string"
          - $ref: "#/components/schemas/BackgroundImage"
        minHeight:
          type: "string"
          description: "Specifies the minimum height of the card in pixels"
          example: "50px"
        speak:
          type: "string"
          description: "Specifies what should be spoken for this entire card. This is simple text or SSML fragment"
        lang:
          type: "string"
          description: "The 2-letter ISO-639-1 language used in the card. Used to localize any date/time functions"
          enum:
          - "en"
          - "fr"
          - "es"
        verticalContentAlignment:
          $ref: "#/components/schemas/VerticalContentAlignment"
    AdaptiveCardShortInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an adaptive card"
        creationTime:
          type: "string"
          description: "Adaptive Card creation datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Post last modification datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        $schema:
          type: "string"
          description: "Schema of an adaptive card"
        type:
          type: "string"
          enum:
          - "AdaptiveCard"
        version:
          type: "string"
          description: "Version of an adaptive card. Filled on server-side"
        creator:
          $ref: "#/components/schemas/AdaptiveCardCreator"
        chatIds:
          type: "array"
          description: "Chat IDs where an adaptive card is posted or shared."
          items:
            type: "string"
    VerticalContentAlignment:
      description: "Defines how the content should be aligned vertically within the container. Only relevant for fixed-height cards, or cards with a `minHeight` specified"
      anyOf:
      - type: "string"
        enum:
        - "top"
        - "center"
        - "bottom"
      - type: "string"
        pattern: "^([t|T][o|O][p|P])|([c|C][e|E][n|N][t|T][e|E][r|R])|([b|B][o|O][t|T][t|T][o|O][m|M])$"
    AdaptiveCardInfoRequestItem:
      type: "object"
      properties:
        type:
          type: "string"
          enum:
          - "TextBlock"
          - "ColumnSet"
          - "Column"
          - "FactSet"
        text:
          type: "string"
        weight:
          type: "string"
        size:
          type: "string"
        columns:
          type: "array"
          items:
            $ref: "#/components/schemas/AdaptiveCardColumnInfo"
    TMCreatorInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user who created a note/task"
      description: "Note creator information"
    TMNoteList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/TMNoteInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMCreateNoteRequest:
      required:
      - "title"
      type: "object"
      properties:
        title:
          type: "string"
          description: "Title of a note. Max allowed length is 250 characters"
        body:
          type: "string"
          description: "Contents of a note; HTML markup text. Max allowed length is 1048576 characters (1 Mb)."
    TMNoteInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a note"
        title:
          type: "string"
          description: "Title of a note"
        chatIds:
          type: "array"
          description: "Internal identifiers of the chat(s) where the note is posted or shared."
          items:
            type: "string"
        preview:
          type: "string"
          description: "Preview of a note (first 150 characters of a body)"
        creator:
          $ref: "#/components/schemas/TMCreatorInfo"
        lastModifiedBy:
          $ref: "#/components/schemas/LastModifiedByInfo"
        lockedBy:
          $ref: "#/components/schemas/LockedByInfo"
        status:
          type: "string"
          description: "Note publishing status. Any note is created in 'Draft' status. After it is posted it becomes 'Active'"
          enum:
          - "Active"
          - "Draft"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Creation time"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Datetime of the note last update"
        type:
          type: "string"
          enum:
          - "Note"
    LockedByInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the user editing the note"
      description: "Returned for the note being edited (locked) at the current moment. Information on the user editing the note"
    LastModifiedByInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of the user who last updated the note"
      description: "Note last modification information"
    AdaptiveCardInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of an adaptive card"
        creationTime:
          type: "string"
          description: "Adaptive Card creation datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Post last modification datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        $schema:
          type: "string"
          format: "uri"
          description: "Schema of an adaptive card"
        type:
          type: "string"
          enum:
          - "AdaptiveCard"
        version:
          type: "string"
          description: "Version of an adaptive card"
        creator:
          $ref: "#/components/schemas/AdaptiveCardCreator"
        chatIds:
          type: "array"
          description: "Chat IDs where an adaptive card is posted or shared."
          items:
            type: "string"
        body:
          type: "array"
          description: "List of card elements to show in the primary card region"
          items:
            $ref: "#/components/schemas/AdaptiveCardInfoRequest"
        actions:
          type: "array"
          items:
            $ref: "#/components/schemas/AdaptiveCardAction"
        selectAction:
          $ref: "#/components/schemas/AdaptiveCardSelectAction"
        fallbackText:
          type: "string"
          description: "Text shown when the client doesn't support the version specified (may contain markdown)"
        backgroundImage:
          oneOf:
          - $ref: "#/components/schemas/BackgroundImage"
          - type: "string"
          description: "Specifies the background image of a card"
        minHeight:
          type: "string"
          description: "Specifies the minimum height of the card in pixels"
          example: "50px"
        speak:
          type: "string"
          description: "Specifies what should be spoken for this entire card. This is simple text or SSML fragment"
        lang:
          type: "string"
          description: "The 2-letter ISO-639-1 language used in the card. Used to localize any date/time functions"
          enum:
          - "en"
          - "fr"
          - "es"
        verticalContentAlignment:
          $ref: "#/components/schemas/VerticalContentAlignment"
    TMWebhookList:
      type: "object"
      properties:
        records:
          type: "array"
          items:
            $ref: "#/components/schemas/TMWebhookInfo"
    TMWebhookInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a webhook"
        creatorId:
          type: "string"
          description: "Internal identifier of the user who created a webhook"
        groupIds:
          type: "array"
          description: "Internal identifiers of groups where a webhook has been created"
          items:
            type: "string"
        creationTime:
          type: "string"
          description: "Webhook creation time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Webhook last update time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        uri:
          type: "string"
          format: "uri"
          description: "Public link to send a webhook payload"
        status:
          type: "string"
          description: "Current status of a webhook"
          enum:
          - "Active"
          - "Suspended"
          - "Deleted"
    TMCompanyInfo:
      required:
      - "creationTime"
      - "id"
      - "lastModifiedTime"
      type: "object"
      properties:
        id:
          description: "Internal identifier of a company (RingCentral account ID)"
          type: "string"
        name:
          type: "string"
          description: "Name of a company"
        domain:
          type: "string"
          description: "Domain name of a company"
        creationTime:
          type: "string"
          description: "Datetime of creation in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Datetime of last modification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)"
          format: "date-time"
    TMPersonInfo:
      required:
      - "id"
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user"
        firstName:
          type: "string"
          description: "First name of a user"
        lastName:
          type: "string"
          description: "Last name of a user"
        email:
          type: "string"
          format: "email"
          description: "Email of a user"
        avatar:
          type: "string"
          description: "Photo of a user"
        companyId:
          type: "string"
          description: "Internal identifier of a company"
        creationTime:
          type: "string"
          description: "Time of creation in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Time of the last modification in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
          format: "date-time"
    TMConversationList:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of conversations"
          items:
            $ref: "#/components/schemas/TMConversationInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMConversationInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a conversation"
        type:
          type: "string"
          description: "Type of conversation"
          enum:
          - "Direct"
          - "Personal"
          - "Group"
        creationTime:
          type: "string"
          description: "Conversation creation datetime in ISO 8601 format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Conversation last change datetime in ISO 8601 format"
          format: "date-time"
        members:
          type: "array"
          items:
            $ref: "#/components/schemas/TMChatMemberInfo"
    CreateConversationRequest:
      required:
      - "members"
      type: "object"
      properties:
        members:
          type: "array"
          description: |
            Identifier(s) of chat member(s). The maximum supported number
            of IDs is 15. User's own ID is optional. If `members` section is omitted
            then "Personal" chat will be returned
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a person"
              email:
                type: "string"
                format: "email"
                description: "Email of a person"
    GlipDataExportNavigationInfo:
      type: "object"
      properties:
        firstPage:
          $ref: "#/components/schemas/GlipDataExportNavigationInfoUri"
        nextPage:
          $ref: "#/components/schemas/GlipDataExportNavigationInfoUri"
        previousPage:
          $ref: "#/components/schemas/GlipDataExportNavigationInfoUri"
        lastPage:
          $ref: "#/components/schemas/GlipDataExportNavigationInfoUri"
    SpecificInfo:
      type: "object"
      properties:
        timeFrom:
          type: "string"
          format: "date-time"
          description: "Starting time for data collection"
        timeTo:
          type: "string"
          format: "date-time"
          description: "Ending time for data collection"
        contacts:
          type: "array"
          items:
            $ref: "#/components/schemas/DataExportTaskContactInfo"
        chatIds:
          type: "array"
          description: "List of chats from which the data (posts, files, tasks, events, notes, etc.) will be collected"
          items:
            type: "string"
      description: "Information specified in request"
    ExportTaskResultInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a dataset"
        uri:
          type: "string"
          format: "uri"
          description: "Link for downloading a dataset"
        size:
          type: "integer"
          format: "int64"
          description: "Size of ta dataset in bytes"
    GlipDataExportPagingInfo:
      type: "object"
      properties:
        page:
          type: "integer"
          format: "int32"
          description: "The current page number. 1-indexed, so the first page is 1 by default. May be omitted if result is empty (because non-existent page was specified or perPage=0 was requested)"
        perPage:
          type: "integer"
          format: "int32"
          description: "Current page size, describes how many items are in each page. Default value is 100. Maximum value is 1000. If perPage value in the request is greater than 1000, the maximum value (1000) is applied"
        pageStart:
          type: "integer"
          format: "int32"
          description: "The zero-based number of the first element on the current page. Omitted if the page is omitted or result is empty"
        pageEnd:
          type: "integer"
          format: "int32"
          description: "The zero-based index of the last element on the current page. Omitted if the page is omitted or result is empty"
        totalPages:
          type: "integer"
          format: "int32"
          description: "The total number of pages in a dataset. May be omitted for some resources due to performance reasons"
        totalElements:
          type: "integer"
          format: "int32"
          description: "The total number of elements in a dataset. May be omitted for some resource due to performance reasons"
    DataExportTaskList:
      type: "object"
      properties:
        tasks:
          type: "array"
          items:
            $ref: "#/components/schemas/DataExportTask"
        navigation:
          $ref: "#/components/schemas/GlipDataExportNavigationInfo"
        paging:
          $ref: "#/components/schemas/GlipDataExportPagingInfo"
    CreatorInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a user"
        firstName:
          type: "string"
          description: "First name of a user"
        lastName:
          type: "string"
          description: "Last name of a user"
      description: "Task creator information"
    GlipDataExportNavigationInfoUri:
      type: "object"
      properties:
        uri:
          type: "string"
          format: "uri"
          description: "Canonical URI for the corresponding page of the list"
    DataExportTask:
      type: "object"
      properties:
        uri:
          type: "string"
          description: "Canonical URI of a task"
        id:
          type: "string"
          description: "Internal identifier of a task"
        creationTime:
          type: "string"
          format: "date-time"
          description: "Task creation timestamp"
        lastModifiedTime:
          type: "string"
          format: "date-time"
          description: "Task last modification timestamp"
        status:
          type: "string"
          description: "Task status"
          enum:
          - "Accepted"
          - "InProgress"
          - "Completed"
          - "Failed"
          - "Expired"
        creator:
          $ref: "#/components/schemas/CreatorInfo"
        specific:
          $ref: "#/components/schemas/SpecificInfo"
        datasets:
          type: "array"
          description: "Data collection archives. Returned by task ID"
          items:
            $ref: "#/components/schemas/ExportTaskResultInfo"
    DataExportTaskContactInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a contact"
        email:
          type: "string"
          format: "email"
          description: "Email address of a contact"
      description: "List of users whose data is collected. The following data will be exported: posts, tasks, events, etc. posted by the user(s); posts addressing the user(s) via direct and @Mentions; tasks assigned to the listed user(s). The list of 10 users per request is supported."
    CreateDataExportTaskRequest:
      type: "object"
      properties:
        timeFrom:
          type: "string"
          format: "date-time"
          description: "Starting time for data collection. The default value is `timeTo` minus 24 hours. Max allowed time frame between `timeFrom` and `timeTo` is 6 months"
        timeTo:
          type: "string"
          format: "date-time"
          description: "Ending time for data collection. The default value is current time. Max allowed time frame between `timeFrom` and `timeTo` is 6 months"
        contacts:
          type: "array"
          description: "List of contacts which data is collected. The following data will be exported: posts, tasks, events, etc. posted by the user(s); posts addressing the user(s) via direct and @Mentions; tasks assigned to the listed user(s). The list of 30 users per request is supported."
          items:
            $ref: "#/components/schemas/DataExportTaskContactInfo"
        chatIds:
          type: "array"
          description: "List of chats from which the data (posts, files, tasks, events, notes, etc.) will be collected. Maximum number of chats supported is 10"
          items:
            type: "string"
    UpdateEveryoneTeamRequest:
      type: "object"
      properties:
        name:
          type: "string"
          description: "Everyone chat name. Maximum number of characters supported is 250"
        description:
          type: "string"
          description: "Everyone chat description. Maximum number of characters supported is 1000"
    EveryoneTeamInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a chat"
        type:
          type: "string"
          description: "Type of chat"
          enum:
          - "Everyone"
        name:
          type: "string"
          description: "Chat name"
        description:
          type: "string"
          description: "Chat description"
        creationTime:
          type: "string"
          description: "Chat creation datetime in ISO 8601 format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Chat last change datetime in ISO 8601 format"
          format: "date-time"
    TMCreateTeamRequest:
      required:
      - "name"
      type: "object"
      properties:
        public:
          type: "boolean"
          description: "Team access level."
        name:
          type: "string"
          description: "Team name."
        description:
          type: "string"
          description: "Team description."
        members:
          type: "array"
          description: "Identifier(s) of team members."
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a person"
              email:
                type: "string"
                format: "email"
                description: "Email of a person"
    TMTeamList:
      required:
      - "records"
      type: "object"
      properties:
        records:
          type: "array"
          description: "List of teams"
          items:
            $ref: "#/components/schemas/TMTeamInfo"
        navigation:
          $ref: "#/components/schemas/TMNavigationInfo"
    TMTeamInfo:
      type: "object"
      properties:
        id:
          type: "string"
          description: "Internal identifier of a team"
        type:
          type: "string"
          description: "Type of chat"
          enum:
          - "Team"
        public:
          type: "boolean"
          description: "Team access level"
        name:
          type: "string"
          description: "Team name"
        description:
          type: "string"
          description: "Team description"
        status:
          type: "string"
          description: "Team status"
          enum:
          - "Active"
          - "Archived"
        creationTime:
          type: "string"
          description: "Team creation datetime in ISO 8601 format"
          format: "date-time"
        lastModifiedTime:
          type: "string"
          description: "Team last change datetime in ISO 8601 format"
          format: "date-time"
    TMUpdateTeamRequest:
      type: "object"
      properties:
        public:
          type: "boolean"
          description: "Team access level"
        name:
          type: "string"
          description: "Team name. Maximum number of characters supported is 250"
        description:
          type: "string"
          description: "Team description. Maximum number of characters supported is 1000"
    TMRemoveTeamMembersRequest:
      required:
      - "members"
      type: "object"
      properties:
        members:
          type: "array"
          description: "Identifier(s) of chat members."
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a person"
    TMAddTeamMembersRequest:
      required:
      - "members"
      type: "object"
      properties:
        members:
          type: "array"
          description: "Identifier(s) of chat member(s)"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                description: "Internal identifier of a person"
              email:
                type: "string"
                format: "email"
                description: "Email of a person"
            description: "Conversation is opened"
    TMNoteWithBodyInfo:
      allOf:
      - $ref: "#/components/schemas/TMNoteInfo"
      - type: "object"
        properties:
          body:
            type: "string"
            description: "Text of a note"
  parameters:
    SubscriptionId:
      name: "subscriptionId"
      in: "path"
      description: "Internal identifier of a subscription"
      required: true
      schema:
        type: "string"
        minLength: 1
        maxLength: 20
      example: "12345678"
    RcwWebinarId:
      name: "webinarId"
      in: "path"
      description: "Identifier of the Webinar."
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        minLength: 1
        maxLength: 20
      example: "98989898"
    RcwSessionId:
      name: "sessionId"
      in: "path"
      description: "Identifier of the Session."
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        minLength: 1
        maxLength: 20
      example: "353535353"
    PageToken:
      name: "pageToken"
      in: "query"
      description: |
        The token indicating the particular page of the result set to be retrieved.
        If omitted the first page will be returned.
      required: false
      explode: false
      schema:
        type: "string"
    OriginalRole:
      name: "originalRole"
      in: "query"
      description: "The original role of the invitee/participant."
      required: false
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/RcwRoleEnum"
    PerPage:
      name: "perPage"
      in: "query"
      description: |
        The number of items per page. If provided value in the request
        is greater than a maximum, the maximum value is applied
      required: false
      explode: false
      schema:
        type: "integer"
        format: "int32"
        minimum: 1
        maximum: 1000
        default: 100
      example: 100
    Role:
      name: "role"
      in: "query"
      description: "The role of the invitee/participant."
      required: false
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/RcwRoleEnum"
    RcwInviteeId:
      name: "inviteeId"
      in: "path"
      description: "Identifier of the Session Invitee."
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        minLength: 1
        maxLength: 20
      example: "77777777"
    HostUserId:
      name: "hostUserId"
      in: "query"
      description: "Identifier of the user who hosts a webinar (if omitted, webinars hosted by all company users will be returned)"
      required: false
      explode: false
      schema:
        type: "array"
        maxItems: 10
        minItems: 0
        items:
          type: "string"
          minLength: 1
          maxLength: 20
      example:
      - "77777777"
    CreationTimeTo:
      name: "creationTimeTo"
      in: "query"
      description: "The end of the time window by 'creationTime' ."
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    RecordingStatus:
      name: "status"
      in: "query"
      description: "The status of the recording."
      required: false
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/RecordingStatusModel"
    CreationTimeFrom:
      name: "creationTimeFrom"
      in: "query"
      description: "The beginning of the time window by 'creationTime' ."
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    RecordingId:
      name: "recordingId"
      in: "path"
      description: "Identifier of the Webinar recording."
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
      example: "7637637682"
    EndTimeFrom:
      name: "endTimeFrom"
      in: "query"
      description: "The beginning of the time window by 'endTime' ."
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    EndTimeTo:
      name: "endTimeTo"
      in: "query"
      description: "The end of the time window by 'endTime' ."
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    SessionStatus:
      name: "status"
      in: "query"
      description: "Filter to return only webinar sessions in certain status. Multiple values are supported."
      required: false
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/RcwSessionStatusModel"
      example:
      - "Active"
      - "Finished"
    RecordingMediaType:
      schema:
        $ref: "#/components/schemas/RecordingMediaType"
      in: "query"
      name: "recordingMediaType"
      description: |
        Download file media type.
        - Type 'Video' refers to a multiplexed audio and video file.
        - Type 'Audio' refers to an audio only file.
        - Unless specified by this query parameter, a video file is returned by default when a recording is downloaded.
      required: false
    IncludeQuestionnaire:
      name: "includeQuestionnaire"
      in: "query"
      description: "Indicates if registrant's \"questionnaire\" should be returned"
      required: false
      explode: false
      schema:
        type: "boolean"
        default: false
    RegistrantId:
      name: "registrantId"
      in: "path"
      description: "Identifier of the Session Registrant"
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        minLength: 1
        maxLength: 20
      example: "77777777"
    WcsCreationTimeFrom:
      name: "creationTimeFrom"
      in: "query"
      description: "The beginning of the time window by 'creationTime' ."
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    WcsEndTimeFrom:
      name: "endTimeFrom"
      in: "query"
      description: "The beginning of the time window by 'endTime' (it is calculated as scheduledStartTime+scheduledDuration)"
      required: true
      explode: false
      schema:
        type: "string"
        format: "date-time"
    CallRecordingId:
      name: "recordingId"
      in: "path"
      description: "Internal identifier of a call recording (returned in Call Log)"
      required: true
      schema:
        type: "string"
        example: "625387632786"
    ContentDisposition:
      name: "contentDisposition"
      in: "query"
      description: "Whether the content is expected to be displayed in the browser, or downloaded and saved locally"
      required: false
      schema:
        type: "string"
        enum:
        - "Inline"
        - "Attachment"
    ContentDispositionFilename:
      name: "contentDispositionFilename"
      in: "query"
      description: "The default filename of the file to be downloaded"
      required: false
      schema:
        type: "string"
    AccountId:
      name: "accountId"
      in: "path"
      description: |
        Internal identifier of the RingCentral account
        (can be set to "~" to indicate that the account associated with current authorization session should be used)
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        default: "~"
      example: "~"
    GreetingId:
      name: "greetingId"
      in: "path"
      description: "Internal identifier of a greeting"
      required: true
      schema:
        type: "string"
    ExtensionId:
      name: "extensionId"
      in: "path"
      description: |
        Internal identifier of the RingCentral extension/user
        (can be set to "~" to indicate that the extension associated with current authorization session should be used)
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        default: "~"
      example: "~"
    ProfileImageScale:
      name: "scaleSize"
      in: "path"
      description: |
        Dimensions of a profile image which will be returned in response.
      required: true
      schema:
        type: "string"
        enum:
        - "original"
        - "90x90"
        - "195x195"
        - "584x584"
    IvrPromptId:
      name: "promptId"
      in: "path"
      description: "Internal identifier of an IVR prompt"
      required: true
      schema:
        type: "string"
    RcvPageToken:
      name: "pageToken"
      in: "query"
      description: "Token to get the next page"
      schema:
        type: "string"
    RcvPerPage:
      name: "perPage"
      in: "query"
      description: "Number of records returned"
      schema:
        type: "integer"
        format: "int32"
    RcvMeetingId:
      name: "meetingId"
      in: "path"
      description: "Meeting id"
      required: true
      schema:
        type: "string"
    OauthRedirectError:
      name: "error"
      in: "query"
      required: false
      description: |
        The OAuth error code.
        REQUIRED if the authorization was unsuccessful.
      schema:
        type: "string"
        enum:
        - "invalid_request"
        - "unauthorized_client"
        - "access_denied"
        - "unsupported_response_type"
        - "invalid_scope"
        - "server_error"
        - "temporarily_unavaialable"
    OauthRedirectState:
      name: "state"
      in: "query"
      required: false
      description: |
        The exact value of the `state` parameter received from the client (if provided).
      schema:
        type: "string"
    OauthBrandId:
      name: "brand_id"
      in: "query"
      required: false
      description: |
        RingCentral Brand identifier. If it is not provided in the request,
        server will try to determine brand from the client application profile.
      schema:
        type: "string"
        example: "1210"
    OauthRedirectCode:
      name: "code"
      in: "query"
      required: false
      description: |
        The authorization code generated by the authorization server.
        REQUIRED if the authorization was successful.
      schema:
        type: "string"
    OauthClientId:
      name: "client_id"
      in: "query"
      required: true
      description: "The registered identifier of a client application"
      schema:
        type: "string"
        example: "AZwEVwGEcfGet2PCouA7K6"
    Page:
      name: "page"
      in: "query"
      description: "The result set page number (1-indexed) to return"
      required: false
      explode: false
      schema:
        type: "integer"
        format: "int32"
        minimum: 1
        maximum: 1000
        default: 1
      example: 1
    PhoneNumberId:
      name: "phoneNumberId"
      in: "path"
      required: true
      description: "Internal identifier of a phone number"
      schema:
        $ref: "#/components/schemas/PhoneNumberId"
      example: "1162820004"
    DeviceId:
      name: "deviceId"
      in: "path"
      description: "Internal identifier of a device"
      required: true
      schema:
        type: "string"
    FieldId:
      name: "fieldId"
      in: "path"
      description: "Custom field identifier"
      required: true
      schema:
        type: "string"
    TelephonySessionId:
      name: "telephonySessionId"
      in: "path"
      description: "Internal identifier of a call session"
      required: true
      schema:
        type: "string"
    TelephonySessionPartyId:
      name: "partyId"
      in: "path"
      description: "Internal identifier of a call party"
      required: true
      schema:
        type: "string"
    TemplateId:
      name: "templateId"
      in: "path"
      description: "Internal identifier of a text message template"
      required: true
      schema:
        type: "string"
    CallLogExtensionNumber:
      name: "extensionNumber"
      in: "query"
      description: |
        Short extension number of a user. If specified, returns call log for this particular extension only.
        Cannot be combined with `phoneNumber` filter
      schema:
        type: "string"
      example: "101"
    CallDirection:
      name: "direction"
      in: "query"
      description: |
        The direction of call records to be included in the result. If omitted, both
        inbound and outbound calls are returned. Multiple values are supported
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/CallDirectionEnum"
    CallLogDateFrom:
      name: "dateFrom"
      in: "query"
      description: |
        The beginning of the time range to return call records in ISO 8601 format including timezone,
        for example 2016-03-10T18:07:52.534Z. The default value is `dateTo` minus 24 hours
      schema:
        type: "string"
        format: "date-time"
    CallLogSessionId:
      name: "sessionId"
      in: "query"
      description: "Internal identifier of a call session"
      schema:
        type: "string"
    CallLogView:
      name: "view"
      in: "query"
      description: |
        Defines the level of details for returned call records
      schema:
        type: "string"
        default: "Simple"
        enum:
        - "Simple"
        - "Detailed"
    CallType:
      name: "type"
      in: "query"
      description: |
        The type of call records to be included in the result.
        If omitted, all call types are returned. Multiple values are supported
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/CallTypeEnum"
    CallLogWithRecording:
      name: "withRecording"
      in: "query"
      deprecated: true
      description: |
        Deprecated, replaced with `recordingType` filter, still supported for compatibility reasons.
        Indicates if only recorded calls should be returned.

        If both `withRecording` and `recordingType` parameters are specified, then `withRecording` is ignored
      schema:
        type: "boolean"
        default: false
    CallLogDateTo:
      name: "dateTo"
      in: "query"
      description: |
        The end of the time range to return call records in ISO 8601 format including timezone,
        for example 2016-03-10T18:07:52.534Z. The default value is current time
      schema:
        type: "string"
        format: "date-time"
    CallRecordingType:
      name: "recordingType"
      in: "query"
      description: |
        Indicates that call records with recordings of particular type should be returned.
        If omitted, then calls with and without recordings are returned
      schema:
        type: "string"
        enum:
        - "Automatic"
        - "OnDemand"
        - "All"
    CallLogTelephonySessionId:
      name: "telephonySessionId"
      in: "query"
      description: "Internal identifier of a telephony session"
      schema:
        type: "string"
    CallLogPhoneNumber:
      name: "phoneNumber"
      in: "query"
      description: |
        Phone number of a caller/callee in e.164 format without a '+' sign. If specified, all incoming/outgoing calls
        from/to this phone number are returned.
      schema:
        type: "string"
      example: "12053320032"
    CallRecordId:
      name: "callRecordId"
      in: "path"
      description: "Internal identifier of a call log record. Multiple values are supported"
      required: true
      style: "simple"
      explode: false
      schema:
        type: "array"
        items:
          type: "string"
    CallLogSyncType:
      name: "syncType"
      in: "query"
      description: "Type of call log synchronization request"
      schema:
        allOf:
        - $ref: "#/components/schemas/CallLogSyncTypeEnum"
        - default: "FSync"
    CallLogStatusGroup:
      name: "statusGroup"
      in: "query"
      description: "Type of calls to be returned"
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          type: "string"
          enum:
          - "Missed"
          - "All"
    CallTransportType:
      name: "transport"
      in: "query"
      description: |
        The type of call transport. Multiple values are supported. By default, this filter is disabled
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          $ref: "#/components/schemas/CallTransportEnum"
    ConferenceCallType:
      name: "conferenceType"
      in: "query"
      description: |
        Conference call type: RCC or RC Meetings. If not specified, no conference call filter applied
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          type: "string"
          enum:
          - "AudioConferencing"
          - "Meetings"
    SmsDirection:
      name: "direction"
      in: "query"
      required: false
      description: |
        Direction of a message to filter the message list result.
        By default, there is no filter applied - both Inbound and Outbound messages are returned
      schema:
        $ref: "#/components/schemas/SmsDirectionEnum"
      example: "Inbound"
    QueryBatchId:
      name: "batchId"
      in: "query"
      required: false
      description: "Internal identifier of a message batch to filter the response"
      example: "55577"
      schema:
        type: "string"
    SmsDateTo:
      name: "dateTo"
      in: "query"
      required: false
      description: "The end of the time range to filter the results in ISO 8601 format including timezone. Default is the current time"
      schema:
        type: "string"
        format: "date-time"
      example: "2020-11-25T16:07:52.597Z"
    SmsDateFrom:
      name: "dateFrom"
      in: "query"
      required: false
      description: "The end of the time range to filter the results in ISO 8601 format including timezone. Default is the 'dateTo' minus 24 hours"
      schema:
        type: "string"
        format: "date-time"
      example: "2020-11-09T16:07:52.597Z"
    BatchId:
      name: "batchId"
      in: "path"
      required: true
      description: "Internal identifier of a message batch to be retrieved"
      example: "55577"
      schema:
        type: "string"
    CallHandlingRuleId:
      name: "ruleId"
      in: "path"
      description: "Internal identifier of a call handling rule"
      required: true
      schema:
        type: "string"
    SiteIdQuery:
      name: "siteId"
      in: "query"
      description: |
        Internal identifier of a site for filtering. To indicate company main
        site `main-site` value should be specified. Supported only if multi-site feature
        is enabled for the account. Multiple values are supported.
      style: "form"
      explode: true
      schema:
        type: "array"
        items:
          type: "string"
    EmergencyLocationId:
      name: "locationId"
      in: "path"
      description: "Internal identifier of an emergency response location"
      required: true
      schema:
        type: "string"
    MeetingId:
      name: "meetingId"
      in: "path"
      description: "Internal identifier of a RingCentral meeting"
      required: true
      schema:
        type: "string"
    IvrMenuId:
      name: "ivrMenuId"
      description: "Internal identifier of an IVR menu"
      in: "path"
      required: true
      schema:
        type: "string"
    PicTaskId:
      name: "taskId"
      in: "path"
      description: "Internal identifier of a task"
      required: true
      schema:
        type: "string"
      example: "400142200026-400142200026-bd162f24028442489385eb3f44c18354"
    IfNoneMatch:
      name: "If-None-Match"
      in: "header"
      required: false
      description: |
        User in GET requests to skip retrieving the data if the provided value matches current `ETag` associated with this resource.
        The server checks the current resource ETag and returns the data only if mismatches the `If-None-Match` value,
        otherwise `HTTP 304 Not Modified` status is returned.
      schema:
        type: "string"
    CallLogShowBlocked:
      name: "showBlocked"
      in: "query"
      description: "Indicates then calls from/to blocked numbers are returned"
      schema:
        type: "boolean"
        default: true
    ForwardingNumberId:
      name: "forwardingNumberId"
      in: "path"
      description: "Internal identifier of a forwarding number (returned in response in the 'id' field)"
      required: true
      schema:
        type: "string"
    ContactId:
      name: "contactId"
      in: "path"
      description: |
        Internal identifier of a contact record in the RingCentral database
      required: true
      schema:
        type: "integer"
        format: "int64"
    ContactIds:
      name: "contactId"
      in: "path"
      description: "The list of contact identifiers (comma-separated)"
      required: true
      style: "simple"
      explode: false
      schema:
        type: "array"
        minItems: 1
        items:
          type: "integer"
          format: "int64"
    BlockedNumberId:
      name: "blockedNumberId"
      description: "Internal identifier of a blocked number entry"
      in: "path"
      required: true
      schema:
        type: "string"
    JobId:
      name: "jobId"
      in: "path"
      description: "The job id to which status will be fetched"
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
        format: "uuid"
    Webhook:
      name: "webhook"
      in: "query"
      description: "The webhook URI to which the job response will be returned"
      required: true
      style: "form"
      explode: true
      schema:
        type: "string"
        format: "uri"
    CallbackRequestId:
      name: "RCRequestId"
      deprecated: true
      in: "header"
      description: |
        Input RequestId corresponding to this response.\
        DEPRECATED. "jobId" body attribute should be used for tracking.
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
    SpeakerId:
      name: "speakerId"
      in: "path"
      description: "Speaker identifier of enrolled speaker"
      required: true
      style: "simple"
      explode: false
      schema:
        type: "string"
      example: "JohnDoe"
    IdentityGroupFilter:
      in: "query"
      name: "identityGroup"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified identity group identifiers."
      example:
      - "7f946431b6eebffafae642cc"
      - "re946431b6eebffafae642cc"
    ThreadFilter:
      in: "query"
      name: "thread"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified thread identifiers."
      example:
      - "7f946431b6eebffafae642cc"
    SourceFilter:
      in: "query"
      name: "source"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified channel identifiers."
      example:
      - "7f946431b6eebffafae642cc"
    StatusFilter:
      in: "query"
      name: "status"
      required: false
      description: "Filter for specified status."
      schema:
        $ref: "#/components/schemas/ContentStatuses"
    InterventionFilter:
      in: "query"
      name: "intervention"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified intervention identifiers."
      example:
      - "7f946431b6eebffafae642cc"
      - "re946431b6eebffafae642cc"
    IdentityFilter:
      in: "query"
      name: "identity"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified identity identifiers."
      example:
      - "7f946431b6eebffafae642cc"
      - "re946431b6eebffafae642cc"
    TextFilter:
      in: "query"
      name: "text"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
      description: "Filter based on the specified text(s). Provided multiple times, the values are ANDed."
    SocMsgOrderBy:
      in: "query"
      name: "orderBy"
      required: false
      description: "Order results by specified field."
      schema:
        $ref: "#/components/schemas/SocMsgCreationTimeOrder"
    ContentId:
      in: "path"
      name: "contentId"
      required: true
      schema:
        type: "string"
    UUID:
      name: "uuid"
      description: "Filter based on the specified uuid."
      in: "query"
      required: false
      schema:
        type: "string"
    IdentityGroupIds:
      name: "identityGroupIds"
      description: "Filter based on the specified identityGroupIds (separated by commas)."
      in: "query"
      required: false
      style: "form"
      explode: false
      schema:
        type: "array"
        items:
          type: "string"
    SourceId:
      name: "sourceId"
      description: "Filter based on the specified sourceId."
      in: "query"
      required: false
      schema:
        type: "string"
    UserId:
      name: "userId"
      description: "Filter based on the specified userId."
      in: "query"
      required: false
      schema:
        type: "string"
    IdentityId:
      in: "path"
      name: "identityId"
      required: true
      schema:
        $ref: "#/components/schemas/IdentityId"
    ScimUserId:
      name: "scimUserId"
      in: "path"
      description: "User ID"
      required: true
      schema:
        type: "string"
  examples:
    DeletePhoneNumbersRequest:
      value:
        records:
        - phoneNumber: "+18002024080"
        - phoneNumber: "+18332456789"
    DeletePhoneNumbersResponse:
      value:
        records:
        - bulkItemSuccessful: true
          id: "1162820004"
          phoneNumber: "+18002024080"
        - bulkItemSuccessful: false
          id: "1162820005"
          phoneNumber: "+18332456789"
          bulkItemErrors:
          - errorCode: "CMN-1000"
            message: "Some error msg"
    ListAccountPhoneNumbersResponse:
      value:
        records:
        - id: "1162821004"
          phoneNumber: "+18002024080"
          tollType: "TollFree"
          usageType: "Inventory"
          byocNumber: false
          status: "Normal"
        - id: "1162822004"
          phoneNumber: "+18332023665"
          tollType: "Toll"
          usageType: "DirectNumber"
          type: "VoiceFax"
          byocNumber: false
          status: "Normal"
          extension:
            id: "697477005"
            extensionNumber: "10022"
        - id: "1272824004"
          phoneNumber: "+18332023678"
          tollType: "Toll"
          usageType: "MainCompanyNumber"
          byocNumber: false
          type: "VoiceOnly"
          status: "Normal"
        paging:
          page: 1
          perPage: 1
          pageStart: 1
          pageEnd: 1
          totalPages: 1
          totalElements: 3
    AssignPhoneNumberRequest:
      value:
        usageType: "DirectNumber"
        extension:
          id: "20498230948"
        type: "VoiceFax"
    AssignPhoneNumberResponse:
      value:
        id: "1162822004"
        phoneNumber: "+18332023665"
        tollType: "Toll"
        usageType: "DirectNumber"
        type: "VoiceFax"
        status: "Normal"
        extension:
          id: "20498230948"
          extensionNumber: "10022"
    AddPhoneNumbersRequest:
      value:
        records:
        - phoneNumber: "+18002024080"
          usageType: "Inventory"
        - phoneNumber: "+16501234567"
          usageType: "Inventory"
    AddPhoneNumbersResponse:
      value:
        records:
        - bulkItemSuccessful: true
          id: "1162820004"
          phoneNumber: "+18002024080"
        - bulkItemSuccessful: false
          phoneNumber: "+16501234567"
          bulkItemErrors:
          - errorCode: "CMN-1000"
            message: "Some error msg"
    CreateSubscriptionRequestWebhook:
      summary: "Webhook"
      value:
        eventFilters:
        - "/restapi/v1.0/account/~/extension/~/presence"
        - "/restapi/v1.0/account/~/extension/~/message-store"
        deliveryMode:
          transportType: "WebHook"
          address: "https://consumer-host.example.com/consumer/path"
    CreateSubscriptionResponseWebhook:
      summary: "Webhook"
      value:
        uri: "https://platform.ringcentral.com/restapi/v1.0/subscription/dd2f0ff2-580e-4581-a277-76f9c9a54bc9"
        id: "dd2f0ff2-580e-4581-a277-76f9c9a54bc9"
        creationTime: "2016-03-30T11:16:23.162Z"
        status: "Active"
        eventFilters:
        - "/restapi/v1.0/account/10366034004/extension/10366034004/presence"
        - "/restapi/v1.0/account/10366034004/extension/10366034004/message-store"
        expirationTime: "2016-04-06T11:16:23.177Z"
        expiresIn: 604799
        deliveryMode:
          transportType: "WebHook"
          encryption: false
          address: "https://consumer-host.example.com/consumer/path"
    CreateSubscriptionRequestPubnub:
      summary: "PubNub"
      value:
        eventFilters:
        - "/restapi/v1.0/account/~/extension/~/presence?detailedTelephonyState=true"
        deliveryMode:
          transportType: "PubNub"
          encryption: true
    CreateSubscriptionResponsePubnub:
      summary: "PubNub"
      value:
        uri: "https://platform.ringcentral.com/restapi/v1.0/subscription/ed329ec1-0600-4560-b6dc-c764399e9a54"
        id: "ed329ec1-0600-4560-b6dc-c764399e9a54"
        creationTime: "2016-02-17T15:41:45.601Z"
        status: "Active"
        eventFilters:
        - "/restapi/v1.0/account/2021383004/extension/2021383004/presence?detailedTelephonyState=true"
        expirationTime: "2016-02-17T15:56:45.617Z"
        expiresIn: 899
        deliveryMode:
          transportType: "PubNub"
          encryption: true
          address: "54770517599294_6dda849e"
          subscriberKey: "sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe"
          secretKey: "y943yr9834ry394yriy4489yr93y4r983y4r3894ry94"
          encryptionAlgorithm: "AES"
          encryptionKey: "0mWk/6SMiSz191u2dV5drg=="
    EDI-006:
      summary: "Invalid content type"
      value:
        errors:
        - errorCode: "EDI-006"
          message: "Cannot find a content class corresponding to the requested action: [${requestActionType}]"
    EDI-005:
      summary: "Structured content type is not supported on the channel"
      value:
        errors:
        - errorCode: "EDI-005"
          message: "Source does not support this type of structured content"
    EDI-008:
      summary: "Parameter type is invalid"
      value:
        errors:
        - errorCode: "EDI-008"
          message: "[${parameterName}] must be a hash, got [${extraValuesClass}]"
    EDI-007:
      summary: "Attachment already used on another content"
      value:
        errors:
        - errorCode: "EDI-007"
          message: "Attachment is already used by an other content"
    EDI-002:
      summary: "Structured contents require a type attribute"
      value:
        errors:
        - errorCode: "EDI-002"
          message: "type is required for structured contents"
    EDI-001:
      summary: "Privacy attribute error"
      value:
        errors:
        - errorCode: "EDI-001"
          message: "Public and private parameters must not be used at the same time, use public parameter only"
    CreateContentWithAttachments:
      summary: "An example for Create content with attachments"
      value:
        authorIdentityId: "541014e17aa58d8ccf000023"
        inReplyToContentId: "541014e17aa58d8ccf000023"
        body: "This is a sample body for a private content with attachments"
        public: false
        attachmentIds:
        - "541014e17aa58d8ccf000023"
        - "541014e17aa58d8ccf000043"
    EDI-004:
      summary: "Compose not supported on the channel"
      value:
        errors:
        - errorCode: "EDI-004"
          message: "Compose is not supported on this source"
    EDI-003:
      summary: "Private compose is not supported on the channel"
      value:
        errors:
        - errorCode: "EDI-003"
          message: "Private compose is not supported on this source, try adding public=true parameter"
    ReplyContentOnEmailChannel:
      summary: "Reply to a content on an Email channel"
      value:
        inReplyToContentId: "541014e17aa58d8ccf001023"
        title: "Reply to the message"
        to:
        - "test@example.com"
        cc:
        - "test.cc@test.com"
        bcc:
        - "test.bcc@test.com"
        body: "Sample email content"
    EDI-009:
      summary: "An attribute is missing"
      value:
        errors:
        - errorCode: "EDI-009"
          message: "[${parameterName}] is required"
    CreateContentWithAuthorIdentityId:
      summary: "An example for Create content with authorIdentityId"
      value:
        authorIdentityId: "541014e17aa58d8ccf000023"
        inReplyToContentId: "541014e17aa58d8ccf000063"
        body: "This is a sample content body for a private content with authorIdentityId specified"
        public: false
    EDI-028:
      summary: "Search query is invalid"
      value:
        errors:
        - errorCode: "EDI-028"
          message: "Search query is invalid"
        - errorCode: "EDI-028"
          message: "Searching identity groups by \"firstname\" only is disabled, please provide \"lastname\""
    EDI-027:
      summary: "Attribute array format error"
      value:
        errors:
        - errorCode: "EDI-027"
          message: "parameters [${brokenParameters}] should be arrays and need to be formatted like this: [${formattedParameters}]"
    EDI-029:
      summary: "Resource not found"
      value:
        errors:
        - errorCode: "EDI-029"
          message: "Resource not found"
    EDI-024:
      summary: "Content creation is not permitted (channel-specific validations)"
      value:
        errors:
        - errorCode: "EDI-024"
          message: "You cannot create the content (channel-specific validations)."
    EDI-023:
      summary: "Private messages cannot be sent without a recipient"
      value:
        errors:
        - errorCode: "EDI-023"
          message: "Cannot send private messages without a recipient."
    EDI-025:
      summary: "An attribute is missing"
      value:
        errors:
        - errorCode: "EDI-025"
          message: "Missing required parameter: \"[${parameterName}]\""
    EDI-020:
      summary: "A channel is required to create this message"
      value:
        errors:
        - errorCode: "EDI-020"
          message: "You need a channel to create this message."
    EDI-022:
      summary: "Recipient does not allow private messages"
      value:
        errors:
        - errorCode: "EDI-022"
          message: "Recipient does not allow private messages."
    EDI-021:
      summary: "Replying to this content is not possible for the moment"
      value:
        errors:
        - errorCode: "EDI-021"
          message: "It is not possible to reply to this content right now."
    CreateContentOnEmailChannel:
      summary: "An example for Create content on an Email channel"
      value:
        title: "Title of the message"
        to:
        - "test@example.com"
        cc:
        - "test.cc@test.com"
        bcc:
        - "test.bcc@test.com"
        body: "Sample email content"
        sourceId: "541014e17aa58d8ccf000093"
    EDI-017:
      summary: "The agent is not authorized to create a new discussion on this channel"
      value:
        errors:
        - errorCode: "EDI-017"
          message: "Agent is not authorized to create a new discussion on this channel."
    EDI-016:
      summary: "The channel does not support creation of new discussions"
      value:
        errors:
        - errorCode: "EDI-016"
          message: "Channel does not support creation of new discussions."
    EDI-019:
      summary: "The agent is not authorized to reply on this channel"
      value:
        errors:
        - errorCode: "EDI-019"
          message: "Agent is not authorized to reply on this channel."
    EDI-018:
      summary: "An identity is required to reply to this message"
      value:
        errors:
        - errorCode: "EDI-018"
          message: "You need an identity to reply to this message."
    EDI-013:
      summary: "A conversation cannot be open on an agent message"
      value:
        errors:
        - errorCode: "EDI-013"
          message: "Cannot open a conversation on agent message."
    EDI-012:
      summary: "Allowed parameters are limited when sending an outbound message"
      value:
        errors:
        - errorCode: "EDI-012"
          message: "Only allowed parameters when sending an outbound message are [${parameterNames}]"
    EDI-015:
      summary: "The content already has an open conversation"
      value:
        errors:
        - errorCode: "EDI-015"
          message: "Content already has an open conversation."
    EDI-014:
      summary: "Reply to the content is not possible"
      value:
        errors:
        - errorCode: "EDI-014"
          message: "You cannot reply to ${messageType}."
    EDI-011:
      summary: "A parameter must be an array"
      value:
        errors:
        - errorCode: "EDI-011"
          message: "[${parameterName}] needs to be an array"
    EDI-010:
      summary: "Attachments are not supported for this type of content"
      value:
        errors:
        - errorCode: "EDI-010"
          message: "Attachments are not supported for this type of content"
    CreateOutboundContentOnWhatsappChannel:
      summary: "An example for Create outbound content for WhatsApp channel"
      value:
        sourceId: "5c1bd9c7d6cb0053da1e9d78"
        to:
        - "+33620202020"
        templateName: "test_template_name"
        templateLanguage: "en"
    CreateContentWithInReplyToContentId:
      summary: "An example for Create content with inReplyToContentId"
      value:
        inReplyToContentId: "541014e17aa58d8ccf000023"
        body: "content body"
    EDI-040:
      summary: "Some attributes are invalid"
      value:
        errors:
        - errorCode: "EDI-040"
          message: "Invalid parameters provided"
    ReplyContentOnWhatsappChannel:
      summary: "A reply example to a WhatsApp channel content"
      value:
        body: "test whatsapp content"
        inReplyToContentId: "63e664a9713368687b6ef4e4"
    EDI-038:
      summary: "A pagination attribute is invalid"
      value:
        errors:
        - errorCode: "EDI-038"
          message: "\"[${parameterName}]\" param is invalid"
    CreateContentWithContextData:
      summary: "An example for Create content with contextData"
      value:
        inReplyToContentId: "541014e17aa58d8ccf000093"
        body: "This is a sample content body for a content with contextData"
        contextData:
          additionalContextData1: "context data 1"
          additionalContextData2: "context data 2"
    EDI-035:
      summary: "Inefficient query"
      value:
        errors:
        - errorCode: "EDI-035"
          message: "Inefficient query"
    EDI-034:
      summary: "Invalid offset"
      value:
        errors:
        - errorCode: "EDI-034"
          message: "Invalid offset"
    EDI-037:
      summary: "Impersonation error"
      value:
        errors:
        - errorCode: "EDI-037"
          message: "Impersonation error"
    EDI-036:
      summary: "Inefficient sort"
      value:
        errors:
        - errorCode: "EDI-036"
          message: "Inefficient sort"
    EDI-031:
      summary: "A value in the payload is invalid"
      value:
        errors:
        - errorCode: "EDI-031"
          message: "Invalid value"
          details: "Value of type Array cannot be written to a field of type Hash"
    EDI-030:
      summary: "The format of the payload is invalid"
      value:
        errors:
        - errorCode: "EDI-030"
          message: "Invalid format"
    EDI-033:
      summary: "Validation error"
      value:
        errors:
        - errorCode: "EDI-033"
          message: "[${resourceType}] cannot be saved"
          details: "Author cannot be blank"
        - errorCode: "EDI-033"
          message: "[${resourceType}] cannot be saved"
          details: "Message cannot be blank"
        - errorCode: "EDI-033"
          message: "[${resourceType}] cannot be saved"
          details: "Email format is invalid"
        - errorCode: "EDI-033"
          message: "[${resourceType}] cannot be saved"
          details: "File is invalid"
    EDI-032:
      summary: "Invalid id"
      value:
        errors:
        - errorCode: "EDI-032"
          message: "Invalid id: [${invalidId}]"
    CreateContentWithSourceId:
      summary: "An example for Create content with sourceId"
      value:
        sourceId: "541014e17aa58d8ccf000023"
        body: "This is a sample content body"
  requestBodies:
    SummaryCallbackRequest:
      description: "Summary Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/SummaryApiOutput"
      required: true
    SummaryRequest:
      description: "Summary Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SummaryInput"
      required: true
    PunctuateCallbackRequest:
      description: "Punctuate Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/PunctuateApiOutput"
      required: true
    PunctuateRequest:
      description: "Punctuation API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PunctuateInput"
      required: true
    EnrollmentRequest:
      description: "Speaker Enrollment API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/EnrollmentInput"
      required: true
    EnrollmentPatchRequest:
      description: "Patch Speaker Enrollment API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/EnrollmentPatchInput"
      required: true
    SpeechToTextCallbackRequest:
      description: "Speech to Text API Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/AsrApiResponse"
      required: true
    AsrRequest:
      description: "Speech to Text API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/AsrInput"
      required: true
    DiarizeCallbackRequest:
      description: "Speaker Diarization API Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/DiarizeApiResponse"
      required: true
    DiarizeRequest:
      description: "Speaker Diarization API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DiarizeInput"
      required: true
    IdentifyRequest:
      description: "Speaker Identification API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IdentifyInput"
      required: true
    SpeakerIdentifyCallbackRequest:
      description: "Speaker Identification API Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/SpeakerIdentifyApiResponse"
      required: true
    InteractionAnalyticsRequest:
      description: "Interaction Analytics API Input Format"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/InteractionInput"
      required: true
    InteractionAnalyticsCallbackRequest:
      description: "Interaction Analytics Callback Output"
      content:
        application/json:
          schema:
            allOf:
            - type: "object"
              properties:
                jobId:
                  type: "string"
                creationTime:
                  type: "string"
                  format: "date-time"
                completionTime:
                  type: "string"
                  format: "date-time"
                expirationTime:
                  type: "string"
                  format: "date-time"
            - $ref: "#/components/schemas/InteractionApiResponse"
      required: true
