FruxonDocs
IntegrationsConfigs

Lists all configurations for the integration.

Returns every config record scoped to the integration, including unpublished drafts that have never had a revision created. Each entry exposes its current draft values plus the `PublishedRevisionId` pointer; use `/integrations/{integration}/configs/{config}/revisions` to walk the revision history.

GET
/v1/tenants/{tenant}/integrations/{integration}/configs
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

integration*string

The integration ID.

tenant*string

The tenant identifier

Query Parameters

includeDeleted?boolean

When true, also returns soft-deleted configs (each carrying a non-null DeletedAt) so the operator can surface a "Deleted" section and restore them. Defaults to false — soft-deleted configs are hidden.

Defaultfalse

Response Body

curl -X GET "https://api.fruxon.com/v1/tenants/string/integrations/string/configs"
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "integrationId": "string",
    "displayName": "string",
    "parameters": {},
    "hasAuth": false,
    "hasAuthMap": false,
    "authMethodId": "string",
    "auth": {
      "level": "APPLICATION",
      "integrationAuthMetadataId": "string",
      "parameters": {},
      "grantedScopes": [
        "string"
      ],
      "credentialHealth": "HEALTHY",
      "credentialHealthDetail": "string"
    },
    "authMapEntries": [
      {
        "parameters": {},
        "authConfig": null
      }
    ],
    "sandboxMode": "NONE",
    "sandboxVariant": {
      "parameters": {},
      "auth": {
        "integrationAuthMetadataId": "string",
        "level": "UNSPECIFIED",
        "parameters": null
      },
      "authMap": []
    },
    "egressCountry": "string",
    "publishedRevisionId": "00000000-0000-0000-0000-000000000000",
    "hasWebhookKey": false,
    "webhookOwnership": "PER_BINDING",
    "botIdentity": {
      "handle": "string",
      "displayName": "string",
      "providerId": "string",
      "fetchedAt": 0
    },
    "webhookConsumers": {
      "triggers": [],
      "participantChannels": [],
      "participantChannelTotalCount": 0
    },
    "credentialHealth": "HEALTHY",
    "credentialHealthDetail": "string",
    "credentialHealthChangedAt": 0,
    "createdBy": "string",
    "createdAt": 0,
    "modifiedAt": 0,
    "deletedAt": 0
  }
]
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}

Lists every integration config in the tenant.

Returns the configurations for every integration in the tenant in a single call, across all integrations. Use the per-integration list under `/integrations/{integration}/configs` when only one integration's configs are needed; this endpoint is for callers — such as the Agent Network channel picker — that need the whole set at once. Pass `has_channels=true` (or `has_triggers=true`) to restrict to configs whose integration declares the matching capability — the channel picker uses this so a Postgres or OpenAI config doesn't appear in a Slack/Telegram dropdown.

Registers the freshly-minted webhook URL with the external provider on the operator's behalf

Closes the gap where the operator otherwise has to paste the URL into BotFather / Slack app settings / Twilio console manually. Providers with a programmatic registration API (Telegram `setWebhook` today, more later) get a single-click install; providers without one (Slack Events API, Teams Bot Framework) return 400 and the FE renders manual instructions instead. The FE supplies the URL it just received from `:generateWebhookUrl` / `/webhook:rotate` via the request body — Fruxon doesn't store the plaintext key, so the round-trip through the operator's browser is the only way the BE can pass the full URL to the provider. Returns 200 with `applied=false` + `errorMessage` when the provider rejects (auth failure, malformed URL, rate limit) — the FE surfaces the message inline and offers the manual-install fallback.