Connector Gateway API: schemas

The request and response bodies of the operations in this API.

AdapterConfigResponseDto

PropertyTypeRequiredDescription
adapterKeystringyes
configJsonobjectno
createdAtstringyes
enabledbooleanyes
idstringyes
orgIdstringyes
projectIdstringyes
updatedAtstringyes

AdapterConfigResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of AdapterConfigResponseDtoyes

AdapterConfigResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataAdapterConfigResponseDtoyes

AdapterStatusDto

PropertyTypeRequiredDescription
configuredbooleanyes
effectiveCapabilitiesmap of booleanno
healthone of "NOT_CONFIGURED", "CONFIGURED_UNTESTED", "HEALTHY", "DEGRADED", "MISCONFIGURED", "UNAVAILABLE"yes
lastErrorobject or nullno
operationsobjectno
providerstringno
refreshModestringno
sourceOfTruthstringno
supportedCapabilitiesmap of booleanno

AddCredentialsDto

PropertyTypeRequiredDescription
credentialsobjectyesCredentials payload. The KEYS are the connector onboarding form’s declared field keys, and they must cover every mint field the connector’s declared CredentialKind reads (see CURATED_CREDENTIAL_KIND_REQUIRED_FIELDS in @xemahq/contracts/connector). Fields declared isSecret: true go to credential-broker custody; the rest are stored as non-secret connection configuration and are projected into the minted token’s providerHints.

AppInstallCompleteBodyDto

PropertyTypeRequiredDescription
installRefstringyesThe opaque reference the install callback put on the frontend redirect as connection_install_ref. Single use; only the member who started the installation can complete it, and only before the flow expires.

AppInstallCompleteResponseDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection the verified installation is now bound to.
connectorstringyesThe connector key the installation was for.

AppInstallCompleteResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataAppInstallCompleteResponseDtoyes

AppInstallLaunchResponseDto

PropertyTypeRequiredDescription
installUrlstringyesSingle-use launch link (on the connector gateway's callback host, valid for two minutes) for the browser to navigate to top-level. It binds the installation to THIS browser with a __Host- cookie and redirects to the provider's installation page (the descriptor's oauthEndpoints.authorizationUrl templated against the app credential's NON-SECRET config); only this browser can return through the callback. It never contains a secret.

AppInstallLaunchResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataAppInstallLaunchResponseDtoyes

ChangeConnectionEndpointDto

PropertyTypeRequiredDescription
confirmone of "suspend-credentials"yesExplicit confirmation that every credential on this connection is suspended by the change.
endpointstringyesThe https origin plus base path the connection talks to. No credentials, query or fragment; the host must be public.
expectedRevisionnumberyesThe endpoint revision the caller read. A different current revision refuses the change (409).

ChangeConnectionEndpointResultDto

PropertyTypeRequiredDescription
connectionIdstringyes
endpointstringyes
endpointRevisionnumberyesThe new endpoint revision.
probeConnectionEndpointProbeDtoyesCredential-less reachability probe through the guarded transport. A failed probe does not roll the change back.
suspendedCredentialsnumberyesCredentials suspended by the change.

ChangeConnectionEndpointResultDtoDataEnvelope

PropertyTypeRequiredDescription
dataChangeConnectionEndpointResultDtoyes

ConfigureAdapterDto

PropertyTypeRequiredDescription
adapterKeyone of "DOCUMENTATION", "TRACKER", "SCM", "NPM_REGISTRY", "CONTAINER_REGISTRY", "MAIL_INTAKE", "MAIL_EGRESS", "CONVERSATION"yesAdapter key
configobjectno
enabledbooleanyes

ConnectionDefaultAuthorityErrorCode

CONNECTION_DEFAULT_ORG_ADMIN_REQUIRED: an org-tier default needs an org admin. CONNECTION_DEFAULT_PROJECT_ADMIN_REQUIRED: a project-tier default needs an org admin.

Type: one of "CONNECTION_DEFAULT_ORG_ADMIN_REQUIRED", "CONNECTION_DEFAULT_PROJECT_ADMIN_REQUIRED"

ConnectionDefaultProblemDto

RFC 9457 problem document of a refused default-pointer change. Extension members stay top-level and open.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codeConnectionDefaultAuthorityErrorCode or stringyesStable problem code. A ConnectionDefaultAuthorityErrorCode on an authority refusal; otherwise the space-registry's code, passed through, or CONNECTION_DEFAULT_POINTER_NOT_SET. CONNECTION_DEFAULT_ORG_ADMIN_REQUIRED: an org-tier default needs an org admin. CONNECTION_DEFAULT_PROJECT_ADMIN_REQUIRED: a project-tier default needs an org admin.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
reasonDefaultPointerNotSetReasonnoWhy the pointer was not authored. Absent on a refusal the gateway decides before asking the registry (CONNECTION_DEFAULT_*_ADMIN_REQUIRED).
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ConnectionEndpointBadRequestCode

CONNECTION_ENDPOINT_NOT_APPLICABLE: the connector takes a static base, so its connections carry no endpoint. CONNECTION_ENDPOINT_INVALID: the endpoint failed the shared egress guard. MALFORMED_REQUEST_BODY: the request body is not valid JSON.

Type: one of "CONNECTION_ENDPOINT_NOT_APPLICABLE", "CONNECTION_ENDPOINT_INVALID", "MALFORMED_REQUEST_BODY"

ConnectionEndpointBadRequestProblemDto

RFC 9457 problem document of a 400 from the endpoint change. code is closed.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codeConnectionEndpointBadRequestCodeyesCONNECTION_ENDPOINT_NOT_APPLICABLE: the connector takes a static base, so its connections carry no endpoint. CONNECTION_ENDPOINT_INVALID: the endpoint failed the shared egress guard. MALFORMED_REQUEST_BODY: the request body is not valid JSON.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ConnectionEndpointConflictCode

CONNECTION_ENDPOINT_REVOKED: a revoked connection is terminal and takes no endpoint. CONNECTION_ENDPOINT_REVISION_STALE: the expected revision is not the current one; re-read and retry.

Type: one of "CONNECTION_ENDPOINT_REVOKED", "CONNECTION_ENDPOINT_REVISION_STALE"

ConnectionEndpointConflictProblemDto

RFC 9457 problem document of a 409 from the endpoint change. code is closed.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codeConnectionEndpointConflictCodeyesCONNECTION_ENDPOINT_REVOKED: a revoked connection is terminal and takes no endpoint. CONNECTION_ENDPOINT_REVISION_STALE: the expected revision is not the current one; re-read and retry.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ConnectionEndpointProbeDto

PropertyTypeRequiredDescription
detailstring or nullyes
httpStatusnumber or nullyes
outcomeone of "REACHABLE", "REFUSED", "UNREACHABLE"yes

ConnectionEndpointProbeOutcome

How the reachability probe of the current endpoint ended. null until one has run for the current revision.

Type: one of "REACHABLE", "REFUSED", "UNREACHABLE"

ConnectionEndpointReadiness

NOT_APPLICABLE: the connector takes a static base. MISSING: it takes a per-connection endpoint and none is set, so it cannot run. SET: the endpoint is set.

Type: one of "NOT_APPLICABLE", "MISSING", "SET"

ConnectionResolutionErrorCode

CONNECTION_UNRESOLVED (404): no connection satisfied the resolution ladder. CONNECTION_AMBIGUOUS (409): an owner holds several connections and named no default. CONNECTION_DEFAULT_NOT_ACTIVE (409): the default pointer names a connection that is not ACTIVE; re-point the default or re-activate the connection.

Type: one of "CONNECTION_UNRESOLVED", "CONNECTION_AMBIGUOUS", "CONNECTION_DEFAULT_NOT_ACTIVE"

ConnectionResolutionProblemDto

RFC 9457 problem document of a refused connection resolution. Extension members stay top-level and open.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codeConnectionResolutionErrorCode or stringyesStable problem code. A ConnectionResolutionErrorCode on a connection-resolution refusal, otherwise the gateway code for the status. CONNECTION_UNRESOLVED (404): no connection satisfied the resolution ladder. CONNECTION_AMBIGUOUS (409): an owner holds several connections and named no default. CONNECTION_DEFAULT_NOT_ACTIVE (409): the default pointer names a connection that is not ACTIVE; re-point the default or re-activate the connection.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ConnectorActionProblemDto

RFC 9457 problem document of a refused connector action. Extension members stay top-level and open, as on ProblemDetailsDto.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
claimedAtstring (date-time)noOn IDEMPOTENCY_KEY_IN_FLIGHT and IDEMPOTENCY_OUTCOME_UNKNOWN: when the original request claimed the key.
codeone of "IDEMPOTENCY_KEY_REUSED", "IDEMPOTENCY_KEY_IN_FLIGHT", "IDEMPOTENCY_OUTCOME_UNKNOWN" or ConnectionResolutionErrorCode or stringyesStable problem code. One of ConnectorActionIdempotencyCode on an idempotency-key refusal, one of ConnectionResolutionErrorCode on a connection-resolution refusal; otherwise the gateway code for the status. CONNECTION_UNRESOLVED (404): no connection satisfied the resolution ladder. CONNECTION_AMBIGUOUS (409): an owner holds several connections and named no default. CONNECTION_DEFAULT_NOT_ACTIVE (409): the default pointer names a connection that is not ACTIVE; re-point the default or re-activate the connection.
deadlinestring (date-time)noOn IDEMPOTENCY_KEY_IN_FLIGHT: by this time the request has a recorded outcome or is IDEMPOTENCY_OUTCOME_UNKNOWN.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
refusalOriginConnectorRefusalOriginnoWho refused the action. provider only when the provider itself refused; absent or gateway when the gateway refused without the provider deciding. A gateway refusal always states retry: transient when the same request may succeed later, after-change when it never succeeds as sent.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ConnectorAuthKind

Auth kinds the provider supports for user-driven connect. Closed set — the FE uses this to render the connect surface (PAT input, OAuth popup, App-install link, IAM-role config). None means the provider is Xema-hosted and needs no user credential.

Type: one of "pat", "oauth_user", "app_install", "iam_role", "signature_only", "none"

ConnectorCategory

Type: one of "source-code", "packages", "container-images", "trackers", "documentation", "llm", "other"

ConnectorDefinitionOrigin

Authenticated source scope of the exact connector definition.

Type: one of "distribution", "org_installation"

ConnectorKind

Stable provider identifier — matches the Prisma ConnectorKind enum.

Type: string (26 values)

ConnectorOnboardingKind

Type: one of "CREDENTIALS", "APP_INSTALL"

ConnectorRefusalOrigin

Who refused the action. provider only when the provider itself refused; absent or gateway when the gateway refused without the provider deciding. A gateway refusal always states retry: transient when the same request may succeed later, after-change when it never succeeds as sent.

Type: one of "provider", "gateway"

ConnectorStatus

Lifecycle state of the connection row itself.

Type: one of "PENDING_CONFIG", "ACTIVE", "DISABLED", "REVOKED", "ERROR"

ConnectorStatusResponseDto

PropertyTypeRequiredDescription
discoveredTopologyDiscoveredTopologyDtoyes
documentationAdapterStatusDtoyes
scmScmStatusDtoyes
trackerAdapterStatusDtoyes

ConnectorStatusResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataConnectorStatusResponseDtoyes

CreateOrgConnectionDto

PropertyTypeRequiredDescription
credentialKindstringnoHow the credential blob on this connection should be interpreted by the resolver. OPEN registry-backed key, value-identical to the resolve wire: a curated CredentialKind value (e.g. "oauth_user", "api_key") OR a REGISTERED biome-contributed strategy key (UPPER_SNAKE, e.g. "ACME_HMAC"). OPTIONAL and only ever checked for AGREEMENT — the connector descriptor’s declaration is authoritative and a disagreement is a 400.
isDefaultbooleannoAuthor the connection.<provider> default pointer at this connection's own space, as the caller. Omitted: the FIRST connection of a (scope, provider) gets it, a later one does not. false on the first connection asks for no default pointer. The outcome is stated in defaultPointer of the response; a refusal never fails the create.
namestringnoHuman slug identifying this connection among several for the same (org, provider). Lowercase alphanumeric + dashes, max 63 chars. Omitted on the FIRST connection it defaults to 'default'; REQUIRED (409 otherwise) once a connection for the provider already exists.
projectIdstringnoOwning project. REQUIRED when scopeTier='project'; FORBIDDEN (400) for any other tier. The connection is owned by (org, project, provider).
providerstringyesRegistered connector key this connection authenticates to — a curated ConnectorKind wire value (e.g. "ATLASSIAN", "GMAIL") or a biome-contributed connector key (e.g. "SAP_S4HANA"). Unregistered keys are rejected with 400 UNKNOWN_PROVIDER_KEY.
scopeTierCredentialOwnerSpaceKindnoResolution-ladder tier this connection is owned at. Defaults to 'org'. 'project' REQUIRES projectId; 'user' owns the connection for a single user (defaults to the caller). 'system' is REJECTED here (400) — system-tier rows are operator-created deployment-wide defaults owned by no org, provisioned through the operator custody path, not this API.
userIdstringnoOwning user. Only valid when scopeTier='user' (FORBIDDEN otherwise, 400). Defaults to the authenticated caller's own subject when omitted; a value that differs from the caller requires org-admin authority (403 otherwise).

CreateOrgProviderCredentialDto

PropertyTypeRequiredDescription
fieldsmap of stringyesApp-credential field values (schema-validated). NEVER logged or returned.
providerKeystringyesProvider slug the app credential belongs to.

CreateProjectBindingDto

PropertyTypeRequiredDescription
adapterKeyone of "DOCUMENTATION", "TRACKER", "SCM", "NPM_REGISTRY", "CONTAINER_REGISTRY", "MAIL_INTAKE", "MAIL_EGRESS", "CONVERSATION"yesAdapter key
bindingConfigJsonobjectnoBinding-specific configuration (e.g., Confluence space mapping)
orgConnectionIdstringyesID of the org integration to bind to

CreatedOrgConnectionResponseDto

PropertyTypeRequiredDescription
bindingCountnumbernoNumber of active project bindings that use this integration. Frontend uses this to warn about cascading removal impact.
createdAtstringyes
createdBystringyes
credentialsSuspendedbooleanyesTrue when a credential on this connection was written under another endpoint revision: it is suspended and must be re-entered or re-consented before it is used.
defaultForarray of CredentialOwnerSpaceKindnoResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
defaultPointerDefaultPointerOutcomeDtoyesWhether the connection became the default for its scope: the connection.<provider> pointer authored at its own space as the caller. The connection exists whatever this says.
defaultRefusalDefaultRefusalDtonoPresent when the selection door REFUSED the default for this connection’s provider (a disabled default, or a refused credential): isDefault is then false and this says why, instead of reading the refusal as "not the default".
definitionOriginConnectorDefinitionOriginyesAuthenticated source scope of the exact connector definition.
definitionOwnerOrgIdstring or nullnoOwning org for an org-installation definition; null for distribution definitions.
definitionReleaseIdstringyesExact immutable release identity bound when the connection was created.
endpointProbeOutcomeConnectionEndpointProbeOutcome or nullnoHow the reachability probe of the current endpoint ended. null until one has run for the current revision.
endpointProbedAtstring or nullnoWhen the current endpoint was last probed.
endpointReadinessConnectionEndpointReadinessyesNOT_APPLICABLE: the connector takes a static base. MISSING: it takes a per-connection endpoint and none is set, so it cannot run. SET: the endpoint is set.
endpointRevisionnumberyesBumped on every endpoint change; send it as expectedRevision when changing the endpoint.
endpointUrlstring or nullnoThe endpoint (https origin plus base path) this connection talks to. null for a static-base connector and until an admin sets one.
hasCredentialsbooleannoWhether the requesting user has credentials configured
idstringyes
isDefaultbooleannoWhether the connection.<provider> default pointer names this connection for the caller (user default, then org default; for a project-tier connection, its project). Read from the pointer through the selection door, never a stored flag. Present on list, get, create and set-default responses.
namestringyesHuman slug identifying this connection among several for the same (org, provider); 'default' for the historical single connection.
needsReconsentbooleanyesTrue when the connection is marked needs-reconsent: its credential is distrusted (for example the mailbox or tenant behind it changed) and every use of it is refused until the member consents again. A marked connection can still be active.
orgIdstring or nullnoOwning org. null only for system-tier connections (operator-created deployment-wide defaults).
projectIdstring or nullnoOwning project. Non-null ONLY for scopeTier='project' connections.
providerstringyes
reconsentReasonstring or nullnoWhy the connection is marked needs-reconsent (a machine code); null when it is not marked.
scopeTierCredentialOwnerSpaceKindyesResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
statusstringyes
updatedAtstringyes
userIdstring or nullnoOwning user. Non-null ONLY for scopeTier='user' connections.
verifiedMailboxAddressstring or nullnoThe mailbox address proved from the provider for the account this connection is consented as, lowercased. null when no address was proved (a non-mail connector, or a mail connection consented before the proof existed — re-consent it).

CreatedOrgConnectionResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataCreatedOrgConnectionResponseDtoyes

CredentialElicitationOpenedDto

PropertyTypeRequiredDescription
connectorKeystring or nullno
expiresAtstringyesISO-8601 instant after which the form is dead.
formPathstringyesRELATIVE frontend path that renders the credential form. Carries no host, no token and no secret — it is a link the agent may show.
providerKeystringyes
refstringyesOpaque reference to the elicitation. Safe to hand to an agent and to embed in a link: it authorizes nothing on its own (only the named subject, authenticated with their own JWT, may submit against it).
statusCredentialElicitationStatusyes

CredentialElicitationOpenedDtoDataEnvelope

PropertyTypeRequiredDescription
dataCredentialElicitationOpenedDtoyes

CredentialElicitationStatus

Type: one of "pending", "submitted", "cancelled", "expired"

CredentialElicitationStatusDto

PropertyTypeRequiredDescription
connectionIdstring or nullno
connectorKeystring or nullno
expiresAtstringyes
providerKeystringyes
purposestringyes
refstringyes
statusCredentialElicitationStatusyes
submittedAtstring or nullno

CredentialElicitationStatusDtoDataEnvelope

PropertyTypeRequiredDescription
dataCredentialElicitationStatusDtoyes

CredentialElicitationSubmittedDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection that now holds the credential.
refstringyes
submittedbooleanyesAlways true; a failure is an HTTP error.

CredentialElicitationSubmittedDtoDataEnvelope

PropertyTypeRequiredDescription
dataCredentialElicitationSubmittedDtoyes

CredentialFieldAcceptsDto

PropertyTypeRequiredDescription
formatsarray of CredentialFieldFormatnoPlatform-owned value formats; a value satisfying any one is accepted.
valuesarray of stringnoExact (case-sensitive) values that are accepted.

CredentialFieldFormat

Platform-owned value formats; a value satisfying any one is accepted.

Type: one of "uuid", "dns-name"

CredentialFieldSpecDto

PropertyTypeRequiredDescription
acceptsCredentialFieldAcceptsDtonoThe closed set of values the field admits: exactly one of values, or any value satisfying one of formats. A value outside it is refused when saved and wherever it is used.
defaultValuestringnoThe value an optional, non-secret field takes when left blank. Never present on a required or secret field.
hintstringnoOptional secondary hint under the input.
isSecretbooleanyesDECLARED secrecy. True ⇒ the submitted value goes to credential custody and is never readable back; false ⇒ it is non-secret configuration. Independent of type, which only says how to RENDER the input.
keystringyesDot-path key the value is submitted under.
labelstringyesHuman-readable label for the input.
placeholderstringnoOptional placeholder copy.
requiredbooleanyesWhen true the field must be filled before submit.
transformCredentialFieldTransformyesNormalization transform applied before submission.
typeCredentialFieldTypeyes

CredentialFieldTransform

Normalization transform applied before submission.

Type: one of "NONE", "UPPERCASE", "LOWERCASE", "TRIM"

CredentialFieldType

Type: one of "TEXT", "PASSWORD", "EMAIL", "URL", "JSON_BLOB"

CredentialOwnerSpaceKind

Resolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.

Type: one of "user", "project", "org", "system"

DefaultPointerNotSetReason

Why no pointer was authored. Present when state is not_set.

Type: one of "not_requested", "not_first_connection", "provider_unrepresentable", "forbidden", "refused", "unavailable"

DefaultPointerOutcomeDto

PropertyTypeRequiredDescription
codestringnoThe space-registry's code, passed through when it refused the pointer. Open: branch on reason, which is closed.
reasonDefaultPointerNotSetReasonnoWhy no pointer was authored. Present when state is not_set.
stateDefaultPointerStateyesset: the default pointer names this connection. not_set: it was not authored; see reason.

DefaultPointerState

set: the default pointer names this connection. not_set: it was not authored; see reason.

Type: one of "set", "not_set"

DefaultRefusalDto

PropertyTypeRequiredDescription
codestringnoThe custodian's typed refusal code. Present for materialization_refused.
ownerSpaceKindCredentialOwnerSpaceKindnoResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
reasonDefaultRefusalReasonyespointer_disabled: an owner tier disabled the default and the walk stopped there. materialization_refused: the custodian refused to release the selected credential.

DefaultRefusalReason

pointer_disabled: an owner tier disabled the default and the walk stopped there. materialization_refused: the custodian refused to release the selected credential.

Type: one of "pointer_disabled", "materialization_refused"

DiscoveredTopologyDto

PropertyTypeRequiredDescription
availablebooleanyes

GroupedCatalogDto

PropertyTypeRequiredDescription
providersarray of GroupedProviderDtoyes

GroupedCatalogDtoDataEnvelope

PropertyTypeRequiredDescription
dataGroupedCatalogDtoyes

GroupedConnectorDto

PropertyTypeRequiredDescription
adapterKindstringyesAdapter category the connector plugs into (mail, scm, …).
connectionCredentialKindstringyesHow an individual connection to this connector authenticates. OPEN key: a curated CredentialKind value (e.g. "oauth_user") OR a biome-contributed strategy key (UPPER_SNAKE).
connectorKeystringyesStable connector key (aligns with ConnectorKind).
descriptionstringyes
displayNamestringyes
iconNamestringyesLucide-react icon name.
scopesarray of stringyesIncremental OAuth scopes this connector requests (empty for None providers).

GroupedProviderDto

PropertyTypeRequiredDescription
allowOrgOverridebooleanyesWhether an org may override the platform-default app credential (BYO).
appAuthKindProviderAppAuthKindyesHow the shared app credential authenticates.
appCredentialSchemaarray of CredentialFieldSpecDtoyesSchema of the app-credential fields an admin supplies once (empty for None providers). NEVER any value.
appCredentialStatusProviderAppCredentialStatusyesPer-org app-credential status resolved via the credential broker.
categorystringyesCatalog grouping label (Email, Source control, …).
connectionsarray of ProviderConnectionDtoyesThe connections to this provider that already exist and that the CALLER may be told about — the org's own, plus the caller's own private ones. EMPTY means nothing is connected; it never means "we did not look", because a read failure here fails the request rather than degrading.
connectorsarray of GroupedConnectorDtoyes
descriptionstringyes
displayNamestringyes
iconNamestringyesLucide-react icon name.
providerKeystringyesStable lowercase provider slug (google, smtp, …).
requiresAppCredentialbooleanyesTrue when an app credential must be provisioned before any connector can be connected (appAuthKind ≠ None).

InboundEndpointDeliveryDecision

accepted — verified, attributed to a tenant and enqueued for durable forward. duplicate — the same (endpoint, idempotency key) was already accepted; the dedupe held and nothing was enqueued a second time.

Type: one of "accepted", "duplicate"

InboundEndpointDeliveryResponseDto

PropertyTypeRequiredDescription
decisionInboundEndpointDeliveryDecisionyesaccepted — verified, attributed to a tenant and enqueued for durable forward. duplicate — the same (endpoint, idempotency key) was already accepted; the dedupe held and nothing was enqueued a second time.
idempotencyKeystringyesThe deterministic idempotency key the edge extracted, echoed so a caller can confirm the edge read the field it meant.

InboundEndpointDeliveryResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataInboundEndpointDeliveryResponseDtoyes

InboundEndpointInstanceDto

PropertyTypeRequiredDescription
endpointSlugstringyesThe inbound endpoint slug (/webhooks/inbound/<slug>/<endpointToken>).
externalKeystringyesThe external account id deliveries are matched on: the connection's provider-established installation id, never caller-supplied.
idstringyesBinding id.
orgConnectionIdstringyesThe bound connection.

InboundEndpointInstanceDtoDataEnvelope

PropertyTypeRequiredDescription
dataInboundEndpointInstanceDtoyes

InboundEndpointReadiness

unbound - no instance binds the connection to the endpoint. secret-missing - bound, but the connection has no webhook secret (PUT /org-connections/:id/webhook-secret). secret-unresolvable - the connection names a secret the credential broker does not resolve for this organisation; re-provision it. ready - the secret resolves, so deliveries verify.

Type: one of "unbound", "secret-missing", "secret-unresolvable", "ready"

InboundEndpointReadinessDto

PropertyTypeRequiredDescription
endpointSlugstringyesThe inbound endpoint slug.
orgConnectionIdstringyesThe connection asked about.
stateInboundEndpointReadinessyesunbound - no instance binds the connection to the endpoint. secret-missing - bound, but the connection has no webhook secret (PUT /org-connections/:id/webhook-secret). secret-unresolvable - the connection names a secret the credential broker does not resolve for this organisation; re-provision it. ready - the secret resolves, so deliveries verify.

InboundEndpointReadinessDtoDataEnvelope

PropertyTypeRequiredDescription
dataInboundEndpointReadinessDtoyes

InvokeActionRequestDto

PropertyTypeRequiredDescription
connectionIdstringnoExplicit connection row id to execute against.
idempotencyKeystringnoOne stable key per logical action, reused on every retry. The same key with the same request returns the recorded outcome instead of acting again; the same key with a different request is refused (422 IDEMPOTENCY_KEY_REUSED) and a duplicate while the first is still running is refused (409 IDEMPOTENCY_KEY_IN_FLIGHT). A request whose provider call gave no definitive answer (it outlived the gateway hard deadline, its holder crashed, or it ended in a timeout, reset, abort, 5xx or unreadable response after the request may have left) answers 409 IDEMPOTENCY_OUTCOME_UNKNOWN with claimedAt, and the action is never re-dispatched for that key. If the original call later gets a definitive provider answer, replays return that outcome from then on. The provider may or may not have acted. A failure is recorded only for a definitive refusal (the provider refused with a 4xx, or the gateway refused before dispatch); it replays permanently for that key, including an auth failure after the user reconnects: a new attempt needs a new key. Omit it and the action has no replay protection.
paramsobjectyesAction input. Closed contract: every key must be declared in the action input schema; an undeclared key (including any credential field) is refused with 400 before the credential is resolved. Credentials are resolved from the connection, never sent in params.
resourceRefobjectnoResource scope (type:id) for credential kinds that mint against a specific resource. AppInstall refuses it: an app-installation token is minted only for the resolved connection's own installation, so omit this field for it.

InvokeActionResponseDto

PropertyTypeRequiredDescription
externalIdstringnoProvider-native id of the entity created/updated by the action.
outputsobjectnoFree-form structured outputs the workflow can read via steps.<id>.outputs.<field>. Shape is governed by the adapter's declared action schema.

InvokeActionResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataInvokeActionResponseDtoyes

ListResourcesNotFoundCode

CONNECTION_UNRESOLVED: no connection satisfies the resolution ladder for this provider; connect it first. RESOURCE_TYPE_UNKNOWN: the provider does not expose the requested resource type.

Type: one of "CONNECTION_UNRESOLVED", "RESOURCE_TYPE_UNKNOWN"

ListResourcesNotFoundProblemDto

RFC 9457 problem document of a 404 from resource listing. code is closed.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codeListResourcesNotFoundCodeyesCONNECTION_UNRESOLVED: no connection satisfies the resolution ladder for this provider; connect it first. RESOURCE_TYPE_UNKNOWN: the provider does not expose the requested resource type.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ListResourcesResponseDto

PropertyTypeRequiredDescription
itemsarray of ResourceListItemDtoyes
nextCursorstring or nullnoOpaque continuation token. Pass back as the ?cursor= query param on the next request. null when no more pages.

ListResourcesResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataListResourcesResponseDtoyes

OAuthAuthorizeResponseDto

PropertyTypeRequiredDescription
authorizeUrlstringyesSingle-use launch link (on the connector gateway's callback host, valid for two minutes) for the browser to navigate to top-level with window.location. It binds the consent to THIS browser with a __Host- cookie and redirects to the provider; only this browser can return through the callback. Never open it in another browser or share it.

OAuthAuthorizeResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataOAuthAuthorizeResponseDtoyes

OAuthConnectScopeTier

Type: one of "org", "user"

OAuthConsentCompleteBodyDto

PropertyTypeRequiredDescription
parkRefstringyesThe opaque reference the OAuth callback put on the frontend redirect as connection_oauth_ref. Single use; only the member who started the consent (and, at user tier, the owning user) can complete it, and only before the flow expires.

OAuthConsentCompleteResponseDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection the parked consent is now bound to.
connectorstringyesThe connector key the consent was for.
warningOAuthConsentCompleteWarningnoPresent when the connection is bound but the provider mail watch could not be established; the mailbox receives no pushes until it is re-armed.

OAuthConsentCompleteResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataOAuthConsentCompleteResponseDtoyes

OAuthConsentCompleteWarning

Present when the connection is bound but the provider mail watch could not be established; the mailbox receives no pushes until it is re-armed.

Type: one of "watch_not_established"

OpenCredentialElicitationDto

PropertyTypeRequiredDescription
connectorKeystringnoRegistered CONNECTOR key the resulting connection is for (e.g. "GMAIL"). Must belong to providerKey. Omit it only when the provider has exactly one registered connector — an ambiguous provider is rejected at submit time.
providerKeystringyesRegistered PROVIDER key whose credential schema the form renders (e.g. "atlassian", "google"). Unknown keys are rejected with 404.
purposestringyesHuman-readable reason shown to the user on the form ("Canopy needs Jira access to file the tickets it just planned").
subjectUserIdstringnoThe user expected to fill the form. Defaults to the caller's own subject; targeting ANOTHER user requires org-admin authority (403 otherwise).

OrgConnectionResponseDto

PropertyTypeRequiredDescription
bindingCountnumbernoNumber of active project bindings that use this integration. Frontend uses this to warn about cascading removal impact.
createdAtstringyes
createdBystringyes
credentialsSuspendedbooleanyesTrue when a credential on this connection was written under another endpoint revision: it is suspended and must be re-entered or re-consented before it is used.
defaultForarray of CredentialOwnerSpaceKindnoResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
defaultRefusalDefaultRefusalDtonoPresent when the selection door REFUSED the default for this connection’s provider (a disabled default, or a refused credential): isDefault is then false and this says why, instead of reading the refusal as "not the default".
definitionOriginConnectorDefinitionOriginyesAuthenticated source scope of the exact connector definition.
definitionOwnerOrgIdstring or nullnoOwning org for an org-installation definition; null for distribution definitions.
definitionReleaseIdstringyesExact immutable release identity bound when the connection was created.
endpointProbeOutcomeConnectionEndpointProbeOutcome or nullnoHow the reachability probe of the current endpoint ended. null until one has run for the current revision.
endpointProbedAtstring or nullnoWhen the current endpoint was last probed.
endpointReadinessConnectionEndpointReadinessyesNOT_APPLICABLE: the connector takes a static base. MISSING: it takes a per-connection endpoint and none is set, so it cannot run. SET: the endpoint is set.
endpointRevisionnumberyesBumped on every endpoint change; send it as expectedRevision when changing the endpoint.
endpointUrlstring or nullnoThe endpoint (https origin plus base path) this connection talks to. null for a static-base connector and until an admin sets one.
hasCredentialsbooleannoWhether the requesting user has credentials configured
idstringyes
isDefaultbooleannoWhether the connection.<provider> default pointer names this connection for the caller (user default, then org default; for a project-tier connection, its project). Read from the pointer through the selection door, never a stored flag. Present on list, get, create and set-default responses.
namestringyesHuman slug identifying this connection among several for the same (org, provider); 'default' for the historical single connection.
needsReconsentbooleanyesTrue when the connection is marked needs-reconsent: its credential is distrusted (for example the mailbox or tenant behind it changed) and every use of it is refused until the member consents again. A marked connection can still be active.
orgIdstring or nullnoOwning org. null only for system-tier connections (operator-created deployment-wide defaults).
projectIdstring or nullnoOwning project. Non-null ONLY for scopeTier='project' connections.
providerstringyes
reconsentReasonstring or nullnoWhy the connection is marked needs-reconsent (a machine code); null when it is not marked.
scopeTierCredentialOwnerSpaceKindyesResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
statusstringyes
updatedAtstringyes
userIdstring or nullnoOwning user. Non-null ONLY for scopeTier='user' connections.
verifiedMailboxAddressstring or nullnoThe mailbox address proved from the provider for the account this connection is consented as, lowercased. null when no address was proved (a non-mail connector, or a mail connection consented before the proof existed — re-consent it).

OrgConnectionResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of OrgConnectionResponseDtoyes

OrgConnectionResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataOrgConnectionResponseDtoyes

OrgProviderCredentialDto

PropertyTypeRequiredDescription
appAuthKindProviderAppAuthKindyes
appCredentialSchemaarray of CredentialFieldSpecDtoyesThe app-credential form schema the FE renders. NEVER any value.
bindingIdstring or nullnoBroker binding id of the org provision (present when configuredByOrg).
configuredByOrgbooleanyesTrue when THIS org has its own app-credential provision (overriding the platform default) for this provider.
createdAtstring or nullnoWhen the org provision was created (present when configuredByOrg).
displayNamestringyes
providerKeystringyesStable lowercase provider slug.
updatedAtstring or nullnoWhen the org provision was last updated (present when configuredByOrg).

OrgProviderCredentialDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of OrgProviderCredentialDtoyes

OrgProviderCredentialDtoDataEnvelope

PropertyTypeRequiredDescription
dataOrgProviderCredentialDtoyes

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

ProjectBindingAdapterKey

Closed set of project-binding adapter kinds this provider supports at the project level. Empty array = the provider has no project-level bindings today (e.g. messaging-only providers).

Type: one of "DOCUMENTATION", "TRACKER", "SCM"

ProjectBindingResponseDto

PropertyTypeRequiredDescription
adapterKeystringyes
bindingConfigJsonobjectno
createdAtstringyes
enabledbooleanyes
idstringyes
orgConnectionIdstringyes
projectIdstringyes
updatedAtstringyes

ProjectBindingResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ProjectBindingResponseDtoyes

ProjectBindingResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataProjectBindingResponseDtoyes

ProviderAppAuthKind

How the shared app credential authenticates.

Type: one of "oauth2", "app_install", "none"

ProviderAppCredentialStatus

Per-org app-credential status resolved via the credential broker.

Type: one of "not_required", "configured_platform", "configured_org", "unset", "unknown"

ProviderConnectionDto

PropertyTypeRequiredDescription
connectorKeystringyesThe registered CONNECTOR key this connection authenticates to — one provider group's connectors may each hold their own connections.
createdAtstringyes
defaultForarray of CredentialOwnerSpaceKindnoResolution-ladder tier (narrowest wins: user > project > org > system). user/project-tier connections are owned by a single user/project; org-tier connections are tenant-owned; system-tier connections are operator-created deployment-wide defaults consulted last.
defaultRefusalDefaultRefusalDtonoPresent when the selection door REFUSED the default for this connection’s provider: isDefault is then false and this says why, instead of reading the refusal as "not the default". Absent means no refusal.
hasCredentialsbooleanyesWhether the CALLING person holds a credential on this connection. FALSE on a connection that exists and that this person has never authenticated — the state in which an invocation of theirs would fail to resolve a credential. Computed for the acting user, never for the org.
idstringyesConnection id — the handle for PATCH /org-connections/:id/default.
isDefaultbooleanyesWhether this connection is the default for its (scope, provider) — i.e. the one an invocation that names no connectionName resolves. Exactly one connection per tier carries it.
namestringyesHuman slug distinguishing this connection from the org's others for the same provider ('default' for the first one). This is the value a capability invocation names as connectionName.
scopeTierCredentialOwnerSpaceKindyesTier this connection is owned at. Only 'org' and 'user' appear here: a 'project' connection resolves only inside its project, and a 'platform' one is an operator-created deployment-wide default owned by no org.
statusConnectorStatusyesLifecycle state of the connection row itself.

ProviderOnboardingManifestDto

PropertyTypeRequiredDescription
descriptionstringyesOne-sentence description shown beneath the provider name.
displayNamestringyesHuman-readable provider name shown in the wizard header.
fieldsarray of CredentialFieldSpecDtonoField-by-field credential form spec. Required when kind = CREDENTIALS.
hintstringnoHint shown above the credential form (e.g. scope guidance).
iconNamestringyesLucide-react icon name (e.g. Globe, BookOpen). The frontend maps the name to a concrete icon component.
jsonPlaceholderstringnoPretty-printed JSON placeholder used when no fields are declared — the wizard falls back to a JSON textarea using this template.
kindConnectorOnboardingKindyes
launchHintstringnoHint shown next to / under the launch button.
launchLabelstringnoCopy for the launch button (e.g. Install GitHub App).
providerstringyesProvider slug (same as ConnectorAdapterModule.provider).
supportedProjectBindingAdapterKindsarray of ProjectBindingAdapterKeyyesClosed set of project-binding adapter kinds this provider supports at the project level. Empty array = the provider has no project-level bindings today (e.g. messaging-only providers).

ProviderSummaryDto

PropertyTypeRequiredDescription
actionSlugsarray of stringyesOutbound action slugs the provider implements (e.g. post-pr-comment).
adapterKindstringyesAdapterKind slug the provider plugs into. Built-in kinds: scm, tracker, documentation. Biome-contributed kinds (Phase 7) use their registered slug.
credentialKindstringyesHow an individual connection authenticates. OPEN key: a curated CredentialKind value OR a biome-contributed strategy key (UPPER_SNAKE).
displayNamestringyesHuman-readable provider name.
oauthAuthorizePathstringnoPresent only for OAuth2 connectors (e.g. Gmail). Relative path on connector-gateway-api that starts the OAuth consent driver. The frontend opens ${connectorGatewayBaseUrl}${oauthAuthorizePath} with &orgId=&frontendBaseUrl=&returnPath= appended; the endpoint 302-redirects the browser to the provider consent screen. Absent for CREDENTIALS connectors (SMTP/IMAP), which connect via the onboarding.fields form.
onboardingProviderOnboardingManifestDtoyesInstall-wizard onboarding manifest: display copy, icon, and either credential field schema or app-install launch copy.
providerstringyesUnique provider slug (e.g. github, linear, stripe).
resourceTypesarray of stringyesResource type slugs the provider can list (e.g. repo, branch, project).

ProviderSummaryDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ProviderSummaryDtoyes

ProvidersCatalogCategoryDto

PropertyTypeRequiredDescription
idConnectorCategoryyes
labelstringyesHuman-readable category label.
providersarray of ProvidersCatalogProviderDtoyes

ProvidersCatalogDto

PropertyTypeRequiredDescription
categoriesarray of ProvidersCatalogCategoryDtoyes

ProvidersCatalogDtoDataEnvelope

PropertyTypeRequiredDescription
dataProvidersCatalogDtoyes

ProvidersCatalogProviderDto

PropertyTypeRequiredDescription
alwaysAvailablebooleanyesTrue when the provider needs no org connection and no user credential (Xema-hosted system-shareable providers); FE renders an "Always available" badge and skips the Connect flow.
authKindsarray of ConnectorAuthKindyesAuth kinds the provider supports for user-driven connect. Closed set — the FE uses this to render the connect surface (PAT input, OAuth popup, App-install link, IAM-role config). None means the provider is Xema-hosted and needs no user credential.
categoryConnectorCategoryyesCategory this provider rolls up to (mirrored from the outer category so FE list components can re-group without re-walking the manifest).
idConnectorKindyesStable provider identifier — matches the Prisma ConnectorKind enum.
labelstringyesHuman-readable provider name.
tierRegistryVisibilityTieryesVisibility tier of the provider — drives "Always available" badging in the hub and ACL behaviour at the registry layer for Xema-hosted providers.
tierBadgestringnoOptional short label rendered alongside the tier badge — e.g. "Xema-hosted" for system-shareable providers. Omitted when the tier alone is self-explanatory.

RegistryVisibilityTier

Visibility tier of the provider — drives "Always available" badging in the hub and ACL behaviour at the registry layer for Xema-hosted providers.

Type: one of "system", "system-shareable", "org", "external"

RemoveConnectionCredentialOverride

Type: one of "break-dependent-project-bindings"

RemoveCredentialsResultDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection the credential was removed from.
credentialsRemovednumberyesHow many credential rows were removed.
notestringyesWhat just happened and what is still true, in the caller’s own words — including, when bindings were broken, what has to be done about them.
projectBindingsBrokennumberyesHow many project bindings resolved through the removed credential and will now fail at the custody seam. Non-zero ONLY on an overridden removal — otherwise the removal was refused instead.
userIdstringyesThe member whose credential was removed, as resolved and fenced by the server — echoed back so the answer names its own subject.

RemoveCredentialsResultDtoDataEnvelope

PropertyTypeRequiredDescription
dataRemoveCredentialsResultDtoyes

ResourceListItemDto

PropertyTypeRequiredDescription
descriptionstringnoOptional secondary description (repo description, channel topic).
idstringyesProvider-opaque identifier — what the install wizard stores in the selector.
labelstringyesHuman-readable label rendered by the install wizard.
metadatamap of stringnoProvider-opaque key/value pairs the install wizard MAY display (branch count, member count, last-activity timestamp). Never used for routing or authorization.

RotateOrgProviderCredentialDto

PropertyTypeRequiredDescription
fieldsmap of stringyesNew app-credential field values (schema-validated). NEVER logged or returned.

ScmRepositoryStatusDto

PropertyTypeRequiredDescription
effectiveCapabilitiesmap of booleanno
healthone of "NOT_CONFIGURED", "CONFIGURED_UNTESTED", "HEALTHY", "DEGRADED", "MISCONFIGURED", "UNAVAILABLE"yes
idstringyes
isPrimarybooleanyes
providerstringyes
rolestringyes
slugstringyes
supportedCapabilitiesmap of booleanno
targetBranchstringyes

ScmStatusDto

PropertyTypeRequiredDescription
configuredbooleanyes
effectiveCapabilitiesmap of booleanno
healthone of "NOT_CONFIGURED", "CONFIGURED_UNTESTED", "HEALTHY", "DEGRADED", "MISCONFIGURED", "UNAVAILABLE"yes
lastErrorobject or nullno
mergeStrategystringno
operationsobjectno
primaryRepositoryIdstringno
providerstringno
refreshModestringno
repositoriesarray of ScmRepositoryStatusDtono
sourceOfTruthstringno
supportedCapabilitiesmap of booleanno

SetWebhookSecretDto

PropertyTypeRequiredDescription
secretstringyesThe provider's webhook signing secret. Written straight to the credential broker and never persisted by this service; it is not readable back through any route.

SubmitCredentialElicitationDto

PropertyTypeRequiredDescription
fieldsmap of stringyesThe filled credential form, keyed by the provider credential schema field keys. Posted by the BROWSER with the user's own JWT — this body never passes through an agent, a transcript or the event ledger.

TestConnectionResponseDto

PropertyTypeRequiredDescription
effectiveCapabilitiesmap of booleanno
errorDetailstringno
healthone of "NOT_CONFIGURED", "CONFIGURED_UNTESTED", "HEALTHY", "DEGRADED", "MISCONFIGURED", "UNAVAILABLE"yes
resultone of "SUCCESS", "AUTH_INVALID", "PERMISSION_INSUFFICIENT", "CONFIG_INCOMPLETE", "PROVIDER_UNREACHABLE", "RATE_LIMITED"yes

TestConnectionResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataTestConnectionResponseDtoyes

UpdateProjectBindingDto

PropertyTypeRequiredDescription
bindingConfigJsonobjectnoUpdated binding configuration
enabledbooleannoEnable or disable the binding

WebhookEndpointDto

PropertyTypeRequiredDescription
bindingIdstringyesId of the credential-broker binding that holds the sealed secret. A reference, not secret material; unchanged by rotation. A workload that signs deliveries resolves the same binding.
endpointPathstring or nullyesPath to register as the webhook URL at the provider, appended to the deployment's public ingress origin. Returned ONCE, when the endpoint token is issued; null when a token was already issued (only its digest is stored, so it cannot be shown again; rotate it to obtain a new one).

WebhookEndpointDtoDataEnvelope

PropertyTypeRequiredDescription
dataWebhookEndpointDtoyes

WebhookEndpointTokenRotationDto

PropertyTypeRequiredDescription
endpointPathstringyesThe registry-door path for this connection with the new token, appended to the deployment's public ingress origin.
endpointTokenstringyesThe new endpoint token, returned exactly once. Append it to /webhooks/inbound/:slug/ for each inbound endpoint of the connection. The previous token is refused from the moment this response is sent.

WebhookEndpointTokenRotationDtoDataEnvelope

PropertyTypeRequiredDescription
dataWebhookEndpointTokenRotationDtoyes