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

# Get Connections

> List the connections activated for your app, with everything you need to start a verification against each one.

Returns the [connections](/v2/guides/concepts/connections) that are activated for your app. Each item carries the connection's catalog `connectionId` and its `connectionInstanceId` (either one starts a verification with [Create Verification](/v2/api-reference/verifications/create-verification)), the connection's `userInputSchema`, the claims it can return, and whether it is enabled in the resolved workflow.

<Info>
  Only activated connections appear here. A connection that is `requested`, `processing`, or `rejected` in the Console is not listed. Activation happens in the Console under **Configuration → Connections**. See [Connection Activation](/v2/guides/concepts/connections/activation).
</Info>

## Headers

<ParamField header="Authorization" type="string" required>
  `Basic <base64(appId:appSecret)>`. See [Authentication](/v2/api-reference/authentication).
</ParamField>

## Query Parameters

<ParamField query="workflowId" type="string">
  The workflow whose enabled set and claim curation apply. Defaults to the app's default workflow. An unknown id returns `404 RESOURCE_NOT_FOUND`. There is no silent fallback.
</ParamField>

<ParamField query="status" type="string" default="all">
  `all` lists every activated connection with its `enabled` flag. `enabled` returns only the connections that can be started in the resolved workflow, exactly what `POST /verifications` will accept.
</ParamField>

## Response

Returns an array of connection objects.

<ResponseField name="connectionInstanceId" type="string" required>
  Your app's activated instance of this connection. Format `conn_…` (connections activated before August 2026 carry `cred_…`). Accepted by Create Verification as an alternative to `connectionId`. Also reported as `provenance._metadata.connection_instance_id` in userinfo.
</ResponseField>

<ResponseField name="connectionId" type="string" required>
  The catalog connection id (for example `smart-id`, `cz-bankid-identify`, `google-wallet-us-mdl`). This is the id you pass to Create Verification and to `ui_connection_id` on OIDC. Human-readable but opaque. Read `provider.id` and `credential.id` instead of parsing it.
</ResponseField>

<ResponseField name="provider" type="object" required>
  Catalog provider with required `id`, `name`, and `logoUrl`. Use `provider.id` as the `providerId` start key.
</ResponseField>

<ResponseField name="credential" type="object" required>
  Catalog credential with required `id`, `name`, `logoUrl`, `countries` (lowercase ISO country codes), `loa` (numeric assurance levels), `types` (presentation types `1`, `2`, `3`), and `verificationModel` (`disclosure` or `match`).

  Optional fields: `displayName`, `displayGroupId`, and `matchGranularity` (`per_field` or `aggregate`). Use `credential.displayName ?? credential.name` for the label, and `credential.displayGroupId ?? connectionId` for the display group. Use `credential.id` with `providerId` to select a specific credential.
</ResponseField>

<ResponseField name="flowTypes" type="string[]" required>
  Supported delivery mechanics, primary first: `redirect`, `qr`, `push`, `dc`, or `query`. See [Flow Types](/v2/guides/reference/flow-types).
</ResponseField>

<ResponseField name="userInputSchema" type="object">
  The `userInput` fields this connection needs at creation time. Absent when the connection needs no input. See [User Input](/v2/api-reference/verifications/user-input).

  <Expandable title="fields">
    <ResponseField name="fields" type="object">
      A map of field name → rule. Each rule may carry `type` (`text`, `password`, `image`, `select`, or `date`, omitted for plain text), `required`, `pattern`, `enum` (static options for `select`), `optionsUrl` (dynamic options), and `hint`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="availableClaims" type="string[]" required>
  Every claim this connection can return for your app. Includes `source_id` when the connection can derive a stable per-person identifier.
</ResponseField>

<ResponseField name="sourceIdBackedBy" type="object">
  Present only when `availableClaims` contains `source_id`. `primary` lists the claims Hopae requests to derive `source_id`. `fallback` lists the claims tried only when a primary value is absent. Both empty means `source_id` is derived from protocol data and nothing extra is requested.
</ResponseField>

<ResponseField name="connectionClaims" type="string[]" required>
  The claims the resolved workflow requests specifically for this connection (the workflow's **Claims** tab in the Console). Empty when the workflow does not curate this connection.
</ResponseField>

<ResponseField name="enabled" type="boolean" required>
  Whether the resolved workflow enables this connection. A connection listed with `enabled: false` is activated for the app but cannot be started in that workflow. `POST /verifications` answers `403 PROVIDER_DISABLED_IN_WORKFLOW`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.hopae.com/connect/v2/connections?status=enabled' \
    --user '{appId}:{appSecret}'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  [
    {
      "connectionInstanceId": "conn_01J8XK2P4M9QR3TV",
      "connectionId": "smart-id",
      "provider": {
        "id": "smart-id",
        "name": "Smart-ID",
        "logoUrl": "https://static.hopae.com/images/wallets/smartid.png"
      },
      "credential": {
        "id": "smart-id",
        "name": "Smart-ID",
        "logoUrl": "https://static.hopae.com/images/wallets/smartid.png",
        "countries": [
          "ee",
          "lt",
          "lv",
          "be"
        ],
        "loa": [
          4
        ],
        "types": [
          1
        ],
        "verificationModel": "disclosure",
        "displayName": "Smart-ID"
      },
      "flowTypes": [
        "push"
      ],
      "userInputSchema": {
        "fields": {
          "registrationId": {
            "required": true,
            "hint": "Smart-ID registrationId must be at least 8 characters"
          }
        }
      },
      "availableClaims": [
        "name",
        "given_name",
        "family_name",
        "birthdate",
        "nationality",
        "personal_code",
        "source_id"
      ],
      "sourceIdBackedBy": {
        "primary": [
          "personal_code"
        ],
        "fallback": []
      },
      "connectionClaims": [
        "given_name",
        "family_name",
        "birthdate"
      ],
      "enabled": true
    }
  ]
  ```
</ResponseExample>

<Note>
  `provider`, `credential`, `flowTypes`, and `userInputSchema` are read live from the catalog. `availableClaims` belongs to your activated instance. `connectionClaims` and `enabled` come from the resolved workflow. Refresh cached lists when configuration or catalog data changes.
</Note>


## OpenAPI

````yaml GET /connections
openapi: 3.1.0
info:
  title: Hopae Connect Verification API
  version: 2.0.0
servers:
  - url: https://api.hopae.com/connect/v2
    description: Hopae Connect
security:
  - basicAuth: []
tags:
  - name: Verifications
paths:
  /connections:
    get:
      tags:
        - Verifications
      summary: Get Connections
      operationId: getConnections
      parameters:
        - name: workflowId
          in: query
          required: false
          description: >-
            Workflow to resolve against. Defaults to the app's default workflow.
            An unknown id returns 404 RESOURCE_NOT_FOUND.
          schema:
            type: string
        - name: status
          in: query
          required: false
          description: '`enabled` returns only connections the workflow can start.'
          schema:
            type: string
            enum:
              - all
              - enabled
            default: all
      responses:
        '200':
          description: Connections.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Connection'
        '401':
          description: '`AUTH_INVALID_CREDENTIALS`: wrong App ID or App Secret.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: AUTH_INVALID_CREDENTIALS
                  message: Invalid credentials
                  details: {}
                request_id: req_01J8XQ3V9K2M7N4P
        '404':
          description: '`RESOURCE_NOT_FOUND`: unknown `workflowId`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: RESOURCE_NOT_FOUND
                  message: Workflow not found
                  details: {}
                request_id: req_01J8XQ3V9K2M7N4P
components:
  schemas:
    Connection:
      type: object
      properties:
        connectionInstanceId:
          type: string
          description: >-
            Your app's activated instance: `conn_…`, or `cred_…` for older
            instances.
        connectionId:
          type: string
          description: >-
            Opaque catalog connection id. Use provider.id and credential.id
            instead of parsing it.
        provider:
          type: object
          required:
            - id
            - name
            - logoUrl
          properties:
            id:
              type: string
            name:
              type: string
            logoUrl:
              type: string
        credential:
          type: object
          required:
            - id
            - name
            - logoUrl
            - countries
            - loa
            - types
            - verificationModel
          properties:
            id:
              type: string
            name:
              type: string
            logoUrl:
              type: string
            countries:
              type: array
              items:
                type: string
            loa:
              type: array
              items:
                type: number
            types:
              type: array
              items:
                type: number
            verificationModel:
              type: string
              enum:
                - disclosure
                - match
            displayName:
              type: string
            displayGroupId:
              type: string
            matchGranularity:
              type: string
              enum:
                - per_field
                - aggregate
        flowTypes:
          type: array
          items:
            type: string
            enum:
              - redirect
              - qr
              - push
              - dc
              - query
          description: Supported flows, primary first.
        userInputSchema:
          type: object
          description: Fields to send as userInput. Absent when no input is needed.
        availableClaims:
          type: array
          items:
            type: string
        sourceIdBackedBy:
          type: object
          properties:
            primary:
              type: array
              items:
                type: string
            fallback:
              type: array
              items:
                type: string
        connectionClaims:
          type: array
          items:
            type: string
        enabled:
          type: boolean
          description: Whether the resolved workflow enables this connection.
      required:
        - connectionInstanceId
        - connectionId
        - provider
        - credential
        - flowTypes
        - availableClaims
        - connectionClaims
        - enabled
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details:
              type: object
        request_id:
          type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        `Basic base64(appId:appSecret)`. See
        [Authentication](/v2/api-reference/authentication).

````

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