> ## 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.

# List Node Types

> Get all available workflow node types with their fields.

Returns the full catalog of node types that can be used when building workflows.

## Request

<ParamField header="Authorization" type="string" required>
  `Bearer <API_KEY>` from Console > Developers > Workspace API Keys.
</ParamField>

### Path parameters

<ParamField path="client_id" type="string" required>
  Client identifier of the app.
</ParamField>

## Response

Returns an array of node type definitions.

<ResponseField name="type" type="string">
  Node type identifier: `request`, `verification`, `check-min-loa`, `check-claim`, `evaluate`, `if`, `response`.
</ResponseField>

<ResponseField name="label" type="string">
  Human-readable name.
</ResponseField>

<ResponseField name="description" type="string">
  What this node does.
</ResponseField>

<ResponseField name="fields" type="object[]">
  <Expandable title="Field schema properties">
    <ResponseField name="name" type="string">
      Field name used in `config`.
    </ResponseField>

    <ResponseField name="type" type="string">
      Data type: `string`, `number`, `boolean`, `enum`, `object`, `string[]`.
    </ResponseField>

    <ResponseField name="required" type="boolean">
      Whether this field is required.
    </ResponseField>

    <ResponseField name="description" type="string">
      Field description.
    </ResponseField>

    <ResponseField name="enumValues" type="string[]">
      Allowed values (only for `enum` type).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash theme={null}
  curl -H "Authorization: Bearer sk_workspace_test_..." \
    "https://sandbox.api.hopae.com/connect/v1/apps/abc123/workflows/node-types"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  [
    {
      "type": "request",
      "label": "Request",
      "description": "Workflow entry point",
      "fields": []
    },
    {
      "type": "verification",
      "label": "Verification",
      "description": "Identity verification step",
      "fields": [
        { "name": "channel", "type": "enum", "required": true, "description": "Access channel: OIDC flow (frontend) or direct API", "enumValues": ["oidc", "api"] },
        { "name": "claims", "type": "string[]", "required": true, "description": "Requested identity claims (e.g., name, birthdate)" },
        { "name": "mode", "type": "enum", "required": false, "description": "Verification mode", "enumValues": ["pii", "age_verification"] },
        { "name": "branding", "type": "object", "required": false, "description": "Workflow-specific branding override (name, logo)" },
        { "name": "providers", "type": "object", "required": false, "description": "Per-provider overrides (opt-out model)" }
      ]
    },
    {
      "type": "check-claim",
      "label": "Check Claim",
      "description": "Checks if a specific claim exists in the verification output",
      "fields": [
        { "name": "claimChecks", "type": "object[]", "required": true, "description": "Array of { source: \"user\", field: string } claims to check" }
      ]
    },
    {
      "type": "response",
      "label": "Response",
      "description": "Terminal node — finalizes flow result",
      "fields": []
    }
  ]
  ```
</ResponseExample>
