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

# List external connectors

> Every external connector registration (ADR-0013), active and revoked: the capability, the HTTPS endpoint Parmana releases it to, the policy that governs it, and the parameters Parmana forwards.



## OpenAPI

````yaml openapi.bundled.yaml GET /external-connectors
openapi: 3.1.0
info:
  title: Parmana API
  version: 1.0.0
  description: >
    Parmana is an Execution Trust Infrastructure that ensures there is no gap
    between what humans decide and what AI systems do. The API enables creation,
    execution, verification, replay, and auditing of Business Transactions
    through cryptographically verifiable Execution Trust Records.


    **Every route requires a caller bearer key**, except the liveness/readiness
    probes and documentation/verification routes that must be reachable with no
    credential: GET /health, GET /ready, GET /openapi.yaml, GET /documentation,
    GET /reference, POST /refusal/verify, POST /execution-intents/verify, POST
    /audit/verify, GET /keys/{keyId}, and GET /.well-known/jwks.json. Send
    `Authorization: Bearer <key>` on every other request. Keys are issued by
    `scripts/generate-api-key.ts` and configured server-side via
    `PARMANA_API_KEYS`; only a hash of each key is ever held by the server,
    verified in constant time. A missing or invalid credential returns 401
    before a Business Transaction is even constructed, independent of Policy
    evaluation and gateway attestation, see
    `packages/api/src/middleware/caller-auth.ts` and
    [Authentication](/api-reference/authentication). Local development may set
    `PARMANA_AUTH_DISABLED=true` to skip this middleware entirely; that flag
    must never be set in a real deployment.
  contact:
    name: Parmana Systems
    email: founder@parmanasystems.com
  license:
    name: Proprietary, source-available for evaluation only, see LICENSE
    url: https://github.com/pavancharak/AgentLabsBuildathon/blob/main/LICENSE
servers:
  - url: https://parmana-api-real.vercel.app
    description: >-
      Production (real, deployed instance -- the docs site playground uses this
      by default)
  - url: http://localhost:3000
    description: Local (packages/api, PORT env var, default 3000)
security:
  - bearerAuth: []
tags:
  - name: Execution
    description: >-
      Executes a Business Transaction through the complete Execution Trust
      pipeline
  - name: Transactions
    description: Business Transaction creation and retrieval
  - name: Verification
    description: Deterministic verification of an Execution Trust Record
  - name: Receipts
    description: Cryptographically signed Execution Trust Receipts
  - name: Trust Records
    description: Execution Trust Record retrieval
  - name: Replay
    description: Deterministic replay of a recorded Execution Trust Record
  - name: Policies
    description: Policy existence/readability check
  - name: Policy Governance
    description: Maker-checker proposal, listing, approval, and rejection of policy changes
  - name: Approvers
    description: Maker-checker for the keys trusted to sign approvals, without a deploy
  - name: External Connectors
    description: >-
      Maker-checker for binding a capability to an operator's HTTPS endpoint and
      its policy, without a deploy (ADR-0013)
  - name: Refusal Records
    description: >-
      Durable, signed evidence that a policy decision rejected a transaction
      (RFC-0021)
  - name: Execution Intents
    description: >-
      A signed statement, stored before an action is released, of exactly what
      is about to be released, plus the operator tools to find and repair a
      released action that has no signed Trust Record (ADR-0012)
  - name: Audit
    description: >-
      Signed caller-authentication audit events, independently
      third-party-verifiable
  - name: System
    description: Operational endpoints
paths:
  /external-connectors:
    get:
      tags:
        - External Connectors
      summary: List external connectors
      description: >
        Every external connector registration (ADR-0013), active and revoked:
        the capability, the HTTPS endpoint Parmana releases it to, the policy
        that governs it, and the parameters Parmana forwards. Revoked
        registrations stay listed, so every release ever made can be explained.
        Requires a human credential (credentialHolderType USER).
      operationId: listExternalConnectors
      responses:
        '200':
          description: The registrations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/external-connectors-list-response.schema'
              examples:
                active:
                  summary: Real captured response
                  value:
                    connectors:
                      - registrationId: 1aa68ad8-ab5c-4beb-9ff3-7a6b1fc1ff37
                        capability: erp:create-invoice
                        endpointUrl: https://erp.example.com/parmana/release
                        policy: erp-invoice
                        allowedParameters:
                          - amount
                          - currency
                          - customerId
                        timeoutMs: 10000
                        status: active
                        registeredAt: '2026-09-30T17:25:46.385Z'
                withRevoked:
                  summary: >-
                    Real captured response, after a revoke: the registration
                    stays listed
                  value:
                    connectors:
                      - registrationId: f3774dad-3182-4206-9aaf-49aefe76b557
                        capability: erp:create-invoice
                        endpointUrl: https://erp.example.com/parmana/release
                        policy: erp-invoice
                        allowedParameters:
                          - amount
                          - currency
                          - customerId
                        timeoutMs: 10000
                        status: revoked
                        registeredAt: '2026-09-30T19:03:21.535Z'
                        revokedByChangeId: d1164799-36e9-4281-878a-93d666befd42
                        revokedAt: '2026-09-30T19:03:21.554Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The caller is not a human credential (NON_HUMAN_CALLER_DENIED).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.schema'
              examples:
                service:
                  summary: Real captured response, a service credential
                  value:
                    error: >-
                      This action requires a caller credential provisioned as a
                      verified human (credentialHolderType: USER).
                    code: NON_HUMAN_CALLER_DENIED
components:
  schemas:
    external-connectors-list-response.schema:
      title: External Connectors List Response
      description: >-
        Response of GET /external-connectors: every registration, active and
        revoked.
      type: object
      additionalProperties: false
      required:
        - connectors
      properties:
        connectors:
          type: array
          items:
            $ref: '#/components/schemas/external-connector.schema'
    error.schema:
      title: Error Response
      description: >-
        Shared error envelope produced by
        packages/api/src/middleware/error-handler.ts and by every route's inline
        validation checks. error is always a plain human-readable string (never
        a nested object). code is present only when the failure was a
        RuntimeError subclass reaching the centralized error handler
        (VerificationFailedError, ReceiptGenerationError, or an uncategorized
        RuntimeError); it is absent from every inline route-level check
        (businessTransactionId format/required checks) and from
        BusinessTransactionValidationError, PolicyValidationError,
        SignalValidationError, PolicyNotFoundError,
        DuplicateBusinessTransactionError, and the generic 500 fallback. POST
        /policies/validate does NOT use this envelope at all. See its own
        response schema. For the triggering condition and recommended caller
        action behind any specific error/code/status combination, see the Error
        catalog at /api-reference/error-catalog.
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: string
          description: Human-readable error message.
        code:
          type: string
          description: >-
            Stable machine-readable error code. Only present for errors that
            reach the handler as a RuntimeError.
          examples:
            - RUNTIME_ERROR
            - VERIFICATION_FAILED
            - RECEIPT_GENERATION_FAILED
            - POLICY_DENIED
            - CAPABILITY_NOT_ALLOWED
            - RATE_LIMITED
            - AUDIT_UNAVAILABLE
            - SIGNING_UNAVAILABLE
            - CONNECTOR_NOT_REGISTERED
            - EXECUTION_RECORD_INCOMPLETE
            - EXECUTION_INTENT_UNAVAILABLE
            - EXECUTION_INTENT_RESULT_NOT_RECORDED
            - EXECUTION_INTENT_NOT_FOUND
            - EXECUTION_INTENTS_NOT_ENABLED
            - EXECUTION_INTENT_NOT_RESOLVABLE
            - EXECUTION_INTENT_RESOLUTION_INVALID
            - NON_HUMAN_CALLER_DENIED
      examples:
        - error: businessTransactionId must be a valid UUID.
        - error: >-
            Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already
            exists.
        - error: >-
            Execution rejected: Vendor payment rejected because the assessed
            payment risk exceeds the maximum permitted threshold.
          code: RUNTIME_ERROR
    external-connector.schema:
      title: External Connector
      description: >-
        A capability bound to an HTTPS endpoint an operator runs, and to the
        policy that governs it, registered through external connector changes
        (ADR-0013). Nothing is deleted: a revoked registration stays listed.
      type: object
      additionalProperties: false
      required:
        - registrationId
        - capability
        - endpointUrl
        - policy
        - allowedParameters
        - timeoutMs
        - status
        - registeredAt
      properties:
        registrationId:
          type: string
          description: The changeId of the approved register change that created it.
        capability:
          type: string
        endpointUrl:
          type: string
        policy:
          type: string
        allowedParameters:
          type: array
          items:
            type: string
        timeoutMs:
          type: integer
        status:
          type: string
          enum:
            - active
            - revoked
          description: At most one active registration per capability.
        registeredAt:
          type: string
          format: date-time
        revokedByChangeId:
          type: string
          description: 'revoked only: the approved change that revoked it.'
        revokedAt:
          type: string
          format: date-time
          description: revoked only.
  responses:
    Unauthorized:
      description: >-
        Missing or invalid caller credential (StaticKeyAuthenticator returned no
        identity). Real captured response,
        packages/api/src/middleware/caller-auth.ts.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error.schema'
          examples:
            authRequired:
              summary: Real captured response, missing or invalid Authorization header
              value:
                error: authentication required
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >
        Caller API key issued by scripts/generate-api-key.ts. Sent as
        Authorization: Bearer <key>. Verified against a stored SHA-256 hash in
        constant time by packages/api/src/auth/StaticKeyAuthenticator.ts.
        Required on every route not listed as exempt in this document's
        top-level description. See /api-reference/authentication.

````