Create New Datasource

Endpoint Name: insertdatasource

Request type : POST

Authorization: Bearer token as header

Endpoint Details: The insertdatasource endpoint will be used to create new datasource.

Method

URL

POST

URL/access/klearstack/insertdatasource

Request Body

Params

Values

Required

Description

datasource_name

string

Yes

Name of the datasource

company_name

string

Yes

Name of the company for which the user is logging in

data

string(JSON)

Yes

A valid JSON string containing info about Datasource to be created. It contains info about which columns to create and datatype of those columns

Example:

{

"DataSourceName": "test ",

"DataSourceType": "excel_or_csv",

"DataSourceStatus": true,

"fields": [{

"name": "USER_FIRST_NAME",

"datatype": "string"

}, {

"name": "email",

"datatype": "string"

}]

}

dataset(file)

Binary

Yes

Excel or CSV file containing data for datasource.

Shell (cURL)

  • Request Body

curl --location "URL/access/klearstack/insertdatasource" \
  --header "Authorization: Bearer your_token_here" \
  --form "datasource_name=Replace_Datasource_Name_Here" \
  --form "company_name=Replace_Company_Name_Here" \
  --form 'data={
    "DataSourceName": "test",
    "DataSourceType": "excel_or_csv",
    "DataSourceStatus": true,
    "fields": [
      {"name": "USER_FIRST_NAME", "datatype": "string"},
      {"name": "email", "datatype": "string"}
    ]
  }' \
  --form "dataset=@/path/to/your/file.csv"

Python

  • Request Body

import requests

url = "URL/access/klearstack/insertdatasource"

payload = {'datasource_name': 'Replace_Datasource_Name_Here',
'company_name': 'Replace_Company_Name_Here',
'data': '{
    "DataSourceName": "test",
    "DataSourceType": "excel_or_csv",
    "DataSourceStatus": true,
    "fields": [
      {"name": "USER_FIRST_NAME", "datatype": "string"},
      {"name": "email", "datatype": "string"}
    ]
  }'}
files=[
  ('dataset',('file.csv',open('/path/to/your/file.csv','rb'),'text/csv'))
]
headers = {
  'Authorization': 'Bearer your_token_here'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

Java (OkHttp)

  • Request Body

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("datasource_name", "Replace_Your_Datasource_Name_Here")
  .addFormDataPart("company_name", "Replace_Your_Company_Name_Here")
  .addFormDataPart("data", "{\n" +
    "    \"DataSourceName\": \"Replace_Your_DataSource_Name_Here\",\n" +
    "    \"DataSourceType\": \"excel_or_csv\",\n" +
    "    \"DataSourceStatus\": true,\n" +
    "    \"fields\": [\n" +
    "      {\"name\": \"Replace_Field_Name_1\", \"datatype\": \"string\"},\n" +
    "      {\"name\": \"Replace_Field_Name_2\", \"datatype\": \"string\"}\n" +
    "    ]\n" +
    "  }")
  .addFormDataPart("dataset", "Replace_Your_File_Name.csv",
    RequestBody.create(MediaType.parse("application/octet-stream"),
    new File("Replace_Your_File_Path_Here/Replace_Your_File_Name.csv")))
  .build();
Request request = new Request.Builder()
  .url("URL/access/klearstack/insertdatasource")
  .method("POST", body)
  .addHeader("Authorization", "Bearer Replace_Your_Token_Here")
  .build();
Response response = client.newCall(request).execute();

Node.js (Axios)

  • Request Body

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

let formData = new FormData();
formData.append('datasource_name', 'Replace_Your_Datasource_Name_Here');
formData.append('company_name', 'Replace_Your_Company_Name_Here');
formData.append('data', '{\r\n    "DataSourceName": "Replace_Your_DataSource_Name_Here",\r\n    "DataSourceType": "excel_or_csv",\r\n    "DataSourceStatus": true,\r\n    "fields": [\r\n      {"name": "Replace_Field_Name_1", "datatype": "string"},\r\n      {"name": "Replace_Field_Name_2", "datatype": "string"}\r\n    ]\r\n  }');
formData.append('dataset', fs.createReadStream('Replace_Your_File_Path_Here/Replace_Your_File_Name.csv'));

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'URL/access/klearstack/insertdatasource',
  headers: { 
    'Authorization': 'Bearer Replace_Your_Token_Here', 
    ...formData.getHeaders()
  },
  data: formData
};

axios.request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });

JavaScript (XHR)

  • Request Body

// WARNING: For POST requests, body is set to null by browsers.

var formData = new FormData();
formData.append("datasource_name", "Replace_Your_Datasource_Name_Here");
formData.append("company_name", "Replace_Your_Company_Name_Here");
formData.append("data", "{\r\n    \"DataSourceName\": \"Replace_Your_DataSource_Name_Here\",\r\n    \"DataSourceType\": \"excel_or_csv\",\r\n    \"DataSourceStatus\": true,\r\n    \"fields\": [\r\n      {\"name\": \"Replace_Field_Name_1\", \"datatype\": \"string\"},\r\n      {\"name\": \"Replace_Field_Name_2\", \"datatype\": \"string\"}\r\n    ]\r\n  }");
formData.append("dataset", fileInput.files[0], "Replace_Your_File_Name.csv");

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "URL/access/klearstack/insertdatasource");
xhr.setRequestHeader("Authorization", "Bearer Replace_Your_Token_Here");

xhr.send(formData);

API Response

Status code

Example Response

200

{

"success": true,

“release_version”:”7.8.9”

}

400

{

"error": "Datasource Name already exists"

}

Last updated