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

# Connect Qlik with OAuth 2.0 (Authorization Code) – StackOne Hub

> Link a Qlik account in the StackOne Hub using OAuth 2.0 (Authorization Code). End-user guide to authorize the integration and start using Qlik actions.

<Warning>Tenant Admin role is required to create OAuth clients.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;qlik_list_automations&#x22;,&#x22;label&#x22;:&#x22;List Automations&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_automation&#x22;,&#x22;label&#x22;:&#x22;Get Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_automation&#x22;,&#x22;label&#x22;:&#x22;Create Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_automation&#x22;,&#x22;label&#x22;:&#x22;Update Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_automation&#x22;,&#x22;label&#x22;:&#x22;Delete Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_change_automation_owner&#x22;,&#x22;label&#x22;:&#x22;Change Automation Owner&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_change_automation_space&#x22;,&#x22;label&#x22;:&#x22;Change Automation Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_copy_automation&#x22;,&#x22;label&#x22;:&#x22;Duplicate Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_disable_automation&#x22;,&#x22;label&#x22;:&#x22;Disable Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_enable_automation&#x22;,&#x22;label&#x22;:&#x22;Enable Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_move_automation&#x22;,&#x22;label&#x22;:&#x22;Move Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_automation_runs&#x22;,&#x22;label&#x22;:&#x22;List Automation Runs&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_automation_run&#x22;,&#x22;label&#x22;:&#x22;Run Automation&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_automation_run&#x22;,&#x22;label&#x22;:&#x22;Get Automation Run&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_export_automation_run_log&#x22;,&#x22;label&#x22;:&#x22;Export Automation Run Log&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_retry_automation_run&#x22;,&#x22;label&#x22;:&#x22;Retry Automation Run&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_stop_automation_run&#x22;,&#x22;label&#x22;:&#x22;Stop Automation Run&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_automation_usage_metrics&#x22;,&#x22;label&#x22;:&#x22;Get Automation Usage Metrics&#x22;,&#x22;scopes&#x22;:[&#x22;admin.automations:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_brands&#x22;,&#x22;label&#x22;:&#x22;List Brands&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_brand&#x22;,&#x22;label&#x22;:&#x22;Get Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_brand&#x22;,&#x22;label&#x22;:&#x22;Update Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_brand&#x22;,&#x22;label&#x22;:&#x22;Delete Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_activate_brand&#x22;,&#x22;label&#x22;:&#x22;Activate Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_deactivate_brand&#x22;,&#x22;label&#x22;:&#x22;Deactivate Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_brand_file&#x22;,&#x22;label&#x22;:&#x22;Get Brand File&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_brand_file&#x22;,&#x22;label&#x22;:&#x22;Delete Brand File&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_active_brand&#x22;,&#x22;label&#x22;:&#x22;Get Active Brand&#x22;,&#x22;scopes&#x22;:[&#x22;admin.themes&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_collections&#x22;,&#x22;label&#x22;:&#x22;List Collections&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_collection&#x22;,&#x22;label&#x22;:&#x22;Create Collection&#x22;,&#x22;scopes&#x22;:[&#x22;admin.collections.publicgoverned&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_collection&#x22;,&#x22;label&#x22;:&#x22;Get Collection&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_collection&#x22;,&#x22;label&#x22;:&#x22;Update Collection&#x22;,&#x22;scopes&#x22;:[&#x22;admin.collections.publicgoverned&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_collection&#x22;,&#x22;label&#x22;:&#x22;Delete Collection&#x22;,&#x22;scopes&#x22;:[&#x22;admin.collections.publicgoverned&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_collection_items&#x22;,&#x22;label&#x22;:&#x22;List Items In A Collection&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_add_item_to_collection&#x22;,&#x22;label&#x22;:&#x22;Add Item To Collection&#x22;,&#x22;scopes&#x22;:[&#x22;admin.collections.publicgoverned&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_collection_item&#x22;,&#x22;label&#x22;:&#x22;Get An Item&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_remove_item_from_collection&#x22;,&#x22;label&#x22;:&#x22;Remove An Item&#x22;,&#x22;scopes&#x22;:[&#x22;admin.collections.publicgoverned&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_favorites_collection&#x22;,&#x22;label&#x22;:&#x22;Get User's Favorites Collection&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_extensions&#x22;,&#x22;label&#x22;:&#x22;List Extensions&#x22;,&#x22;scopes&#x22;:[&#x22;admin.extensions&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_extension&#x22;,&#x22;label&#x22;:&#x22;Get Extension&#x22;,&#x22;scopes&#x22;:[&#x22;admin.extensions&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_extension&#x22;,&#x22;label&#x22;:&#x22;Delete Extension&#x22;,&#x22;scopes&#x22;:[&#x22;admin.extensions&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_extension_archive&#x22;,&#x22;label&#x22;:&#x22;Get Extension Archive&#x22;,&#x22;scopes&#x22;:[&#x22;admin.extensions&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_extension_file&#x22;,&#x22;label&#x22;:&#x22;Get Extension File&#x22;,&#x22;scopes&#x22;:[&#x22;admin.extensions&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_get_me&#x22;,&#x22;label&#x22;:&#x22;Get Unified Credentials&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_groups&#x22;,&#x22;label&#x22;:&#x22;List Unified Groups&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_get_group&#x22;,&#x22;label&#x22;:&#x22;Get Unified Group&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_organizations&#x22;,&#x22;label&#x22;:&#x22;List Unified Organizations&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_get_organization&#x22;,&#x22;label&#x22;:&#x22;Get Unified Organization&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_resource_types&#x22;,&#x22;label&#x22;:&#x22;List Unified Resource Types&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_resource_users&#x22;,&#x22;label&#x22;:&#x22;List Unified Resource Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_roles&#x22;,&#x22;label&#x22;:&#x22;List Unified Roles&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_get_role&#x22;,&#x22;label&#x22;:&#x22;Get Unified Role&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_list_users&#x22;,&#x22;label&#x22;:&#x22;List Unified Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_unified_get_user&#x22;,&#x22;label&#x22;:&#x22;Get Unified User&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_items&#x22;,&#x22;label&#x22;:&#x22;List Items&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_item&#x22;,&#x22;label&#x22;:&#x22;Get Item&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_item&#x22;,&#x22;label&#x22;:&#x22;Update Item&#x22;,&#x22;scopes&#x22;:[&#x22;apps&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_item&#x22;,&#x22;label&#x22;:&#x22;Delete Item&#x22;,&#x22;scopes&#x22;:[&#x22;apps&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_item_collections&#x22;,&#x22;label&#x22;:&#x22;List Collections Of An Item&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_items_settings&#x22;,&#x22;label&#x22;:&#x22;Get Items Settings&#x22;,&#x22;scopes&#x22;:[&#x22;apps:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_spaces&#x22;,&#x22;label&#x22;:&#x22;List Spaces&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_space&#x22;,&#x22;label&#x22;:&#x22;Create Space&#x22;,&#x22;scopes&#x22;:[&#x22;spaces.shared:create&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_space&#x22;,&#x22;label&#x22;:&#x22;Get Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_space&#x22;,&#x22;label&#x22;:&#x22;Update Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_space&#x22;,&#x22;label&#x22;:&#x22;Delete Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_space_assignments&#x22;,&#x22;label&#x22;:&#x22;List Assignments For A Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_space_assignment&#x22;,&#x22;label&#x22;:&#x22;Assign User Or Group To A Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_space_assignment&#x22;,&#x22;label&#x22;:&#x22;Retrieve An Assignment For A Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_space_assignment&#x22;,&#x22;label&#x22;:&#x22;Update An Assignment For A Space&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_space_assignment&#x22;,&#x22;label&#x22;:&#x22;Delete An Assignment&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_space_shares&#x22;,&#x22;label&#x22;:&#x22;List Space Shares&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_space_share&#x22;,&#x22;label&#x22;:&#x22;Create A Space Share&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_space_share&#x22;,&#x22;label&#x22;:&#x22;Retrieve A Space Share&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_space_share&#x22;,&#x22;label&#x22;:&#x22;Delete A Space Share&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_space_types&#x22;,&#x22;label&#x22;:&#x22;List Space Types&#x22;,&#x22;scopes&#x22;:[&#x22;admin.spaces:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_user&#x22;,&#x22;label&#x22;:&#x22;Get User&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_get_current_user&#x22;,&#x22;label&#x22;:&#x22;Get Current User&#x22;,&#x22;scopes&#x22;:[&#x22;users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_create_user&#x22;,&#x22;label&#x22;:&#x22;Create User&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users&#x22;]},{&#x22;id&#x22;:&#x22;qlik_update_user&#x22;,&#x22;label&#x22;:&#x22;Update User&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users&#x22;]},{&#x22;id&#x22;:&#x22;qlik_delete_user&#x22;,&#x22;label&#x22;:&#x22;Delete User&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users&#x22;]},{&#x22;id&#x22;:&#x22;qlik_count_users&#x22;,&#x22;label&#x22;:&#x22;Count Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_filter_users&#x22;,&#x22;label&#x22;:&#x22;Filter Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users:read&#x22;]},{&#x22;id&#x22;:&#x22;qlik_invite_user&#x22;,&#x22;label&#x22;:&#x22;Invite Users&#x22;,&#x22;scopes&#x22;:[&#x22;admin.users&#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 an OAuth client</h2>

  <p>Register an OAuth client in Qlik Cloud to obtain the Client ID and Client Secret needed for the OAuth 2.0 flow.</p>

  <Steps>
    <Step title="Navigate to the OAuth settings">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to <a href="https://qlikcloud.com" target="_blank" rel="noopener noreferrer">Qlik Cloud</a> with a Tenant Admin account.</p>

        <ul>
          <li>Click the navigation menu (☰) in the top left, then select <strong>Administration</strong> to open the Administration activity center.</li>
          <li>In the <strong>Administration</strong> activity center, click <strong>OAuth</strong> in the left sidebar.</li>
          <li>Click <strong>Create new</strong> in the top right corner.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure the OAuth client">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the "Create new OAuth client configuration" dialog, fill in the following details:</p>

        <ul>
          <li><strong>Client type</strong> — Select <strong>Web</strong>.</li>
          <li><strong>Name</strong> — Enter a name for the client (e.g., `StackOne Integration`).</li>
          <li><strong>Description</strong> — Optionally add a description.</li>
        </ul>
      </div>
    </Step>

    <Step title="Select scopes">
      <div data-guide-step data-guide-scopes="user_default,admin_classic,offline_access,admin.automations,admin.automations:read,admin.collections.publicgoverned,admin.extensions,admin.spaces,admin.spaces:read,admin.themes,admin.users,admin.users:read,apps,apps:read,apps:export,spaces.shared:create,spaces.shared:read,users:read" data-guide-display-scopes-list="user_default,admin_classic,offline_access,admin.automations,admin.automations:read,admin.collections.publicgoverned,admin.extensions,admin.spaces,admin.spaces:read,admin.themes,admin.users,admin.users:read,apps,apps:read,apps:export,spaces.shared:create,spaces.shared:read,users:read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="user_default,admin_classic,offline_access,admin.automations,admin.automations:read,admin.collections.publicgoverned,admin.extensions,admin.spaces,admin.spaces:read,admin.themes,admin.users,admin.users:read,apps,apps:read,apps:export,spaces.shared:create,spaces.shared:read,users:read" 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 Brand, Add Item To Collection, Assign User Or Group To A Space, Change Automation Owner, Change Automation Space, Count Users, Create A Space Share, Create Automation, Create Collection, Create Space, Create User, Deactivate Brand, Delete A Space Share, Delete An Assignment, Delete Automation, Delete Brand, Delete Brand File, Delete Collection, Delete Extension, Delete Item, Delete Space, Delete User, Disable Automation, Duplicate Automation, Enable Automation, Export Automation Run Log, Filter Users, Get Active Brand, Get An Item, Get Automation, Get Automation Run, Get Automation Usage Metrics, Get Brand, Get Brand File, Get Collection, Get Current User, Get Extension, Get Extension Archive, Get Extension File, Get Item, Get Items Settings, Get Space, Get Unified Credentials, Get Unified Group, Get Unified Organization, Get Unified Role, Get Unified User, Get User, Get User's Favorites Collection, Invite Users, List Assignments For A Space, List Automation Runs, List Automations, List Brands, List Collections, List Collections Of An Item, List Extensions, List Items, List Items In A Collection, List Space Shares, List Space Types, List Spaces, List Unified Groups, List Unified Organizations, List Unified Resource Types, List Unified Resource Users, List Unified Roles, List Unified Users, List Users, Move Automation, Remove An Item, Retrieve A Space Share, Retrieve An Assignment For A Space, Retry Automation Run, Run Automation, Stop Automation Run, Update An Assignment For A Space, Update Automation, Update Brand, Update Collection, Update Item, Update Space, Update User</span>
        </div>

        <p>Under <strong>Scopes</strong>, select the scopes required for your use case. You MUST include <strong>user\_default</strong> and <strong>offline\_access</strong> in your Qlik OAuth client configuration — these are required for successful account connection. For full StackOne functionality, ensure all available scopes are selected. Then add any additional scopes needed for your integration.</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="user_default">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user_default" title="Copy scope" data-copy="user_default">
                  <span className="connector-guide-scope-copy__label">user\_default</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="admin_classic">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin_classic" title="Copy scope" data-copy="admin_classic">
                  <span className="connector-guide-scope-copy__label">admin\_classic</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="offline_access">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy offline_access" title="Copy scope" data-copy="offline_access">
                  <span className="connector-guide-scope-copy__label">offline\_access</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="admin.automations">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.automations" title="Copy scope" data-copy="admin.automations">
                  <span className="connector-guide-scope-copy__label">admin.automations</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="admin.automations:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.automations:read" title="Copy scope" data-copy="admin.automations:read">
                  <span className="connector-guide-scope-copy__label">admin.automations: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="admin.collections.publicgoverned">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.collections.publicgoverned" title="Copy scope" data-copy="admin.collections.publicgoverned">
                  <span className="connector-guide-scope-copy__label">admin.collections.publicgoverned</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="admin.extensions">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.extensions" title="Copy scope" data-copy="admin.extensions">
                  <span className="connector-guide-scope-copy__label">admin.extensions</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="admin.spaces">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.spaces" title="Copy scope" data-copy="admin.spaces">
                  <span className="connector-guide-scope-copy__label">admin.spaces</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="admin.spaces:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.spaces:read" title="Copy scope" data-copy="admin.spaces:read">
                  <span className="connector-guide-scope-copy__label">admin.spaces: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="admin.themes">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.themes" title="Copy scope" data-copy="admin.themes">
                  <span className="connector-guide-scope-copy__label">admin.themes</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="admin.users">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.users" title="Copy scope" data-copy="admin.users">
                  <span className="connector-guide-scope-copy__label">admin.users</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="admin.users:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy admin.users:read" title="Copy scope" data-copy="admin.users:read">
                  <span className="connector-guide-scope-copy__label">admin.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="apps">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy apps" title="Copy scope" data-copy="apps">
                  <span className="connector-guide-scope-copy__label">apps</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="apps:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy apps:read" title="Copy scope" data-copy="apps:read">
                  <span className="connector-guide-scope-copy__label">apps: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="apps:export">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy apps:export" title="Copy scope" data-copy="apps:export">
                  <span className="connector-guide-scope-copy__label">apps:export</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="spaces.shared:create">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy spaces.shared:create" title="Copy scope" data-copy="spaces.shared:create">
                  <span className="connector-guide-scope-copy__label">spaces.shared:create</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="spaces.shared:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy spaces.shared:read" title="Copy scope" data-copy="spaces.shared:read">
                  <span className="connector-guide-scope-copy__label">spaces.shared: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: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>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Add Redirect URL and create the client">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Complete the remaining configuration and create the client.</p>

        <ul>
          <li>In the <strong>Add redirect URLs</strong> field, enter `https://api.stackone.com/connect/oauth2/qlik/callback` and click <strong>+ Add</strong>.</li>
          <li>Under <strong>Authentication method</strong>, ensure <strong>Client secret</strong> is checked.</li>
          <li>Click <strong>Create</strong> to create the OAuth client.</li>
        </ul>
      </div>
    </Step>

    <Step title="Copy the Client ID and Client Secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>After creation, the <strong>Client ID</strong> and <strong>Client Secret</strong> will be displayed. Copy both values and store them securely — the Client Secret is only shown once and cannot be retrieved again.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Find your Tenant Name and Region</h2>

  <p>When connecting in StackOne, you will also need your <strong>Tenant Name</strong> and <strong>Region</strong>.</p>

  <Steps>
    <Step title="Locate from your browser URL">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>After logging in to Qlik Cloud, look at the URL in your browser address bar. It follows this format:<br />`https://<tenant-name>.<region>.qlikcloud.com`<br />For example, if your URL is `https://my-company.us.qlikcloud.com/hub`:</p>

        <ul>
          <li><strong>Tenant Name</strong> is `my-company`.</li>
          <li><strong>Region</strong> is `us` (the part between the tenant name and `qlikcloud.com`).</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<div data-whitelabel-hide>
  <h2>Linking the Account from the Hub</h2>

  <Steps>
    <Step title="Navigate to the Hub">
      Use one of the three <a href="/guides/accounts-section#linking-accounts">Linking Account Methods</a> to access the Hub.
    </Step>

    <Step title="Fill out the fields">
      Fill out the following fields using details from your provider:

      <ul>
        <li><strong>Client ID</strong></li>
        <li><strong>Client Secret</strong></li>
        <li><strong>Tenant Name</strong></li>
        <li><strong>Region</strong></li>
        <li><strong>Scopes</strong> (Optional)</li>
      </ul>
    </Step>

    <Step title="Connect">
      <ul>
        <li>Click <strong>Connect</strong></li>
        <li>If applicable, the provider will redirect you to a sign-in or authorization page. Complete the provider's authorization flow.</li>
        <li>Once authorization is successful, you will see a confirmation popup</li>
      </ul>
    </Step>
  </Steps>

  <p>If the account linking is successful, you will see the newly linked account in your <a href="/guides/accounts-section">Accounts</a> page.</p>
</div>
