List the tenant's app registrations
const url = 'https://example.com/v1/connection-apps?includeRemoved=false&limit=25';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/connection-apps?includeRemoved=false&limit=25' \ --header 'Authorization: Bearer <token>'The tenant’s own registrations of its client at an app: its client id, and its secrets by reference. Tenant admins only. Removed registrations are listed only with includeRemoved=true.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”true lists removed registrations too.
1..100. Default 25.
Where the previous page ended: its nextCursor, as it came. A runtime that seals cursors takes one only for the same list, filters and caller, within a day; otherwise 400 bad-input, and the list starts again without it. Absent → first page.
Responses
Section titled “Responses”Page of registrations.
object
A tenant’s registration of its own client at an app. Secrets are references, never values.
object
The app’s entry id.
object
A secret by name in the deployment’s secrets store, resolved at tenant scope. The registration keeps only this reference, never the value.
object
The directory the app signs people in at, for an app whose sign-in names one: Microsoft’s tenant id or domain for a single-tenant app, organizations, common or consumers for a multi-tenant one. Required when the app’s entry has no default, refused for an app without one (connection-app-invalid, details.field oauth2.tenant).
object
The app’s slug.
A secret by name in the deployment’s secrets store, resolved at tenant scope. The registration keeps only this reference, never the value.
object
A secret by name in the deployment’s secrets store, resolved at tenant scope. The registration keeps only this reference, never the value.
object
A secret by name in the deployment’s secrets store, resolved at tenant scope. The registration keeps only this reference, never the value.
object
The projects whose runs may use its connections. Absent: every project.
Give this to the app as its redirect URL: a GitHub App’s Callback URL, with “Request user authorization (OAuth) during installation” ticked.
Give this to the app as the place it reports removals.
Examplegenerated
{ "data": [ { "appId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "app": "example", "label": "example", "oauth2": { "clientId": "example", "clientSecret": { "envName": "example", "name": "example" }, "tenant": "example" }, "githubApp": { "appNumber": 1, "slug": "example", "clientId": "example", "clientSecret": { "envName": "example", "name": "example" }, "privateKey": { "envName": "example", "name": "example" }, "webhookSecret": { "envName": "example", "name": "example" } }, "projects": [ "example" ], "redirectUrl": "https://example.com", "noticesUrl": "https://example.com", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z", "removedAt": "2026-04-15T12:00:00Z" } ], "nextCursor": "example", "hasMore": true}An includeRemoved other than true or false (bad-input).
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}Not a tenant admin (permission-denied).
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}The database was too busy to answer in time (database-busy); Retry-After (whole seconds) says when to try again.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}