---
title: "Complete Azure DevOps SCM App install"
method: PUT
path: "/api/scm/ado_app_install"
tags: ["ScmAppsService"]
---

# Complete Azure DevOps SCM App install

`PUT /api/scm/ado_app_install`

After the user has uploaded the certificate, verify the Service Principal can authenticate to ADO and create webhook subscriptions required for the integration. Then mark the install as ready.

## Request body

- ProtosScmV1CompleteAdoScmAppInstallRequest
  - `deploymentId` string
  - `scmAppId` string

## Response `200`

OK

- ProtosScmV1CompleteAdoScmAppInstallResponse
  - `app` ProtosScmV1ScmApp
    - `id` string
    - `slug` string
    - `appId` string
    - `scmType` 'SCM_TYPE_GITHUB' | 'SCM_TYPE_GITHUB_ENTERPRISE' | 'SCM_TYPE_GITLAB' | 'SCM_TYPE_GITLAB_SELFMANAGED' | 'SCM_TYPE_BITBUCKET' | 'SCM_TYPE_BITBUCKET_DATACENTER' | 'SCM_TYPE_AZURE_DEVOPS' | 'SCM_TYPE_UNKNOWN' | 'SCM_TYPE_HARNESS', enum — | value | description | |-------|---------------| | SCM_TYPE_GITHUB | GitHub Cloud | | SCM_TYPE_GITHUB_ENTERPRISE | GitHub Enterprise | | SCM_TYPE_GITLAB | GitLab Cloud | | SCM_TYPE_GITLAB_SELFMANAGED | GitLab Self-Managed | | SCM_TYPE_BITBUCKET | Bitbucket Cloud | | SCM_TYPE_BITBUCKET_DATACENTER | Bitbucket Data Center | | SCM_TYPE_AZURE_DEVOPS | Azure DevOps | | SCM_TYPE_UNKNOWN | | | SCM_TYPE_HARNESS | Harness |
    - `baseUrl` string
    - `requestId` string
    - `scmName` string
    - `codeAccess` boolean
    - `tenantId` string — Entra tenant ID, unset for other SCM types

---

[API](https://skmtc.net/semgrep/apis/semgrep-web-app.md) · [All operations](https://skmtc.net/semgrep/apis/semgrep-web-app/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/semgrep/semgrep-web-app/versions/6483eeecd582/schema)
