### Get a Definition (Javascript) Source: https://mode.com/developer/api-reference/analytics/definitions This Javascript example uses the 'request' library to make a GET request for Definition details. Ensure the 'request' library is installed. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/definitions/{definition}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Data Sources using Node.js Source: https://mode.com/developer/api-reference/management/data-sources This Node.js example utilizes the 'request' module to retrieve a list of all data sources. Install the 'request' package before running. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/data_sources', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Space Membership (Javascript) Source: https://mode.com/developer/api-reference/management/space-memberships This Javascript example uses the 'request' library to perform a GET request for space membership data. It includes setting the method, URL, and required headers, and logs the response status, headers, and body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/spaces/{space}/memberships/{space_membership}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Definition (Ruby) Source: https://mode.com/developer/api-reference/analytics/definitions This Ruby script demonstrates how to fetch Definition details using the HTTP client. Ensure you have the 'http' gem installed. ```ruby 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/{workspace}/definitions/{definition}') puts response ``` -------------------------------- ### Get a Query Run - Javascript Source: https://mode.com/developer/api-reference/analytics/query-runs This Javascript example uses the 'request' library to fetch a query run. It configures the request method, URL, and headers, and logs the response status, headers, and body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/runs/{run}/query_runs/{query_run}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Membership (Javascript) Source: https://mode.com/developer/api-reference/management/workspace-memberships This Javascript example uses the 'request' library to perform a GET request for membership details. It logs the status, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/memberships/{membership}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Group (Javascript) Source: https://mode.com/developer/api-reference/management/groups This Javascript example uses the 'request' library to make a GET request for group information. It logs the status code, headers, and response body to the console. Ensure you have the 'request' library installed and replace the placeholders. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/groups/{group_token}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Data Source using Node.js Source: https://mode.com/developer/api-reference/management/data-sources This Node.js example uses the 'request' module to get information about a specific data source. Make sure to install the 'request' package. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/data_sources/{data_source}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Make a Simple GET Request with cURL Source: https://mode.com/developer/api-reference/introduction This example demonstrates a basic GET request to retrieve a workspace object. It does not require authentication and can be used to test API connectivity before obtaining an access token. ```curl curl https://app.mode.com/api/parch_and_posey ``` -------------------------------- ### List Definitions (JavaScript) Source: https://mode.com/developer/api-reference/analytics/definitions This JavaScript example uses the 'request' library to perform a GET request to list definitions. It logs the status, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/definitions?filter=&tokens=', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Query Runs using Node.js Source: https://mode.com/developer/api-reference/analytics/query-runs This Node.js example uses the 'request' module to make a GET request for query runs. It logs the status, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/runs/{run}/query_runs', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get Subscription (Javascript) Source: https://mode.com/developer/api-reference/distribution/report-subscriptions This Javascript example uses the 'request' library to make a GET request for a specific report subscription, logging the response. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/subscriptions/{subscription}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Query (Python) Source: https://mode.com/developer/api-reference/analytics/queries Fetch query details using Python's urllib2. This example demonstrates setting the necessary headers for the request. ```python from urllib2 import Request, urlopen headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{account}/reports/{report}/queries/{query}', headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Get a Dataset using JavaScript (XHR) Source: https://mode.com/developer/api-reference/analytics/datasets This JavaScript example demonstrates fetching dataset details using XMLHttpRequest. It logs the response to the console. ```javascript 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(); ``` -------------------------------- ### Get a Data Source using Ruby Source: https://mode.com/developer/api-reference/management/data-sources This Ruby script demonstrates how to fetch a specific data source's information using basic authentication. Ensure you have the 'http' gem installed. ```ruby 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/{workspace}/data_sources/{data_source}') puts response ``` -------------------------------- ### List All Collections in a Workspace (JavaScript) Source: https://mode.com/developer/api-reference/management/collections This JavaScript example uses the 'request' library to get a list of all collections in a Mode workspace. It includes setting the method, URL, and necessary headers. Replace `{workspace}` with your workspace name. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/spaces', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Verify User (JavaScript) Source: https://mode.com/developer/api-reference/management/users This JavaScript example uses the 'request' library to make a GET request to the verify endpoint. It logs the status code, headers, and response body, which includes Workspace information. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/verify', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Make a simple request with basic authentication using Ruby Source: https://mode.com/developer/api-reference/authentication This Ruby script demonstrates how to authenticate an API request using the `http` gem. It constructs the URL, sets the username and password, and sends a GET request to the `/api/account` endpoint. Ensure you have the `http` and `json` gems installed. ```ruby # gem install http require 'http' require 'json' url = 'https://app.mode.com/api/account' username = 'api_token' password = 'api_secret' response = HTTP.basic_auth(user: username, pass: password) .get(url) puts JSON.parse(response) ``` -------------------------------- ### List Charts using Node.js Source: https://mode.com/developer/api-reference/analytics/charts This Node.js example uses the `request` library to list charts for a query. It configures the GET request with the appropriate URL and headers, then logs the status code, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/reports/{report}/queries/{query}/charts', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Datasets with Python Source: https://mode.com/developer/api-reference/analytics/datasets Demonstrates how to list datasets for a given account and space using Python's Request library. Includes examples for filtering by creation/update time and ordering the results. ```python from urllib2 import Request, urlopen request = Request('https://app.mode.com/api/{account}/spaces/{space}/datasets?filter=created_at.gt.2019-12-19T10:21:12Z') request = Request('https://app.mode.com/api/{account}/spaces/{space}/datasets?order=asc&order_by=created_at') ``` -------------------------------- ### Create a Dataset Run (JavaScript) Source: https://mode.com/developer/api-reference/analytics/dataset-runs Initiate a dataset run via JavaScript using `XMLHttpRequest`. This example shows how to configure the request method, URL, headers, and handle the response. ```javascript var request = new XMLHttpRequest(); request.open('POST', 'https://app.mode.com/api/{account}/datasets/{dataset}/runs'); 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 All Report Tokens in Javascript Source: https://mode.com/developer/api-cookbook/management/get-all-reports This Javascript example retrieves all report tokens from your Mode Workspace using the 'request-promise' library. It handles multiple Collections and paginated responses. Ensure you have Node.js and the 'request-promise' module installed. ```javascript const request = require('request-promise'); const host = 'https://app.mode.com'; const ws = 'workspaceName'; // Note: workspaceName value should be all lowercase const username = 'apiToken'; const password = 'apiSecret'; const getAllReportsTokens = async () => { const url = `${host}/api/${ws}/spaces?filter=all`; const response = await request({ url: url, auth: { username, password }, json: true, }); const spaces = response._embedded.spaces; const spaceTokens = spaces.map((space) => space.token); let allTokens = []; let page = 1; let tokenIndex = 0; do { let reportTokens = await makeRequest(spaceTokens[tokenIndex], page); allTokens = allTokens.concat(reportTokens); while (reportTokens.length === 30) { page++; reportTokens = await makeRequest(spaceTokens[tokenIndex], page); allTokens = allTokens.concat(reportTokens); } tokenIndex++; } while (tokenIndex < spaceTokens.length); }; const makeRequest = async (spaceToken, page) => { url = `${host}/api/${ws}/spaces/${spaceToken}/reports?page=${page}`; const response = await request({ url: url, auth: { username, password }, json: true, }); const reports = response._embedded.reports; const reportTokens = reports.map((report) => report.token); return reportTokens; }; getAllReportsTokens(); ``` -------------------------------- ### Get Query Results in Javascript Source: https://mode.com/developer/api-cookbook/reports/get-query-results This Javascript example retrieves query results from a report using the 'request' library. It handles checking the query run status and fetching the results content. Make sure to install the 'request' package. ```javascript const request = require('request'); const host = 'https://modeanalytics.com'; const ws = 'workspaceName'; // Note: workspaceName value should be all lowercase const username = 'apiToken'; const password = 'apiSecret'; const getQueryResult = (reportToken, queryToken) => { request({ url: `${host}/api/${ws}/reports/${reportToken}/queries/${queryToken}/runs`, auth: { username, password }, json: true, }, (err, res, body) => { const queryRun = body._embedded.query_runs[0]; const queryRunResultEndpoint = queryRun._links.result.href; if (queryRun.state === 'succeeded') { request({ url: `${host}${queryRunResultEndpoint}/content`, auth: { username, password }, gzip: true, }, (err, res, body) => body); } else console.error('There is no result, because the query run failed.'); }); }; // report token is the string at the end of a report view URL // query token is the string at the end of the URL at report view -> View Details -> SQL getQueryResult('reportToken', 'queryToken'); ``` -------------------------------- ### Create a Collection (JavaScript) Source: https://mode.com/developer/api-reference/management/collections This JavaScript example uses the 'request' library to create a collection in Mode. It sends a POST request with the collection details in the request body. Replace `{workspace}` with your workspace name. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/spaces', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"space\": { \"space_type\": \"Excepteur dolor officia ex\", \"name\": \"irure eiusmod labore\", \"description\": \"est reprehenderit ad ullamco\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Make a GET Request with Ruby Source: https://mode.com/developer/api-reference/introduction Use the 'http' gem to make a GET request to the Mode API. Ensure you have installed the gem using 'gem install http'. ```ruby require 'http' puts HTTP.get('https://app.mode.com/api/parch_and_posey').to_s ``` -------------------------------- ### List Datasets with Order (Ruby) Source: https://mode.com/developer/api-reference/analytics/datasets This Ruby script demonstrates ordering datasets by creation date. Replace placeholders with your account and data source details. ```ruby 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') ``` -------------------------------- ### Create Definition (JavaScript) Source: https://mode.com/developer/api-reference/analytics/definitions This JavaScript example uses the 'request' library to send a POST request for creating a definition. It logs the response status, headers, and body. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/definitions', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Create Invitation using Javascript Source: https://mode.com/developer/api-reference/management/invites This Javascript example uses the `request` library to send a POST request for creating an invitation. It specifies the method, URL, headers, and the JSON body for the request. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/invites', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"invite\": { \"invitee\": { \"email\": \"harold.ceramicist@example.com\" }, \"message\": \"You are an analyst, Harry!\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Delete a Collection using Node.js request Source: https://mode.com/developer/api-reference/management/collections This Node.js example uses the `request` library to delete a collection. Ensure the `request` library is installed (`npm install request`). ```javascript var request = require('request'); request({ method: 'DELETE', url: 'https://app.mode.com/api/{workspace}/spaces/{space}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Simple Request with Basic Authentication Source: https://mode.com/developer/api-reference/authentication This example demonstrates how to make a simple API call using basic authentication with your API token and secret. Remember to replace `api_token` and `api_secret` with your actual credentials. ```APIDOC ## GET /api/account ### Description Retrieves account information using basic authentication. ### Method GET ### Endpoint `https://app.mode.com/api/account` ### Parameters #### Request Body None ### Request Example ```bash curl -u api_token:api_secret \ --include \ --header "Content-Type: application/json" \ --header "Accept: application/hal+json" \ 'https://app.mode.com/api/account' ``` ### Response #### Success Response (200) - **field1** (type) - Description #### Response Example ```json { "example": "response body" } ``` ``` ```APIDOC # Ruby Example ```ruby require 'http' require 'json' url = 'https://app.mode.com/api/account' username = 'api_token' password = 'api_secret' response = HTTP.basic_auth(user: username, pass: password) .get(url) puts JSON.parse(response) ``` ``` ```APIDOC # Python Example ```python import json from requests.auth import HTTPBasicAuth import requests host = 'https://app.mode.com' username = 'api_token' password = 'api_secret' url = '%s/api/account' % (host) response = requests.get(url, auth=HTTPBasicAuth(username, password)) result = response.json() print result ``` ``` ```APIDOC // Javascript Example ```javascript const request = require('request-promise'); const host = 'https://app.mode.com'; const username = 'api_token'; const password = 'api_secret'; const getAccount = async () => { const res = await request({ url: `${host}/api/account`, auth: { username, password }, json: true, }); return res; }; console.log(getAccount()); ``` ``` -------------------------------- ### Update a Collection using Node.js request Source: https://mode.com/developer/api-reference/management/collections This Node.js example uses the `request` library to update a collection. Ensure the `request` library is installed (`npm install request`). ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/spaces/{space}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"space\": { \"space_type\": \"deserunt do\", \"name\": \"laborum qu\", \"description\": \"laboris null\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Create a Dataset Run (Python) Source: https://mode.com/developer/api-reference/analytics/dataset-runs Use Python's `urllib2` to send a POST request to create a dataset run. Ensure the `Content-Type` and `Accept` headers are correctly set. ```python from urllib2 import Request, urlopen headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{account}/datasets/{dataset}/runs', headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Get Group Membership (Python) Source: https://mode.com/developer/api-reference/management/group-memberships Fetch group membership information using Python's urllib2. This example demonstrates how to set up the request headers and make the GET call. ```python from urllib2 import Request, urlopen headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{workspace}/groups/{group_token}/memberships/{membership_token}', headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Create Invitation using Ruby Source: https://mode.com/developer/api-reference/management/invites This Ruby script demonstrates how to send a POST request to create an invitation using the `http` library. Replace `username` and `password` with your Mode credentials. ```ruby require 'http' values = { invite: { invitee: { email: 'harold.ceramicist@example.com' }, message: 'You are an analyst, Harry!' } } 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/{workspace}/invites', json: values) puts response ``` -------------------------------- ### Get a Chart using Javascript Source: https://mode.com/developer/api-reference/analytics/charts This Javascript example uses the 'request' library to fetch chart details. It specifies the GET method, URL, and necessary headers for the API call. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/reports/{report}/queries/{query}/charts/{chart}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get a Report Filter (Javascript) Source: https://mode.com/developer/api-reference/analytics/report-filters This Javascript example uses the 'request' library to make a GET request to the report filters endpoint. It logs the status code, headers, and response body to the console. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/filters/{filter}', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Create a Dataset Run (cURL) Source: https://mode.com/developer/api-reference/analytics/dataset-runs Initiate a new dataset run by sending a POST request to the runs resource. This example demonstrates the necessary headers and URL structure. ```curl curl --include \ --request POST \ --header "Content-Type: application/json" \ --header "Accept: application/hal+json" \ 'https://app.mode.com/api/{account}/datasets/{dataset}/runs' ``` -------------------------------- ### Get Authorizing User Account (JavaScript) Source: https://mode.com/developer/api-reference/management/users This JavaScript example uses the 'request' library to make a GET request for the authorizing user's account information. It logs the status code, headers, and response body to the console. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/account', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Query Runs using Ruby Source: https://mode.com/developer/api-reference/analytics/query-runs This Ruby script demonstrates how to fetch query runs using the HTTP library. Basic authentication is used with your API key and secret. ```ruby 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}/reports/{report}/runs/{run}/query_runs') puts response ``` -------------------------------- ### List Queries using JavaScript Source: https://mode.com/developer/api-reference/analytics/queries This JavaScript example uses the `request` library to list queries for a report. It logs the status code, headers, and response body to the console. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/queries', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Dataset Runs with Filters and Ordering (JavaScript) Source: https://mode.com/developer/api-reference/analytics/dataset-runs Retrieve dataset runs using `XMLHttpRequest`. This example shows how to set request headers and handle the response, including filtering and ordering. ```javascript request.open('GET', 'https://app.mode.com/api/{account}/datasets/{dataset}/runs?filter=created_at.gt.2019-12-19T10:21:12Z'); request.onreadystatechange = function () { if (this.readyState === 4) { console.log('Status:', this.status); console.log('Headers:', this.getAllResponseHeaders()); console.log('Body:', this.responseText); } }; request.send(); ``` ```javascript request.open('GET', 'https://app.mode.com/api/{account}/datasets/{dataset}/runs?order=asc&order_by=created_at'); request.onreadystatechange = function () { if (this.readyState === 4) { console.log('Status:', this.status); console.log('Headers:', this.getAllResponseHeaders()); console.log('Body:', this.responseText); } }; request.send(); ``` -------------------------------- ### Create Invitation using Python Source: https://mode.com/developer/api-reference/management/invites This Python snippet shows how to create an invitation by sending a POST request. It uses `urllib2` to handle the HTTP request and includes the necessary headers and data. ```python from urllib2 import Request, urlopen values = """ { "invite": { "invitee": { "email": "harold.ceramicist@example.com" }, "message": "You are an analyst, Harry!" } } """ headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{workspace}/invites', data=values, headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Get Query Results Source: https://mode.com/developer/api-cookbook/reports/get-query-results This example demonstrates how to get a query’s results in JSON format. This can be useful when you’ve got multiple queries in a report, but you want to work with the results of just one of them, whether to do further analysis, build custom visualizations, or just generally access them outside of Mode. ```APIDOC ## GET .../reports/{report_token}/runs/{run_token}/query_runs/{query_run_token}/results/content ### Description Returns a query run's results in JSON format. ### Method GET ### Endpoint `.../{workspace}/reports/{report_token}/runs/{run_token}/query_runs/{query_run_token}/results/content` ### Parameters #### Query Parameters - **content** (string) - Optional - Specifies the format of the results. Use 'content.json' to get results in JSON. ### Response #### Success Response (200) - **results** (object) - Contains the query results in JSON format. ``` -------------------------------- ### Get a Collection using Python Source: https://mode.com/developer/api-reference/management/collections Fetch Collection information in Python using the urllib2 library. This example demonstrates setting the required headers for the request. ```python from urllib2 import Request, urlopen headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{workspace}/spaces/{space}', headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Create an invitation Source: https://mode.com/developer/api-reference/management/invites If you have permission to invite new members to a Workspace, you can do so by sending a POST request to `invites`. You’ll need to include the invitee’s email address and an invitation message in your request’s body. Mode then sends an email containing your invitation message to the provided email address. The invitee will become a member of your Workspace once they accept the invitation and verify their email address. ```APIDOC ## POST /{workspace}/invites ### Description Creates a new invitation for a user to join a Workspace. ### Method POST ### Endpoint `https://app.mode.com/api/{workspace}/invites` ### Parameters #### Path Parameters - **workspace** (string) - Required - The Workspace username. #### Request Body - **invite** (object) - Required - **invitee** (object) - Required - **email** (string) - Required - The email address of the invitee. - **message** (string) - Required - The invitation message. ### Responses #### Success Response (200) - **WorkspaceInvite** - The details of the created invitation. #### Error Responses - **400** - Bad request - **401** - Unauthorized - **403** - Forbidden - **404** - Membership not found for Workspace ``` ```curl curl --include \ --request POST \ --header "Content-Type: application/json" \ --header "Accept: application/hal+json" \ --data-binary "{ \"invite\": { \ \"invitee\": { \ \"email\": \"harold.ceramicist@example.com\" \ }, \ \"message\": \"You are an analyst, Harry!\" \ } \ }" \ 'https://app.mode.com/api/{workspace}/invites' ``` ```ruby require 'http' values = { invite: { invitee: { email: 'harold.ceramicist@example.com' }, message: 'You are an analyst, Harry!' } } 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/{workspace}/invites', json: values) puts response ``` ```python from urllib2 import Request, urlopen values = """ { "invite": { "invitee": { "email": "harold.ceramicist@example.com" }, "message": "You are an analyst, Harry!" } } """ headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{workspace}/invites', data=values, headers=headers) response_body = urlopen(request).read() print(response_body) ``` ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/invites', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"invite\": { \"invitee\": { \"email\": \"harold.ceramicist@example.com\" }, \"message\": \"You are an analyst, Harry!\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Get Reports with Include Spaces Query Param Source: https://mode.com/developer/discovery-api/analytics/reports Use this query parameter to include reports from members' personal spaces. This example shows how to construct the URL. ```python request = Request("https://app.mode.com/batch/{workspace}/reports?include_spaces=all") ``` -------------------------------- ### Get Dataset Field Descriptions using Python Source: https://mode.com/developer/api-reference/analytics/dataset-field-descriptions This Python example retrieves Dataset field descriptions using `urllib2`. It configures the request with the required headers. ```python from urllib2 import Request, urlopen headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{account}/datasets/{dataset}/field_descriptions', headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### Create Query using JavaScript Source: https://mode.com/developer/api-reference/analytics/queries This JavaScript example uses the `request` library to create a query via a POST request. It includes the query details in the request body and logs the API response. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{account}/reports/{report}/queries', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"query\": { \"raw_query\": \"SELECT * from the_way_down\", \"data_source_id\": 84268941, \"name\": \"Turtles\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Dataset Runs with Filters and Ordering (Python) Source: https://mode.com/developer/api-reference/analytics/dataset-runs Fetch dataset runs, with options to filter by date and sort the output. This example uses the `urllib2` library for HTTP requests. ```python request = Request('https://app.mode.com/api/{account}/datasets/{dataset}/runs?filter=created_at.gt.2019-12-19T10:21:12Z') response_body = urlopen(request).read() print(response_body) ``` ```python request = Request('https://app.mode.com/api/{account}/datasets/{dataset}/runs?order=asc&order_by=created_at') response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### List Data Sources using Ruby Source: https://mode.com/developer/api-reference/management/data-sources This Ruby script fetches a list of all data sources in your workspace using basic authentication. Ensure the 'http' gem is installed. ```ruby 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/{workspace}/data_sources') puts response ``` -------------------------------- ### List Groups using Node.js request Source: https://mode.com/developer/api-reference/management/groups This Node.js example uses the `request` module to get a list of groups. It logs the status code, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{workspace}/groups', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Create Report Subscription (JavaScript) Source: https://mode.com/developer/api-reference/distribution/report-subscriptions This JavaScript example uses the `request` library to send a POST request to create a report subscription. It configures the request method, URL, headers, and the JSON body. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{account}/reports/{report}/subscriptions', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"report_subscription\": { \"csv_attachments_enabled\": true, \"pdf_attachments_enabled\": false, \"data_previews_enabled\": true, \"data_tables_enabled\": false, \"report_links_enabled\": true }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Form Fields using Javascript Source: https://mode.com/developer/api-reference/analytics/form-fields This Javascript example uses XMLHttpRequest to make a GET request for Form Fields. It logs the status, headers, and response text to the console. ```javascript var request = new XMLHttpRequest(); request.open('GET', 'https://app.mode.com/api/{account}/reports/{report}/runs{run}/options'); 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 Report Schedules using Node.js Source: https://mode.com/developer/api-reference/distribution/report-schedules This Node.js example uses the 'request' library to make a GET request for report schedules. It logs the status code, headers, and response body. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/schedules', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### Create Group Membership (Python) Source: https://mode.com/developer/api-reference/management/group-memberships Python example using `urllib2` to create a group membership. The `member_token` is included in the POST data. ```python from urllib2 import Request, urlopen values = """ { "membership": { "member_token": "fgt342fewreth" } } """ headers = { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' } request = Request('https://app.mode.com/api/{workspace}/groups/{group_token}/memberships', data=values, headers=headers) response_body = urlopen(request).read() print(response_body) ``` -------------------------------- ### List Subscriptions for a Report Schedule (JavaScript) Source: https://mode.com/developer/api-reference/distribution/report-subscriptions This JavaScript example uses the 'request' library to get subscriptions for a report schedule. It logs the status code, headers, and response body to the console. ```javascript var request = require('request'); request({ method: 'GET', url: 'https://app.mode.com/api/{account}/reports/{report}/schedules/{schedule}/subscriptions', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }}, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ``` -------------------------------- ### List Datasets with Order (Python) Source: https://mode.com/developer/api-reference/analytics/datasets This Python script demonstrates ordering datasets by creation date using urllib2. Replace placeholders with your account and data source details. ```python request = Request('https://app.mode.com/api/{account}/data_sources/{data_source}/datasets?order=asc&order_by=created_at') ``` -------------------------------- ### Get All Report Tokens in Python Source: https://mode.com/developer/api-cookbook/management/get-all-reports Use this Python script to fetch all report tokens from your Mode Workspace. It iterates through all Collections and paginated report results. Ensure you have the 'requests' library installed. ```python import json import requests from requests.auth import HTTPBasicAuth host = 'https://app.mode.com' ws = 'workspace_name' # Note: workspace_name value should be all lowercase un = 'api_token' pw = 'api_secret' def get_all_reports_tokens(): url = '%s/api/%s/spaces?filter=all' % (host, ws) r = requests.get(url, auth=HTTPBasicAuth(un, pw)) result = r.json() spaces = result['_embedded']['spaces'] space_tokens = [s['token'] for s in spaces] all_tokens = [] for s in space_tokens: page = 1 report_tokens = make_request(s, page) all_tokens += report_tokens while(len(report_tokens)==30): page += 1 report_tokens = make_request(s, page) all_tokens += report_tokens return all_tokens def make_request(space_token, page): url = '%s/api/%s/spaces/%s/reports?page=%d' % (host, ws, space_token, page) r = requests.get(url, auth=HTTPBasicAuth(un, pw)) results = r.json() reports = results['_embedded']['reports'] report_tokens = [r['token'] for r in reports] return report_tokens get_all_reports_tokens() ``` -------------------------------- ### List Queries using Ruby Source: https://mode.com/developer/api-reference/analytics/queries This Ruby script demonstrates how to fetch a list of queries for a report using the `http` library. It includes basic authentication and sets necessary headers for the API request. ```ruby 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}/reports/{report}/queries') puts response ``` -------------------------------- ### List Report Filters using JavaScript (XMLHttpRequest) Source: https://mode.com/developer/api-reference/analytics/report-filters This JavaScript example uses XMLHttpRequest to make a GET request for report filters. It logs the status, headers, and response body when the request is complete. ```javascript var request = new XMLHttpRequest(); request.open('GET', 'https://app.mode.com/api/{account}/reports/{report}/filters'); 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(); ``` -------------------------------- ### Create Group Membership (JavaScript) Source: https://mode.com/developer/api-reference/management/group-memberships JavaScript example using the `request` library to create a group membership. The `member_token` is provided in the request body. ```javascript var request = require('request'); request({ method: 'POST', url: 'https://app.mode.com/api/{workspace}/groups/{group_token}/memberships', headers: { 'Content-Type': 'application/json', 'Accept': 'application/hal+json' }, body: "{ \"membership\": { \"member_token\": \"ut aute\" }}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); ```