Skip to main content
POST
/
v1
/
bi
/
admin
/
onboard
/
{userId}
curl -X POST https://<your-instance>/v1/bi/admin/onboard/<userToken> \
  -H "Content-Type: application/json" \
  -H "CTN: <csrf-token>" \
  --cookie "LASID=<session>;ATN=<access>;RTN=<refresh>" \
  -d '{
    "clientId": "DEF",
    "clientName": "Client DEF Corp",
    "dataSource": {
      "account": "abc12345.us-east-1.snowflakecomputing.com",
      "warehouse": "WH_DEF",
      "database": "ALPHA_DB",
      "schema": "DEF_SCHEMA",
      "username": "svc_def",
      "password": "secure_password"
    },
    "coreModelId": "SM2026A00001",
    "securityConfig": {
      "enabled": true
    }
  }'
{
  "success": true,
  "status": "COMPLETED",
  "client": {
    "clientId": "DEF",
    "clientName": "Client DEF Corp",
    "dbId": "D2026A00003",
    "modelId": "SM2026A00004",
    "vdmId": "V2026A00109",
    "facadeId": null,
    "experimentIds": [],
    "coreModelId": "SM2026A00001",
    "status": "ACTIVE",
    "onboardedBy": "admin_user_id",
    "onboardedDate": "2026-03-17T10:00:00.000Z"
  }
}

Request Body

clientId
string
required
Unique client identifier (e.g., "DEF"). Will be uppercased automatically.
clientName
string
required
Display name for the client (e.g., "Client DEF Corp").
description
string
Optional description.
dataSource
object
required
Snowflake connection details.
coreModelId
string
required
The modelId of the core semantic model to inherit from (e.g., "SM2026A00001").
customCalculations
array
Optional array of client-specific calculation definitions to add to the client model. See Calculations for the full object structure.
securityConfig
object
Row-level security configuration for the VDM.
dashboardTemplate
object
Optional dashboard template for auto-generating a starter dashboard via SDK import.

Response

success
boolean
Whether the request completed.
status
string
"COMPLETED" for new clients, "ALREADY_EXISTS" if the client was already onboarded.
client
object
The created (or existing) client registry record.
message
string
Additional message (e.g., for ALREADY_EXISTS status).
curl -X POST https://<your-instance>/v1/bi/admin/onboard/<userToken> \
  -H "Content-Type: application/json" \
  -H "CTN: <csrf-token>" \
  --cookie "LASID=<session>;ATN=<access>;RTN=<refresh>" \
  -d '{
    "clientId": "DEF",
    "clientName": "Client DEF Corp",
    "dataSource": {
      "account": "abc12345.us-east-1.snowflakecomputing.com",
      "warehouse": "WH_DEF",
      "database": "ALPHA_DB",
      "schema": "DEF_SCHEMA",
      "username": "svc_def",
      "password": "secure_password"
    },
    "coreModelId": "SM2026A00001",
    "securityConfig": {
      "enabled": true
    }
  }'
{
  "success": true,
  "status": "COMPLETED",
  "client": {
    "clientId": "DEF",
    "clientName": "Client DEF Corp",
    "dbId": "D2026A00003",
    "modelId": "SM2026A00004",
    "vdmId": "V2026A00109",
    "facadeId": null,
    "experimentIds": [],
    "coreModelId": "SM2026A00001",
    "status": "ACTIVE",
    "onboardedBy": "admin_user_id",
    "onboardedDate": "2026-03-17T10:00:00.000Z"
  }
}