{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"add-an-azure-devops-repo","__idx":0},"children":["Add an Azure DevOps repo"]},{"$$mdtype":"Tag","name":"ConfigOptionRequirements","attributes":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Pro","Enterprise","Enterprise+"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your project files can be stored in a remote repository on Azure DevOps Services."," ","Connect that repository so you can access, edit, and publish those files in Reunite."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To connect an Azure DevOps repository, first create a new Personal Access Token for your Azure organization."," ","Then enter the connection details in Reunite."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can connect a repository in two contexts:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When you create a project"]},": in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create project"]}," modal, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect existing repository"]},"."," ","Reunite builds the new project from the content of your repository."," ","See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/reunite/project/manage-projects#create-a-project-from-an-existing-repository"},"children":["Create a project from an existing repository"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["For an existing project"]},": on the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings > Git hosting"]}," page, as described in the steps on this page."," ","This replaces the current files of the project with the files from the repository."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Personal Access Token is required in both contexts."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-new-access-token-in-azure-devops","__idx":1},"children":["Create a new access token in Azure DevOps"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"permissions","__idx":2},"children":["Permissions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before creating Personal Access Token (PAT) for your user, make sure that they have a correct access right to the desired Azure projects."," ","Redocly recommends putting your user in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Project Administrators"]}," security group for your Azure DevOps project."," ","This security group has all the needed permissions by default."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(For example, only the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Project Administrators"]}," security group has the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["View subscriptions"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Edit subscriptions"]}," permissions enabled ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/azure/devops/service-hooks/overview?view=azure-devops#q-what-permissions-do-i-need-to-set-up-a-subscription"},"children":["by default"]},"."," ","Redocly needs these permissions to be able to setup service hooks (webhooks) for the Azure project.)"]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/content-assets/azure-devops-user-sg-20234f3008447658.png","alt":"Screenshot with Azure user security group for project","framed":true,"withLightbox":true},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, you can put your user in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Project Contributors"]}," security group and add the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["View subscriptions"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Edit subscriptions"]}," permissions manually."," ","See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/azure/devops/organizations/security/manage-tokens-namespaces?view=azure-devops"},"children":["Manage permissions with command line tool"]}," ","or ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/security/?view=azure-devops-rest-7.1"},"children":["Security REST API"]}," in Microsoft Azure DevOps documentation for detailed instructions."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pat-scopes","__idx":3},"children":["PAT scopes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you enter the connection details in Redocly, you need to create and copy a new PAT for your account in Azure DevOps."," ","Redocly uses this access token to establish a connection to your repository."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?#create-a-pat"},"children":["Create a PAT"]}," in Microsoft Azure DevOps documentation for detailed instructions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must select an Organization for this PAT."," ","Do not select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["All accessible organizations"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Also, the PAT you use must have API scopes defined."," ","You can choose the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Full access"]}," option, or select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Custom defined"]}," and enable the following specific scopes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Code: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Read, write, & manage"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Status"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following screenshot from Azure DevOps shows the required custom defined scopes:"]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/content-assets/creating-new-pat-fb04daeaa40e6c25.png","alt":"Screenshot with Azure scopes","framed":true,"withLightbox":true},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reunite requires:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code -> Read"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]},") scope for all read operations in Reunite ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(list of repositories, branches, files, file contents, diffs, list of PRs, etc.)"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code -> Write"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_write"]},") scope for all write operations in Reunite ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(create/update Pull Requests, remove branches, synchronize remote content)"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code -> Manage"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_manage"]},") scope for creating new code repositories from Reunite app."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code -> Status"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_status"]},") scope for setting commit and PR statuses ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(Lint status, Build status, Link checker status, Visual review)"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?#create-a-pat"},"children":["Scopes"]}," in Microsoft Azure DevOps documentation for detailed information about scopes permissions."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["Detailed list of all resources that Reunite uses from Azure API and their required scopes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Resource"},"children":["Resource"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Auth Type"},"children":["Auth Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Scopes"},"children":["Scopes"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Repositories - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get repositories list"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/repositories/get-repository?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Repositories - Get Repository"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get repository metadata"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/stats/list?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Stats - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get branch list"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/refs/update-refs?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Refs - Update Refs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To delete branches"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/items/list?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Items - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get folders list and PR templates list"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/items/get?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Items - Get"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get PR template content"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/commits/get?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Commits - Get"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get commit details"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/merge-bases/list?view=azure-devops-rest-7.1"},"children":["Merge Bases - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To find the merge bases of two commits"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/diffs/get?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Diffs - Get"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get diff between commits"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/statuses/list?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Statuses - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get existing commit statuses"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/statuses/create?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Statuses - Create"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_write"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To set commit statuses (for deployments and scorecards)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-requests/get-pull-requests?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Pull Requests - Get Pull Requests"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get pull requests list"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-requests/get-pull-request?view=azure-devops-rest-7.1"},"children":["Pull Requests - Get Pull Request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get details about a specific pull request"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-requests/create?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Pull Requests - Create"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To create a new pull request"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-requests/update?view=azure-devops-rest-7.1"},"children":["Pull Requests - Update"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To manage existing pull requests (merge, close, reopen, etc.)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-request-statuses/create?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Pull Request Statuses - Create"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_write"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code_status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To set pull request statuses"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/git/policy-configurations/get?view=azure-devops-rest-7.1"},"children":["Policy Configurations - Get"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get configurations for merge strategies"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/hooks/subscriptions/list?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Subscriptions - List"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get a list of existing project subscriptions (webhooks)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/hooks/subscriptions/create?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Subscriptions - Create"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PAT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To create a new project subscription (webhook)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://learn.microsoft.com/en-us/rest/api/azure/devops/profile/profiles/get?view=azure-devops-rest-7.1&tabs=HTTP"},"children":["Profiles - Get"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vso.profile"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To get user display name"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Authorization verification"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Push and pull Git actions are performed using PAT."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Redocly uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://dev.azure.com/{organization}/_apis/connectionData"]}," endpoint to verify if the user is authorized."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"enter-the-connection-details-in-reunite","__idx":4},"children":["Enter the connection details in Reunite"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From your project, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings > Git hosting > Azure DevOps"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Credential name"]}," that identifies this Azure DevOps connection."," ","For example, ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["\"PAT for my ACME organization\""]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Access token"]}," you saved from the ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#create-a-new-access-token-in-azure-devops"},"children":["Create a new access token in Azure DevOps"]}," step."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Organization name"]}," of the Azure DevOps Services Organization and select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Organization > Repository > Branch"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(Optional) Select the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monorepo folder"]},"."," ","Use it if your project files are part of a monorepo and you want to include only a specific folder from the repository."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Monorepo folder"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you select to only include a specific folder from a monorepo:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only files listed in file tree are cloned, no other files are included"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Project builds are started only when branch contains changes to connected folder"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Remote content is allowed to add to connected folder only"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next > Connect"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["This step deletes the files currently in the Redocly project and replaces them with the files in Azure DevOps Services."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resources","__idx":5},"children":["Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/reunite/project/remote-content"},"children":["Add remote files with one-way sync"]}]}," - Integrate content from external Azure DevOps repositories into your Reunite projects for unified documentation management"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/reunite/project/use-editor"},"children":["Use the Editor"]}]}," - Explore Reunite's collaborative editing environment for creating content with Azure DevOps integration and version control"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/reunite/project/manage-projects"},"children":["Manage projects"]}]}," - Access feedback, deployment details, and project settings for Azure DevOps-connected documentation projects"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config"},"children":["Configuration options"]}]}," - Complete redocly.yaml configuration options for Azure DevOps integration, deployment pipelines, and project customization"]}]}]},"frontmatter":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Pro","Enterprise","Enterprise+"]},"tagList":["admonition","configOptionRequirements","html","img","partial","table"],"title":"Add an Azure DevOps repo","lastModified":"2026-10-01T23:00:57.000Z"}