> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ergoly.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete a provider app

> Cascades. Every account connected through this app is torn down first, because the client secret their tokens are refreshed with is about to stop existing and leaving them would leave connections nothing can renew. `removedConnections` says how many went.

**This disconnects every account connected through this provider app, revoking their tokens. Anyone using them will have to connect again once a new app is configured.**



## OpenAPI

````yaml /openapi.json delete /api/v1/connections/provider-apps/{provider}
openapi: 3.1.0
info:
  title: Ergoly platform API
  version: 1.0.0
  description: >-
    Read and change one organization's own Ergoly environment. Every route is
    scoped to the organization the presented credential resolves to; there is no
    parameter that widens it. The human-readable reference is served from the
    same namespace at `/api/v1/docs`, behind the same credential.


    The namespace's front door is `GET /api/v1`, and it is deliberately absent
    from `paths` below. It answers without a credential — what this API is, how
    an organization admin mints a key, and where the reference lives — so it is
    the way in to this contract rather than a part of it: it has no scope, takes
    no parameters, and there is nothing about it for a generated client to call.
    Every `unauthorized` refusal carries that same URL as `error.docs`.
servers:
  - url: https://control.ergoly.ai
security:
  - orgApiKey: []
tags:
  - name: auth
    description: How to present a key, what it is scoped to, and what a 401 means.
  - name: organization
    description: Which organization your credential resolves to.
  - name: workers
    description: The Slack apps and bot identities in your organization.
  - name: eworks
    description: The runtime instances under a Worker — one core, one per bound Client.
  - name: clients
    description: The customers a Worker can be scoped to, and how to bind one.
  - name: channels
    description: Which Slack rooms a Worker answers in, and who it answers as.
  - name: tasks
    description: >-
      Tasks handed between Workers and people, scheduled jobs, their targets,
      and their run history.
  - name: jobs
    description: How a provisioning run is going — the other half of every 202.
  - name: memory
    description: Read and write the memory tiers an ework mounts.
  - name: connections
    description: The credentials your agents use, and the hosts they are injected on.
  - name: webhooks
    description: Inbound URLs an outside system can POST to, each of which starts a turn.
  - name: activity
    description: Your organization's audit feed.
  - name: usage
    description: Cost, turn outcomes and a per-day pulse over a window you choose.
  - name: errors
    description: The closed set of refusal codes, and what to do about each.
paths:
  /api/v1/connections/provider-apps/{provider}:
    delete:
      tags:
        - connections
      summary: Delete a provider app
      description: >-
        Cascades. Every account connected through this app is torn down first,
        because the client secret their tokens are refreshed with is about to
        stop existing and leaving them would leave connections nothing can
        renew. `removedConnections` says how many went.


        **This disconnects every account connected through this provider app,
        revoking their tokens. Anyone using them will have to connect again once
        a new app is configured.**
      operationId: deleteProviderApp
      parameters:
        - name: provider
          in: path
          required: true
          description: The provider whose app to remove.
          schema:
            type: string
            description: The provider whose app to remove.
        - name: clientId
          in: query
          required: false
          description: >-
            Remove the app configured for this Client rather than the
            organization's.
          schema:
            type: string
            description: >-
              Remove the app configured for this Client rather than the
              organization's.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/DeletedProviderApp'
                required:
                  - data
                additionalProperties: false
              example:
                data:
                  provider: github
                  connectionId: 6d5c4b3a-2918-4706-9f8e-1d2c3b4a5968
                  deleted: true
                  removedConnections: 2
                  removedHosts:
                    - api.github.com
        '400':
          description: '`invalid_request`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: '`unauthorized`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: '`not_found`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: '`conflict`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: '`rate_limited`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - orgApiKey:
            - connections:write
components:
  schemas:
    DeletedProviderApp:
      type: object
      properties:
        provider:
          type: string
          description: The provider whose app is gone.
        connectionId:
          type: string
          description: The row that was removed.
        deleted:
          type: boolean
          description: Always true.
        removedConnections:
          type: integer
          description: >-
            Connected accounts torn down with it — their tokens could no longer
            be refreshed.
        removedHosts:
          type: array
          items:
            type: string
            description: A hostname.
          description: Host mappings the cascade un-wired.
      required:
        - provider
        - connectionId
        - deleted
        - removedConnections
        - removedHosts
      additionalProperties: false
    Error:
      type: object
      description: The one error shape. Every refusal in this namespace has it.
      properties:
        error:
          type: object
          description: The refusal.
          properties:
            code:
              type: string
              enum:
                - unauthorized
                - not_found
                - invalid_request
                - conflict
                - quota_exceeded
                - rate_limited
                - upstream_error
                - gone
              description: The machine-stable half. Branch on this, never on `message`.
            message:
              type: string
              description: Prose for a human reading a terminal.
            docs:
              type: string
              description: >-
                Where to learn how to authenticate. Present on `unauthorized`
                and on nothing else — it is the one refusal a caller can reach
                with no credential at all, so it is the one that has to say
                where the way in is.
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    orgApiKey:
      type: http
      scheme: bearer
      description: >-
        An organization-scoped API key, minted in control under Settings → API
        keys. Every failure to authenticate answers one identical 401: "Provide
        a valid organization-scoped API key or an active session." Each
        operation names the one scope it is filed under,
        `<resource>:<read|write>`, where the resource is the first path segment
        after `/api/v1/`; a key minted today carries all 22 of them. Scopes are
        RECORDED — on the key and on every audit row — and are not yet enforced:
        no request is refused for want of one.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.