> ## 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.

# 360Learning OAuth 2.0 connector profile – StackOne setup guide

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

<Warning>Admin privileges (platform owner or platform admin) are required to create API credentials.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;360learning_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_user&#x22;,&#x22;label&#x22;:&#x22;Get User&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_user&#x22;,&#x22;label&#x22;:&#x22;Create Invited User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_activate_user&#x22;,&#x22;label&#x22;:&#x22;Activate User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_add_manager_to_user&#x22;,&#x22;label&#x22;:&#x22;Add Manager To User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_remove_manager_from_user&#x22;,&#x22;label&#x22;:&#x22;Remove Manager From User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_user_managers&#x22;,&#x22;label&#x22;:&#x22;List User Managers&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_user_subordinates&#x22;,&#x22;label&#x22;:&#x22;List User Subordinates&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_user_custom_field_values&#x22;,&#x22;label&#x22;:&#x22;List User Custom Field Values&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_user_custom_field_values&#x22;,&#x22;label&#x22;:&#x22;Replace User Custom Field Values&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_user_password&#x22;,&#x22;label&#x22;:&#x22;Replace User Password&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_pseudonymize_user&#x22;,&#x22;label&#x22;:&#x22;Pseudonymize User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_user&#x22;,&#x22;label&#x22;:&#x22;Delete User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_user&#x22;,&#x22;label&#x22;:&#x22;Edit User&#x22;,&#x22;scopes&#x22;:[&#x22;users:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_courses&#x22;,&#x22;label&#x22;:&#x22;List Courses&#x22;,&#x22;scopes&#x22;:[&#x22;courses:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_courses_statistics&#x22;,&#x22;label&#x22;:&#x22;List Courses Statistics&#x22;,&#x22;scopes&#x22;:[&#x22;courseStats:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_course&#x22;,&#x22;label&#x22;:&#x22;Get Course&#x22;,&#x22;scopes&#x22;:[&#x22;courses:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_course_tags&#x22;,&#x22;label&#x22;:&#x22;Get Course Tags&#x22;,&#x22;scopes&#x22;:[&#x22;tags:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_archive_restore_course&#x22;,&#x22;label&#x22;:&#x22;Archive Or Restore Course&#x22;,&#x22;scopes&#x22;:[&#x22;courses:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_course_tags&#x22;,&#x22;label&#x22;:&#x22;Replace All Tags In Course&#x22;,&#x22;scopes&#x22;:[&#x22;courses:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_groups&#x22;,&#x22;label&#x22;:&#x22;List Groups&#x22;,&#x22;scopes&#x22;:[&#x22;groups:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_group&#x22;,&#x22;label&#x22;:&#x22;Get Group&#x22;,&#x22;scopes&#x22;:[&#x22;groups:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_group&#x22;,&#x22;label&#x22;:&#x22;Create Group&#x22;,&#x22;scopes&#x22;:[&#x22;groups:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_group&#x22;,&#x22;label&#x22;:&#x22;Edit Group&#x22;,&#x22;scopes&#x22;:[&#x22;groups:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_group_memberships&#x22;,&#x22;label&#x22;:&#x22;List Group Memberships&#x22;,&#x22;scopes&#x22;:[&#x22;groups:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_add_user_role&#x22;,&#x22;label&#x22;:&#x22;Add User Role To Group&#x22;,&#x22;scopes&#x22;:[&#x22;groups:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_remove_user_role&#x22;,&#x22;label&#x22;:&#x22;Remove User Role From Group&#x22;,&#x22;scopes&#x22;:[&#x22;groups:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_group_catalog_content_ids&#x22;,&#x22;label&#x22;:&#x22;List Group Catalog Content IDs&#x22;,&#x22;scopes&#x22;:[&#x22;groups:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_group_library_content_ids&#x22;,&#x22;label&#x22;:&#x22;List Group Library Content IDs&#x22;,&#x22;scopes&#x22;:[&#x22;groups:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_path&#x22;,&#x22;label&#x22;:&#x22;Create Path&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_path_steps&#x22;,&#x22;label&#x22;:&#x22;Replace Path Steps&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_paths&#x22;,&#x22;label&#x22;:&#x22;List Paths&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_path&#x22;,&#x22;label&#x22;:&#x22;Get Path&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_path&#x22;,&#x22;label&#x22;:&#x22;Delete Path&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_path&#x22;,&#x22;label&#x22;:&#x22;Edit Path&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_path_sessions&#x22;,&#x22;label&#x22;:&#x22;List Path Sessions&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_path_session&#x22;,&#x22;label&#x22;:&#x22;Get Path Session&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_path_session&#x22;,&#x22;label&#x22;:&#x22;Edit Path Session&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_path_session&#x22;,&#x22;label&#x22;:&#x22;Delete Path Session&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_archive_restore_path&#x22;,&#x22;label&#x22;:&#x22;Archive Or Restore Path&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_path_enrollments&#x22;,&#x22;label&#x22;:&#x22;List Path Enrollments&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_path_session_audience&#x22;,&#x22;label&#x22;:&#x22;Get Path Session Audience&#x22;,&#x22;scopes&#x22;:[&#x22;paths:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_path_session_audience&#x22;,&#x22;label&#x22;:&#x22;Replace Path Session Audience&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_path_session_metrics&#x22;,&#x22;label&#x22;:&#x22;Get Path Session Metrics&#x22;,&#x22;scopes&#x22;:[&#x22;pathStats:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_path_tags&#x22;,&#x22;label&#x22;:&#x22;List Path Tags&#x22;,&#x22;scopes&#x22;:[&#x22;tags:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_path_tags&#x22;,&#x22;label&#x22;:&#x22;Replace Path Tags&#x22;,&#x22;scopes&#x22;:[&#x22;tags:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_path_session_user_stats&#x22;,&#x22;label&#x22;:&#x22;List Path Session User Statistics&#x22;,&#x22;scopes&#x22;:[&#x22;pathStats:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_child_path_session&#x22;,&#x22;label&#x22;:&#x22;Edit Child Path Session&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_path_session&#x22;,&#x22;label&#x22;:&#x22;Create Path Session&#x22;,&#x22;scopes&#x22;:[&#x22;paths:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_classrooms&#x22;,&#x22;label&#x22;:&#x22;List Classrooms&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_classroom&#x22;,&#x22;label&#x22;:&#x22;Get Classroom&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_classroom&#x22;,&#x22;label&#x22;:&#x22;Create Classroom&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_classroom&#x22;,&#x22;label&#x22;:&#x22;Edit Classroom&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_classroom_slots&#x22;,&#x22;label&#x22;:&#x22;List Classroom Slots&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_classroom_slot&#x22;,&#x22;label&#x22;:&#x22;Create Classroom Slot&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_classroom_slot&#x22;,&#x22;label&#x22;:&#x22;Delete Classroom Slot&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_register_user_for_slot&#x22;,&#x22;label&#x22;:&#x22;Register User For Classroom Slot&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_slot_registrations&#x22;,&#x22;label&#x22;:&#x22;List Slot Registrations&#x22;,&#x22;scopes&#x22;:[&#x22;classrooms:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_attendance_sheet&#x22;,&#x22;label&#x22;:&#x22;Create Attendance Sheet&#x22;,&#x22;scopes&#x22;:[&#x22;attendanceSheets:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_attendance_sheets&#x22;,&#x22;label&#x22;:&#x22;List Attendance Sheets&#x22;,&#x22;scopes&#x22;:[&#x22;attendanceSheets:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_attendance_sheet&#x22;,&#x22;label&#x22;:&#x22;Replace Attendance Sheet&#x22;,&#x22;scopes&#x22;:[&#x22;attendanceSheets:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_attendance_sheet&#x22;,&#x22;label&#x22;:&#x22;Delete Attendance Sheet&#x22;,&#x22;scopes&#x22;:[&#x22;attendanceSheets:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_attendances&#x22;,&#x22;label&#x22;:&#x22;List Attendances&#x22;,&#x22;scopes&#x22;:[&#x22;attendanceSheets:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_external_id_mapping&#x22;,&#x22;label&#x22;:&#x22;Create External ID Mapping&#x22;,&#x22;scopes&#x22;:[&#x22;externalIds:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_external_id_mappings&#x22;,&#x22;label&#x22;:&#x22;List External ID Mappings&#x22;,&#x22;scopes&#x22;:[&#x22;externalIds:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_external_id_mapping&#x22;,&#x22;label&#x22;:&#x22;Delete External ID Mapping&#x22;,&#x22;scopes&#x22;:[&#x22;externalIds:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_external_id_mapping&#x22;,&#x22;label&#x22;:&#x22;Replace External ID Mapping&#x22;,&#x22;scopes&#x22;:[&#x22;externalIds:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_custom_fields&#x22;,&#x22;label&#x22;:&#x22;List Custom Fields&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_custom_field&#x22;,&#x22;label&#x22;:&#x22;Create Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_edit_custom_field&#x22;,&#x22;label&#x22;:&#x22;Edit Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_custom_field&#x22;,&#x22;label&#x22;:&#x22;Delete Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_custom_field_authorized_values&#x22;,&#x22;label&#x22;:&#x22;List Custom Field Authorized Values&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_custom_field_authorized_values&#x22;,&#x22;label&#x22;:&#x22;Replace Custom Field Authorized Values&#x22;,&#x22;scopes&#x22;:[&#x22;customFields:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_list_tags&#x22;,&#x22;label&#x22;:&#x22;List Tags&#x22;,&#x22;scopes&#x22;:[&#x22;tags:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_get_tag&#x22;,&#x22;label&#x22;:&#x22;Get Tag&#x22;,&#x22;scopes&#x22;:[&#x22;tags:read&#x22;]},{&#x22;id&#x22;:&#x22;360learning_create_tag&#x22;,&#x22;label&#x22;:&#x22;Create Tag&#x22;,&#x22;scopes&#x22;:[&#x22;tags:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_replace_tag&#x22;,&#x22;label&#x22;:&#x22;Replace Tag&#x22;,&#x22;scopes&#x22;:[&#x22;tags:write&#x22;]},{&#x22;id&#x22;:&#x22;360learning_delete_tag&#x22;,&#x22;label&#x22;:&#x22;Delete Tag&#x22;,&#x22;scopes&#x22;:[&#x22;tags:write&#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>Create API v2 credentials</h2>

  <p>Generate OAuth 2.0 credentials in your 360Learning admin panel.</p>

  <Steps>
    <Step title="Sign in to 360Learning">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://app.360learning.com" target="_blank" rel="noopener noreferrer">360Learning account</a>.</p>

        <ul>
          <li>In the left sidebar under <strong>All groups</strong>, hover over your platform group and click the <strong>gear icon</strong> that appears.</li>
          <li>Select <strong>API v2</strong> from the settings menu.</li>
        </ul>
      </div>
    </Step>

    <Step title="Create new credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click the <strong>+ Add API Credentials</strong> button.</p>

        <ul>
          <li>Enter a descriptive <strong>Credentials label</strong> (e.g., `StackOne Integration`).</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure permissions">
      <div data-guide-step data-guide-scopes="users:read,users:write,courses:read,courses:write,courseStats:read,groups:read,groups:write,paths:read,paths:write,pathStats:read,classrooms:read,classrooms:write,customFields:read,customFields:write,tags:read,tags:write,externalIds:read,externalIds:write,attendanceSheets:read,attendanceSheets:write" data-guide-display-scopes-list="users:read,users:write,courses:read,courses:write,courseStats:read,groups:read,groups:write,paths:read,paths:write,pathStats:read,classrooms:read,classrooms:write,customFields:read,customFields:write,tags:read,tags:write,externalIds:read,externalIds:write,attendanceSheets:read,attendanceSheets:write">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="users:read,users:write,courses:read,courses:write,courseStats:read,groups:read,groups:write,paths:read,paths:write,pathStats:read,classrooms:read,classrooms:write,customFields:read,customFields:write,tags:read,tags:write,externalIds:read,externalIds:write,attendanceSheets:read,attendanceSheets:write" 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>Activate User, Add Manager To User, Add User Role To Group, Archive Or Restore Course, Archive Or Restore Path, Create Attendance Sheet, Create Classroom, Create Classroom Slot, Create Custom Field, Create External ID Mapping, Create Group, Create Invited User, Create Path, Create Path Session, Create Tag, Delete Attendance Sheet, Delete Classroom Slot, Delete Custom Field, Delete External ID Mapping, Delete Path, Delete Path Session, Delete Tag, Delete User, Edit Child Path Session, Edit Classroom, Edit Custom Field, Edit Group, Edit Path, Edit Path Session, Edit User, Get Classroom, Get Course, Get Course Tags, Get Group, Get Path, Get Path Session, Get Path Session Audience, Get Path Session Metrics, Get Tag, Get User, List Attendance Sheets, List Attendances, List Classroom Slots, List Classrooms, List Courses, List Courses Statistics, List Custom Field Authorized Values, List Custom Fields, List External ID Mappings, List Group Catalog Content IDs, List Group Library Content IDs, List Group Memberships, List Groups, List Path Enrollments, List Path Session User Statistics, List Path Sessions, List Path Tags, List Paths, List Slot Registrations, List Tags, List User Custom Field Values, List User Managers, List User Subordinates, List Users, Pseudonymize User, Register User For Classroom Slot, Remove Manager From User, Remove User Role From Group, Replace All Tags In Course, Replace Attendance Sheet, Replace Custom Field Authorized Values, Replace External ID Mapping, Replace Path Session Audience, Replace Path Steps, Replace Path Tags, Replace Tag, Replace User Custom Field Values, Replace User Password</span>
        </div>

        <p>In the <strong>Permissions</strong> section, select the permissions for your use case:</p>

        <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="users:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy users:read" title="Copy scope" data-copy="users:read">
                  <span className="connector-guide-scope-copy__label">users:read</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="users:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy users:write" title="Copy scope" data-copy="users:write">
                  <span className="connector-guide-scope-copy__label">users:write</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="courses:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy courses:read" title="Copy scope" data-copy="courses:read">
                  <span className="connector-guide-scope-copy__label">courses:read</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="courses:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy courses:write" title="Copy scope" data-copy="courses:write">
                  <span className="connector-guide-scope-copy__label">courses:write</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="courseStats:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy courseStats:read" title="Copy scope" data-copy="courseStats:read">
                  <span className="connector-guide-scope-copy__label">courseStats:read</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="groups:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy groups:read" title="Copy scope" data-copy="groups:read">
                  <span className="connector-guide-scope-copy__label">groups:read</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="groups:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy groups:write" title="Copy scope" data-copy="groups:write">
                  <span className="connector-guide-scope-copy__label">groups:write</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="paths:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy paths:read" title="Copy scope" data-copy="paths:read">
                  <span className="connector-guide-scope-copy__label">paths:read</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="paths:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy paths:write" title="Copy scope" data-copy="paths:write">
                  <span className="connector-guide-scope-copy__label">paths:write</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="pathStats:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy pathStats:read" title="Copy scope" data-copy="pathStats:read">
                  <span className="connector-guide-scope-copy__label">pathStats:read</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="classrooms:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy classrooms:read" title="Copy scope" data-copy="classrooms:read">
                  <span className="connector-guide-scope-copy__label">classrooms:read</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="classrooms:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy classrooms:write" title="Copy scope" data-copy="classrooms:write">
                  <span className="connector-guide-scope-copy__label">classrooms:write</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="customFields:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy customFields:read" title="Copy scope" data-copy="customFields:read">
                  <span className="connector-guide-scope-copy__label">customFields:read</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="customFields:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy customFields:write" title="Copy scope" data-copy="customFields:write">
                  <span className="connector-guide-scope-copy__label">customFields:write</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="tags:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy tags:read" title="Copy scope" data-copy="tags:read">
                  <span className="connector-guide-scope-copy__label">tags:read</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="tags:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy tags:write" title="Copy scope" data-copy="tags:write">
                  <span className="connector-guide-scope-copy__label">tags:write</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="externalIds:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy externalIds:read" title="Copy scope" data-copy="externalIds:read">
                  <span className="connector-guide-scope-copy__label">externalIds:read</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="externalIds:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy externalIds:write" title="Copy scope" data-copy="externalIds:write">
                  <span className="connector-guide-scope-copy__label">externalIds:write</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="attendanceSheets:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy attendanceSheets:read" title="Copy scope" data-copy="attendanceSheets:read">
                  <span className="connector-guide-scope-copy__label">attendanceSheets:read</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="attendanceSheets:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy attendanceSheets:write" title="Copy scope" data-copy="attendanceSheets:write">
                  <span className="connector-guide-scope-copy__label">attendanceSheets:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Save and copy credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Save</strong> to create the credentials. Copy the <strong>Client ID</strong> and <strong>Client Secret</strong> immediately and store them securely for use later.</p>

        <ul>
          <li>The Client Secret is only displayed once and cannot be retrieved later.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>360Learning</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>360Learning</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>
        </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="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>360Learning</strong>.
