Skip to content
Console
Menu

Getting Started

Authentication

KV Store

Adopt a connection provider

Adopts an existing GitHub App whose non-exportable custody already exists.

Adopts an existing GitHub App whose non-exportable custody already exists. The server observes public SPKI metadata and verifies signed GET /app before atomically registering the SIGN Key and provider. No private key is accepted.

  • Path POST https://api.sylphx.com/v1/orgs/acme/connection_providers:adopt
  • Scope connections:admin
  • Effect write — a successful call changes state.
  • Collection connection_providers

#Request

FieldTypeWhat it is
parentstringOrganization owning both the provider and the public SIGN Key target. Required.
connection_provider_idstringExplicit immutable provider identity. Required.
github_appGitHubAppConfigExisting App identity and unused full environment-scoped SIGN Key target. An optional webhook_secret must already name this organization's Secret. Required.
reasonstringAccountable operator's reason for adopting the existing App. Required.

#GitHubAppConfig

FieldTypeWhat it is
app_idint64The App's numeric id. Required.
slugstringThe App's slug, for example sylphx. Required.
client_idstringThe App's OAuth client id.
signing_keystringThe imported, non-exportable SIGN Key (RS256) that signs App assertions; only the credential service may use it. Required.
webhook_secretstringThe Secret holding the webhook secret that verifies deliveries.

#Response

FieldTypeWhat it is
connection_providerConnectionProviderProvider ready for ordinary CreateConnection installation verification.

#ConnectionProvider

FieldTypeWhat it is
namestringorgs/{org}/connection_providers/{connection_provider}.
uidstringcnp_<cell><ulid>. Output only.
metaResourceMetaResource metadata.
specConnectionProviderSpecDesired state. Required.
statusConnectionProviderStatusObserved state. Output only.

#ResourceMeta

FieldTypeWhat it is
generationint64Increases by one on every change to spec. Output only.
etagstringStrong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as If-Match or etag to make Update and Delete conditional; a mismatch fails with ABORTED / 409 ETAG_MISMATCH. Output only.
create_timetimestampWhen the Resource was created. Output only.
update_timetimestampWhen the Resource last changed. Output only.
delete_timetimestampSet while the Resource is being deleted. Output only.
labelsmap<string, string>Caller-writable, indexed labels (AIP-122 label rules).
annotationsmap<string, string>Caller-writable, unindexed annotations.
display_namestringCaller-writable human-readable name.
creatorstringThe principal that created the Resource. Output only.

#ConnectionProviderSpec

FieldTypeWhat it is
github_appGitHubAppConfigA GitHub App. One of the config group.

#ConnectionProviderStatus

FieldTypeWhat it is
observed_generationint64The generation this status was computed from. Output only.
conditionsCondition[]Ready, Reconciling, Stalled. Output only.
kindstringThe provider's plugin kind, for example github_app. Output only.
connection_countint32How many active Connections the provider has. Output only.

#GitHubAppConfig

FieldTypeWhat it is
app_idint64The App's numeric id. Required.
slugstringThe App's slug, for example sylphx. Required.
client_idstringThe App's OAuth client id.
signing_keystringThe imported, non-exportable SIGN Key (RS256) that signs App assertions; only the credential service may use it. Required.
webhook_secretstringThe Secret holding the webhook secret that verifies deliveries.

#Condition

FieldTypeWhat it is
typestringThe condition type, for example Ready.
statusConditionStatusWhether the condition holds. One of true, false, unknown.
observed_generationint64The generation this observation was made against.
reasonstringA machine-readable UpperCamelCase reason.
messagestringA customer-safe human-readable message.
severitySeverityHow severe a FALSE condition is. One of info, warning, error.
transition_timetimestampWhen status last changed.

#Errors

Every error arrives in the body Errors describes.

#Examples

curl -X POST "https://api.sylphx.com/v1/orgs/acme/connection_providers:adopt" \
  -H "Authorization: Bearer $SYLPHX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connection_provider_id":"…","github_app":{"app_id":1,"signing_key":"…","slug":"…"},"reason":"…"}'