Fetch an app registration
const url = 'https://example.com/v1/connection-apps/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';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/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The app registration id (a UUID).
Responses
Section titled “Responses”The registration.
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
{ "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"}appId is not a UUID (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" }}No registration with that id (connection-app-not-found).
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" }}