Analytics
Datasets
Datasets are curated tables of data that can be reused across multiple reports. Every Dataset lives in a Collection and contains a SQL query.
You can use the dataset
resource to manage individual Mode datasets.
Note: Spaces have been rebranded as Collections in Mode, but the API will continue to refer to spaces
. The spaces object and resources are the same as Collections in the Mode UI.
Dataset object
Properties | |
token required |
string |
id required |
integer |
name required |
string |
description |
string |
created_at required |
string |
updated_at required |
string |
published_at required |
string |
edited_at required |
string |
theme_id |
integer |
color_mappings |
string |
type required |
string |
last_successful_sync_at required |
string |
last_saved_at required |
string |
archived required |
boolean |
space_token |
string |
account_id required |
integer |
account_username required |
string |
public required |
boolean |
full_width |
boolean |
manual_run_disabled required |
boolean |
drill_anywhere_enabled required |
boolean |
run_privately required |
boolean |
drilldowns_enabled required |
boolean |
layout |
string |
is_embedded |
boolean |
is_signed |
boolean |
imported_datasets |
string |
shared |
boolean |
expected_runtime required |
number |
last_successfully_run_at required |
string |
last_run_at required |
string |
web_preview_image |
string |
last_successful_run_token required |
string |
github_link |
string |
query_count required |
string |
max_query_count required |
string |
chart_count |
string |
runs_count required |
string |
schedules_count required |
string |
query_preview required |
string |
view_count required |
string |
_links required |
object |
Links
All resource responses contain a set of links that describe other
related resources or actions that you can take on this resource.
A link is comprised of two main pieces:
its name (which describes its relationship to this resource)
and its href (the URL of the related action or resource).
All resources have at least a _self
link which is the URL
that will return a representation of this resource.
- account
- creator
- csv_export
- dataset_dependencies
- dbt_metadata
- embed_key
- last_run
- last_successful_github_sync
- last_successful_run
- perspective_email_subscription_memberships
- python_notebook
- python_visualizations
- queries
- report_filters
- report_index_web
- report_pins
- report_run
- report_runs
- report_schedules
- report_subscriptions
- report_theme
- self
- share
- space
- space_links
- star
- validate_email_subscriber
- web
- web_edit
- web_external_url
- web_report_runs
{
"token": "flkgj3h2f24",
"id": 73267438,
"name": "culpa mollit",
"created_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"updated_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"edited_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"theme_id": 37094832,
"color_mappings": "nulla et esse ut",
"last_successful_sync_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"last_saved_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"archived": false,
"account_id": 51699936,
"account_username": "labore dolore consequat anim non",
"public": false,
"full_width": true,
"manual_run_disabled": false,
"run_privately": true,
"drilldowns_enabled": true,
"layout": "id",
"is_embedded": true,
"is_signed": true,
"shared": true,
"expected_runtime": 90198048.20198965,
"last_successfully_run_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"last_run_at": "YYYY-MM-DDTHH:MM:SS.msZ",
"web_preview_image": "Ut",
"last_successful_run_token": "af2g34t4hyrnt",
"query_count": "anim adipisicing Lorem occaecat",
"chart_count": "est elit",
"schedules_count": "culpa id eiusmod dolore",
"query_preview": "fugiat",
"description": "Ut",
"space_token": "fg32wrg534f",
"flamingo_signature": "cillum sunt ea",
"github_link": "veniam laborum",
"_links": {
"self": {
"href": "commodo eu reprehenderit",
"templated": false
},
"web": {
"href": "cillum quis fugiat incididunt aute",
"templated": false
},
"account": {
"href": "Ut",
"templated": false
},
"report_run": {
"href": "Excepteur mollit irure",
"templated": false
},
"queries": {
"href": "occaecat magna sit Lorem",
"templated": false
},
"report_runs": {
"href": "cillum esse eu tempor",
"templated": false
},
"report_pins": {
"href": "et cillum ea",
"templated": false
},
"report_schedules": {
"href": "laborum adipisicing commodo",
"templated": false
},
"python_visualizations": {
"href": "sed ea",
"templated": false
},
"embed_key": {
"href": "aliquip commodo",
"templated": false
},
"last_run": {
"href": "ipsum ullamco laborum",
"templated": false
},
"last_successful_run": {
"href": "adipisicing in",
"templated": false
},
"perspective_email_subscription_memberships": {
"href": "magna laborum et ex amet",
"templated": false
},
"report_theme": {
"href": "qui labore dolor adipisicing",
"templated": false
},
"last_successful_github_sync": {
"href": "laborum in nostrud",
"templated": false
},
"web_edit": {
"href": "irure Excepteur consectetur",
"templated": false
},
"web_external_url": {
"href": "occaecat",
"templated": false
},
"csv_export": {
"href": "Lorem",
"templated": false
},
"share": {
"href": "dolore sunt ad",
"templated": false
},
"web_report_runs": {
"href": "sint dolore voluptate",
"templated": false
},
"star": {
"href": "velit elit Excepteur culpa",
"templated": false
},
"space": {
"href": "eu",
"templated": false
},
"space_links": {
"href": "ullamco",
"templated": false
},
"report_filters": {
"href": "pariatur ex proident Excepteur mollit",
"templated": false
},
"report_subscriptions": {
"href": "culpa",
"templated": false
},
"python_notebook": {
"href": "ea labore sed cillum",
"templated": false
},
"validate_email_subscriber": {
"href": "eu",
"templated": false
},
"creator": {
"href": "commodo Excepteur consequat Lorem ut",
"templated": false
}
},
"_embedded": {}
}
List Reports using a Dataset
To retrieve all the reports using a specified single Dataset, send a GET request including the Dataset token to the dataset
resource.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
dataset required |
string |
Dataset token
|
Responses | |
200 |
Report collection response |
401 |
Unauthorized |
404 |
Dataset not found |
GET
/{account}
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/datasets/{dataset}/reports'
require 'http'
username = 'your_api_key'
password = 'your_api_secret'
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/datasets/{dataset}/reports')
puts response
from urllib2 import Request, urlopen
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/datasets/{dataset}/reports', headers=headers)
response_body = urlopen(request).read()
print(response_body)
var request = new XMLHttpRequest();
request.open('GET', 'https://app.mode.com/api/{account}/datasets/{dataset}/reports');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/hal+json');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
request.send();
Get a Dataset
To retrieve information about a single Dataset, send a GET request including the Dataset token to the dataset
resource.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
dataset required |
string |
Dataset token
|
Responses | |
200 |
Dataset response |
401 |
Unauthorized |
404 |
Dataset not found |
GET
/{account}
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/datasets/{dataset}'
require 'http'
username = 'your_api_key'
password = 'your_api_secret'
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/datasets/{dataset}')
puts response
from urllib2 import Request, urlopen
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/datasets/{dataset}', headers=headers)
response_body = urlopen(request).read()
print(response_body)
var request = new XMLHttpRequest();
request.open('GET', 'https://app.mode.com/api/{account}/datasets/{dataset}');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/hal+json');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
request.send();
List Datasets using a data source
To return a list of all Datasets using a given Data Source, send a GET request to the datasets
resource.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
data_source required |
string |
DataSource token
|
Query Params | ||
filter |
string |
Returns a filtered list of Dataset s in a Space filtered by whether their created_at or updated_at timestamps are gt (greater than) or lt (less than) the datetime passed in ISO8601 format. Example: ?filter=created_at.gt.2019-10-23T06:23:01Z returns all Datasets in a space created after that date.
|
order |
string |
With the order param, returns all Dataset s in a Space ordered in asc or desc order. Example: ?order=asc&order_by=created_at
|
order_by |
string |
With the order_by param, returns all Dataset s in a Space ordered by their created_at or updated_at timestamps. Example: ?order_by=created_at&order=asc
|
Responses | |
200 |
Dataset collection response |
401 |
Unauthorized |
404 |
Dataset not found |
GET
/{account}
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets'
# Optional Query Params:
# Filter Datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z'
# Order Datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?order=asc&order_by=created_at'
require 'http'
username = 'your_api_key'
password = 'your_api_secret'
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets')
puts response
# Optional Query Params:
# Filter Datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z')
# Order Datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?order=asc&order_by=created_at')
from urllib2 import Request, urlopen
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets', headers=headers)
response_body = urlopen(request).read()
print(response_body)
# Optional Query Params:
# Filter Datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
request = Request('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z')
# Order Datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
request = Request('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?order=asc&order_by=created_at')
var request = new XMLHttpRequest();
request.open('GET', 'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/hal+json');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
request.send();
// Optional Query Params:
// Filter Datasets by when they were created or updated
// '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
request.open('GET', 'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z');
// Order Datasets by when they were created or updated
// '?order={asc|desc}&order_by={created_at|updated_at}'
request.open('GET', 'https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?order=asc&order_by=created_at');
List report runs
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
report required |
string |
Report token
|
Query Params | ||
filter |
string |
Returns a filtered list of Run s for a Report filtered by whether their created_at or updated_at timestamps are gt (greater than) or lt (less than) the datetime passed in ISO8601 format. Example: ?filter=updated_at.lt.2019-10-23T06:23:01Z returns all Runs in a space created before that date.
|
order |
string |
With the order param, returns all ReportRun s for a Report ordered by their created_at or updated_at timestamps
|
order_by |
string |
With the order_by param, returns all ReportRun s for a Report ordered in asc or desc order
|
Responses | |
200 |
ReportRun collection response |
401 |
Unauthorized |
404 |
Report not found |
GET
/{account}
List Datasets for a space
To return a list of all Datasets in a given Collection, send a GET request to the dataset
resource.
Note: Spaces have been rebranded as Collections in Mode, but the API will continue to refer to spaces
. The spaces object and resources are the same as Collections in the Mode UI.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
space required |
string |
Space token
|
Query Params | ||
filter |
string |
Returns a filtered list of Dataset s in a Space filtered by whether their created_at or updated_at timestamps are gt (greater than) or lt (less than) the datetime passed in ISO8601 format. Example: ?filter=created_at.gt.2019-10-23T06:23:01Z returns all Datasets in a space created after that date.
|
order |
string |
With the order param, returns all Dataset s in a Space ordered in asc or desc order. Example: ?order=asc&order_by=created_at
|
order_by |
string |
With the order_by param, returns all Dataset s in a Space ordered by their created_at or updated_at timestamps. Example: ?order_by=created_at&order=asc
|
Responses | |
200 |
Dataset collection response |
401 |
Unauthorized |
404 |
Dataset not found |
GET
/{account}
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/spaces/{space}/datasets'
# Optional Query Params:
# Filter datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/spaces/{space}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z'
# Order datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/spaces/{space}/datasets?order=asc&order_by=created_at'
require 'http'
username = 'your_api_key'
password = 'your_api_secret'
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/spaces/{space}/datasets')
puts response
# Optional Query Params:
# Filter datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/spaces/{space}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z')
# Order datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.get('https://app.mode.com/api/{account}/spaces/{space}/datasets?order=asc&order_by=created_at')
from urllib2 import Request, urlopen
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/spaces/{space}/datasets', headers=headers)
response_body = urlopen(request).read()
print(response_body)
# Optional Query Params:
# Filter Datasets by when they were created or updated
# '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
request = Request('https://app.mode.com/api/{account}/spaces/{space}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z')
# Order Datasets by when they were created or updated
# '?order={asc|desc}&order_by={created_at|updated_at}'
request = Request('https://app.mode.com/api/{account}/spaces/{space}/datasets?order=asc&order_by=created_at')
var request = new XMLHttpRequest();
request.open('GET', 'https://app.mode.com/api/{account}/spaces/{space}/datasets');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/hal+json');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
request.send();
// Optional Query Params:
// Filter Datasets by when they were created or updated
// '?filter={created_at|updated_at}.{gt|lt}.{YYYY-MM-DDTHH:MM:SSZ}'
request.open('GET', 'https://app.mode.com/api/{account}/spaces/{space}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z');
// Order Datasets by when they were created or updated
// '?order={asc|desc}&order_by={created_at|updated_at}'
request.open('GET', 'https://app.mode.com/api/{account}/spaces/{space}/datasets?order=asc&order_by=created_at');
Update a Dataset
To update a Dataset, send a PATCH request including the username and corresponding Dataset token to the datasets
resource.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
dataset required |
string |
Dataset token
|
POST Body Params
Object: |
||
name |
string |
The name of the report
Example:
|
description |
string |
A description of the report in question
Example:
|
space_token |
string |
The token of the space this report will be moved to
Example:
|
Responses | |
200 |
Dataset response |
401 |
Unauthorized |
404 |
Dataset not found |
PATCH
/{account}
curl --include \
--request PATCH \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
--data-binary "{
\"report\": {
\"name\": \"Kanto Region Diaspora\",
\"description\": \"An analysis of all the creatures living in the region. Please contribute any missing data. Pocket version coming soon.\",
\"space_token\": \"5a4177a2902c\"
}
}" \
'https://app.mode.com/api/{account}/datasets/{dataset}'
require 'http'
values = {
report: {
name: 'Kanto Region Diaspora',
description: 'An analysis of all the creatures living in the region. Please contribute any missing data. Pocket version coming soon.',
space_token: '5a4177a2902c'
}
}
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.patch('https://app.mode.com/api/{account}/datasets/{dataset}', json: values)
puts response
from urllib2 import Request, urlopen
values = """
{
"report": {
"name": "Kanto Region Diaspora",
"description": "An analysis of all the creatures living in the region. Please contribute any missing data. Pocket version coming soon.",
"space_token": "5a4177a2902c"
}
}
"""
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/datasets/{dataset}', data=values, headers=headers)
request.get_method = lambda: 'PATCH'
response_body = urlopen(request).read()
print(response_body)
var request = require('request');
request({
method: 'PATCH',
url: 'https://app.mode.com/api/{account}/datasets/{dataset}',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
},
body: "{ \"report\": { \"name\": \"Kanto Region Diaspora\", \"description\": \"An analysis of all the creatures living in the region. Please contribute any missing data. Pocket version coming soon.\", \"space_token\": \"5a4177a2902c\" }}"
}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
});
Delete a Dataset
To remove a given dataset from a Collection, send a DELETE request to the datasets
resource.
Note: Spaces have been rebranded as Collections in Mode, but the API will continue to refer to spaces
. The spaces object and resources are the same as Collections in the Mode UI.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
dataset required |
string |
Dataset token
|
Responses | |
200 |
Empty body |
400 |
Bad request |
401 |
Unauthorized |
404 |
Dataset not found |
DELETE
/{account}
curl --include \
--request DELETE \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
'https://app.mode.com/api/{account}/datasets/{dataset}'
require 'http'
username = 'your_api_key'
password = 'your_api_secret'
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.delete('https://app.mode.com/api/{account}/datasets/{dataset}')
puts response
from urllib2 import Request, urlopen
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/datasets/{dataset}', headers=headers)
request.get_method = lambda: 'DELETE'
response_body = urlopen(request).read()
print(response_body)
var request = new XMLHttpRequest();
request.open('DELETE', 'https://app.mode.com/api/{account}/datasets/{dataset}');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/hal+json');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
request.send();
Refresh a Dataset in a report
To refresh a Dataset
in a report, send a POST request including a list of dataset tokens corresponding to the imported Datasets
to refresh.
URL Params | ||
account required |
string |
Account (Workspace or User ) username
|
report required |
string |
Report token
|
POST Body Params
Object: |
||
dataset_tokens |
array |
An array of Dataset objects containing only their token
Example:
|
Responses | |
202 |
ReportRun Accepted |
400 |
Bad request |
401 |
Unauthorized |
404 |
Report not found |
POST
/{account}
curl --include \
--request POST \
--header "Content-Type: application/json" \
--header "Accept: application/hal+json" \
--data-binary "{
\"report\": {
\"dataset_tokens\": [{ \"token\": \"5a4177a2902c\" }]
}
}" \
'https://app.mode.com/api/{account}/reports/{report}/runs'
require 'http'
values = {
report: {
dataset_tokens: [{ token: '5a4177a2902c' }]
}
}
headers = {
content_type: 'application/json',
accept: 'application/hal+json'
}
response = HTTP.basic_auth(user: username, pass: password)
.headers(headers)
.post('https://app.mode.com/api/{account}/reports/{report}/runs', json: values)
puts response
from urllib2 import Request, urlopen
values = """
{
"report": {
"dataset_tokens": [{ "token": "5a4177a2902c" }]
}
}
"""
headers = {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
}
request = Request('https://app.mode.com/api/{account}/reports/{report}/runs', data=values, headers=headers)
request.get_method = lambda: 'POST'
response_body = urlopen(request).read()
print(response_body)
var request = require('request');
request({
method: 'POST',
url: 'https://app.mode.com/api/{account}/reports/{report}/runs',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/hal+json'
},
body: "{ \"report\": { \"dataset_tokens\": [{ \"token\": \"5a4177a2902c\" }] }}"
}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
});