> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RingCentral OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for RingCentral in StackOne. One-time admin setup required before your users can link RingCentral accounts via Hub.

<Warning>Ensure that you have registered an account on <a href="https://developers.ringcentral.com/my-account.html" target="_blank" rel="noopener noreferrer">RingCentral Developers</a> with Developer Admin privileges.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;ringcentral_read_automatic_location_updates_task&#x22;,&#x22;label&#x22;:&#x22;Get Emergency Map Configuration Task&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_assign_multiple_automatic_location_updates_users&#x22;,&#x22;label&#x22;:&#x22;Enable Automatic Location Updates For Users&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_analytics_calls_aggregation_fetch&#x22;,&#x22;label&#x22;:&#x22;Calls Aggregation Data&#x22;,&#x22;scopes&#x22;:[&#x22;Analytics&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_analytics_calls_timeline_fetch&#x22;,&#x22;label&#x22;:&#x22;Calls Timeline Data&#x22;,&#x22;scopes&#x22;:[&#x22;Analytics&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_glip_events_new&#x22;,&#x22;label&#x22;:&#x22;List User Events&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_event_new&#x22;,&#x22;label&#x22;:&#x22;Get Event&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_call_out_call_session&#x22;,&#x22;label&#x22;:&#x22;Make CallOut&#x22;,&#x22;scopes&#x22;:[&#x22;CallControl&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_conference_call_session&#x22;,&#x22;label&#x22;:&#x22;Start Conference Call Session&#x22;,&#x22;scopes&#x22;:[&#x22;CallControl&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_call_session_status&#x22;,&#x22;label&#x22;:&#x22;Get Call Session Status&#x22;,&#x22;scopes&#x22;:[&#x22;CallControl&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_call_session&#x22;,&#x22;label&#x22;:&#x22;Drop Call Session&#x22;,&#x22;scopes&#x22;:[&#x22;CallControl&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_company_active_calls&#x22;,&#x22;label&#x22;:&#x22;List Company Active Calls&#x22;,&#x22;scopes&#x22;:[&#x22;ReadCallLog&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_extension_active_calls&#x22;,&#x22;label&#x22;:&#x22;List User Active Calls&#x22;,&#x22;scopes&#x22;:[&#x22;ReadCallLog&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_user_call_log&#x22;,&#x22;label&#x22;:&#x22;List User Call Records&#x22;,&#x22;scopes&#x22;:[&#x22;ReadCallLog&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_user_call_log&#x22;,&#x22;label&#x22;:&#x22;Delete User Call Records&#x22;,&#x22;scopes&#x22;:[&#x22;EditCallLog&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_call_queues&#x22;,&#x22;label&#x22;:&#x22;List Call Queues&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_user_call_queues&#x22;,&#x22;label&#x22;:&#x22;Update User Call Queues&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_favorite_chats_new&#x22;,&#x22;label&#x22;:&#x22;List Favorite Chats&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_favorite_glip_chat_new&#x22;,&#x22;label&#x22;:&#x22;Add Chat To Favorites&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_send_welcome_email_v2&#x22;,&#x22;label&#x22;:&#x22;Send/Resend Welcome Email&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_send_activation_email_v2&#x22;,&#x22;label&#x22;:&#x22;Send/Resend Activation Email&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_data_export_tasks_new&#x22;,&#x22;label&#x22;:&#x22;List Data Export Tasks&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;,&#x22;Glip&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_data_export_task_new&#x22;,&#x22;label&#x22;:&#x22;Get Data Export Task&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;,&#x22;Glip&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_data_export_task_new&#x22;,&#x22;label&#x22;:&#x22;Create Data Export Task&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;,&#x22;Glip&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_extension_devices&#x22;,&#x22;label&#x22;:&#x22;List Extension Devices&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_bulk_add_devices_v2&#x22;,&#x22;label&#x22;:&#x22;Add BYOD Devices&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_extensions&#x22;,&#x22;label&#x22;:&#x22;List Extensions&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_extension&#x22;,&#x22;label&#x22;:&#x22;Get Extension&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_extension&#x22;,&#x22;label&#x22;:&#x22;Create Extension&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_extension_bulk_update&#x22;,&#x22;label&#x22;:&#x22;Update Multiple Extensions&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_get_extension_bulk_update_task&#x22;,&#x22;label&#x22;:&#x22;Get Extension Update Task Status&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_user_templates&#x22;,&#x22;label&#x22;:&#x22;List User Templates&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_user_template&#x22;,&#x22;label&#x22;:&#x22;Get User Template&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_favorite_contacts&#x22;,&#x22;label&#x22;:&#x22;List Favorite Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;ReadContacts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_get_address_book_bulk_upload_task&#x22;,&#x22;label&#x22;:&#x22;Get Contacts Upload Task&#x22;,&#x22;scopes&#x22;:[&#x22;Contacts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_address_book_bulk_upload&#x22;,&#x22;label&#x22;:&#x22;Upload Multiple User Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;Contacts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_favorite_contact_list&#x22;,&#x22;label&#x22;:&#x22;Update Favorite Contact List&#x22;,&#x22;scopes&#x22;:[&#x22;Contacts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_fax_message&#x22;,&#x22;label&#x22;:&#x22;Create Fax Message&#x22;,&#x22;scopes&#x22;:[&#x22;Faxes&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_aggregate_a2p_sms_statuses&#x22;,&#x22;label&#x22;:&#x22;List A2P SMS Statuses&#x22;,&#x22;scopes&#x22;:[&#x22;A2PSMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_a2p_sms_batch&#x22;,&#x22;label&#x22;:&#x22;Send A2P SMS&#x22;,&#x22;scopes&#x22;:[&#x22;A2PSMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_add_a2p_sms_opt_outs&#x22;,&#x22;label&#x22;:&#x22;Add Opt-In/Out Numbers&#x22;,&#x22;scopes&#x22;:[&#x22;A2PSMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_a2p_sms_opt_outs&#x22;,&#x22;label&#x22;:&#x22;List Opted Out Numbers&#x22;,&#x22;scopes&#x22;:[&#x22;A2PSMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_directory_entries&#x22;,&#x22;label&#x22;:&#x22;Get Company Directory Entries&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_search_directory_entries&#x22;,&#x22;label&#x22;:&#x22;Search Company Directory Entries&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_video_meetings&#x22;,&#x22;label&#x22;:&#x22;List Video Meetings&#x22;,&#x22;scopes&#x22;:[&#x22;Video&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_get_video_meeting&#x22;,&#x22;label&#x22;:&#x22;Get Video Meeting&#x22;,&#x22;scopes&#x22;:[&#x22;Video&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_message_store_report_task&#x22;,&#x22;label&#x22;:&#x22;Get Message Store Report Task&#x22;,&#x22;scopes&#x22;:[&#x22;ReadMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_message_store_report&#x22;,&#x22;label&#x22;:&#x22;Create Message Store Report&#x22;,&#x22;scopes&#x22;:[&#x22;ReadMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_messages&#x22;,&#x22;label&#x22;:&#x22;List Messages&#x22;,&#x22;scopes&#x22;:[&#x22;ReadMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_message&#x22;,&#x22;label&#x22;:&#x22;Get Message(s)&#x22;,&#x22;scopes&#x22;:[&#x22;ReadMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_message_store_configuration&#x22;,&#x22;label&#x22;:&#x22;Get Message Store Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_message&#x22;,&#x22;label&#x22;:&#x22;Update Message(s)&#x22;,&#x22;scopes&#x22;:[&#x22;EditMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_patch_message&#x22;,&#x22;label&#x22;:&#x22;Patch Message(s)&#x22;,&#x22;scopes&#x22;:[&#x22;EditMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_message_store_configuration&#x22;,&#x22;label&#x22;:&#x22;Update Message Store Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_message&#x22;,&#x22;label&#x22;:&#x22;Delete Message&#x22;,&#x22;scopes&#x22;:[&#x22;EditMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_message_by_filter&#x22;,&#x22;label&#x22;:&#x22;Delete Conversation&#x22;,&#x22;scopes&#x22;:[&#x22;EditMessages&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_call_queue_presence&#x22;,&#x22;label&#x22;:&#x22;Get Call Queue Presence&#x22;,&#x22;scopes&#x22;:[&#x22;ReadPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_extension_call_queue_presence&#x22;,&#x22;label&#x22;:&#x22;Get Agent's Call Queue Presence&#x22;,&#x22;scopes&#x22;:[&#x22;ReadPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_user_presence_status&#x22;,&#x22;label&#x22;:&#x22;Get User Presence Status&#x22;,&#x22;scopes&#x22;:[&#x22;ReadPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_unified_presence&#x22;,&#x22;label&#x22;:&#x22;Get Unified Presence&#x22;,&#x22;scopes&#x22;:[&#x22;ReadPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_call_queue_presence&#x22;,&#x22;label&#x22;:&#x22;Update Call Queue Presence&#x22;,&#x22;scopes&#x22;:[&#x22;EditPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_extension_call_queue_presence&#x22;,&#x22;label&#x22;:&#x22;Update Agent's Call Queue Presence&#x22;,&#x22;scopes&#x22;:[&#x22;EditPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_user_presence_status&#x22;,&#x22;label&#x22;:&#x22;Update User Presence Status&#x22;,&#x22;scopes&#x22;:[&#x22;EditPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_unified_presence&#x22;,&#x22;label&#x22;:&#x22;Update Unified Presence&#x22;,&#x22;scopes&#x22;:[&#x22;EditPresence&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_ring_out_call_status&#x22;,&#x22;label&#x22;:&#x22;Get RingOut Call Status&#x22;,&#x22;scopes&#x22;:[&#x22;RingOut&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_ring_out_call&#x22;,&#x22;label&#x22;:&#x22;Make RingOut Call&#x22;,&#x22;scopes&#x22;:[&#x22;RingOut&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_ring_out_call&#x22;,&#x22;label&#x22;:&#x22;Cancel RingOut Call&#x22;,&#x22;scopes&#x22;:[&#x22;RingOut&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_user_roles&#x22;,&#x22;label&#x22;:&#x22;List Company User Roles&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_user_assigned_roles&#x22;,&#x22;label&#x22;:&#x22;List User Assigned Roles&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_user_assigned_roles&#x22;,&#x22;label&#x22;:&#x22;Update User Assigned Roles&#x22;,&#x22;scopes&#x22;:[&#x22;RoleManagement&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_administered_sites&#x22;,&#x22;label&#x22;:&#x22;List User Administered Sites&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_user_administered_sites&#x22;,&#x22;label&#x22;:&#x22;Update User Administered Sites&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_sms_message&#x22;,&#x22;label&#x22;:&#x22;Send SMS&#x22;,&#x22;scopes&#x22;:[&#x22;SMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_mms&#x22;,&#x22;label&#x22;:&#x22;Send MMS&#x22;,&#x22;scopes&#x22;:[&#x22;SMS&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_chat_tasks_new&#x22;,&#x22;label&#x22;:&#x22;List Chat Tasks&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_task_new&#x22;,&#x22;label&#x22;:&#x22;Create Task&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_list_glip_teams_new&#x22;,&#x22;label&#x22;:&#x22;List Teams&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_glip_team_new&#x22;,&#x22;label&#x22;:&#x22;Create Team&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_archive_glip_team_new&#x22;,&#x22;label&#x22;:&#x22;Archive Team&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_unarchive_glip_team_new&#x22;,&#x22;label&#x22;:&#x22;Unarchive Team&#x22;,&#x22;scopes&#x22;:[&#x22;TeamMessaging&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_post_batch_provision_users&#x22;,&#x22;label&#x22;:&#x22;Create Multiple User Extensions&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_read_user_profile_image&#x22;,&#x22;label&#x22;:&#x22;Get User Profile Image&#x22;,&#x22;scopes&#x22;:[&#x22;ReadAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_create_user_profile_image&#x22;,&#x22;label&#x22;:&#x22;Upload User Profile Image&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_update_user_profile_image&#x22;,&#x22;label&#x22;:&#x22;Update User Profile Image&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_bulk_delete_users_v2&#x22;,&#x22;label&#x22;:&#x22;Delete User Extensions&#x22;,&#x22;scopes&#x22;:[&#x22;EditAccounts&#x22;]},{&#x22;id&#x22;:&#x22;ringcentral_delete_user_profile_image&#x22;,&#x22;label&#x22;:&#x22;Delete User Profile Image&#x22;,&#x22;scopes&#x22;:[&#x22;EditExtensions&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Log in to RingCentral Developers</h2>

  <p>This connection authenticates on behalf of a registered application in RingCentral Developers.</p>

  <Steps>
    <Step title="Register for RingCentral Developers">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>If you do not have a RingCentral Developers account, you can register for one at [https://developers.ringcentral.com/sign-up](https://developers.ringcentral.com/sign-up)</p>

        <ul>
          <li>Your account should have the Role <strong>Developer Admin</strong></li>
        </ul>
      </div>
    </Step>

    <Step title="Log in to RingCentral Developers">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Log in to your <a href="https://developers.ringcentral.com/my-account.html" target="_blank" rel="noopener noreferrer">RingCentral Developers account</a></p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Create a New RingCentral Application</h2>

  <p>Register a new application that StackOne will authenticate through.</p>

  <Steps>
    <Step title="View Apps">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In RingCentral Developers, click the <strong>Console</strong> button, then <strong>Apps</strong> on the left.</p>
      </div>
    </Step>

    <Step title="Register new App">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click the <strong>Register App</strong> button.</p>
      </div>
    </Step>

    <Step title="Select App Type">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Under App Type, select <strong>REST API App (most common)</strong> and click the <strong>Next</strong> button.</p>
      </div>
    </Step>

    <Step title="Enter App Properties">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Under App Properties (internal-use only), enter the following details:</p>

        <ul>
          <li>App Name: Enter a name for your new App</li>
          <li>App description: Enter a description for your new App</li>
          <li>Primary Contact: Enter the email address of the main support contact for this App</li>
          <li>Do you intend to promote this app in the RingCentral App Gallery?: No</li>
        </ul>
      </div>
    </Step>

    <Step title="Enter Auth Details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Scroll down to the Auth section, and enter the following details:</p>

        <ul>
          <li>Select <strong>3-legged OAuth flow authorization code</strong></li>
          <li>From what type of app will you be calling the API?: <strong>Server-side web app (most common)</strong></li>
          <li>OAuth Redirect URI: `https://api.stackone.com/connect/oauth2/ringcentral/callback`</li>
          <li>Issue refresh tokens?: <strong>Yes</strong></li>
        </ul>
      </div>
    </Step>

    <Step title="Enter Security Details">
      <div data-guide-step data-guide-scopes="A2PSMS,Analytics,CallControl,Contacts,EditAccounts,EditCallLog,EditExtensions,EditMessages,EditPresence,Faxes,Glip,ReadAccounts,ReadCallLog,ReadContacts,ReadMessages,ReadPresence,RingOut,RoleManagement,SMS,TeamMessaging,Video" data-guide-display-scopes-list="A2PSMS,Analytics,CallControl,Contacts,EditAccounts,EditCallLog,EditExtensions,EditMessages,EditPresence,Faxes,Glip,ReadAccounts,ReadCallLog,ReadContacts,ReadMessages,ReadPresence,RingOut,RoleManagement,SMS,TeamMessaging,Video">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="A2PSMS,Analytics,CallControl,Contacts,EditAccounts,EditCallLog,EditExtensions,EditMessages,EditPresence,Faxes,Glip,ReadAccounts,ReadCallLog,ReadContacts,ReadMessages,ReadPresence,RingOut,RoleManagement,SMS,TeamMessaging,Video" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Add BYOD Devices, Add Chat To Favorites, Add Opt-In/Out Numbers, Archive Team, Calls Aggregation Data, Calls Timeline Data, Cancel RingOut Call, Create Data Export Task, Create Extension, Create Fax Message, Create Message Store Report, Create Multiple User Extensions, Create Task, Create Team, Delete Conversation, Delete Message, Delete User Call Records, Delete User Extensions, Delete User Profile Image, Drop Call Session, Enable Automatic Location Updates For Users, Get Agent's Call Queue Presence, Get Call Queue Presence, Get Call Session Status, Get Company Directory Entries, Get Contacts Upload Task, Get Data Export Task, Get Emergency Map Configuration Task, Get Event, Get Extension, Get Extension Update Task Status, Get Message Store Configuration, Get Message Store Report Task, Get Message(s), Get RingOut Call Status, Get Unified Presence, Get User Presence Status, Get User Profile Image, Get User Template, Get Video Meeting, List A2P SMS Statuses, List Call Queues, List Chat Tasks, List Company Active Calls, List Company User Roles, List Data Export Tasks, List Extension Devices, List Extensions, List Favorite Chats, List Favorite Contacts, List Messages, List Opted Out Numbers, List Teams, List User Active Calls, List User Administered Sites, List User Assigned Roles, List User Call Records, List User Events, List User Templates, List Video Meetings, Make CallOut, Make RingOut Call, Patch Message(s), Search Company Directory Entries, Send A2P SMS, Send MMS, Send SMS, Send/Resend Activation Email, Send/Resend Welcome Email, Start Conference Call Session, Unarchive Team, Update Agent's Call Queue Presence, Update Call Queue Presence, Update Favorite Contact List, Update Message Store Configuration, Update Message(s), Update Multiple Extensions, Update Unified Presence, Update User Administered Sites, Update User Assigned Roles, Update User Call Queues, Update User Presence Status, Update User Profile Image, Upload Multiple User Contacts, Upload User Profile Image</span>
        </div>

        <p>Under Security, select the application permissions your integration needs, then choose who can access the app.</p>

        <ul>
          <li>Application Scopes: select the permissions matching the actions you will use (e.g. ReadAccounts, ReadMessages, SMS, ReadCallLog, Contacts, TeamMessaging, RingOut, Faxes)</li>
          <li>Who will be authorized to access your app?: This app is <strong>private</strong> and will only be callable using credentials from the same RingCentral account</li>
          <li>Click the <strong>Create</strong> button to proceed. Upon seeing a success message, press the <strong>OK</strong> button.</li>
          <li>Note: the StackOne connection test uses a permission-free RingCentral dictionary endpoint, so the connection will verify even with minimal permissions — but every action you intend to use still needs its application permission selected here, and permissions cannot be changed via the OAuth scope parameter later</li>
        </ul>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container connector-guide-scopes-container--scrollable">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="A2PSMS">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy A2PSMS" title="Copy scope" data-copy="A2PSMS">
                  <span className="connector-guide-scope-copy__label">A2PSMS</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Analytics">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Analytics" title="Copy scope" data-copy="Analytics">
                  <span className="connector-guide-scope-copy__label">Analytics</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="CallControl">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy CallControl" title="Copy scope" data-copy="CallControl">
                  <span className="connector-guide-scope-copy__label">CallControl</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Contacts">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Contacts" title="Copy scope" data-copy="Contacts">
                  <span className="connector-guide-scope-copy__label">Contacts</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="EditAccounts">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy EditAccounts" title="Copy scope" data-copy="EditAccounts">
                  <span className="connector-guide-scope-copy__label">EditAccounts</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="EditCallLog">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy EditCallLog" title="Copy scope" data-copy="EditCallLog">
                  <span className="connector-guide-scope-copy__label">EditCallLog</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="EditExtensions">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy EditExtensions" title="Copy scope" data-copy="EditExtensions">
                  <span className="connector-guide-scope-copy__label">EditExtensions</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="EditMessages">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy EditMessages" title="Copy scope" data-copy="EditMessages">
                  <span className="connector-guide-scope-copy__label">EditMessages</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="EditPresence">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy EditPresence" title="Copy scope" data-copy="EditPresence">
                  <span className="connector-guide-scope-copy__label">EditPresence</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Faxes">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Faxes" title="Copy scope" data-copy="Faxes">
                  <span className="connector-guide-scope-copy__label">Faxes</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Glip">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Glip" title="Copy scope" data-copy="Glip">
                  <span className="connector-guide-scope-copy__label">Glip</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="ReadAccounts">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ReadAccounts" title="Copy scope" data-copy="ReadAccounts">
                  <span className="connector-guide-scope-copy__label">ReadAccounts</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="ReadCallLog">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ReadCallLog" title="Copy scope" data-copy="ReadCallLog">
                  <span className="connector-guide-scope-copy__label">ReadCallLog</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="ReadContacts">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ReadContacts" title="Copy scope" data-copy="ReadContacts">
                  <span className="connector-guide-scope-copy__label">ReadContacts</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="ReadMessages">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ReadMessages" title="Copy scope" data-copy="ReadMessages">
                  <span className="connector-guide-scope-copy__label">ReadMessages</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="ReadPresence">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ReadPresence" title="Copy scope" data-copy="ReadPresence">
                  <span className="connector-guide-scope-copy__label">ReadPresence</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="RingOut">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy RingOut" title="Copy scope" data-copy="RingOut">
                  <span className="connector-guide-scope-copy__label">RingOut</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="RoleManagement">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy RoleManagement" title="Copy scope" data-copy="RoleManagement">
                  <span className="connector-guide-scope-copy__label">RoleManagement</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="SMS">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy SMS" title="Copy scope" data-copy="SMS">
                  <span className="connector-guide-scope-copy__label">SMS</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="TeamMessaging">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy TeamMessaging" title="Copy scope" data-copy="TeamMessaging">
                  <span className="connector-guide-scope-copy__label">TeamMessaging</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="Video">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Video" title="Copy scope" data-copy="Video">
                  <span className="connector-guide-scope-copy__label">Video</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Copy API Credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Your new App Client ID and Client Secret will now be available to copy.</p>

        <ul>
          <li>Under <strong>Production Credentials</strong>, copy both your <strong>Client ID</strong> and <strong>Client Secret</strong> and store them securely for use later</li>
          <li>Note: application permissions are fixed at app registration — the OAuth scope parameter is ignored by RingCentral</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>RingCentral</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>RingCentral</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul style={{ marginLeft: '20px' }}>
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/connect/managing-connectors/linking-accounts">Link Accounts</a> for <strong>RingCentral</strong>.
