curl --request POST \
--url https://api.domo.com/v1/streams \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataSet": {
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"schema": {
"columns": [
{
"type": "STRING",
"name": "Friend"
},
{
"type": "STRING",
"name": "Attending"
}
]
}
},
"updateMethod": "APPEND"
}
'import requests
url = "https://api.domo.com/v1/streams"
payload = {
"dataSet": {
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"schema": { "columns": [
{
"type": "STRING",
"name": "Friend"
},
{
"type": "STRING",
"name": "Attending"
}
] }
},
"updateMethod": "APPEND"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataSet: {
name: 'Leonhard Euler Party',
description: 'Mathematician Guest List',
schema: {
columns: [{type: 'STRING', name: 'Friend'}, {type: 'STRING', name: 'Attending'}]
}
},
updateMethod: 'APPEND'
})
};
fetch('https://api.domo.com/v1/streams', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.domo.com/v1/streams",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dataSet' => [
'name' => 'Leonhard Euler Party',
'description' => 'Mathematician Guest List',
'schema' => [
'columns' => [
[
'type' => 'STRING',
'name' => 'Friend'
],
[
'type' => 'STRING',
'name' => 'Attending'
]
]
]
],
'updateMethod' => 'APPEND'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.domo.com/v1/streams"
payload := strings.NewReader("{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.domo.com/v1/streams")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.domo.com/v1/streams")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}"
response = http.request(request)
puts response.read_body{
"id": 42,
"dataSet": {
"id": "0c1e0dbe-9f71-4625-9b50-b79e6e4266f2",
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"rows": 0,
"columns": 0,
"owner": {
"id": 27,
"name": "DomoSupport"
},
"createdAt": "2016-05-27T17:53:04Z",
"updatedAt": "2016-05-27T17:53:10Z",
"pdpEnabled": false
},
"updateMethod": "APPEND",
"createdAt": "2016-05-27T17:53:05Z",
"modifiedAt": "2016-05-27T17:53:05Z"
}Create a Stream
When creating a Stream, specify the DataSet properties (name and description) and as a convenience, the create Stream API will create a DataSet for you.
Streams support both append and replace import methods, as well as Upsert. In order to create an Upsert dataset you must specify the Upsert key column(s) in keyColumnNames and set updateMethod to APPEND.
Limitation
The StreamAPI currently only allows you to import data to a DataSet created via the Stream API. For example, it is currently not supported to import data to a DataSet created by a Domo Connector.
curl --request POST \
--url https://api.domo.com/v1/streams \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataSet": {
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"schema": {
"columns": [
{
"type": "STRING",
"name": "Friend"
},
{
"type": "STRING",
"name": "Attending"
}
]
}
},
"updateMethod": "APPEND"
}
'import requests
url = "https://api.domo.com/v1/streams"
payload = {
"dataSet": {
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"schema": { "columns": [
{
"type": "STRING",
"name": "Friend"
},
{
"type": "STRING",
"name": "Attending"
}
] }
},
"updateMethod": "APPEND"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataSet: {
name: 'Leonhard Euler Party',
description: 'Mathematician Guest List',
schema: {
columns: [{type: 'STRING', name: 'Friend'}, {type: 'STRING', name: 'Attending'}]
}
},
updateMethod: 'APPEND'
})
};
fetch('https://api.domo.com/v1/streams', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.domo.com/v1/streams",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dataSet' => [
'name' => 'Leonhard Euler Party',
'description' => 'Mathematician Guest List',
'schema' => [
'columns' => [
[
'type' => 'STRING',
'name' => 'Friend'
],
[
'type' => 'STRING',
'name' => 'Attending'
]
]
]
],
'updateMethod' => 'APPEND'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.domo.com/v1/streams"
payload := strings.NewReader("{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.domo.com/v1/streams")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.domo.com/v1/streams")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dataSet\": {\n \"name\": \"Leonhard Euler Party\",\n \"description\": \"Mathematician Guest List\",\n \"schema\": {\n \"columns\": [\n {\n \"type\": \"STRING\",\n \"name\": \"Friend\"\n },\n {\n \"type\": \"STRING\",\n \"name\": \"Attending\"\n }\n ]\n }\n },\n \"updateMethod\": \"APPEND\"\n}"
response = http.request(request)
puts response.read_body{
"id": 42,
"dataSet": {
"id": "0c1e0dbe-9f71-4625-9b50-b79e6e4266f2",
"name": "Leonhard Euler Party",
"description": "Mathematician Guest List",
"rows": 0,
"columns": 0,
"owner": {
"id": 27,
"name": "DomoSupport"
},
"createdAt": "2016-05-27T17:53:04Z",
"updatedAt": "2016-05-27T17:53:10Z",
"pdpEnabled": false
},
"updateMethod": "APPEND",
"createdAt": "2016-05-27T17:53:05Z",
"modifiedAt": "2016-05-27T17:53:05Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Returns a DataSet object when successful. The returned object will have DataSet attributes based on the information that was provided when DataSet was created from the Stream created.