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

# Outlook Calendar OAuth 2.0 connector profile – StackOne setup guide

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

<Warning>Access to the Azure Portal with permissions to register applications is required.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;outlookcalendar_get_default_calendar&#x22;,&#x22;label&#x22;:&#x22;Get Default Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_calendars&#x22;,&#x22;label&#x22;:&#x22;List User Calendars&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_calendar&#x22;,&#x22;label&#x22;:&#x22;Create Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_calendar&#x22;,&#x22;label&#x22;:&#x22;Create Calendar For User&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_my_calendar&#x22;,&#x22;label&#x22;:&#x22;Get My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_calendar&#x22;,&#x22;label&#x22;:&#x22;Get User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_my_calendar&#x22;,&#x22;label&#x22;:&#x22;Update My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_user_calendar&#x22;,&#x22;label&#x22;:&#x22;Update User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_my_calendar&#x22;,&#x22;label&#x22;:&#x22;Delete My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_user_calendar&#x22;,&#x22;label&#x22;:&#x22;Delete User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_my_calendar_view&#x22;,&#x22;label&#x22;:&#x22;Get My Calendar View&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_calendar_view&#x22;,&#x22;label&#x22;:&#x22;Get User Calendar View&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_events&#x22;,&#x22;label&#x22;:&#x22;List My Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_events&#x22;,&#x22;label&#x22;:&#x22;List User Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_default_calendar_events&#x22;,&#x22;label&#x22;:&#x22;List My Default Calendar Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_default_calendar_events&#x22;,&#x22;label&#x22;:&#x22;List User Default Calendar Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_calendar_events&#x22;,&#x22;label&#x22;:&#x22;List My Calendar Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_calendar_events&#x22;,&#x22;label&#x22;:&#x22;List User Calendar Events&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Create Event In My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Create Event In User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_my_default_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Create Event In My Default Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_default_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Create Event In User Default Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_my_default_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Get Event From My Default Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_default_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Get Event From User Default Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Get Event From My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Get Event From User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Update Event In My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Update Event In User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Delete Event From My Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Delete Event From User Calendar&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_permanent_delete_user_event&#x22;,&#x22;label&#x22;:&#x22;Permanently Delete User Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_forward_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Forward My Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_forward_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Forward User Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_forward_my_event&#x22;,&#x22;label&#x22;:&#x22;Forward My Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_forward_user_event&#x22;,&#x22;label&#x22;:&#x22;Forward User Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_cancel_my_event&#x22;,&#x22;label&#x22;:&#x22;Cancel My Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_cancel_user_event&#x22;,&#x22;label&#x22;:&#x22;Cancel User Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_cancel_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Cancel My Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_cancel_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Cancel User Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_accept_my_event&#x22;,&#x22;label&#x22;:&#x22;Accept My Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_accept_user_event&#x22;,&#x22;label&#x22;:&#x22;Accept User Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_accept_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Accept My Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_accept_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Accept User Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_decline_my_event&#x22;,&#x22;label&#x22;:&#x22;Decline My Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_decline_user_event&#x22;,&#x22;label&#x22;:&#x22;Decline User Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_decline_my_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Decline My Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_decline_user_calendar_event&#x22;,&#x22;label&#x22;:&#x22;Decline User Calendar Event&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_calendar_event_attachments&#x22;,&#x22;label&#x22;:&#x22;List My Calendar Event Attachments&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_calendar_event_attachments&#x22;,&#x22;label&#x22;:&#x22;List User Calendar Event Attachments&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_event_attachments&#x22;,&#x22;label&#x22;:&#x22;List My Event Attachments&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_event_attachments&#x22;,&#x22;label&#x22;:&#x22;List User Event Attachments&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;,&#x22;Calendars.Read&#x22;,&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_my_calendar_event_attachment&#x22;,&#x22;label&#x22;:&#x22;Create My Calendar Event Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_calendar_event_attachment&#x22;,&#x22;label&#x22;:&#x22;Create User Calendar Event Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_my_event_attachment&#x22;,&#x22;label&#x22;:&#x22;Create My Event Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_event_attachment&#x22;,&#x22;label&#x22;:&#x22;Create User Event Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_my_calendar_groups&#x22;,&#x22;label&#x22;:&#x22;List My Calendar Groups&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_calendar_groups&#x22;,&#x22;label&#x22;:&#x22;List User Calendar Groups&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_my_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Get My Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Get User Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_my_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Delete My Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_user_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Delete User Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_my_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Create My Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Create User Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_my_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Update My Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_user_calendar_group&#x22;,&#x22;label&#x22;:&#x22;Update User Calendar Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_calendar_group_calendars&#x22;,&#x22;label&#x22;:&#x22;List Calendar Group Calendars&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_calendar_in_group&#x22;,&#x22;label&#x22;:&#x22;Create Calendar In Group&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_user_calendar_permissions&#x22;,&#x22;label&#x22;:&#x22;List User Calendar Permissions&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user_calendar_permission&#x22;,&#x22;label&#x22;:&#x22;Get User Calendar Permission&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadBasic&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_user_calendar_permission&#x22;,&#x22;label&#x22;:&#x22;Delete User Calendar Permission&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_update_user_calendar_permission&#x22;,&#x22;label&#x22;:&#x22;Update User Calendar Permission&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user_calendar_permission&#x22;,&#x22;label&#x22;:&#x22;Create User Calendar Permission&#x22;,&#x22;scopes&#x22;:[&#x22;Calendars.ReadWrite&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;User.ReadBasic.All&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_get_user&#x22;,&#x22;label&#x22;:&#x22;Get User&#x22;,&#x22;scopes&#x22;:[&#x22;User.Read&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_create_user&#x22;,&#x22;label&#x22;:&#x22;Create User&#x22;,&#x22;scopes&#x22;:[&#x22;User.ReadWrite.All&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_delete_user&#x22;,&#x22;label&#x22;:&#x22;Delete User&#x22;,&#x22;scopes&#x22;:[&#x22;User.ReadWrite.All&#x22;]},{&#x22;id&#x22;:&#x22;outlookcalendar_change_password&#x22;,&#x22;label&#x22;:&#x22;Change Password&#x22;,&#x22;scopes&#x22;:[&#x22;User-PasswordProfile.ReadWrite.All&#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>Register an Application in Azure</h2>

  <p>To use OAuth 2.0 authentication, you need to register an application in the Azure Portal.</p>

  <Steps>
    <Step title="Sign in and navigate to App Registrations">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to the <a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure Portal</a> and search for <strong>App registrations</strong> in the top search bar, or navigate to <strong>Microsoft Entra ID</strong> > <strong>App registrations</strong>.</p>
      </div>
    </Step>

    <Step title="Create a new registration">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>+ New registration</strong> and provide the following details:</p>

        <ul>
          <li>Enter a name for your application (e.g., StackOne Outlook Calendar)</li>
          <li>Under <strong>Supported account types</strong>, select <strong>Single tenant</strong> if only your organization will use this integration, or <strong>Multitenant</strong> if you need to support users from multiple Azure AD tenants</li>
          <li>Leave redirect URI blank for now</li>
          <li>Click <strong>Register</strong></li>
        </ul>
      </div>
    </Step>

    <Step title="Copy the Client ID">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>On the <strong>Overview</strong> page, copy the <strong>Application (client) ID</strong> and store it securely for use later.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure Redirect URI</h2>

  <p>Add the redirect URI to allow OAuth authentication flow.</p>

  <Steps>
    <Step title="Add platform configuration">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Under <strong>Manage</strong>, select <strong>Authentication (Preview)</strong> > <strong>Add Redirect URI</strong> > <strong>Web</strong>.</p>
      </div>
    </Step>

    <Step title="Configure redirect URI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Enter the redirect URI as `https://api.stackone.com/connect/oauth2/outlookcalendar/callback` and click <strong>Configure</strong>.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure API Permissions</h2>

  <p>Grant your application the necessary permissions to access Outlook Calendar data.</p>

  <Steps>
    <Step title="Add Microsoft Graph permissions">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Under <strong>Manage</strong>, select <strong>API permissions</strong> > <strong>Add a permission</strong> > <strong>Microsoft Graph</strong> > <strong>Delegated permissions</strong>.</p>
      </div>
    </Step>

    <Step title="Select calendar permissions">
      <div data-guide-step data-guide-scopes="Calendars.ReadBasic,Calendars.Read,Calendars.ReadWrite,Calendars.Read.Shared,Calendars.ReadWrite.Shared,User.Read,User.ReadBasic.All,User.ReadWrite.All,User-PasswordProfile.ReadWrite.All" data-guide-display-scopes-list="Calendars.ReadBasic,Calendars.Read,Calendars.ReadWrite,Calendars.Read.Shared,Calendars.ReadWrite.Shared,User.Read,User.ReadBasic.All,User.ReadWrite.All,User-PasswordProfile.ReadWrite.All">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="Calendars.ReadBasic,Calendars.Read,Calendars.ReadWrite,Calendars.Read.Shared,Calendars.ReadWrite.Shared,User.Read,User.ReadBasic.All,User.ReadWrite.All,User-PasswordProfile.ReadWrite.All" 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>Accept My Calendar Event, Accept My Event, Accept User Calendar Event, Accept User Event, Cancel My Calendar Event, Cancel My Event, Cancel User Calendar Event, Cancel User Event, Change Password, Create Calendar, Create Calendar For User, Create Calendar In Group, Create Event In My Calendar, Create Event In My Default Calendar, Create Event In User Calendar, Create Event In User Default Calendar, Create My Calendar Event Attachment, Create My Calendar Group, Create My Event Attachment, Create User, Create User Calendar Event Attachment, Create User Calendar Group, Create User Calendar Permission, Create User Event Attachment, Decline My Calendar Event, Decline My Event, Decline User Calendar Event, Decline User Event, Delete Event From My Calendar, Delete Event From User Calendar, Delete My Calendar, Delete My Calendar Group, Delete User, Delete User Calendar, Delete User Calendar Group, Delete User Calendar Permission, Forward My Calendar Event, Forward My Event, Forward User Calendar Event, Forward User Event, Get Default Calendar, Get Event From My Calendar, Get Event From My Default Calendar, Get Event From User Calendar, Get Event From User Default Calendar, Get My Calendar, Get My Calendar Group, Get My Calendar View, Get User, Get User Calendar, Get User Calendar Group, Get User Calendar Permission, Get User Calendar View, List Calendar Group Calendars, List My Calendar Event Attachments, List My Calendar Events, List My Calendar Groups, List My Default Calendar Events, List My Event Attachments, List My Events, List User Calendar Event Attachments, List User Calendar Events, List User Calendar Groups, List User Calendar Permissions, List User Calendars, List User Default Calendar Events, List User Event Attachments, List User Events, List Users, Permanently Delete User Event, Update Event In My Calendar, Update Event In User Calendar, Update My Calendar, Update My Calendar Group, Update User Calendar, Update User Calendar Group, Update User Calendar Permission</span>
        </div>

        <p>Add the required delegated permissions based on your integration needs, then click <strong>Add permissions</strong> to save.</p>

        <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="Calendars.ReadBasic">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Calendars.ReadBasic" title="Copy scope" data-copy="Calendars.ReadBasic">
                  <span className="connector-guide-scope-copy__label">Calendars.ReadBasic</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="Calendars.Read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Calendars.Read" title="Copy scope" data-copy="Calendars.Read">
                  <span className="connector-guide-scope-copy__label">Calendars.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="Calendars.ReadWrite">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Calendars.ReadWrite" title="Copy scope" data-copy="Calendars.ReadWrite">
                  <span className="connector-guide-scope-copy__label">Calendars.ReadWrite</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="Calendars.Read.Shared">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Calendars.Read.Shared" title="Copy scope" data-copy="Calendars.Read.Shared">
                  <span className="connector-guide-scope-copy__label">Calendars.Read.Shared</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="Calendars.ReadWrite.Shared">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy Calendars.ReadWrite.Shared" title="Copy scope" data-copy="Calendars.ReadWrite.Shared">
                  <span className="connector-guide-scope-copy__label">Calendars.ReadWrite.Shared</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="User.Read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy User.Read" title="Copy scope" data-copy="User.Read">
                  <span className="connector-guide-scope-copy__label">User.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="User.ReadBasic.All">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy User.ReadBasic.All" title="Copy scope" data-copy="User.ReadBasic.All">
                  <span className="connector-guide-scope-copy__label">User.ReadBasic.All</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="User.ReadWrite.All">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy User.ReadWrite.All" title="Copy scope" data-copy="User.ReadWrite.All">
                  <span className="connector-guide-scope-copy__label">User.ReadWrite.All</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="User-PasswordProfile.ReadWrite.All">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy User-PasswordProfile.ReadWrite.All" title="Copy scope" data-copy="User-PasswordProfile.ReadWrite.All">
                  <span className="connector-guide-scope-copy__label">User-PasswordProfile.ReadWrite.All</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Grant admin consent">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Grant admin consent for \[Your Organization]</strong> to authorize these permissions for use across your tenant.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Generate Client Secret</h2>

  <p>Create a client secret that will be used to authenticate your application with Outlook Calendar.</p>

  <Steps>
    <Step title="Navigate to Certificates & Secrets">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>From the left menu under <strong>Manage</strong>, select <strong>Certificates & secrets</strong>.</p>
      </div>
    </Step>

    <Step title="Create a New Client Secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Under the <strong>Client secrets</strong> tab, click <strong>New client secret</strong>.</p>

        <ul>
          <li>Add a <strong>Description</strong> (e.g., StackOne Integration Secret).</li>
          <li>Select an expiration period.</li>
          <li>Click <strong>Add</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Copy the Client Secret Value">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Immediately copy the <strong>Value</strong> of the newly created client secret and store it securely for use later. This value will only be shown once and cannot be retrieved again.</p>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Outlook Calendar</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>Outlook Calendar</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

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

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

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

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Outlook Calendar</strong>.
