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

# Azure DevOps OAuth 2.0 (Microsoft Entra ID) connector profile – StackOne setup guide

> Set up the OAuth 2.0 (Microsoft Entra ID) connector profile for Azure DevOps in StackOne. One-time admin setup required before your users can link Azure DevOps accounts via Hub.

<Warning>You need administrator access to your Microsoft Entra ID tenant (Azure Active Directory) to register applications and grant API permissions.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;azuredevops_list_projects&#x22;,&#x22;label&#x22;:&#x22;List Projects&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_project&#x22;,&#x22;label&#x22;:&#x22;Get Project&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_project&#x22;,&#x22;label&#x22;:&#x22;Update Project&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_project_properties&#x22;,&#x22;label&#x22;:&#x22;Get Project Properties&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_set_project_properties&#x22;,&#x22;label&#x22;:&#x22;Set Project Properties&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_project&#x22;,&#x22;label&#x22;:&#x22;Create Project&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_project&#x22;,&#x22;label&#x22;:&#x22;Delete Project&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_query_work_items&#x22;,&#x22;label&#x22;:&#x22;Query Work Items (WIQL)&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_work_item&#x22;,&#x22;label&#x22;:&#x22;Get Work Item&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_items_by_ids&#x22;,&#x22;label&#x22;:&#x22;List Work Items By IDs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_work_item&#x22;,&#x22;label&#x22;:&#x22;Create Work Item&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_work_item&#x22;,&#x22;label&#x22;:&#x22;Update Work Item&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_work_item&#x22;,&#x22;label&#x22;:&#x22;Delete Work Item&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_full&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_types&#x22;,&#x22;label&#x22;:&#x22;List Work Item Types&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_work_item_type&#x22;,&#x22;label&#x22;:&#x22;Get Work Item Type&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_fields&#x22;,&#x22;label&#x22;:&#x22;List Fields&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_type_fields&#x22;,&#x22;label&#x22;:&#x22;List Work Item Type Fields&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_relation_types&#x22;,&#x22;label&#x22;:&#x22;List Work Item Relation Types&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_revisions&#x22;,&#x22;label&#x22;:&#x22;List Work Item Revisions&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_updates&#x22;,&#x22;label&#x22;:&#x22;List Work Item Updates&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_comments&#x22;,&#x22;label&#x22;:&#x22;List Work Item Comments&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_work_item_comment&#x22;,&#x22;label&#x22;:&#x22;Get Work Item Comment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_add_work_item_comment&#x22;,&#x22;label&#x22;:&#x22;Add Work Item Comment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_work_item_comment&#x22;,&#x22;label&#x22;:&#x22;Update Work Item Comment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_work_item_comment&#x22;,&#x22;label&#x22;:&#x22;Delete Work Item Comment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_upload_attachment&#x22;,&#x22;label&#x22;:&#x22;Upload Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_download_attachment&#x22;,&#x22;label&#x22;:&#x22;Download Attachment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_work_item_tags&#x22;,&#x22;label&#x22;:&#x22;List Work Item Tags&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_work_item_tag&#x22;,&#x22;label&#x22;:&#x22;Get Work Item Tag&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_work_item_tag&#x22;,&#x22;label&#x22;:&#x22;Update Work Item Tag&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_work_item_tag&#x22;,&#x22;label&#x22;:&#x22;Delete Work Item Tag&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_queries&#x22;,&#x22;label&#x22;:&#x22;List Queries&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_query&#x22;,&#x22;label&#x22;:&#x22;Get Query&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_query&#x22;,&#x22;label&#x22;:&#x22;Create Query&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_query&#x22;,&#x22;label&#x22;:&#x22;Update Query&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_query&#x22;,&#x22;label&#x22;:&#x22;Delete Query&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_search_queries&#x22;,&#x22;label&#x22;:&#x22;Search Queries&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_classification_nodes&#x22;,&#x22;label&#x22;:&#x22;Get Classification Nodes&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_classification_node&#x22;,&#x22;label&#x22;:&#x22;Create Classification Node&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_classification_node&#x22;,&#x22;label&#x22;:&#x22;Update Classification Node&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_classification_node&#x22;,&#x22;label&#x22;:&#x22;Delete Classification Node&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_repositories&#x22;,&#x22;label&#x22;:&#x22;List Repositories&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_repository&#x22;,&#x22;label&#x22;:&#x22;Get Repository&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_repository&#x22;,&#x22;label&#x22;:&#x22;Create Repository&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_repository&#x22;,&#x22;label&#x22;:&#x22;Delete Repository&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_requests&#x22;,&#x22;label&#x22;:&#x22;List Pull Requests&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pull_request&#x22;,&#x22;label&#x22;:&#x22;Get Pull Request&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pull_request&#x22;,&#x22;label&#x22;:&#x22;Create Pull Request&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_pull_request&#x22;,&#x22;label&#x22;:&#x22;Update Pull Request&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_threads&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Threads&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pull_request_thread&#x22;,&#x22;label&#x22;:&#x22;Create Pull Request Thread&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_reviewers&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Reviewers&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pull_request_reviewer&#x22;,&#x22;label&#x22;:&#x22;Create Pull Request Reviewer&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_commits&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Commits&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_work_items&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Work Items&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_labels&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Labels&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pull_request_label&#x22;,&#x22;label&#x22;:&#x22;Add Pull Request Label&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_iterations&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Iterations&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pull_request_statuses&#x22;,&#x22;label&#x22;:&#x22;List Pull Request Statuses&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pull_request_status&#x22;,&#x22;label&#x22;:&#x22;Create Pull Request Status&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pull_requests_by_project&#x22;,&#x22;label&#x22;:&#x22;Get Pull Requests By Project&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_pull_request_thread&#x22;,&#x22;label&#x22;:&#x22;Update Pull Request Thread&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_pull_request_reviewer&#x22;,&#x22;label&#x22;:&#x22;Delete Pull Request Reviewer&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_pull_request_reviewer&#x22;,&#x22;label&#x22;:&#x22;Update Pull Request Reviewer&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_item&#x22;,&#x22;label&#x22;:&#x22;Get Item&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_items&#x22;,&#x22;label&#x22;:&#x22;List Items&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_tree&#x22;,&#x22;label&#x22;:&#x22;Get Tree&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pushes&#x22;,&#x22;label&#x22;:&#x22;List Pushes&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_push&#x22;,&#x22;label&#x22;:&#x22;Create Push&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_refs&#x22;,&#x22;label&#x22;:&#x22;Update Refs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_repository&#x22;,&#x22;label&#x22;:&#x22;Update Repository&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_forks&#x22;,&#x22;label&#x22;:&#x22;List Forks&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_merge_bases&#x22;,&#x22;label&#x22;:&#x22;List Merge Bases&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_refs&#x22;,&#x22;label&#x22;:&#x22;List Refs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_branch_stats&#x22;,&#x22;label&#x22;:&#x22;List Branch Statistics&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_commits&#x22;,&#x22;label&#x22;:&#x22;List Commits&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_commit&#x22;,&#x22;label&#x22;:&#x22;Get Commit&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pipelines&#x22;,&#x22;label&#x22;:&#x22;List Pipelines&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pipeline&#x22;,&#x22;label&#x22;:&#x22;Get Pipeline&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_run_pipeline&#x22;,&#x22;label&#x22;:&#x22;Run Pipeline&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_pipeline&#x22;,&#x22;label&#x22;:&#x22;Create Pipeline&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pipeline_runs&#x22;,&#x22;label&#x22;:&#x22;List Pipeline Runs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pipeline_run&#x22;,&#x22;label&#x22;:&#x22;Get Pipeline Run&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_pipeline_logs&#x22;,&#x22;label&#x22;:&#x22;List Pipeline Logs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pipeline_log&#x22;,&#x22;label&#x22;:&#x22;Get Pipeline Log&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_pipeline_artifact&#x22;,&#x22;label&#x22;:&#x22;Get Pipeline Artifact&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_preview_pipeline&#x22;,&#x22;label&#x22;:&#x22;Preview Pipeline&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_builds&#x22;,&#x22;label&#x22;:&#x22;List Builds&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build&#x22;,&#x22;label&#x22;:&#x22;Get Build&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_build_definitions&#x22;,&#x22;label&#x22;:&#x22;List Build Definitions&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_build_definition&#x22;,&#x22;label&#x22;:&#x22;Create Build Definition&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_definition&#x22;,&#x22;label&#x22;:&#x22;Get Build Definition&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_logs&#x22;,&#x22;label&#x22;:&#x22;Get Build Logs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_queue_build&#x22;,&#x22;label&#x22;:&#x22;Queue Build&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_timeline&#x22;,&#x22;label&#x22;:&#x22;Get Build Timeline&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_build_artifacts&#x22;,&#x22;label&#x22;:&#x22;List Build Artifacts&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_add_build_tag&#x22;,&#x22;label&#x22;:&#x22;Add Build Tag&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_log&#x22;,&#x22;label&#x22;:&#x22;Get Build Log&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_build_tags&#x22;,&#x22;label&#x22;:&#x22;List Build Tags&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_changes&#x22;,&#x22;label&#x22;:&#x22;Get Build Changes&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_build_work_items&#x22;,&#x22;label&#x22;:&#x22;Get Build Work Items&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_release_definitions&#x22;,&#x22;label&#x22;:&#x22;List Release Definitions&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_releases&#x22;,&#x22;label&#x22;:&#x22;List Releases&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_deployments&#x22;,&#x22;label&#x22;:&#x22;List Deployments&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_release&#x22;,&#x22;label&#x22;:&#x22;Get Release&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_release&#x22;,&#x22;label&#x22;:&#x22;Create Release&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_release_definition&#x22;,&#x22;label&#x22;:&#x22;Create Release Definition&#x22;,&#x22;scopes&#x22;:[&#x22;vso.release_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_teams&#x22;,&#x22;label&#x22;:&#x22;List Teams&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_team&#x22;,&#x22;label&#x22;:&#x22;Get Team&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_team_members&#x22;,&#x22;label&#x22;:&#x22;List Team Members&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_team&#x22;,&#x22;label&#x22;:&#x22;Create Team&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_team&#x22;,&#x22;label&#x22;:&#x22;Update Team&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_team&#x22;,&#x22;label&#x22;:&#x22;Delete Team&#x22;,&#x22;scopes&#x22;:[&#x22;vso.project_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_iterations&#x22;,&#x22;label&#x22;:&#x22;List Iterations&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_iteration&#x22;,&#x22;label&#x22;:&#x22;Get Iteration&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_iteration_work_items&#x22;,&#x22;label&#x22;:&#x22;List Iteration Work Items&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_backlogs&#x22;,&#x22;label&#x22;:&#x22;List Backlogs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_backlog&#x22;,&#x22;label&#x22;:&#x22;Get Backlog&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_boards&#x22;,&#x22;label&#x22;:&#x22;List Boards&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_user&#x22;,&#x22;label&#x22;:&#x22;Get User&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_entitlements&#x22;,&#x22;label&#x22;:&#x22;List User Entitlements&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_user_entitlement&#x22;,&#x22;label&#x22;:&#x22;Get User Entitlement&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_groups&#x22;,&#x22;label&#x22;:&#x22;List Groups&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_memberships&#x22;,&#x22;label&#x22;:&#x22;List Memberships&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_add_user_entitlement&#x22;,&#x22;label&#x22;:&#x22;Add User Entitlement&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_user_entitlement&#x22;,&#x22;label&#x22;:&#x22;Update User Entitlement&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_user_entitlement&#x22;,&#x22;label&#x22;:&#x22;Delete User Entitlement&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_add_membership&#x22;,&#x22;label&#x22;:&#x22;Add Membership&#x22;,&#x22;scopes&#x22;:[&#x22;vso.graph&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_test_plans&#x22;,&#x22;label&#x22;:&#x22;List Test Plans&#x22;,&#x22;scopes&#x22;:[&#x22;vso.test&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_test_runs&#x22;,&#x22;label&#x22;:&#x22;List Test Runs&#x22;,&#x22;scopes&#x22;:[&#x22;vso.test&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_test_results&#x22;,&#x22;label&#x22;:&#x22;List Test Results&#x22;,&#x22;scopes&#x22;:[&#x22;vso.test&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_search_code&#x22;,&#x22;label&#x22;:&#x22;Search Code&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_search_work_items&#x22;,&#x22;label&#x22;:&#x22;Search Work Items&#x22;,&#x22;scopes&#x22;:[&#x22;vso.work&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_wikis&#x22;,&#x22;label&#x22;:&#x22;List Wikis&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_wiki&#x22;,&#x22;label&#x22;:&#x22;Get Wiki&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_wiki_page&#x22;,&#x22;label&#x22;:&#x22;Get Wiki Page&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_or_update_wiki_page&#x22;,&#x22;label&#x22;:&#x22;Create Or Update Wiki Page&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_wiki_page&#x22;,&#x22;label&#x22;:&#x22;Delete Wiki Page&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_wiki&#x22;,&#x22;label&#x22;:&#x22;Create Wiki&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_wiki&#x22;,&#x22;label&#x22;:&#x22;Update Wiki&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_wiki&#x22;,&#x22;label&#x22;:&#x22;Delete Wiki&#x22;,&#x22;scopes&#x22;:[&#x22;vso.wiki_write&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_feeds&#x22;,&#x22;label&#x22;:&#x22;List Feeds&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_feed&#x22;,&#x22;label&#x22;:&#x22;Get Feed&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_feed&#x22;,&#x22;label&#x22;:&#x22;Create Feed&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_feed&#x22;,&#x22;label&#x22;:&#x22;Update Feed&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_feed_permissions&#x22;,&#x22;label&#x22;:&#x22;Get Feed Permissions&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_set_feed_permissions&#x22;,&#x22;label&#x22;:&#x22;Set Feed Permissions&#x22;,&#x22;scopes&#x22;:[&#x22;vso.packaging&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_service_hooks&#x22;,&#x22;label&#x22;:&#x22;List Service Hooks&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_service_hook&#x22;,&#x22;label&#x22;:&#x22;Create Service Hook&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_service_hook&#x22;,&#x22;label&#x22;:&#x22;Delete Service Hook&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_replace_service_hook&#x22;,&#x22;label&#x22;:&#x22;Replace Service Hook&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_service_hook_notifications&#x22;,&#x22;label&#x22;:&#x22;List Service Hook Notifications&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_subscription&#x22;,&#x22;label&#x22;:&#x22;Get Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;vso.hooks&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_service_endpoints&#x22;,&#x22;label&#x22;:&#x22;List Service Endpoints&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_service_endpoint&#x22;,&#x22;label&#x22;:&#x22;Create Service Endpoint&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_service_endpoint&#x22;,&#x22;label&#x22;:&#x22;Delete Service Endpoint&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_variable_groups&#x22;,&#x22;label&#x22;:&#x22;List Variable Groups&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_variable_group&#x22;,&#x22;label&#x22;:&#x22;Create Variable Group&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_variable_group&#x22;,&#x22;label&#x22;:&#x22;Update Variable Group&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_variable_group&#x22;,&#x22;label&#x22;:&#x22;Delete Variable Group&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_environments&#x22;,&#x22;label&#x22;:&#x22;List Environments&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_environment&#x22;,&#x22;label&#x22;:&#x22;Get Environment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_environment_deployment_records&#x22;,&#x22;label&#x22;:&#x22;List Environment Deployment Records&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_agent_pools&#x22;,&#x22;label&#x22;:&#x22;List Agent Pools&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_agents&#x22;,&#x22;label&#x22;:&#x22;List Agents&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_policy_configurations&#x22;,&#x22;label&#x22;:&#x22;List Policy Configurations&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_policy_configuration&#x22;,&#x22;label&#x22;:&#x22;Create Policy Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_policy_configuration&#x22;,&#x22;label&#x22;:&#x22;Update Policy Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_policy_evaluations&#x22;,&#x22;label&#x22;:&#x22;List Policy Evaluations&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_dashboards&#x22;,&#x22;label&#x22;:&#x22;List Dashboards&#x22;,&#x22;scopes&#x22;:[&#x22;vso.dashboards&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_dashboard_widget&#x22;,&#x22;label&#x22;:&#x22;Create Dashboard Widget&#x22;,&#x22;scopes&#x22;:[&#x22;vso.dashboards&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_agent_pool&#x22;,&#x22;label&#x22;:&#x22;Get Agent Pool&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_create_environment&#x22;,&#x22;label&#x22;:&#x22;Create Environment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_environment&#x22;,&#x22;label&#x22;:&#x22;Delete Environment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_variable_group&#x22;,&#x22;label&#x22;:&#x22;Get Variable Group&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_service_endpoint&#x22;,&#x22;label&#x22;:&#x22;Get Service Endpoint&#x22;,&#x22;scopes&#x22;:[&#x22;vso.profile&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_policy_configuration&#x22;,&#x22;label&#x22;:&#x22;Get Policy Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_approvals&#x22;,&#x22;label&#x22;:&#x22;List Approvals&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_approval&#x22;,&#x22;label&#x22;:&#x22;Update Approval&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_get_dashboard&#x22;,&#x22;label&#x22;:&#x22;Get Dashboard&#x22;,&#x22;scopes&#x22;:[&#x22;vso.dashboards&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_list_widgets&#x22;,&#x22;label&#x22;:&#x22;List Widgets&#x22;,&#x22;scopes&#x22;:[&#x22;vso.dashboards&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_service_endpoint&#x22;,&#x22;label&#x22;:&#x22;Update Service Endpoint&#x22;,&#x22;scopes&#x22;:[&#x22;vso.serviceendpoint_manage&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_update_environment&#x22;,&#x22;label&#x22;:&#x22;Update Environment&#x22;,&#x22;scopes&#x22;:[&#x22;vso.build_execute&#x22;]},{&#x22;id&#x22;:&#x22;azuredevops_delete_policy_configuration&#x22;,&#x22;label&#x22;:&#x22;Delete Policy Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;vso.code_manage&#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 a Microsoft Entra ID application</h2>

  <p>Create an app registration in Microsoft Entra ID to enable OAuth 2.0 authentication with Azure DevOps.</p>

  <Steps>
    <Step title="Navigate to App Registrations">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to the <a href="https://entra.microsoft.com/" target="_blank" rel="noopener noreferrer">Microsoft Entra admin center</a>.</p>

        <ul>
          <li>In the left sidebar, go to <strong>App registrations</strong>.</li>
          <li>Click <strong>New registration</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure the application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fill in the application details.</p>

        <ul>
          <li>Enter a <strong>Name</strong> (e.g., StackOne Azure DevOps Integration).</li>
          <li>Under <strong>Supported account types</strong>, select <strong>Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant)</strong>.</li>
          <li>Leave the <strong>Redirect URI</strong> blank for now — you'll configure it in the next step.</li>
          <li>Click <strong>Register</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure Redirect URI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Add the StackOne OAuth callback URL so Microsoft Entra ID can return the authorization code to StackOne.</p>

        <ul>
          <li>From your app's <strong>Overview</strong> page, select <strong>Authentication (Preview)</strong> from the left sidebar under <strong>Manage</strong>. If you are using the older UI, this may appear as <strong>Authentication</strong>.</li>
          <li>Under <strong>Redirect URI configuration</strong>, click <strong>Add Redirect URI</strong>, then select <strong>Web</strong>.</li>
          <li>Enter the StackOne OAuth callback URL: `https://api.stackone.com/connect/oauth2/azuredevops/callback`</li>
          <li>Click <strong>Configure</strong> to save.</li>
          <li>Note: If you are using the older UI, under <strong>Platform configurations</strong> click <strong>Add a platform</strong>, select <strong>Web</strong>, enter the URI above, and click <strong>Configure</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Add Azure DevOps API permissions">
      <div data-guide-step data-guide-scopes="vso.project,vso.project_write,vso.project_manage,vso.work,vso.work_write,vso.work_full,vso.code,vso.code_write,vso.code_manage,vso.build,vso.build_execute,vso.release,vso.release_execute,vso.wiki,vso.wiki_write,vso.graph,vso.profile,vso.identity,vso.test,vso.test_write,vso.packaging,vso.dashboards" data-guide-display-scopes-list="vso.project,vso.project_write,vso.project_manage,vso.work,vso.work_write,vso.work_full,vso.code,vso.code_write,vso.code_manage,vso.build,vso.build_execute,vso.release,vso.release_execute,vso.wiki,vso.wiki_write,vso.graph,vso.profile,vso.identity,vso.test,vso.test_write,vso.packaging,vso.dashboards">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="vso.project,vso.project_write,vso.project_manage,vso.work,vso.work_write,vso.work_full,vso.code,vso.code_write,vso.code_manage,vso.build,vso.build_execute,vso.release,vso.release_execute,vso.wiki,vso.wiki_write,vso.graph,vso.profile,vso.identity,vso.test,vso.test_write,vso.packaging,vso.dashboards" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Add Build Tag, Add Membership, Add Pull Request Label, Add User Entitlement, Add Work Item Comment, Create Build Definition, Create Classification Node, Create Dashboard Widget, Create Environment, Create Feed, Create Or Update Wiki Page, Create Pipeline, Create Policy Configuration, Create Project, Create Pull Request, Create Pull Request Reviewer, Create Pull Request Status, Create Pull Request Thread, Create Push, Create Query, Create Release, Create Release Definition, Create Repository, Create Service Endpoint, Create Team, Create Variable Group, Create Wiki, Create Work Item, Delete Classification Node, Delete Environment, Delete Policy Configuration, Delete Project, Delete Pull Request Reviewer, Delete Query, Delete Repository, Delete Service Endpoint, Delete Team, Delete User Entitlement, Delete Variable Group, Delete Wiki, Delete Wiki Page, Delete Work Item, Delete Work Item Comment, Delete Work Item Tag, Download Attachment, Get Agent Pool, Get Backlog, Get Build, Get Build Changes, Get Build Definition, Get Build Log, Get Build Logs, Get Build Timeline, Get Build Work Items, Get Classification Nodes, Get Commit, Get Dashboard, Get Environment, Get Feed, Get Feed Permissions, Get Item, Get Iteration, Get Pipeline, Get Pipeline Artifact, Get Pipeline Log, Get Pipeline Run, Get Policy Configuration, Get Project, Get Project Properties, Get Pull Request, Get Pull Requests By Project, Get Query, Get Release, Get Repository, Get Service Endpoint, Get Team, Get Tree, Get User, Get User Entitlement, Get Variable Group, Get Wiki, Get Wiki Page, Get Work Item, Get Work Item Comment, Get Work Item Tag, Get Work Item Type, List Agent Pools, List Agents, List Approvals, List Backlogs, List Boards, List Branch Statistics, List Build Artifacts, List Build Definitions, List Build Tags, List Builds, List Commits, List Dashboards, List Deployments, List Environment Deployment Records, List Environments, List Feeds, List Fields, List Forks, List Groups, List Items, List Iteration Work Items, List Iterations, List Memberships, List Merge Bases, List Pipeline Logs, List Pipeline Runs, List Pipelines, List Policy Configurations, List Policy Evaluations, List Projects, List Pull Request Commits, List Pull Request Iterations, List Pull Request Labels, List Pull Request Reviewers, List Pull Request Statuses, List Pull Request Threads, List Pull Request Work Items, List Pull Requests, List Pushes, List Queries, List Refs, List Release Definitions, List Releases, List Repositories, List Service Endpoints, List Team Members, List Teams, List Test Plans, List Test Results, List Test Runs, List User Entitlements, List Users, List Variable Groups, List Widgets, List Wikis, List Work Item Comments, List Work Item Relation Types, List Work Item Revisions, List Work Item Tags, List Work Item Type Fields, List Work Item Types, List Work Item Updates, List Work Items By IDs, Preview Pipeline, Query Work Items (WIQL), Queue Build, Run Pipeline, Search Code, Search Queries, Search Work Items, Set Feed Permissions, Set Project Properties, Update Approval, Update Classification Node, Update Environment, Update Feed, Update Policy Configuration, Update Project, Update Pull Request, Update Pull Request Reviewer, Update Pull Request Thread, Update Query, Update Refs, Update Repository, Update Team, Update User Entitlement, Update Variable Group, Update Wiki, Update Work Item, Update Work Item Comment, Update Work Item Tag, Upload Attachment</span>
        </div>

        <p>Grant the application access to Azure DevOps APIs.</p>

        <ul>
          <li>In your app, click <strong>API permissions</strong> in the left sidebar.</li>
          <li>Click <strong>Add a permission</strong>.</li>
          <li>Select <strong>Azure DevOps</strong> from the list of APIs.</li>
          <li>Select <strong>Delegated permissions</strong>.</li>
          <li>Select the required scopes for your use case.</li>
          <li>Click <strong>Grant admin consent for \[Your Organization]</strong> to authorize these permissions across the tenant.</li>
        </ul>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container connector-guide-scopes-container--scrollable">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="vso.project">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.project" title="Copy scope" data-copy="vso.project">
                  <span className="connector-guide-scope-copy__label">vso.project</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="vso.project_write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.project_write" title="Copy scope" data-copy="vso.project_write">
                  <span className="connector-guide-scope-copy__label">vso.project\_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="vso.project_manage">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.project_manage" title="Copy scope" data-copy="vso.project_manage">
                  <span className="connector-guide-scope-copy__label">vso.project\_manage</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="vso.work">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.work" title="Copy scope" data-copy="vso.work">
                  <span className="connector-guide-scope-copy__label">vso.work</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="vso.work_write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.work_write" title="Copy scope" data-copy="vso.work_write">
                  <span className="connector-guide-scope-copy__label">vso.work\_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="vso.work_full">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.work_full" title="Copy scope" data-copy="vso.work_full">
                  <span className="connector-guide-scope-copy__label">vso.work\_full</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="vso.code">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.code" title="Copy scope" data-copy="vso.code">
                  <span className="connector-guide-scope-copy__label">vso.code</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="vso.code_write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.code_write" title="Copy scope" data-copy="vso.code_write">
                  <span className="connector-guide-scope-copy__label">vso.code\_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="vso.code_manage">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.code_manage" title="Copy scope" data-copy="vso.code_manage">
                  <span className="connector-guide-scope-copy__label">vso.code\_manage</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="vso.build">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.build" title="Copy scope" data-copy="vso.build">
                  <span className="connector-guide-scope-copy__label">vso.build</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="vso.build_execute">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.build_execute" title="Copy scope" data-copy="vso.build_execute">
                  <span className="connector-guide-scope-copy__label">vso.build\_execute</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="vso.release">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.release" title="Copy scope" data-copy="vso.release">
                  <span className="connector-guide-scope-copy__label">vso.release</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="vso.release_execute">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.release_execute" title="Copy scope" data-copy="vso.release_execute">
                  <span className="connector-guide-scope-copy__label">vso.release\_execute</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="vso.wiki">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.wiki" title="Copy scope" data-copy="vso.wiki">
                  <span className="connector-guide-scope-copy__label">vso.wiki</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="vso.wiki_write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.wiki_write" title="Copy scope" data-copy="vso.wiki_write">
                  <span className="connector-guide-scope-copy__label">vso.wiki\_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="vso.graph">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.graph" title="Copy scope" data-copy="vso.graph">
                  <span className="connector-guide-scope-copy__label">vso.graph</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="vso.profile">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.profile" title="Copy scope" data-copy="vso.profile">
                  <span className="connector-guide-scope-copy__label">vso.profile</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="vso.identity">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.identity" title="Copy scope" data-copy="vso.identity">
                  <span className="connector-guide-scope-copy__label">vso.identity</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="vso.test">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.test" title="Copy scope" data-copy="vso.test">
                  <span className="connector-guide-scope-copy__label">vso.test</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="vso.test_write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.test_write" title="Copy scope" data-copy="vso.test_write">
                  <span className="connector-guide-scope-copy__label">vso.test\_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="vso.packaging">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.packaging" title="Copy scope" data-copy="vso.packaging">
                  <span className="connector-guide-scope-copy__label">vso.packaging</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="vso.dashboards">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy vso.dashboards" title="Copy scope" data-copy="vso.dashboards">
                  <span className="connector-guide-scope-copy__label">vso.dashboards</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Create a client secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Generate a client secret for authentication.</p>

        <ul>
          <li>Click <strong>Certificates & secrets</strong> in the left sidebar.</li>
          <li>Click <strong>New client secret</strong>.</li>
          <li>Enter a description and select an expiration period.</li>
          <li>Click <strong>Add</strong>.</li>
          <li>Copy the <strong>Value</strong> immediately and store securely — it is only shown once.</li>
        </ul>
      </div>
    </Step>

    <Step title="Copy application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Collect the required credentials from the app overview.</p>

        <ul>
          <li>Click <strong>Overview</strong> in the left sidebar.</li>
          <li>Copy the <strong>Application (client) ID</strong>.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Azure DevOps</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>Azure DevOps</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0 (Microsoft Entra ID)</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>Azure DevOps</strong>.
