Skip to content

Snowflake Connector

Connect Snowflake with key-pair (JWT) credentials. providerConfigKey is snowflake-jwt.

Base URL

BASE_URL = "https://api.fermi.dev/public/v1"

Authentication

Authorization: Bearer <service-actor-token>

Required Scopes: connectors:read, connectors:write, connectors:sync

Connect

POST /connect/integrations/connect-session

{
  "providerConfigKey": "snowflake-jwt",
  "credentials": {
    "subdomain": "xy12345",
    "accountIdentifier": "xy12345",
    "userName": "SVC_EXAMPLE",
    "privateKey": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----"
  },
  "metadata": {
    "warehouse": "COMPUTE_WH",
    "database": "ANALYTICS",
    "role": "PUBLIC",
    "schema": null
  }
}

Required credentials: subdomain, accountIdentifier, userName, privateKey. Required metadata: warehouse, database. role and schema are optional.

An empty connect-session body returns 400 credentials.subdomain is required.

curl --request POST \
  --url "${BASE_URL}/connect/integrations/connect-session" \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "providerConfigKey": "snowflake-jwt",
    "credentials": {
      "subdomain": "xy12345",
      "accountIdentifier": "xy12345",
      "userName": "SVC_EXAMPLE",
      "privateKey": "<PEM>"
    },
    "metadata": {
      "warehouse": "COMPUTE_WH",
      "database": "ANALYTICS"
    }
  }'

Response: { "success": true, "connectionId": "..." }

Never log or commit the private key.

List connections

GET /connect/integrations/connections?providerConfigKey=snowflake-jwt

Sync

POST /sync/enqueue

{
  "connectionId": "CONNECTION_ID",
  "providerKey": "snowflake-jwt"
}

Summary

Method Path
POST /connect/integrations/connect-session
GET /connect/integrations/connections?providerConfigKey=snowflake-jwt
POST /sync/enqueue

Next Steps