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

# Miro OAuth 2.0 connector profile – StackOne setup guide

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

<Warning>You need access to create apps in your Miro team. Some enterprise teams may require admin approval.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;miro_create_app_card&#x22;,&#x22;label&#x22;:&#x22;Create App Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_app_card&#x22;,&#x22;label&#x22;:&#x22;Get App Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_app_card&#x22;,&#x22;label&#x22;:&#x22;Update App Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_app_card&#x22;,&#x22;label&#x22;:&#x22;Delete App Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_share_board&#x22;,&#x22;label&#x22;:&#x22;Share Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_board_members&#x22;,&#x22;label&#x22;:&#x22;List Board Members&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_board_member&#x22;,&#x22;label&#x22;:&#x22;Get Board Member&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_board_member&#x22;,&#x22;label&#x22;:&#x22;Update Board Member&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_remove_board_member&#x22;,&#x22;label&#x22;:&#x22;Remove Board Member&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_boards&#x22;,&#x22;label&#x22;:&#x22;List Boards&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_board&#x22;,&#x22;label&#x22;:&#x22;Get Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_board&#x22;,&#x22;label&#x22;:&#x22;Create Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_board&#x22;,&#x22;label&#x22;:&#x22;Update Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_board&#x22;,&#x22;label&#x22;:&#x22;Delete Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_card&#x22;,&#x22;label&#x22;:&#x22;Create Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_card&#x22;,&#x22;label&#x22;:&#x22;Get Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_card&#x22;,&#x22;label&#x22;:&#x22;Update Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_card&#x22;,&#x22;label&#x22;:&#x22;Delete Card Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_connector&#x22;,&#x22;label&#x22;:&#x22;Create Connector&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_connectors&#x22;,&#x22;label&#x22;:&#x22;List Connectors&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_connector&#x22;,&#x22;label&#x22;:&#x22;Get Connector&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_connector&#x22;,&#x22;label&#x22;:&#x22;Update Connector&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_connector&#x22;,&#x22;label&#x22;:&#x22;Delete Connector&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_document&#x22;,&#x22;label&#x22;:&#x22;Create Document Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_document&#x22;,&#x22;label&#x22;:&#x22;Get Document Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_document&#x22;,&#x22;label&#x22;:&#x22;Update Document Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_document&#x22;,&#x22;label&#x22;:&#x22;Delete Document Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_document_from_file&#x22;,&#x22;label&#x22;:&#x22;Create Document Item From File&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_document_from_file&#x22;,&#x22;label&#x22;:&#x22;Update Document Item From File&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_doc&#x22;,&#x22;label&#x22;:&#x22;Create Doc Format Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_doc&#x22;,&#x22;label&#x22;:&#x22;Get Doc Format Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_doc&#x22;,&#x22;label&#x22;:&#x22;Delete Doc Format Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_embed&#x22;,&#x22;label&#x22;:&#x22;Create Embed Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_embed&#x22;,&#x22;label&#x22;:&#x22;Get Embed Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_embed&#x22;,&#x22;label&#x22;:&#x22;Update Embed Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_embed&#x22;,&#x22;label&#x22;:&#x22;Delete Embed Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_frame&#x22;,&#x22;label&#x22;:&#x22;Create Frame&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_frame&#x22;,&#x22;label&#x22;:&#x22;Get Frame&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_frame&#x22;,&#x22;label&#x22;:&#x22;Update Frame&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_frame&#x22;,&#x22;label&#x22;:&#x22;Delete Frame&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_frame_items&#x22;,&#x22;label&#x22;:&#x22;Get Items Within Frame&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_group&#x22;,&#x22;label&#x22;:&#x22;Create Group&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_groups&#x22;,&#x22;label&#x22;:&#x22;Get All Groups On A Board&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_group_items&#x22;,&#x22;label&#x22;:&#x22;Get Items Of A Group By ID&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_group&#x22;,&#x22;label&#x22;:&#x22;Get A Group By Its ID&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_group&#x22;,&#x22;label&#x22;:&#x22;Update A Group With New Items&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_ungroup_items&#x22;,&#x22;label&#x22;:&#x22;Ungroup Items&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_group&#x22;,&#x22;label&#x22;:&#x22;Delete Group&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_image&#x22;,&#x22;label&#x22;:&#x22;Create Image Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_image&#x22;,&#x22;label&#x22;:&#x22;Get Image Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_image&#x22;,&#x22;label&#x22;:&#x22;Update Image Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_image_from_file&#x22;,&#x22;label&#x22;:&#x22;Create Image Item From File&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_image_from_file&#x22;,&#x22;label&#x22;:&#x22;Update Image Item From File&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_image&#x22;,&#x22;label&#x22;:&#x22;Delete Image Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_items&#x22;,&#x22;label&#x22;:&#x22;List Board Items&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_item&#x22;,&#x22;label&#x22;:&#x22;Get Board Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_item&#x22;,&#x22;label&#x22;:&#x22;Update Board Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_item&#x22;,&#x22;label&#x22;:&#x22;Delete Board Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_project&#x22;,&#x22;label&#x22;:&#x22;Create Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_projects&#x22;,&#x22;label&#x22;:&#x22;List Projects&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_project&#x22;,&#x22;label&#x22;:&#x22;Get Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_project&#x22;,&#x22;label&#x22;:&#x22;Update Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_project&#x22;,&#x22;label&#x22;:&#x22;Delete Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_shape&#x22;,&#x22;label&#x22;:&#x22;Create Shape Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_shape&#x22;,&#x22;label&#x22;:&#x22;Get Shape Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_shape&#x22;,&#x22;label&#x22;:&#x22;Update Shape Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_shape&#x22;,&#x22;label&#x22;:&#x22;Delete Shape Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_sticky_note&#x22;,&#x22;label&#x22;:&#x22;Create Sticky Note Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_sticky_note&#x22;,&#x22;label&#x22;:&#x22;Get Sticky Note Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_sticky_note&#x22;,&#x22;label&#x22;:&#x22;Update Sticky Note Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_sticky_note&#x22;,&#x22;label&#x22;:&#x22;Delete Sticky Note Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_list_tags&#x22;,&#x22;label&#x22;:&#x22;List Board Tags&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_tag&#x22;,&#x22;label&#x22;:&#x22;Get Tag&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_tag&#x22;,&#x22;label&#x22;:&#x22;Create Tag&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_tag&#x22;,&#x22;label&#x22;:&#x22;Update Tag&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_tag&#x22;,&#x22;label&#x22;:&#x22;Delete Tag&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_attach_tag_to_item&#x22;,&#x22;label&#x22;:&#x22;Attach Tag To Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_detach_tag_from_item&#x22;,&#x22;label&#x22;:&#x22;Detach Tag From Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_items_by_tag&#x22;,&#x22;label&#x22;:&#x22;Get Items By Tag&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_tags_from_item&#x22;,&#x22;label&#x22;:&#x22;Get Tags From Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_create_text&#x22;,&#x22;label&#x22;:&#x22;Create Text Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_text&#x22;,&#x22;label&#x22;:&#x22;Get Text Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:read&#x22;]},{&#x22;id&#x22;:&#x22;miro_update_text&#x22;,&#x22;label&#x22;:&#x22;Update Text Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_delete_text&#x22;,&#x22;label&#x22;:&#x22;Delete Text Item&#x22;,&#x22;scopes&#x22;:[&#x22;boards:write&#x22;]},{&#x22;id&#x22;:&#x22;miro_get_current_user&#x22;,&#x22;label&#x22;:&#x22;Get Current User&#x22;,&#x22;scopes&#x22;:[&#x22;identity:read&#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 OAuth Application</h2>

  <p>Set up a new OAuth application in the Miro Developer Portal.</p>

  <Steps>
    <Step title="Access Developer Portal">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Navigate to the Miro Developer Portal.</p>

        <ul>
          <li>Log in to your <a href="https://miro.com/login/" target="_blank" rel="noopener noreferrer">Miro account</a></li>
          <li>Go to <a href="https://miro.com/app/settings/user-profile/apps" target="_blank" rel="noopener noreferrer">Miro Developer Portal</a></li>
          <li>Click on <strong>Your apps</strong> in the left sidebar</li>
        </ul>
      </div>
    </Step>

    <Step title="Create New App">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Create a new OAuth application for your integration.</p>

        <ul>
          <li>Click <strong>Create new app</strong> button</li>
          <li>Enter an <strong>App name</strong> (e.g., "StackOne Integration")</li>
          <li>Select your team from the dropdown</li>
          <li>Tick <strong>Expire user authorization token</strong></li>
          <li>Click <strong>Create app</strong> to proceed</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure OAuth Settings">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Get Credentials & Set up OAuth redirect URI for authentication flow</p>

        <ul>
          <li>After creating your app, scroll down to the <strong>App Credentials</strong> section to find your Client ID and Client Secret (you'll need these later)</li>
          <li>Scroll down to the <strong>Redirect URI for OAuth2.0</strong> section, add a new redirect URI, "`https://api.stackone.com/connect/oauth2/miro/callback`"</li>
          <li>Click <strong>Add</strong> to save the redirect URI</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure Permissions">
      <div data-guide-step data-guide-scopes="identity:read,boards:read,boards:write,projects:read,projects:write" data-guide-display-scopes-list="identity:read,boards:read,boards:write,projects:read,projects:write">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="identity:read,boards:read,boards:write,projects:read,projects: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>Attach Tag To Item, Create App Card Item, Create Board, Create Card Item, Create Connector, Create Doc Format Item, Create Document Item, Create Document Item From File, Create Embed Item, Create Frame, Create Group, Create Image Item, Create Image Item From File, Create Project, Create Shape Item, Create Sticky Note Item, Create Tag, Create Text Item, Delete App Card Item, Delete Board, Delete Board Item, Delete Card Item, Delete Connector, Delete Doc Format Item, Delete Document Item, Delete Embed Item, Delete Frame, Delete Group, Delete Image Item, Delete Project, Delete Shape Item, Delete Sticky Note Item, Delete Tag, Delete Text Item, Detach Tag From Item, Get A Group By Its ID, Get All Groups On A Board, Get App Card Item, Get Board, Get Board Item, Get Board Member, Get Card Item, Get Connector, Get Current User, Get Doc Format Item, Get Document Item, Get Embed Item, Get Frame, Get Image Item, Get Items By Tag, Get Items Of A Group By ID, Get Items Within Frame, Get Project, Get Shape Item, Get Sticky Note Item, Get Tag, Get Tags From Item, Get Text Item, List Board Items, List Board Members, List Board Tags, List Boards, List Connectors, List Projects, Remove Board Member, Share Board, Ungroup Items, Update A Group With New Items, Update App Card Item, Update Board, Update Board Item, Update Board Member, Update Card Item, Update Connector, Update Document Item, Update Document Item From File, Update Embed Item, Update Frame, Update Image Item, Update Image Item From File, Update Project, Update Shape Item, Update Sticky Note Item, Update Tag, Update Text Item</span>
        </div>

        <p>Set up the permissions (scopes) your application will use.</p>

        <ul>
          <li>Scroll down to the <strong>Permissions</strong></li>
          <li>Select the required scopes for your integration</li>
          <li>Minimum required: `identity:read` (for authentication testing)</li>
          <li>Common scopes: `boards:read`, `boards:write`</li>
          <li>For projects: `projects:read`, `projects:write` (Enterprise plan required)</li>
          <li>Click <strong>Save</strong> to apply the permissions</li>
        </ul>

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

    <Step title="Obtain Client Credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Copy your OAuth credentials for use in StackOne configuration.</p>

        <ul>
          <li>Navigate to the <strong>App Credentials</strong> tab</li>
          <li>Locate <strong>Client ID</strong> and copy it</li>
          <li>Locate <strong>Client secret</strong>, then copy it</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Miro</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>Miro</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>Miro</strong>.
