Connections
8 operations.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/connection-presets | List the deployment's OAuth 2.0 preset catalog |
| GET | /api/v1/connection-presets/{presetKey} | Get an OAuth 2.0 connection preset |
| GET | /api/v1/projects/{projectId}/environments/{environmentId}/connections | List Connections for an Environment |
| POST | /api/v1/projects/{projectId}/environments/{environmentId}/connections | Create an Environment Connection |
| GET | /api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId} | Get a single Connection by id |
| PATCH | /api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId} | Update an Environment Connection |
| DELETE | /api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId} | Delete a Connection |
| GET | /api/v1/projects/{projectId}/environments/{environmentId}/connections/health | Read Environment connection health |
List the deployment's OAuth 2.0 preset catalog
GET/api/v1/connection-presets
Returns the static OAuth 2.0 preset catalog shipped in this Perstack
version. The catalog is deployment-level only — it carries no
organization-specific state. Callers join this against
GET /api/v1/organizations/{organizationIdOrSlug}/integrations to derive the registered /
verified status per preset for their organization. Keeping the catalog
pure means client-side caches of integration state stay coherent with a
single invalidation key.
Static-token providers are not modeled as presets — they live as
organization-scoped canonical variables, exposed via
/api/v1/organizations/{organizationIdOrSlug}/variables.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Get an OAuth 2.0 connection preset
GET/api/v1/connection-presets/{presetKey}
Returns one deployment-level OAuth 2.0 preset from the static configuration catalog. A preset is configuration guidance, not a credential or organization Connection; no secret, token, provider locator, or organization-specific registration is returned.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| presetKey | string | required | Identifies the OAuth preset whose authorization flow is being requested. Applies to Get an OAuth 2.0 connection preset. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
List Connections for an Environment
GET/api/v1/projects/{projectId}/environments/{environmentId}/connections
List metadata-only Connections owned by the given Project Environment. The response is cursor-paginated; pass pagination.nextCursor unchanged to read the next page. Credential material and provider-specific OAuth identity remain internal.
Returns 404 if the Project does not exist in the caller's organization.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to List Connections for an Environment. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to List Connections for an Environment. |
query
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | Sets the maximum number of resources returned in this page. Applies to List Connections for an Environment. |
| cursor | string | optional | Opaque cursor returned by the previous page; omit it to read the first page. Applies to List Connections for an Environment. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Create an Environment Connection
POST/api/v1/projects/{projectId}/environments/{environmentId}/connections
Creates a metadata-only Connection in the resolved Project Environment. An optional provider credential ID and version reference an existing credential version and are never returned; an optional Agent binding records the exact Connection version. Unknown or foreign coordinates return 404 and malformed binding input returns 422.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to Create an Environment Connection. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to Create an Environment Connection. |
Request body
required — Request body for: Create an Environment Connection.
application/json
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | |
| kind | "http" | "database" | "object_storage" | "messaging" | "custom" | required | |
| providerCredentialId | one of 2 types | optional | |
| providerCredentialVersion | one of 2 types | optional | |
| settings | object | required | |
| agentId | string | optional | |
| bindingKey | string | optional |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Get a single Connection by id
GET/api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId}
Fetch a Connection's metadata and current immutable version reference. Credential values are never returned; they are used only to perform the configured integration action.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to Get a single Connection by id. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to Get a single Connection by id. |
| connectionId | string | required | Identifies the stored external connection. Applies to Get a single Connection by id. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Update an Environment Connection
PATCH/api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId}
Updates safe Connection metadata or creates a new immutable Connection version referencing an existing provider credential version. Existing Connection versions remain available to already-pinned internal OAuth state; credential material is never returned. Invalid version or binding combinations return 422.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to Update an Environment Connection. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to Update an Environment Connection. |
| connectionId | string | required | Identifies the stored external connection. Applies to Update an Environment Connection. |
Request body
required — Request body for: Update an Environment Connection.
application/json
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | optional | |
| status | "active" | "disabled" | "deleting" | optional | |
| version | object | optional | |
| agentId | string | optional | |
| bindingKey | string | optional |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Delete a Connection
DELETE/api/v1/projects/{projectId}/environments/{environmentId}/connections/{connectionId}
Deletes the Connection from the resolved Project Environment. Existing retained audit or pinned execution records are not rewritten; a Connection retained by an immutable configuration snapshot returns 409, and a foreign or unknown Connection returns 404.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to Delete a Connection. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to Delete a Connection. |
| connectionId | string | required | Identifies the stored external connection. Applies to Delete a Connection. |
Responses
| Status | Description | Body |
|---|---|---|
| 204 | Response for status 204 | none |
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 409 | Request conflicts with current state of the resource, including safe deployment conflict classifications. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|
Read Environment connection health
GET/api/v1/projects/{projectId}/environments/{environmentId}/connections/health
Reads metadata-only health for the active Deployment's declared Environment connection bindings, including missing configured bindings. Requires connections:list; it is not an execution-readiness guarantee and does not refresh tokens or contact providers.
Parameters
path
| Name | Type | Required | Description |
|---|---|---|---|
| projectId | string | required | Identifies the Project that owns the addressed resource. Applies to Read Environment connection health. |
| environmentId | string | required | Identifies the Project environment addressed by the operation. Applies to Read Environment connection health. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Response for status 200 | application/json object
|
| 400 | The request is malformed or cannot be processed. | application/json PublicApiError
|
| 401 | Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired | application/json PublicApiError
|
| 403 | Access denied. The authenticated user does not have permission to perform this action. | application/json PublicApiError
|
| 404 | Resource not found. | application/json PublicApiError
|
| 409 | Request conflicts with current state of the resource, including safe deployment conflict classifications. | application/json PublicApiError
|
| 422 | Request validation failed. Check the request body, query parameters, or path parameters. | application/json PublicApiError
|
| 500 | The server could not complete the request. | application/json PublicApiError
|