Integrations
REST endpoints for integrations. Bearer-auth required.
GET /api/integration-installs/{id}/members
List an install's cloned members with detach + config state.
Path parameters
id(required): Install whose members to list.
Response
{
"members": ["<...>"]
}POST /api/integration-installs/{id}/upgrade
Upgrade an install to the integration's current version: re-apply member definitions into their existing clones.
Path parameters
id(required): Install to upgrade.
Response
{
"updated": ["string"],
"added": ["string"],
"removed": ["string"],
"skipped": ["string"]
}POST /api/integration-members/{id}/detach
Mark a cloned member detached (skip on upgrade) or re-attach it.
Path parameters
id(required): integration_member id.
Request body
{
"detached": "boolean"
}Response
{
"success": "boolean"
}GET /api/integrations
List integrations.
Query parameters
limit(optional): Page size (1–100, default 100).after(optional): Keyset cursor — return the page after this row (next page).before(optional): Keyset cursor — return the page before this row (prev page).ids(optional): Comma-separated list of IDs. Narrows results to these IDs within the caller's accessible scope (does not bypass access checks).filter(optional): Nested filter expression (<Entity>Filter): AND/OR/NOT + per-field comparison operators + relation traversal. JSON-encoded on the query string.orderBy(optional): Multi-key sort (<Entity>OrderBy[]): array of{ field: direction }applied in order. Directions: asc/desc plus the four explicit nulls variants. JSON-encoded on the query string.workspace_id(optional): Filter to integrations authored in this workspace. Useful for 'my drafts'.publisher(optional): Filter to a specific publisher (e.g.aeontel,stripe).visibility(optional): Marketplace exposure.private— only the source workspace + explicit grantees.unlisted— installable by link, not in search.public— marketplace-listed; requires Aeontel review.name(optional):include_deleted(optional):trust_tier(optional): Shorthand: filter wheretrustTierequals this value.created_by(optional): Shorthand: filter wherecreatedByequals this value.retention_tier(optional): Shorthand: filter whereretentionTierequals this value.
Response
{
"data": [
{
"id": "<...>",
"workspaceId": "<...>",
"slug": "<...>",
"name": "<...>",
"description": "<...>",
"iconUrl": "<...>",
"publisher": "<...>",
"trustTier": "<...>",
"currentVersion": "<...>",
"manifest": "<...>",
"variablesSchema": "<...>",
"authConfig": "<...>",
"visibility": "<...>",
"createdBy": "<...>",
"deletedAt": "<...>",
"retentionTier": "<...>",
"createdAt": "<...>",
"updatedAt": "<...>"
}
],
"pageInfo": {
"total": "number",
"hasNextPage": "boolean",
"hasPreviousPage": "boolean",
"startCursor": "string",
"endCursor": "string"
}
}POST /api/integrations
Create a draft integration in the source workspace.
Request body
{
"workspaceId": "string",
"slug": "string",
"name": "string",
"description?": "string",
"iconUrl?": "string",
"publisher?": "string",
"trustTier?": "first_party | vendor_official | verified_partner | verified_publisher",
"manifest?": {},
"variablesSchema?": {},
"authConfig?": {}
}Response
{
"id": "string",
"workspaceId": "string",
"slug": "string",
"name": "string",
"description": "string",
"iconUrl": "string",
"publisher": "string",
"trustTier": "first_party | vendor_official | verified_partner | verified_publisher",
"currentVersion": "string",
"manifest": {},
"variablesSchema": {},
"authConfig": {},
"visibility": "private | unlisted | public",
"createdBy": "string",
"deletedAt": "string",
"retentionTier": "short | medium | long | none",
"createdAt": "string",
"updatedAt": "string"
}GET /api/integrations/{id}
Get an integration by ID.
Path parameters
id(required): Integration to retrieve.
Response
{
"id": "string",
"workspaceId": "string",
"slug": "string",
"name": "string",
"description": "string",
"iconUrl": "string",
"publisher": "string",
"trustTier": "first_party | vendor_official | verified_partner | verified_publisher",
"currentVersion": "string",
"manifest": {},
"variablesSchema": {},
"authConfig": {},
"visibility": "private | unlisted | public",
"createdBy": "string",
"deletedAt": "string",
"retentionTier": "short | medium | long | none",
"createdAt": "string",
"updatedAt": "string"
}PATCH /api/integrations/{id}
Update the draft integration's metadata or manifest.
Path parameters
id(required): The integration's prefixed ID (e.g.int_...).
Request body
{
"name?": "string",
"description?": "string",
"iconUrl?": "string",
"trustTier?": "first_party | vendor_official | verified_partner | verified_publisher",
"manifest?": {},
"variablesSchema?": {},
"authConfig?": {}
}Response
{
"id": "string",
"workspaceId": "string",
"slug": "string",
"name": "string",
"description": "string",
"iconUrl": "string",
"publisher": "string",
"trustTier": "first_party | vendor_official | verified_partner | verified_publisher",
"currentVersion": "string",
"manifest": {},
"variablesSchema": {},
"authConfig": {},
"visibility": "private | unlisted | public",
"createdBy": "string",
"deletedAt": "string",
"retentionTier": "short | medium | long | none",
"createdAt": "string",
"updatedAt": "string"
}DELETE /api/integrations/{id}
Soft-delete the integration. Existing installs keep working — they pin to an immutable integration_version.
Path parameters
id(required):
Response
{
"success": "boolean"
}POST /api/integrations/{id}/install
Install an integration into the destination workspace. Materializes / references workspace entities per the manifest.
Path parameters
id(required): The integration's prefixed ID (e.g.int_...).
Request body
{
"workspaceId": "string",
"integrationVersionId?": "string",
"variables?": {},
"authStateId?": "string",
"memberPolicy?": "auto_all | auto_defaults | manual",
"parentInstallId?": "string",
"selectedMemberSlugs?": ["string"]
}Response
{
"id": "string",
"integrationId": "string",
"integrationVersionId": "string",
"workspaceId": "string",
"variables": {},
"authStateId": "string",
"memberPolicy": "auto_all | auto_defaults | manual",
"parentInstallId": "string",
"solutionId": "string",
"installedBy": "string",
"installedAt": "string",
"lastUpgradedAt": "string",
"deletedAt": "string",
"retentionTier": "short | medium | long | none"
}GET /api/integrations/{id}/members
Preview the members (+ schema closure) an install of this integration materializes.
Path parameters
id(required): The integration's prefixed ID (e.g.int_...).
Response
{
"members": ["<...>"]
}POST /api/integrations/{id}/publish
Publish a new version. Snapshots the current manifest + variables_schema + auth_config + member entity-version pins into an immutable integration_version row.
Path parameters
id(required): The integration's prefixed ID (e.g.int_...).
Request body
{
"version": "string",
"changelog?": "string"
}Response
{
"id": "string",
"integrationId": "string",
"version": "string",
"manifestSnapshot": {},
"variablesSchemaSnapshot": {},
"authConfigSnapshot": {},
"memberEntityVersions": {},
"changelog": "string",
"publishedBy": "string",
"publishedAt": "string"
}DELETE /api/integrations/{id}/purge
Permanently delete a soft-deleted integration.
Path parameters
id(required):
Response
{
"success": "boolean"
}POST /api/integrations/{id}/restore
Restore a soft-deleted integration.
Path parameters
id(required):
Response
{
"id": "string",
"workspaceId": "string",
"slug": "string",
"name": "string",
"description": "string",
"iconUrl": "string",
"publisher": "string",
"trustTier": "first_party | vendor_official | verified_partner | verified_publisher",
"currentVersion": "string",
"manifest": {},
"variablesSchema": {},
"authConfig": {},
"visibility": "private | unlisted | public",
"createdBy": "string",
"deletedAt": "string",
"retentionTier": "short | medium | long | none",
"createdAt": "string",
"updatedAt": "string"
}