Holistics Export API
Submit asynchronous export jobs for report data in CSV, JSON, or XLSX format, poll export job status, and download the resulting file.
Submit asynchronous export jobs for report data in CSV, JSON, or XLSX format, poll export job status, and download the resulting file.
openapi: 3.0.1
info:
title: Holistics API
description: >-
REST API for the Holistics business intelligence and self-service analytics
platform. Covers the Data Pipeline API (execute data imports/transforms and
poll ETL jobs), report and dataset query APIs, and asynchronous data export
(CSV/JSON/XLSX). All requests authenticate with a per-user API key passed in
the X-Holistics-Key header. Regional hosts are secure.holistics.io (APAC),
us.holistics.io (US), and eu.holistics.io (EU).
termsOfService: https://www.holistics.io/terms/
contact:
name: Holistics Support
url: https://www.holistics.io
email: support@holistics.io
version: '2.0'
servers:
- url: https://secure.holistics.io/api/v2
description: APAC region
- url: https://us.holistics.io/api/v2
description: US region
- url: https://eu.holistics.io/api/v2
description: EU region
security:
- HolisticsKey: []
tags:
- name: Datasets
description: Query the Holistics dataset semantic layer.
- name: Reports
description: Submit report queries and retrieve results.
- name: Export
description: Asynchronous report data export jobs.
- name: Data Pipeline
description: Execute data imports and transforms.
- name: Jobs
description: Poll ETL and export job status.
paths:
/data_sets:
get:
operationId: listDataSets
tags:
- Datasets
summary: List available datasets
description: Returns the datasets the calling user can query.
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DataSet'
/data_sets/{id}:
get:
operationId: getDataSet
tags:
- Datasets
summary: Get dataset dimensions and metrics
description: Returns the available dimensions and metrics for a dataset.
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DataSetDetail'
/data_sets/{id}/submit_query:
post:
operationId: submitDataSetQuery
tags:
- Datasets
summary: Query a dataset
description: Executes a query against a dataset and returns result rows.
parameters:
- $ref: '#/components/parameters/PathId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QueryRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
/data_sets/{id}/generate_sql:
post:
operationId: generateDataSetSql
tags:
- Datasets
summary: Generate SQL without executing
description: Returns the SQL that would be generated for a dataset query.
parameters:
- $ref: '#/components/parameters/PathId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QueryRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
sql:
type: string
/queries/{report_id}/submit_query.json:
get:
operationId: submitReportQuery
tags:
- Reports
summary: Submit a report query job
description: >-
Submits a query job for a report. Filter values are passed as query
parameters. Returns a job id to poll for results.
parameters:
- $ref: '#/components/parameters/ReportId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSubmitResponse'
/queries/get_query_results.json:
get:
operationId: getQueryResults
tags:
- Reports
summary: Retrieve report query results
description: Retrieves the paginated results of a submitted query job.
parameters:
- name: job_id
in: query
required: true
schema:
type: string
- name: _page_size
in: query
required: false
schema:
type: integer
- name: _page
in: query
required: false
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
/queries/{report_id}/submit_export.{format}:
get:
operationId: submitReportExport
tags:
- Export
summary: Submit a report export job
description: >-
Submits an export job for a report in the given format. Filter values
are passed as query parameters. Returns an export job id.
parameters:
- $ref: '#/components/parameters/ReportId'
- name: format
in: path
required: true
schema:
type: string
enum:
- csv
- json
- xlsx
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSubmitResponse'
/queries/get_export_results.json:
get:
operationId: getExportResults
tags:
- Export
summary: Retrieve export job status
description: Returns the status of a submitted export job.
parameters:
- name: job_id
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Job'
/exports/download:
get:
operationId: downloadExport
tags:
- Export
summary: Download an export result file
description: >-
Downloads the exported file once the export job status is success.
parameters:
- name: job_id
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
/data_imports/{data_import_id}/execute.json:
post:
operationId: executeDataImport
tags:
- Data Pipeline
summary: Execute a data import job
description: Triggers execution of a Holistics data import.
parameters:
- name: data_import_id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSubmitResponse'
/data_transforms/{data_transform_id}/execute.json:
post:
operationId: executeDataTransform
tags:
- Data Pipeline
summary: Execute a data transform job
description: Triggers execution of a Holistics data transform.
parameters:
- name: data_transform_id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSubmitResponse'
/jobs/{job_id}/logs.json:
get:
operationId: getJobLogs
tags:
- Jobs
summary: View running job information
description: Returns logs and runtime information for a job.
parameters:
- name: job_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Job'
/jobs/last_run_jobs.json:
get:
operationId: getLastRunJobs
tags:
- Jobs
summary: Check status of recent ETL jobs
description: >-
Returns the most recent job for each requested data import or transform.
parameters:
- name: source_type
in: query
required: true
schema:
type: string
enum:
- DataImport
- DataTransform
- name: ids
in: query
required: true
description: Comma-separated list of import or transform IDs.
schema:
type: array
items:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Job'
components:
securitySchemes:
HolisticsKey:
type: apiKey
in: header
name: X-Holistics-Key
description: Per-user API key generated from Holistics user settings.
parameters:
PathId:
name: id
in: path
required: true
schema:
type: integer
ReportId:
name: report_id
in: path
required: true
schema:
type: integer
schemas:
DataSet:
type: object
properties:
id:
type: integer
name:
type: string
title:
type: string
DataSetDetail:
type: object
properties:
id:
type: integer
name:
type: string
dimensions:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
metrics:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
QueryRequest:
type: object
properties:
dimensions:
type: array
description: Fields to group results by.
items:
type: string
metrics:
type: array
description: Aggregated measures to calculate.
items:
type: string
filters:
type: array
description: Conditions for filtering data.
items:
type: object
limit:
type: integer
description: Maximum number of rows returned.
QueryResult:
type: object
properties:
job_id:
type: string
status:
type: string
columns:
type: array
items:
type: string
data:
type: array
items:
type: array
items: {}
JobSubmitResponse:
type: object
properties:
job_id:
type: string
status:
type: string
Job:
type: object
properties:
id:
type: integer
status:
type: string
description: e.g. running, success, failed.
source_type:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
created_at:
type: string
format: date-time