> ## Documentation Index
> Fetch the complete documentation index at: https://ona.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List SCM Integrations

> Lists SCM integrations for a runner.

`Unary` · [`Runner Configurations`](/docs/api-reference/generated/runner-configuration/overview)

Lists SCM integrations for a runner.

Use this method to:

* View all integrations
* Monitor integration status
* Check available SCMs

### Examples

* List integrations:

  Shows all SCM integrations.

  ```yaml theme={null}
  filter:
    runnerIds: ["d2c94c27-3b76-4a42-b88c-95a85e392c68"]
  pagination:
    pageSize: 20
  ```

## Endpoint

```text theme={null}
POST /api/gitpod.v1.RunnerConfigurationService/ListSCMIntegrations
```

Send a Bearer token as described in [Authentication](/docs/api-reference#authenticate-requests). If your organization uses a custom management-plane domain, replace `https://app.ona.com` with that domain.

## Request example

<CodeGroup>
  ```bash cURL theme={null}
  export ONA_HOST=https://app.ona.com
  export ONA_API_KEY=<your-token>

  curl --request POST \
    --url "$ONA_HOST/api/gitpod.v1.RunnerConfigurationService/ListSCMIntegrations" \
    --header "Authorization: Bearer $ONA_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
    "pagination": {
      "pageSize": 1
    }
  }'
  ```

  ```python Python theme={null}
  import gitpod.v1.pagination_pb2 as pagination_pb2
  import gitpod.v1.runner_configuration_pb2 as runner_configuration_pb2
  from ona_sdk import create_client_from_env

  ona = create_client_from_env()
  request = runner_configuration_pb2.ListSCMIntegrationsRequest(
      pagination=pagination_pb2.PaginationRequest(
          page_size=1,
      ),
  )
  response = ona.services.runner_configuration.list_scm_integrations(request)
  print(response)
  ```

  ```typescript TypeScript theme={null}
  import { create } from "@bufbuild/protobuf";
  import { createClientFromEnv } from "@gitpod/sdk";
  import { ListSCMIntegrationsRequestSchema } from "@gitpod/sdk/gitpod/v1/runner_configuration_pb";

  async function main() {
    const ona = createClientFromEnv();
    const request = create(ListSCMIntegrationsRequestSchema, {
      pagination: {
        pageSize: 1,
      },
    });
    const response = await ona.services.runnerConfiguration.listSCMIntegrations(request);
    console.log(response);
  }

  main().catch(console.error);
  ```

  ```go Go theme={null}
  package main

  import (
  	"context"
  	"fmt"
  	"log"

  	"connectrpc.com/connect"
  	"github.com/gitpod-io/gitpod-sdk-go/sdk"
  	gitpodpb "github.com/gitpod-io/gitpod-sdk-go/v1"
  )

  func main() {
  	ona, err := sdk.NewFromEnv()
  	if err != nil {
  		log.Fatal(err)
  	}

  	request := connect.NewRequest(&gitpodpb.ListSCMIntegrationsRequest{
  		Pagination: &gitpodpb.PaginationRequest{
  			PageSize: 1,
  		},
  	})
  	response, err := ona.Services.RunnerConfiguration.ListSCMIntegrations(context.Background(), request)
  	if err != nil {
  		log.Fatal(err)
  	}
  	fmt.Println(response.Msg)
  }
  ```

  ```json Request body theme={null}
  {
    "pagination": {
      "pageSize": 1
    }
  }
  ```
</CodeGroup>

## Request

`gitpod.v1.ListSCMIntegrationsRequest`

| Field        | Type                                                           | Required | Description                                                             |
| ------------ | -------------------------------------------------------------- | -------- | ----------------------------------------------------------------------- |
| `pagination` | [PaginationRequest](#type-gitpod-v1-pagination-request)        | No       | pagination contains the pagination options for listing scm integrations |
| `filter`     | [Filter](#type-gitpod-v1-list-scm-integrations-request-filter) | No       |                                                                         |

## Response

`gitpod.v1.ListSCMIntegrationsResponse`

| Field          | Type                                                       | Required | Description                                                             |
| -------------- | ---------------------------------------------------------- | -------- | ----------------------------------------------------------------------- |
| `pagination`   | [PaginationResponse](#type-gitpod-v1-pagination-response)  | No       | pagination contains the pagination options for listing scm integrations |
| `integrations` | array of [SCMIntegration](#type-gitpod-v1-scm-integration) | No       |                                                                         |

## Related types

<a id="type-gitpod-v1-list-scm-integrations-request-filter" />

<Accordion title="Filter">
  `gitpod.v1.ListSCMIntegrationsRequest.Filter`

  | Field       | Type            | Required | Description                                                                                                                                                                |
  | ----------- | --------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `runnerIds` | array of string | No       | runner\_ids filters the response to only SCM integrations of these Runner IDs Constraints: `repeated.items.string.uuid=true, repeated.max_items=25, repeated.min_items=0`. |
</Accordion>

<a id="type-gitpod-v1-pagination-request" />

<Accordion title="PaginationRequest">
  `gitpod.v1.PaginationRequest`

  | Field      | Type    | Required | Description                                                                                                                              |
  | ---------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
  | `pageSize` | integer | No       | Page size is the maximum number of results to retrieve per page. Defaults to 25. Maximum 100. Constraints: `int32.gte=0, int32.lte=100`. |
  | `token`    | string  | No       | Token for the next set of results that was returned as next\_token of a PaginationResponse                                               |
</Accordion>

<a id="type-gitpod-v1-pagination-response" />

<Accordion title="PaginationResponse">
  `gitpod.v1.PaginationResponse`

  | Field       | Type   | Required | Description                                                                             |
  | ----------- | ------ | -------- | --------------------------------------------------------------------------------------- |
  | `nextToken` | string | No       | Token passed for retrieving the next set of results. Empty if there are no more results |
</Accordion>

<a id="type-gitpod-v1-scm-integration" />

<Accordion title="SCMIntegration">
  `gitpod.v1.SCMIntegration`

  | Field              | Type                                                                       | Required | Description                                                                                                                                                                                                                                                                                           |
  | ------------------ | -------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `id`               | string                                                                     | No       | id is the unique identifier of the SCM integration                                                                                                                                                                                                                                                    |
  | `scmId`            | string                                                                     | No       | scm\_id references the scm\_id in the runner's configuration schema that this integration is for                                                                                                                                                                                                      |
  | `host`             | string                                                                     | No       |                                                                                                                                                                                                                                                                                                       |
  | `oauth`            | [SCMIntegrationOAuthConfig](#type-gitpod-v1-scm-integration-o-auth-config) | No       |                                                                                                                                                                                                                                                                                                       |
  | `pat`              | boolean                                                                    | No       |                                                                                                                                                                                                                                                                                                       |
  | `runnerId`         | string                                                                     | No       |                                                                                                                                                                                                                                                                                                       |
  | `virtualDirectory` | string                                                                     | No       | virtual\_directory is the virtual directory path for Azure DevOps Server (e.g., "/tfs"). This field is only used for Azure DevOps Server SCM integrations and should be empty for other SCM types. Azure DevOps Server APIs work without collection when PAT scope is 'All accessible organizations'. |
</Accordion>

<a id="type-gitpod-v1-scm-integration-o-auth-config" />

<Accordion title="SCMIntegrationOAuthConfig">
  `gitpod.v1.SCMIntegrationOAuthConfig`

  | Field                   | Type          | Required | Description                                                                                                                                               |
  | ----------------------- | ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `clientId`              | string        | No       | client\_id is the OAuth app's client ID in clear text.                                                                                                    |
  | `encryptedClientSecret` | base64 string | No       | encrypted\_client\_secret is the OAuth app's secret encrypted with the runner's public key.                                                               |
  | `issuerUrl`             | string        | No       | issuer\_url is used to override the authentication provider URL, if it doesn't match the SCM host. if not set, this account is owned by the installation. |
</Accordion>
