Skip to main content
POST
/
api
/
public
/
organizations
/
{orgId}
/
data-sources
Create a data source
curl --request POST \
  --url https://charts.basedash.com/api/public/organizations/{orgId}/data-sources \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "type": "direct",
  "dialect": "POSTGRES",
  "displayName": "<string>",
  "snowflakeAccountId": "<string>",
  "snowflakeWarehouse": "<string>",
  "snowflakeRole": "<string>",
  "snowflakePrivateKey": "<string>",
  "snowflakePrivateKeyPassphrase": "<string>",
  "databaseName": null,
  "username": "<string>",
  "host": "<string>",
  "port": 32767,
  "password": "<string>",
  "bigQueryJsonKey": "<string>",
  "bigQueryProjectId": "<string>",
  "spannerInstanceId": "<string>",
  "athenaWorkgroup": "<string>",
  "athenaOutputLocation": "<string>",
  "athenaCatalog": "<string>",
  "sslEnabled": true,
  "sshEnabled": false,
  "sshHost": "<string>",
  "sshPort": 32767,
  "sshUsername": "<string>",
  "sshPassword": "<string>",
  "sshPrivateKey": "<string>",
  "sshPrivateKeyPassphrase": "<string>",
  "maxPoolSize": 50
}
'
{
  "data": {
    "id": "<string>",
    "displayName": "<string>",
    "description": "<string>",
    "dialect": "POSTGRES",
    "databaseName": "<string>",
    "username": "<string>",
    "host": "<string>",
    "port": 123,
    "sslEnabled": true,
    "sslCustomCertificatesEnabled": true,
    "sshEnabled": true,
    "sshHost": "<string>",
    "sshPort": 123,
    "sshUsername": "<string>",
    "bigQueryProjectId": "<string>",
    "spannerInstanceId": "<string>",
    "athenaWorkgroup": "<string>",
    "athenaOutputLocation": "<string>",
    "athenaCatalog": "<string>",
    "snowflakeAccountId": "<string>",
    "snowflakeWarehouse": "<string>",
    "snowflakeRole": "<string>",
    "lastSuccessfulSyncAt": "2023-11-07T05:31:56Z",
    "lastSyncStatus": "PENDING",
    "lastSyncAttemptAt": "2023-11-07T05:31:56Z",
    "hasCompletedFirstSync": true,
    "syncErrorMessage": "<string>",
    "lastHealthyAt": "2023-11-07T05:31:56Z",
    "lastHealthStatus": "HEALTHY",
    "lastHealthCheckAttemptAt": "2023-11-07T05:31:56Z",
    "isDemo": true,
    "isBasedashWarehouse": true,
    "createdAt": "2023-11-07T05:31:56Z",
    "updatedAt": "2023-11-07T05:31:56Z"
  }
}

Side effects

When a data source is successfully created:
  1. Schema sync - A background job is triggered to connect to the database and sync its schema (tables, columns, etc.)
  2. Trial activation - If the organization has never been on a trial, a trial period is automatically started

Authorizations

Authorization
string
header
required

API key authentication using Bearer token format: Bearer <basedash_api_key>

Path Parameters

orgId
string
required

Organization ID

Body

application/json
type
enum<string>
required

Connection type (currently only direct)

Available options:
direct
dialect
required

Database dialect/type

Available options:
POSTGRES
displayName
string
required

Display name for the data source

Minimum string length: 1
snowflakeAccountId
string

Snowflake account ID

snowflakeWarehouse
string

Snowflake warehouse

snowflakeRole
string

Snowflake role

snowflakePrivateKey
string

Snowflake private key

snowflakePrivateKeyPassphrase
string

Snowflake private key passphrase

databaseName
string | null

Database name

username
string

Database username

host
string

Database host

port
integer

Database port

Required range: 0 <= x <= 65535
password
string

Database password

bigQueryJsonKey
string

BigQuery JSON key

bigQueryProjectId
string

BigQuery project ID

spannerInstanceId
string

Spanner instance ID

athenaWorkgroup
string

Athena workgroup

athenaOutputLocation
string

Athena output location (s3://...)

athenaCatalog
string

Athena catalog

sslEnabled
boolean
default:true

Enable SSL connection

sshEnabled
boolean
default:false

Enable SSH tunnel

sshHost
string

SSH tunnel host

sshPort
integer

SSH tunnel port

Required range: 0 <= x <= 65535
sshUsername
string

SSH tunnel username

sshPassword
string

SSH tunnel password

sshPrivateKey
string

SSH private key

sshPrivateKeyPassphrase
string

SSH private key passphrase

maxPoolSize
integer

Maximum number of connections in the pool per container

Required range: 1 <= x <= 100

Response

Data source created successfully

data
object
required