Download OpenAPI specification:
Huwise's REST API to manage your marketplace and its catalog
Datasets are at the core of the platform. A dataset is composed of:
Through the Automation API, it is possible to:
| uid | string non-empty Unique identifier of the dataset that will never change through the lifetime of the dataset |
| dataset_id | string non-empty Human-readable identifier of the dataset that can be modified when the dataset is not published |
| created_at | string <date-time> non-empty Date when the dataset was created |
| updated_at | string <date-time> non-empty Date when the dataset's configuration was last edited |
object or null (RelatedUserReadOnly) User who created the dataset | |
object or null (RelatedUserReadOnly) User who last updated the dataset | |
| is_published | boolean Default: false |
| is_restricted | boolean Defines if the dataset is visible for anonymous visitors.
|
required | object (Metadata) Asset metadata — a two-level dictionary mapping template name → field name → MetadataValue. Example: {"asset": {"title": {"value": "My Dataset"}, "description": {"value": "..."}}} |
object (DatasetSecurity) The dataset default security ruleset when the dataset is restricted. This ruleset applies to all users who do not have any ruleset declared for them |
{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}List all the datasets that can be edited by this user.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| dataset_id | string Find a dataset from its |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}
]
}Create a dataset.
| dataset_id | string non-empty Human-readable identifier of the dataset that can be modified when the dataset is not published |
| is_restricted | boolean Defines if the dataset is visible for anonymous visitors.
|
required | object (Metadata) Asset metadata — a two-level dictionary mapping template name → field name → MetadataValue. Example: {"asset": {"title": {"value": "My Dataset"}, "description": {"value": "..."}}} |
object (DatasetSecurity) The dataset default security ruleset when the dataset is restricted. This ruleset applies to all users who do not have any ruleset declared for them |
{- "dataset_id": "counties-united-states-of-america",
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}Retrieve a dataset
| dataset_uid required | string Example: da_qf2hyt |
{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}Update a dataset's configuration properties (e.g. dataset_id, is_restricted, default_security). To update dataset metadata use the dedicated Dataset Metadata endpoints (PUT /datasets/{dataset_uid}/metadata/, PUT /datasets/{dataset_uid}/metadata/{template_name}/, or PUT /datasets/{dataset_uid}/metadata/{template_name}/{field_name}/).
| dataset_uid required | string Example: da_qf2hyt |
| dataset_id | string Human-readable identifier for the dataset. Must be unique within the domain. |
| is_restricted | boolean If true, only users with explicit security rules can explore this dataset. |
object (DatasetSecurity) Default security settings for the dataset. |
{- "dataset_id": "my-dataset",
- "is_restricted": false,
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}Make the dataset modifications available through the explore API. It may entail the processing of all the records.
| dataset_uid required | string Example: da_qf2hyt |
{- "detail": "ok"
}Stop the current processing job and keep the processed records available in the explore API.
| dataset_uid required | string Example: da_qf2hyt |
{- "detail": "ok"
}Copy a dataset
| dataset_uid required | string Example: da_qf2hyt |
{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}Retrieves the current dataset status.
The dataset status describes the current state of a dataset, stating if it's published or not and the running operation. It is a finite state machine, with the following properties:
| dataset_uid required | string Example: da_qf2hyt |
{- "status": "idle",
- "previous": "processing",
- "next": null,
- "since": "2019-08-24T14:15:22Z",
- "is_published": true,
- "message": null,
- "records_errors": [ ],
- "params": { }
}| uid | string non-empty Unique identifier for the resource |
| type required | string non-empty Extractor type that should handle this resource |
| title required | string non-empty User defined title for identifying the resource |
| display_name | string non-empty A name representing the resource. It is computed from the resource |
Extraction information (object) or null Information about the kind of extraction configured for this resource, or null when it isn't relevant. | |
object (OriginInfos) Information about the origin of the resource (e.g. HTTP, FTP etc.) | |
| updated_at | string <date-time> non-empty |
| params | object Parameters passed to the extractor |
| url | string non-empty resource url |
object (Datasource) |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}[- {
- "type": "jsonfile",
- "label": "JSON File",
- "parameters": [
- [
- {
- "type": "boolean",
- "is_mandatory": false,
- "name": "extract_filename",
- "label": "Extract filename",
- "description": "Extract the filename in a field"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_root",
- "label": "JSON root",
- "description": "Path to the JSON array that contains the objects that will become the dataset records"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_object",
- "label": "JSON object",
- "description": "Relative path to the JSON object to extract"
}
]
]
}
]List all resources that are linked to a dataset.
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| expand | string Enum: "datasource.connection" "datasource.dataset" The list of fields to expand. |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}
]
}Create a new resource for the dataset. For now the supported resources in the API are HTTP, (s)FTP, uploaded files, S3, Azure Blob Storage, dataset federation, Snowflake, JCDecaux, Sharepoint and Google Drive.
| dataset_uid required | string Example: da_qf2hyt |
| type required | string non-empty Extractor type that should handle this resource |
| title required | string non-empty User defined title for identifying the resource |
| params | object Parameters passed to the extractor |
| url | string non-empty resource url |
object (Datasource) |
{- "type": "csvfile",
- "title": "fromages.csv",
- "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}
}{- "$ref": "./HTTPResourceExample.yaml"
}Guess the resource extractors
| dataset_uid required | string Example: da_qf2hyt |
required | object (Datasource) |
{- "datasource": {
- "type": "http",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}
}[- {
- "type": "jsonfile",
- "label": "JSON File",
- "parameters": [
- [
- {
- "type": "boolean",
- "is_mandatory": false,
- "name": "extract_filename",
- "label": "Extract filename",
- "description": "Extract the filename in a field"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_root",
- "label": "JSON root",
- "description": "Path to the JSON array that contains the objects that will become the dataset records"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_object",
- "label": "JSON object",
- "description": "Relative path to the JSON object to extract"
}
]
]
}
]Guess the extractor parameters
| dataset_uid required | string Example: da_qf2hyt |
required | object (Datasource) |
| type required | string |
{- "datasource": {
- "type": "http",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "type": "csvfile"
}{- "extractor": "csvfile",
- "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}
}In order to test a resource configuration, it can be useful to preview the data. This endpoint uses a resource configuration passed in the payload to generate a preview.
The preview is composed of the fields definitions and the content of the first records up to 20.
| dataset_uid required | string Example: da_qf2hyt |
required | object (Datasource) |
| type required | string |
object |
{- "datasource": {
- "type": "http",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "type": "csvfile",
- "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}
}{- "fields": [
- {
- "label": "Year",
- "name": "year",
- "type": "date",
- "annotations": [
- {
- "name": "timeserie_precision",
- "args": [
- "year"
]
}
]
}, - {
- "label": "Official Name State",
- "name": "ste_name",
- "type": "text",
- "annotations": [ ]
}
], - "records": [
- {
- "year": "2022",
- "ste_name": "Missouri"
}, - {
- "year": "2022",
- "ste_name": "North Carolina"
}
]
}Retrieve one dataset resource specified by its uid.
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
| expand | string Enum: "datasource.connection" "datasource.dataset" The list of fields to expand. |
{- "$ref": "./HTTPResourceExample.yaml"
}Update one dataset resource specified by its uid.
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
| type required | string non-empty Extractor type that should handle this resource |
| title required | string non-empty User defined title for identifying the resource |
| params | object Parameters passed to the extractor |
| url | string non-empty resource url |
object (Datasource) |
{- "type": "csvfile",
- "title": "fromages.csv",
- "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}
}{- "$ref": "./HTTPResourceExample.yaml"
}Guess the resource extractors
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
[- {
- "type": "jsonfile",
- "label": "JSON File",
- "parameters": [
- [
- {
- "type": "boolean",
- "is_mandatory": false,
- "name": "extract_filename",
- "label": "Extract filename",
- "description": "Extract the filename in a field"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_root",
- "label": "JSON root",
- "description": "Path to the JSON array that contains the objects that will become the dataset records"
}, - {
- "type": "string",
- "is_mandatory": false,
- "name": "json_object",
- "label": "JSON object",
- "description": "Relative path to the JSON object to extract"
}
]
]
}
]Guess the resource extractor parameters
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "extractor": "csvfile",
- "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}
}In order to test a resource configuration, it can be useful to preview the data. This endpoint uses the configuration of a resource specified by its uid to generate a preview.
The preview is composed of the fields definitions and the content of the first records up to 20.
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "fields": [
- {
- "label": "Year",
- "name": "year",
- "type": "date",
- "annotations": [
- {
- "name": "timeserie_precision",
- "args": [
- "year"
]
}
]
}, - {
- "label": "Official Name State",
- "name": "ste_name",
- "type": "text",
- "annotations": [ ]
}
], - "records": [
- {
- "year": "2022",
- "ste_name": "Missouri"
}, - {
- "year": "2022",
- "ste_name": "North Carolina"
}
]
}Recover the data of a realtime resource. The dataset must be published.
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}Delete the recovered data of a realtime resource. The dataset must be published.
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}Enable a realtime resource
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}Disable a realtime resource
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}Renew a realtime resource API key
| dataset_uid required | string Example: da_qf2hyt |
| resource_uid required | string Example: re_qf2hyt |
{- "uid": "re_qf2hyt",
- "type": "csvfile",
- "title": "Fromages",
- "extraction_infos": {
- "label": "CSV File",
- "type": "csvfile"
}, - "origin": {
- "label": "HTTP",
- "type": "http"
}, - "params": {
- "doublequote": true,
- "encoding": "utf-8",
- "first_row_no": 1,
- "headers_first_row": true,
- "separator": ";"
}, - "datasource": {
- "type": "http",
- "connection": {
- "uid": "co_qf2hyt"
}, - "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "relative_url": "/fromages.csv"
}, - "updated_at": "2022-01-01T00:00:00Z"
}Upload a file to be used in a dataset resource. The HTTP request must be a multipart request with a file property.
| dataset_uid required | string Example: da_qf2hyt |
| file required | string <binary> |
{- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}Retrieve a dataset resource uploaded file
| dataset_uid required | string Example: da_qf2hyt |
| file_uid required | string Example: fromages.csv |
{- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}Download a dataset resource file
| dataset_uid required | string Example: da_qf2hyt |
| file_uid required | string Example: fromages.csv |
{- "error_code": "not_found",
- "message": "Not found."
}Metadata is data describing the dataset itself. This is a set of fields describing the data, such as a title, a description, a list of keywords, a modification date, or whether the dataset is compliant to a specific geospatial norm. Adding metadata on a dataset is important to make sure it can be found, understood, and reused by users. In some cases, it can also be important for interoperability, to make sure other systems can understand the content of the dataset.
Dataset metadata are grouped within metadata templates that you can think of as namespaces. On top of the default metadata template, you may also find (depending on your domain's configuration) the Inspire, DCAT or CitadelJSON templates. Many other templates also exist and you can contact the support to define your own templates.
Returns all metadata for the dataset as a two-level object: { template_name: { field_name: { value, remote_value, override_remote_value } } }.
Standard templates available on all datasets:
default — Core descriptive metadata:
title, description, keyword, modified, modified_updates_on_metadata_change,
modified_updates_on_data_change, geographic_reference, geographic_reference_auto,
language, timezone, publisher, references, attributions
visualization — Controls dataset visualizations on the portal:
analyze_disabled, analyze_default, table_fields, table_default_sort_field,
table_default_sort_direction, map_disabled, map_marker_picto, map_marker_color,
map_marker_hidemarkershape, map_tooltip_title, map_tooltip_fields,
map_tooltip_disabled, map_tooltip_html_enabled, map_tooltip_html,
map_tooltip_sort_field, map_tooltip_sort_direction, map_basemap,
images_disabled, media_gallery_fields, image_title, image_fields,
image_tooltip_html_enabled, image_tooltip_html, calendar_enabled,
calendar_event_title, calendar_event_start, calendar_event_end,
calendar_tooltip_html_enabled, calendar_tooltip_html, calendar_tooltip_fields,
calendar_event_color, calendar_available_views, calendar_default_view,
custom_view_enabled, custom_view_html, custom_view_css, custom_view_icon,
custom_view_title, custom_view_slug
internal — Configuration metadata not visible on the portal:
license_id, theme_id, draft
asset_content_configuration — Controls how asset content is displayed and searched:
facets, fields_displayed_in_specific_languages, records_search_boosts
Additional custom templates may be present if configured on the portal. Their fields follow the same { field_name: { value } } structure.
The exact list of templates and their fields available on a given portal can be retrieved using the list-metadata-templates and list-metadata-template-fields operations.
| dataset_uid required | string Example: da_qf2hyt |
{- "default": {
- "title": {
- "value": "Counties - United States of America",
- "remote_value": "Counties - United States of America",
- "override_remote_value": false
}, - "description": {
- "value": "Geographic dataset of US counties.",
- "remote_value": "",
- "override_remote_value": false
}, - "keyword": {
- "value": [
- "geography",
- "usa",
- "county"
], - "remote_value": [
- "geography",
- "usa",
- "county"
], - "override_remote_value": false
}, - "modified": {
- "value": "2023-01-01T00:00:00Z",
- "remote_value": "2023-01-01T00:00:00Z",
- "override_remote_value": false
}, - "language": {
- "value": "en",
- "remote_value": "en",
- "override_remote_value": false
}, - "publisher": {
- "value": "U.S. Census Bureau",
- "remote_value": "U.S. Census Bureau",
- "override_remote_value": false
}
}, - "visualization": {
- "table_fields": {
- "value": [
- "name",
- "population",
- "area"
], - "remote_value": [
- "name",
- "population",
- "area"
], - "override_remote_value": false
}, - "map_disabled": {
- "value": false,
- "remote_value": false,
- "override_remote_value": false
}
}, - "internal": {
- "license_id": {
- "value": "odc-odbl",
- "remote_value": "odc-odbl",
- "override_remote_value": false
}, - "draft": {
- "value": false,
- "remote_value": false,
- "override_remote_value": false
}
}, - "asset_content_configuration": {
- "facets": {
- "value": [
- {
- "field_name": "state",
- "disjunctive": true,
- "facetsort": "count"
}
], - "remote_value": [ ],
- "override_remote_value": false
}
}
}Update all dataset metadata at once. The payload replaces the full metadata object — omitted fields are removed.
Standard template names are: default, visualization, internal, asset_content_configuration.
See list-all-dataset-metadata for a full description of each template's fields.
| dataset_uid required | string Example: da_qf2hyt |
| property name* additional property | any |
{ }{- "default": {
- "title": {
- "value": "Counties - United States of America",
- "remote_value": "Counties - United States of America",
- "override_remote_value": false
}, - "language": {
- "value": "en",
- "remote_value": "en",
- "override_remote_value": false
}
}, - "internal": {
- "draft": {
- "value": false,
- "remote_value": false,
- "override_remote_value": false
}
}
}Returns the metadata fields for the given template. Standard template names are:
default, visualization, internal, asset_content_configuration.
Custom templates configured on the portal are also accessible by name.
The exact list of templates available on a given portal can be retrieved using the list-metadata-templates operation.
See list-all-dataset-metadata for a full description of each standard template's fields.
| dataset_uid required | string Example: da_qf2hyt |
| template_name required | string Example: template_name Metadata template name |
{- "title": {
- "value": "Counties - United States of America",
- "remote_value": "Counties - United States of America",
- "override_remote_value": false
}, - "description": {
- "value": "Geographic dataset of US counties.",
- "remote_value": "",
- "override_remote_value": false
}, - "keyword": {
- "value": [
- "geography",
- "usa",
- "county"
], - "remote_value": [
- "geography",
- "usa",
- "county"
], - "override_remote_value": false
}, - "language": {
- "value": "en",
- "remote_value": "en",
- "override_remote_value": false
}, - "publisher": {
- "value": "U.S. Census Bureau",
- "remote_value": "U.S. Census Bureau",
- "override_remote_value": false
}
}Update dataset metadata within a given template. This operation replaces the dataset metadata with the given payload: if a metadata is omitted, it will be removed from the dataset.
| dataset_uid required | string Example: da_qf2hyt |
| template_name required | string Example: template_name Metadata template name |
| property name* additional property | any |
{ }{ }Retrieve the metadata with the given name within the given template.
| dataset_uid required | string Example: da_qf2hyt |
| template_name required | string Example: template_name Metadata template name |
| template_field_name required | string Example: field_name Metadata template field name |
{- "value": null,
- "remote_value": null,
- "override_remote_value": true
}Update the metadata with the given name within the given template.
| dataset_uid required | string Example: da_qf2hyt |
| template_name required | string Example: template_name Metadata template name |
| template_field_name required | string Example: field_name Metadata template field name |
| value required | any The effective metadata value. |
| override_remote_value | boolean If true, the local value overrides the remote value. Present only if the dataset is linked to a remote dataset. |
{- "value": null,
- "override_remote_value": true
}{- "value": null,
- "remote_value": null,
- "override_remote_value": true
}Delete the metadata with the given name within the given template.
| dataset_uid required | string Example: da_qf2hyt |
| template_name required | string Example: template_name Metadata template name |
| template_field_name required | string Example: field_name Metadata template field name |
""The dataset security is the set of rules that defines who (which users / groups) can access what (which metadata / records / fields) at what frequency (API calls quota) for a given this dataset.
It is defined through 3 variables:
is_restricted dataset property.dataset/{uid}/security/ API endpoints described in this section.default_security dataset property.object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object (RelatedUser) The user targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object The group targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}List the dataset user-level security rulesets
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}
]
}Create a dataset user-level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object (RelatedUser) The user targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}Retrieve a dataset user-level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
| username required | string Example: louise.data |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object (RelatedUser) The user targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}Update a dataset user-level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
| username required | string Example: louise.data |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object (RelatedUser) The user targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "user": {
- "username": "louise.data"
}
}List the dataset group level security rulesets
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}
]
}Create a dataset group level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object The group targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}Retrieve a dataset group level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
| group_uid required | string Example: group_identifier |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object The group targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}Update a dataset group level security ruleset
| dataset_uid required | string Example: da_qf2hyt |
| group_uid required | string Example: group_identifier |
object (DatasetSecurity) | |
| permissions | Array of strings (RulesetPermission) unique Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
required | object The group targeted by this ruleset. |
{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}{- "security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}, - "permissions": [
- "edit_dataset"
], - "group": {
- "uid": "content_designers"
}
}Huwise allows you to apply one or more processors to a dataset.
These processors are units of data transformation and other processing. Each processor represents a configurable operation that will be applied to all rows of a dataset.
Examples of what you can do with a processor include replacing text with a regex, geocoding an address into geographical coordinates, creating a new column that contains the result of a substraction between two existing columns and much more.
A general-purpose presentation of processors and their capabilities is available in the data processing documentation.
| uid | string Unique identifier for the processor |
| type required | string Type of the processor |
| label | string or null Friendly label of the processor |
| property name* additional property | any |
{- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}List configured processors for a dataset. Please note that it reads in the order in which processors are applied.
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}
]
}Create a new processor for the dataset. The processor will be appended to the end of the processing stack.
| dataset_uid required | string Example: da_qf2hyt |
| type required | string Type of the processor |
| label | string or null Friendly label of the processor |
| property name* additional property | any |
{- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}{- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}Retrieve a dataset processor
| dataset_uid required | string Example: da_qf2hyt |
| processor_uid required | string Example: pr_qf2hyt |
{- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}Update a processor in a dataset
| dataset_uid required | string Example: da_qf2hyt |
| processor_uid required | string Example: pr_qf2hyt |
| type required | string Type of the processor |
| label | string or null Friendly label of the processor |
| property name* additional property | any |
{- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}{- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}List all processors available on domain.
[- {
- "uid": "pr_qf2hyt",
- "type": "string_replace",
- "label": "replace old value with new value",
- "field": "my_field",
- "old": "old_value",
- "new": "new_value"
}
]The feedback feature allows users to suggest improvements to portal administrators. Feedback can either be about an existing record, or to request the addition of a new record in the dataset.
Feedback is an optional feature and is not activated on every Huwise portal. Activation is done by a portal's administrators, and then has to be activated individually on each dataset.
| uid required | string Unique identifier for the feedback |
| record_id required | string ID of the record on which the feedback was made |
required | object (RelatedUser) The user who submitted the feedback |
| comment required | string User comments |
object New values suggested by the user | |
| is_archived | boolean True if the feedback was archived by an administrator, False otherwise |
| created_at | string <date-time> Timestamp at which the feedback was submitted |
{- "uid": "df_qf2hyt",
- "record_id": "95969ddab924fc5db5e39c3fb2a7634f4d7dd51c",
- "user": {
- "username": "john.doe"
}, - "comment": "I like this record, it provides meanigful insights",
- "is_archived": false,
- "values": {
- "username": {
- "value": "A missing value",
- "type": "string"
}, - "age": {
- "value": 39,
- "type": "double"
}
}
}List all dataset feedbacks. Archived feedbacks aren't listed by default, use the is_archived parameter to query them.
| dataset_uid required | string Example: da_qf2hyt |
| record_id | string Find feedbacks made on a record with this id |
| is_archived | boolean Default: 0 If true, list only archived feedbacks |
| sort | string Default: "-created_at" Example: sort=created_at Sort by date of submission |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "df_qf2hyt",
- "record_id": "95969ddab924fc5db5e39c3fb2a7634f4d7dd51c",
- "user": {
- "username": "john.doe"
}, - "comment": "I like this record, it provides meanigful insights",
- "is_archived": false,
- "values": {
- "username": {
- "value": "A missing value",
- "type": "string"
}, - "age": {
- "value": 39,
- "type": "double"
}
}
}
]
}Retrieve a dataset feedback
| dataset_uid required | string Example: da_qf2hyt |
| feedback_uid required | string Example: df_qf2hyt Unique identifier for the feedback |
{- "uid": "df_qf2hyt",
- "record_id": "95969ddab924fc5db5e39c3fb2a7634f4d7dd51c",
- "user": {
- "username": "john.doe"
}, - "comment": "I like this record, it provides meanigful insights",
- "is_archived": false,
- "values": {
- "username": {
- "value": "A missing value",
- "type": "string"
}, - "age": {
- "value": 39,
- "type": "double"
}
}
}Archive a dataset feedback
| dataset_uid required | string Example: da_qf2hyt |
| feedback_uid required | string Example: df_qf2hyt Unique identifier for the feedback |
{- "uid": "df_qf2hyt",
- "record_id": "95969ddab924fc5db5e39c3fb2a7634f4d7dd51c",
- "user": {
- "username": "john.doe"
}, - "comment": "I like this record, it provides meanigful insights",
- "is_archived": false,
- "values": {
- "username": {
- "value": "A missing value",
- "type": "string"
}, - "age": {
- "value": 39,
- "type": "double"
}
}
}Dataset fields can be configured using a variety of options. These options include their type, their label, whether they are a filter or not, whether they should be discarded, or even how fields are ordered.
These configuration options, collectively refered to as fields configuration, are accessed using processor-like objects.
Type of the field configuration:
rename - Fields are identified by a technical name, and have a human-friendly label; both are editable using this configuration item.type - Types are the most basic way of qualifying fields. Different types unlock different kinds of visualizations and agregations. Below is the list of types supported by the platform.annotate - Annotation are a mean to configure special behavior for the fields. Some annotations are only available for certain field types.description - Description are a mean to qualify and give some extra details about the content of the field. Descriptions are available when consulting the data.order - Fields are processed and displayed in a definite order, this annotation can be used to change that order.delete - Some fields present in the data source are not useful or redundant. This configuration item allows to discard them.| uid | string Unique identifier for the field configuration |
| type required | string non-empty |
| label required | string Friendly label of the field configuration |
| from_name required | string non-empty The original technical identifier |
| to_name required | string non-empty The new technical identifier |
| field_label required | string non-empty A user friendly label for the field |
{- "uid": "pr_qf2hyt",
- "type": "rename",
- "label": "Mark the field_id as multivalued, with a comma as the values separator",
- "field": "field_id",
- "annotation": "multivalued",
- "args": [
- ","
], - "from_name": "original_field_id",
- "to_name": "new_field_id",
- "field_label": "My user friendly label"
}List fields configurations for a dataset. Please note that it reads in the order in which processors are applied.
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "pr_qf2hyt",
- "type": "annotate",
- "label": "Mark the field_id as multivalued, with a comma as the values separator",
- "field": "field_id",
- "annotation": "multivalued",
- "args": [
- ","
]
}
]
}Create a new field configuration for the dataset. The processor will be appended to the end of the fields configuration stack.
| dataset_uid required | string Example: da_qf2hyt |
Create a field configuration in a dataset
| type required | string non-empty |
| label required | string Friendly label of the field configuration |
| from_name required | string non-empty The original technical identifier |
| to_name required | string non-empty The new technical identifier |
| field_label required | string non-empty A user friendly label for the field |
{- "$ref": "../../../components/schemas/datasets/fields/examples/InputRenameDatasetFieldConfigurationExample.yaml"
}{- "$ref": "../../../components/schemas/datasets/fields/examples/RenameDatasetFieldConfigurationExample.yaml"
}Retrieve a dataset field configuration
| dataset_uid required | string Example: da_qf2hyt |
| field_uid required | string Example: pr_qf2hyt |
{- "$ref": "../../../components/schemas/datasets/fields/examples/RenameDatasetFieldConfigurationExample.yaml"
}Update a field configuration in a dataset
| dataset_uid required | string Example: da_qf2hyt |
| field_uid required | string Example: pr_qf2hyt |
| type required | string non-empty |
| label required | string Friendly label of the field configuration |
| from_name required | string non-empty The original technical identifier |
| to_name required | string non-empty The new technical identifier |
| field_label required | string non-empty A user friendly label for the field |
{- "$ref": "../../../components/schemas/datasets/fields/examples/InputRenameDatasetFieldConfigurationExample.yaml"
}{- "$ref": "../../../components/schemas/datasets/fields/examples/RenameDatasetFieldConfigurationExample.yaml"
}| uid | string non-empty |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
{- "uid": "sc_qf2hyt",
- "cron_schedule": "0 * * * *"
}List dataset schedules
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "sc_qf2hyt",
- "cron_schedule": "0 * * * *"
}
]
}Create a dataset schedule
| dataset_uid required | string Example: da_qf2hyt |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
{- "cron_schedule": "0 * * * *"
}{- "uid": "sc_qf2hyt",
- "cron_schedule": "0 * * * *"
}Retrieve a dataset schedule
| dataset_uid required | string Example: da_qf2hyt |
| schedule_uid required | string Example: sc_qf2hyt |
{- "uid": "sc_qf2hyt",
- "cron_schedule": "0 * * * *"
}Update a dataset schedule
| dataset_uid required | string Example: da_qf2hyt |
| schedule_uid required | string Example: sc_qf2hyt |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
{- "cron_schedule": "0 * * * *"
}{- "uid": "sc_qf2hyt",
- "cron_schedule": "0 * * * *"
}The versions of a dataset describe subsequent changes of states that affected the different sections of a dataset.
Every action taken on any resource through POST, PUT or DELETE creates a version object that can be retrieved and acted upon.
| uid | string non-empty Unique identifier for the version |
| sections | Array of strings Sections modified by this change |
object (RelatedUserReadOnly) User who made the change | |
| can_restore | boolean |
| created_at | string <date-time> non-empty Date at which the change was made |
{- "uid": "ch_qf2hyt",
- "sections": [
- "data"
], - "created_by": {
- "username": "louise.data"
}, - "can_restore": true,
- "created_at": "2019-08-24T14:15:22Z"
}List the dataset versions.
Note: only the last 20 versions of a dataset are stored in the platform database. For this reason, the API response will contain at most 20 results.
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "ch_qf2hyt",
- "sections": [
- "data"
], - "created_by": {
- "username": "louise.data"
}, - "can_restore": true,
- "created_at": "2019-08-24T14:15:22Z"
}
]
}Retrieve a dataset version.
| version_uid required | string Example: ch_qf2hyt |
| dataset_uid required | string Example: da_qf2hyt |
{- "uid": "ch_qf2hyt",
- "sections": [
- "data"
], - "created_by": {
- "username": "louise.data"
}, - "can_restore": true,
- "created_at": "2019-08-24T14:15:22Z"
}Restores a dataset to the selected version. Restoring a version will not erase the versions history, but rather create a new version encapsulating the restoration.
| version_uid required | string Example: ch_qf2hyt |
| dataset_uid required | string Example: da_qf2hyt |
{- "uid": "da_qf2hyt",
- "dataset_id": "counties-united-states-of-america",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "is_published": false,
- "is_restricted": true,
- "metadata": { },
- "default_security": {
- "is_data_visible": true,
- "visible_fields": [
- "year",
- "coty_code"
], - "filter_query": "year!=2022",
- "api_calls_quota": {
- "unit": "month",
- "limit": 12000
}
}
}Dataset attachments are files that are exposed along with a dataset. These files help make sense of the data.
| uid | string Unique identifier for the file |
| filename required | string |
| mimetype | string or null |
| created_at | string <date-time> |
{- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}List all attachments to a dataset.
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}Create a dataset attachment
| dataset_uid required | string Example: da_qf2hyt |
| file required | string <binary> |
{- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}Retrieve a dataset attachment
| dataset_uid required | string Example: da_qf2hyt |
| attachment_uid required | string Example: at_qf2hyt |
{- "uid": "fromages.csv",
- "filename": "fromages.csv",
- "mimetype": "text/csv",
- "created_at": "2019-08-24T14:15:22Z"
}Download the dataset attachment file
| dataset_uid required | string Example: da_qf2hyt |
| attachment_uid required | string Example: at_qf2hyt |
{- "error_code": "not_found",
- "message": "Not found."
}Dataset alternative exports are custom dataset exports made outside the platform but available for end users to download like a normal export in the export menu.
Alternative exports are useful to expose exports in formats not supported by the platform, or in a specific geographic coordinate system. Alternative exports come in two types:
Uploaded File: This type of alternative export enables publishers to upload their own file one the platform. Since uploaded file alternative exports are static files instead of a dynamic exports, they tend to be very fast to download for end users and can be useful to offer a very large dataset export.
URL: This type allows publishers to provide a URL pointing to an external file that can be hosted outside the platform.
| uid | string Unique identifier for the alternative export |
| title required | string non-empty |
| description | string |
| mimetype | string |
| type required | string |
| created_at | string <date-time> |
| updated_at | string <date-time> |
| filename | string |
{- "uid": "ae_mm8lbn",
- "title": "Alternative export title",
- "description": "Alternative export description",
- "mimetype": "text/csv",
- "type": "uploaded_file",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "filename": "fromages.csv"
}List dataset alternative exports
| dataset_uid required | string Example: da_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "ae_mm8lbn",
- "title": "Alternative export title",
- "description": "Alternative export description",
- "mimetype": "text/csv",
- "type": "url",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Create a dataset alternative export
| dataset_uid required | string Example: da_qf2hyt |
| title required | string non-empty |
| type required | string Value: "uploaded_file" |
| file required | string <binary> |
| description | string |
{- "uid": "ae_mm8lbn",
- "title": "Alternative export title",
- "description": "Alternative export description",
- "mimetype": "text/csv",
- "type": "uploaded_file",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "filename": "fromages.csv"
}Retrieve a dataset alternative export
| dataset_uid required | string Example: da_qf2hyt |
| export_uid required | string Example: ae_qf2hyt |
{- "uid": "ae_mm8lbn",
- "title": "Alternative export title",
- "description": "Alternative export description",
- "mimetype": "text/csv",
- "type": "uploaded_file",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "filename": "fromages.csv"
}Update a dataset alternative export
| dataset_uid required | string Example: da_qf2hyt |
| export_uid required | string Example: ae_qf2hyt |
| title required | string non-empty |
| type required | string Value: "uploaded_file" |
| description | string |
{- "title": "string",
- "type": "uploaded_file",
- "description": "string"
}{- "uid": "ae_mm8lbn",
- "title": "Alternative export title",
- "description": "Alternative export description",
- "mimetype": "text/csv",
- "type": "uploaded_file",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "filename": "fromages.csv"
}Download the uploaded file alternative export or be redirected to the URL alternative export.
| dataset_uid required | string Example: da_qf2hyt |
| export_uid required | string Example: ae_qf2hyt |
{- "error_code": "not_found",
- "message": "Not found."
}Asset translations is a dictionary that stores terms localized into the languages supported by the domain.
When an asset is published, all internationalized (i18n) fields such as translatable metadata and schema information are enriched with their corresponding translations from this dictionary.
Retrieves the translation dictionary for a dataset
| dataset_uid required | string Example: da_qf2hyt |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}Updates the translation dictionary for a dataset
| dataset_uid required | string Example: da_qf2hyt |
additional property | object The translations for a specific key |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}Harvesters provide a way for administrators to create and update an important number of datasets by importing them from an external source such as a CSW catalog or an ArcGIS service, among many others. Your user and your API key need the permissions create_dataset, edit_dataset and publish_dataset.
Through the Automation API, it is possible to:
| uid | string non-empty |
| type required | string non-empty |
| name required | string non-empty |
| status | string Enum: "idle" "queued" "aborting" "processing" "deleting" "new" |
| version | integer >= 1 Default: 1 |
| restrict_datasets_visibility | boolean If the harvested datasets should be configured as private. By default, it has the same value as the domain configuration "Restrict new datasets by default" |
| delete_missing_datasets | boolean Default: false If the source datasets are deleted on the harvested portal, delete them on this Huwise portal too |
object Allow you to override some metadata in every harvested dataset | |
| remote_datasets_count | integer or null How many datasets have been found on the remote catalog |
| harvested_datasets_count | integer or null How many datasets have been harvested in the current or last run |
| published_datasets_count | integer How many harvested datasets are published |
| attached_datasets_count | integer How many datasets in your Huwise portal have been created by this harvester |
| has_error | boolean If the last harvesting resulted in a critical error |
| resource_errors_count | integer >= 0 How many datasets on the remote catalog led to an error and couldn't be harvested |
| created_at | string <date-time> non-empty |
| updated_at | string <date-time> non-empty |
object (RelatedUserReadOnly) Short representation of a User with only its username | |
| last_started_at | string or null <date-time> non-empty The last time the harvester was started |
| last_success_at | string or null <date-time> non-empty The last time the harvesting has been succcesful |
| url required | string non-empty |
| download_resources | boolean (download_resources) If you want to download resources instead of attaching them via URL. |
| metadata_only | boolean (metadata_only) If you want to harvest the remote datasets metadata without their resources. |
{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}List the harvesters.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "harvester-uid",
- "type": "string",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z"
}
]
}Create a harvester.
| type required | string non-empty |
| name required | string non-empty |
| version | integer >= 1 Default: 1 |
| restrict_datasets_visibility | boolean If the harvested datasets should be configured as private. By default, it has the same value as the domain configuration "Restrict new datasets by default" |
| delete_missing_datasets | boolean Default: false If the source datasets are deleted on the harvested portal, delete them on this Huwise portal too |
object Allow you to override some metadata in every harvested dataset | |
| url required | string non-empty |
| download_resources | boolean (download_resources) If you want to download resources instead of attaching them via URL. |
| metadata_only | boolean (metadata_only) If you want to harvest the remote datasets metadata without their resources. |
{- "type": "arcgis",
- "name": "Harvester title",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "download_resources": false,
- "metadata_only": false
}{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}Retrieve a harvester.
| harvester_uid required | string Example: harvester_uid |
{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}Update a harvester.
| harvester_uid required | string Example: harvester_uid |
| type required | string non-empty |
| name required | string non-empty |
| version | integer >= 1 Default: 1 |
| restrict_datasets_visibility | boolean If the harvested datasets should be configured as private. By default, it has the same value as the domain configuration "Restrict new datasets by default" |
| delete_missing_datasets | boolean Default: false If the source datasets are deleted on the harvested portal, delete them on this Huwise portal too |
object Allow you to override some metadata in every harvested dataset | |
| url required | string non-empty |
| download_resources | boolean (download_resources) If you want to download resources instead of attaching them via URL. |
| metadata_only | boolean (metadata_only) If you want to harvest the remote datasets metadata without their resources. |
{- "type": "arcgis",
- "name": "Harvester title",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "download_resources": false,
- "metadata_only": false
}{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}Delete the harvester. If delete_attached_datasets=true, also delete all its attached datasets.
| harvester_uid required | string Example: harvester_uid |
| delete_attached_datasets required | boolean Control whether all attached datasets should be deleted with the harvester, or detached from it. |
""Abort the harvesting of a harvester.
| harvester_uid required | string Example: harvester_uid |
{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}Start a harvester.
| harvester_uid required | string Example: harvester_uid |
{- "uid": "harvester-uid",
- "type": "arcgis",
- "name": "Harvester title",
- "status": "idle",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "remote_datasets_count": 100,
- "harvested_datasets_count": 98,
- "published_datasets_count": 30,
- "attached_datasets_count": 98,
- "has_error": false,
- "resource_errors_count": 2,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "last_started_at": "2019-08-24T14:15:22Z",
- "last_success_at": "2019-08-24T14:15:22Z",
- "download_resources": false,
- "metadata_only": false
}List errors which occurred during the last or current harvesting.
| harvester_uid required | string Example: harvester_uid |
{- "harvester": "A fatal error occured. Please check the harvester configuration.",
- "resources": {
- "remote_resource_id": "Could not harvest the dataset."
}
}Preview the datasets which will be harvested.
| harvester_uid required | string Example: harvester_uid |
{- "total_count": 42,
- "results": [
- {
- "id": "georef-united-states-of-america-zc-point",
- "title": "US Zip Codes Points- United States of America",
- "description": "Contains most USPS zip codes (lat/long)."
}
]
}Preview the datasets which will be harvested with a given configuration. At the contrary of the preview endpoint which returns the results for the currently saved harvester, this endpoint allows to preview the results with a configuration change not yet saved. The given parameters will be merged with the saved harvester configuration.
| harvester_uid required | string Example: harvester_uid |
| type required | string non-empty |
| name required | string non-empty |
| version | integer >= 1 Default: 1 |
| restrict_datasets_visibility | boolean If the harvested datasets should be configured as private. By default, it has the same value as the domain configuration "Restrict new datasets by default" |
| delete_missing_datasets | boolean Default: false If the source datasets are deleted on the harvested portal, delete them on this Huwise portal too |
object Allow you to override some metadata in every harvested dataset | |
| url required | string non-empty |
| download_resources | boolean (download_resources) If you want to download resources instead of attaching them via URL. |
| metadata_only | boolean (metadata_only) If you want to harvest the remote datasets metadata without their resources. |
{- "type": "arcgis",
- "name": "Harvester title",
- "version": 1,
- "restrict_datasets_visibility": true,
- "delete_missing_datasets": false,
- "forced_metas": {
- "default": {
- "publisher": "Paris Open Data"
}
}, - "download_resources": false,
- "metadata_only": false
}{- "total_count": 42,
- "results": [
- {
- "id": "georef-united-states-of-america-zc-point",
- "title": "US Zip Codes Points- United States of America",
- "description": "Contains most USPS zip codes (lat/long)."
}
]
}| uid | string non-empty |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
| timezone required | string non-empty The schedule timezone |
{- "uid": "sc_qf2hyt",
- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}List harvester schedules.
| harvester_uid required | string Example: harvester_uid |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "sc_qf2hyt",
- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}
]
}Create a harvester schedule. A harvester can only have one schedule.
| harvester_uid required | string Example: harvester_uid |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
| timezone required | string non-empty The schedule timezone |
{- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}{- "uid": "sc_qf2hyt",
- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}Retrieve a harvester schedule.
| harvester_uid required | string Example: harvester_uid |
| schedule_uid required | string Example: harvester_uid |
{- "uid": "sc_qf2hyt",
- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}Update a harvester schedule.
| harvester_uid required | string Example: harvester_uid |
| schedule_uid required | string Example: harvester_uid |
| cron_schedule required | string non-empty The schedule using the unix-cron string format |
| timezone required | string non-empty The schedule timezone |
{- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}{- "uid": "sc_qf2hyt",
- "cron_schedule": "1 30 * * *",
- "timezone": "Europe/Berlin"
}A user is a person who authentifies themself to utilize the platform.
Most of the times, users are invited on a domain via an e-mail:
if the user doesn't have an Huwise account, the e-mail provides them a link to create their account and choose a password,
this invitation links the new user or existing user to this domain, allowing domain administrators to grant them permissions to perform specific actions.
In other words, user accounts are shared between all Huwise domains, but a user must be linked to a specific domain via an invitation before being granted specific permissions on this domain.
Through the Automation API, it is possible to:
| username | string The user's username |
| display_name | string Simplified version of the username |
| first_name | string The user's first name |
| last_name | string The user's last name |
| is_active | boolean is |
| email required | string The user's e-mail address |
| is_ods | boolean is |
| account_type | string Enum: "global" "linked" "local" The user's account type. |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this user |
| joined_at | string <date-time> The date when the user joined the domain |
| last_seen_at | string <date-time> The date when the user used their account for the last time |
| last_login_at | string <date-time> |
string or null The date when the user permissions will expire | |
object (ExploreLimits) An object holding the user's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the user's limits on this domain |
| gravatar_url | string |
Array of objects (User group schema) A list of groups the user belongs to | |
Array of objects The list of authentification providers type for this user. |
{- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}List users
| search | string Example: search=alice full-text search among username, first name, last name and email |
| sort | Array of strings Items Enum: "username" "first_name" "last_name" "last_seen_at" Example: sort=username,first_name sort results according to username, first name or last_name |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" Example: permissions=edit_dataset&permissions=create_dataset filter according to permissions granted directly to the users |
| all_permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" Example: all_permissions=edit_dataset&all_permissions=create_dataset filter according to permissions, whether granted directly or via a group |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
]
}Retrieve user
| username required | string Example: louise.data |
| expand | string Example: expand=groups The list of fields to expand. |
{- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}Updates a user properties
| username required | string Example: louise.data |
| username | string The user's username |
| first_name | string The user's first name |
| last_name | string The user's last name |
| email required | string The user's e-mail address |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this user |
object (ExploreLimits) An object holding the user's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the user's limits on this domain |
Array of objects (User group schema) A list of groups the user belongs to |
{- "username": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "email": "contact@email.com",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "groups": [
- {
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { }
}
]
}{- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}Removes the requested user from the domain. If the user is the only domain administrator left, the call will fail and an error specifying that the removal of the only domain administrator is not allowed will be returned.
| username required | string Example: louise.data |
""| subdomains | string Subdomains to include in the CSV (requires the permission to export subdomains) |
| delimiter | string = 1 characters Default: "," Example: delimiter=; Field separator |
username,last_name,first_name,email,date_joined,last_seen,groups,permissions louise.data,,,contact@mail.com,2022-08-19 11:43:58+00:00,2023-04-24 12:16:34.099404+00:00,Domain administrators;Data publishers,create_dataset;edit_dataset;explore_restricted_dataset;manage_dataset;publish_dataset
This bulk endpoint creates an account for each of the given users and sends them an email so that they can log in. Each item in the payload must contain at least an email address, and may contain additional fields, such as groups and permissions. Returned body is an object in which each key is the number of the requested user in the payload ("0" = first user) and value contains a status_code ("success" or "error") and either "data" corresponding to the user or "error" describing the error.
| username | string The user's username |
| first_name | string The user's first name |
| last_name | string The user's last name |
| email required | string The user's e-mail address |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this user |
object (ExploreLimits) An object holding the user's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the user's limits on this domain |
Array of objects (User group schema) A list of groups the user belongs to |
[- {
- "username": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "email": "contact@email.com",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "groups": [
- {
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { }
}
]
}
]{- "01": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}, - "02": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}
}This bulk endpoint creates an account for each of the given users using the given identity provider. Each item in the payload must contain at least an identity provider, and may contain additional fields, such as groups and permissions. Returned body is an object in which each key is the number of the requested user in the payload ("0" = first user) and value contains a status_code ("success" or "error") and either "data" corresponding to the user or "error" describing the error.
| username | string The user's username |
| first_name | string The user's first name |
| last_name | string The user's last name |
| email required | string The user's e-mail address |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this user |
object (ExploreLimits) An object holding the user's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the user's limits on this domain |
Array of objects (User group schema) A list of groups the user belongs to | |
required | object |
| identity_provider_attributes | object |
{- "username": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "email": "contact@email.com",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "groups": [
- {
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { }
}
], - "identity_provider": {
- "uid": "huwise"
}, - "identity_provider_attributes": { }
}{- "01": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}, - "02": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}
}A group is an entity comprising several users. When users are added to a group, they benefit from the permissions, quotas and limits of this group.
Through the Automation API, the following can be performed on the current domain:
| uid required | string The group identifier |
| title required | string or null The group title |
| description | string The group description |
| user_count | number The count of users in the group |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to the members of this group |
object (ExploreLimits) An object holding the group's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the group's limits on this domain |
| created_at | string <date-time> |
| updated_at | string <date-time> |
object (RelatedUserReadOnly) Short representation of a User with only its username | |
object (RelatedUserReadOnly) Short representation of a User with only its username |
{- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| search | string full-text search among |
| sort | string Default: "updated_at" Enum: "created_at" "updated_at" "created_by__username" "updated_by__username" "user_count" "group__title" sort results with respect to the specified properties. |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" filter groups according to the specified list of permissions |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
]
}| title required | string or null The group title |
| description | string The group description |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to the members of this group |
object (ExploreLimits) An object holding the group's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the group's limits on this domain |
{- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { }
}{- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}| group_uid required | string Example: group_identifier |
{- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}| group_uid required | string Example: group_identifier |
| title required | string or null The group title |
| description | string The group description |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to the members of this group |
object (ExploreLimits) An object holding the group's quotas on this domain | |
| management_limits | object (ManagementLimits) Deprecated An object holding the group's limits on this domain |
{- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { }
}{- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}| group_uid required | string Example: group_identifier |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
]
}| group_uid required | string Example: group_identifier |
| username | string |
{- "username": "louise.data"
}{- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}| group_uid required | string Example: group_identifier |
| username | string |
[- {
- "username": "louise.data"
}
]{- "01": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}, - "02": {
- "status_code": "success",
- "data": {
- "username": "louise.data",
- "display_name": "louise.data",
- "first_name": "Louise",
- "last_name": "Data",
- "is_active": true,
- "email": "contact@email.com",
- "is_ods": false,
- "account_type": "global",
- "permissions": [
- "explore_restricted_dataset",
- "edit_domain"
], - "joined_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "last_login_at": "2019-08-24T14:15:22Z",
- "expires_at": null,
- "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "gravatar_url": "//www.gravatar.com/avatar/6dde1de523fc80569f3dd80548e3eb9c?d=mm&s=80",
- "groups": [
- {
- "uid": "content_designers",
- "title": "Content Designers",
- "description": "This wonderful group is for designers only.",
- "user_count": 42,
- "permissions": [
- "explore_restricted_dataset"
], - "explore_limits": {
- "api_calls": {
- "limit": 2000,
- "unit": "day"
}
}, - "management_limits": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}
}
], - "identity_providers": [
- {
- "uid": "huwise"
}
]
}
}
}API keys are randomly generated passwords that can be used as an authentication method to access a protected API endpoint as an authorized user.
Through the Automation API, it is possible to list, create, lookup, update and delete API keys for one's own user.
| uid | string |
| label | string |
| key | string |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this API Key |
| created_at | string <date-time> |
object (RelatedUserReadOnly) Short representation of a User with only its username | |
object | |
| is_revoked | boolean |
{- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}List API keys
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}
]
}Create an API key
| label | string |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this API Key |
{- "label": "My API Key",
- "permissions": [
- "explore_restricted_dataset"
]
}{- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}Retrieve an API key
| apikey_uid required | string Example: ak_qf2hyt |
| expand | string Value: "user" The list of fields to expand. |
{- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}Update an API key
| apikey_uid required | string Example: ak_qf2hyt |
| label | string |
| permissions | Array of strings (Permission) Items Enum: "edit_domain" "create_page" "edit_page" "manage_page" "explore_restricted_page" "create_dataset" "edit_dataset" "publish_dataset" "manage_dataset" "explore_restricted_dataset" "edit_reuse" "manage_subdomains" "explore_monitoring" "edit_theme" "edit_form" "submit_private_form" "create_external_asset" "edit_external_asset" "explore_restricted_external_asset" "manage_glossary" "manage_showcase_requests" A list of permissions granted to this API Key |
{- "label": "My API Key",
- "permissions": [
- "explore_restricted_dataset"
]
}{- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}Revoke an API key so that it is no longer valid. The reason for revocation can be provided.
| apikey_uid required | string Example: ak_qf2hyt |
| reason | string |
{- "reason": "Explanation why the API Key has been revoked"
}{- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}Domain administrators can search for a specific API key, revoked or active.
| key | string |
{- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455"
}{- "found": true,
- "result": {
- "uid": "ak_qf2hyt",
- "label": "My API Key",
- "key": "63d534ca0c1806024215cfd99dba4ea188f55d4f1b53ac0b6eceb455",
- "permissions": [
- "explore_restricted_dataset"
], - "created_at": "2019-08-24T14:15:22Z",
- "user": {
- "username": "louise.data"
}, - "revocation_status": {
- "revoked_at": "2019-08-24T14:15:22Z",
- "revocation_reason": "Explanation why the API Key has been revoked"
}, - "is_revoked": true
}
}| uid | string non-empty |
| type required | string non-empty |
| is_reusable | boolean Defines if the connection can be reused across multiple datasets |
| can_reuse | boolean Defines if the current user has the permission to reuse this connection |
| can_manage | boolean Defines if the current user has the permission to manage this connection |
| dataset_count | number Number of datasets using this connection |
| user_count | number Number of users with explicit access to this connection |
| group_count | number Number of user groups with explicit access to this connection |
| created_at | string <date-time> non-empty |
| updated_at | string <date-time> non-empty |
| url required | string non-empty |
Array of objects | |
HTTPAuth (object) or null |
{- "uid": "co_qf2hyt",
- "type": "http",
- "is_reusable": true,
- "can_reuse": true,
- "can_manage": true,
- "dataset_count": 59,
- "user_count": 7,
- "group_count": 4,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}List the datasources connections
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| sort | string Default: "created_at" Enum: "created_at" "updated_at" "type" "dataset_count" Sort results with respect to the specified properties. You can prefix the property with the minus sign ( |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "co_qf2hyt",
- "type": "string",
- "is_reusable": true,
- "can_reuse": true,
- "can_manage": true,
- "dataset_count": 59,
- "user_count": 7,
- "group_count": 4,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Create a datasource connection
| type required | string non-empty |
| is_reusable | boolean Defines if the connection can be reused across multiple datasets |
| url required | string non-empty |
Array of objects | |
HTTPAuth (object) or null |
{- "type": "http",
- "is_reusable": true,
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}{- "uid": "co_qf2hyt",
- "type": "http",
- "is_reusable": true,
- "can_reuse": true,
- "can_manage": true,
- "dataset_count": 59,
- "user_count": 7,
- "group_count": 4,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}Retrieve a datasource connection
| connection_uid required | string Example: co_qf2hyt |
{- "uid": "co_qf2hyt",
- "type": "http",
- "is_reusable": true,
- "can_reuse": true,
- "can_manage": true,
- "dataset_count": 59,
- "user_count": 7,
- "group_count": 4,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}Update a datasource connection. Datasets using this connection will be impacted, but won't be automatically republished.
| connection_uid required | string Example: co_qf2hyt |
| type required | string non-empty |
| is_reusable | boolean Defines if the connection can be reused across multiple datasets |
| url required | string non-empty |
Array of objects | |
HTTPAuth (object) or null |
{- "type": "http",
- "is_reusable": true,
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}{- "uid": "co_qf2hyt",
- "type": "http",
- "is_reusable": true,
- "can_reuse": true,
- "can_manage": true,
- "dataset_count": 59,
- "user_count": 7,
- "group_count": 4,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "headers": [
- {
- "name": "header-name",
- "value": "header-value"
}
], - "auth": {
- "type": "basic_auth",
- "username": "my_username",
- "password": "my_password"
}
}List the datasource connection user-level security rulesets
| connection_uid required | string Example: co_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a datasource connection user-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a datasource connection user-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
| username required | string Example: louise.data |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Update a datasource connection user-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
| username required | string Example: louise.data |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}List the datasource connection group-level security rulesets
| connection_uid required | string Example: co_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a datasource connection group-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a datasource connection group-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
| group_uid required | string Example: group_identifier |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Update a datasource connection group-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
| group_uid required | string Example: group_identifier |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Delete a datasource connection group-level security ruleset
| connection_uid required | string Example: co_qf2hyt |
| group_uid required | string Example: group_identifier |
""Studio is the new no-code editor that is designed to help you do just that: create and edit pages, built on your data, in only minutes.
Through the Automation API, it is possible to manage studio pages as well as to configure their visiblity on the portal.
| uid | string non-empty Unique identifier of the page |
| slug | string non-empty Human-readable identifier used to generate the page URL |
| public | boolean Default: false Defines if the page is visible to a few specific users, or every user who can explore the portal |
Array of objects | |
| first_published_at | string <date-time> non-empty Date when the page was first published |
| created_at | string <date-time> non-empty Date when the page was created |
| updated_at | string <date-time> non-empty Date when the page was last edited |
object (RelatedUserReadOnly) The user who created the page |
{- "uid": "sp_qf2hyt",
- "slug": "my-page",
- "public": false,
- "contents": [
- {
- "version_name": "draft",
- "title": "My Page",
- "description": "A page saying hello",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}
], - "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}
}List studio pages
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "sp_qf2hyt",
- "slug": "my-page",
- "public": false,
- "contents": [
- {
- "version_name": "draft",
- "title": "My Page",
- "description": "A page saying hello",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}
], - "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}
}
]
}Create a studio page
| slug | string non-empty Human-readable identifier used to generate the page URL |
| public | boolean Default: false Defines if the page is visible to a few specific users, or every user who can explore the portal |
{- "slug": "my-page",
- "public": false
}{- "uid": "sp_qf2hyt",
- "slug": "my-page",
- "public": false,
- "contents": [
- {
- "version_name": "draft",
- "title": "My Page",
- "description": "A page saying hello",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}
], - "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}
}Retrieve a studio page
| studio_page_uid required | string Example: sp_qf2hyt |
{- "uid": "sp_qf2hyt",
- "slug": "my-page",
- "public": false,
- "contents": [
- {
- "version_name": "draft",
- "title": "My Page",
- "description": "A page saying hello",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}
], - "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}
}Update a studio page
| studio_page_uid required | string Example: sp_qf2hyt |
| slug | string non-empty Human-readable identifier used to generate the page URL |
| public | boolean Default: false Defines if the page is visible to a few specific users, or every user who can explore the portal |
{- "slug": "my-page",
- "public": false
}{- "uid": "sp_qf2hyt",
- "slug": "my-page",
- "public": false,
- "contents": [
- {
- "version_name": "draft",
- "title": "My Page",
- "description": "A page saying hello",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}
], - "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}
}Publish a studio page. The page content metadata must have a title set (via the content metadata endpoint) before publishing.
| studio_page_uid required | string Example: sp_qf2hyt |
{- "detail": "ok"
}Retrieve the blocks, layouts, data-providers and filters of a studio page content version
| studio_page_uid required | string Example: sp_qf2hyt |
| version_name required | string Example: draft |
{- "version_name": "string",
- "blocks": { },
- "layouts": { },
- "data_providers": { },
- "filters": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}Update the draft blocks, layouts, data-providers and filters of a studio page content version
| studio_page_uid required | string Example: sp_qf2hyt |
| version_name required | string Example: draft |
object Page blocks keyed by block UID | |
object Page layouts configuration | |
object Page data providers configuration | |
object Page filters configuration |
{- "blocks": { },
- "layouts": { },
- "data_providers": { },
- "filters": { }
}{- "version_name": "string",
- "blocks": { },
- "layouts": { },
- "data_providers": { },
- "filters": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}
}Retrieve the metadata for a studio page content version.
The response is a two-level object: { template_name: { field_name: { value, remote_value, override_remote_value } } }.
asset template fields:
title — Title of the page (string)description — Description of the page (string, may be HTML)The exact list of templates and fields available on a given portal can be retrieved using the list-metadata-templates and list-metadata-template-fields operations.
| studio_page_uid required | string Example: sp_qf2hyt |
| version_name required | string Example: draft |
{- "asset": {
- "title": {
- "value": "My Studio Page",
- "remote_value": "My Studio Page",
- "override_remote_value": false
}, - "description": {
- "value": "<p>A page describing something interesting.</p>",
- "remote_value": "",
- "override_remote_value": false
}
}
}Update the metadata for a studio page content version. asset.title must be set before the page can be published.
asset template fields:
title — Title of the page (string)description — Description of the page (string, may be HTML)The exact list of templates and fields available on a given portal can be retrieved using the list-metadata-templates and list-metadata-template-fields operations.
| studio_page_uid required | string Example: sp_qf2hyt |
| version_name required | string Example: draft |
| property name* additional property | any |
{ }{ }The page security is the set of rules that defines who (which users / groups) can explore or edit a given studio page.
It is defined through 2 variables:
public attribute in the page object, which defines if a page is visible to every user who can explore the portalIf the page isn't set as public, then the page will only appear in the portal for users who have a ruleset declared for them, either directly or through a group. Other users won't have any access to the page.
Rulesets can also give users permission to edit the page.
List the studio page group level security rulesets
| studio_page_uid required | string Example: sp_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a studio page group level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a studio page group level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
| group_uid required | string Example: group_identifier |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Update a studio page group level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
| group_uid required | string Example: group_identifier |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}List the studio page user-level security rulesets
| studio_page_uid required | string Example: sp_qf2hyt |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a studio page user-level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a studio page user-level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
| username required | string Example: louise.data |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Update a studio page user-level security ruleset
| studio_page_uid required | string Example: sp_qf2hyt |
| username required | string Example: louise.data |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Asset translations is a dictionary that stores terms localized into the languages supported by the domain.
When an asset is published, all internationalized (i18n) fields such as translatable metadata and schema information are enriched with their corresponding translations from this dictionary.
Retrieves the translation dictionary for a studio page
| studio_page_uid required | string Example: sp_qf2hyt |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}Updates the translation dictionary for a studio page
| studio_page_uid required | string Example: sp_qf2hyt |
additional property | object The translations for a specific key |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}Code editor pages can be used to write editorial content directly on the platform, build advanced dashboards and organize data portals.
Through the Automation API, it is possible to list, create, edit and delete code editor pages as well as to configure pages visiblity on the portal.
| slug | string Human-readable identifier used to generate the page URL |
| description | string Page description |
required | object Internationalized page content |
| template | string The HTML template used by this page |
| has_subdomain_copies | boolean Inform if the page been distributed to any subdomain |
| is_pushed_by_parent | boolean Inform if the page has been distributed by a parent domain |
| is_restricted | boolean Defines if the page is visible to a few specific users, or every user who can explore the portal |
| is_published | boolean Defines if the page is published or unpublished. An unpublished page isn't included in the license quota. |
object (RelatedUserReadOnly) The user who created the page | |
object (RelatedUserReadOnly) The user who last modified the page | |
| updated_at | string <date-time> Date when the page was last edited |
| created_at | string <date-time> Date when the page was created |
| last_published_at | string <date-time> Date when the page was last published |
{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "has_subdomain_copies": false,
- "is_pushed_by_parent": false,
- "is_restricted": true,
- "is_published": true,
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z"
}List code editor pages
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "has_subdomain_copies": false,
- "is_pushed_by_parent": false,
- "is_restricted": true,
- "is_published": true,
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z"
}
]
}Create a code editor page
| slug | string Human-readable identifier used to generate the page URL |
| description | string Page description |
required | object Internationalized page content |
| template | string The HTML template used by this page |
| is_restricted | boolean Defines if the page is visible to a few specific users, or every user who can explore the portal |
| is_published | boolean Defines if the page is published or unpublished. An unpublished page isn't included in the license quota. |
{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "is_restricted": true,
- "is_published": true
}{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "has_subdomain_copies": false,
- "is_pushed_by_parent": false,
- "is_restricted": true,
- "is_published": true,
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z"
}Delete all code editor pages matching the search defined by the search and slug query parameters.
| slug | Array of strings Example: slug=slug1&slug=slug2 List of page slug to be removed. |
| search | string Example: search=My Page Title A search term to delete matching pages. |
[- "slug1",
- "slug2"
]Retrieve a code editor page
| page_slug required | string Example: page_slug |
{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "has_subdomain_copies": false,
- "is_pushed_by_parent": false,
- "is_restricted": true,
- "is_published": true,
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z"
}Update a code editor page
| page_slug required | string Example: page_slug |
| slug | string Human-readable identifier used to generate the page URL |
| description | string Page description |
required | object Internationalized page content |
| template | string The HTML template used by this page |
| is_restricted | boolean Defines if the page is visible to a few specific users, or every user who can explore the portal |
| is_published | boolean Defines if the page is published or unpublished. An unpublished page isn't included in the license quota. |
{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "is_restricted": true,
- "is_published": true
}{- "slug": "hello_world",
- "description": "A page saying hello",
- "content": {
- "html": {
- "en": "<p>\n Hello world\n</p>"
}, - "css": {
- "en": ""
}
}, - "template": "custom.html",
- "has_subdomain_copies": false,
- "is_pushed_by_parent": false,
- "is_restricted": true,
- "is_published": true,
- "created_by": {
- "username": "louise.data"
}, - "updated_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z"
}Retrieve the metadata for a code editor page.
The response is a two-level object: { template_name: { field_name: { value, remote_value, override_remote_value } } }.
asset template fields:
title — Title of the page (string)description — Description of the page (string)The exact list of templates and fields available on a given portal can be retrieved using the list-metadata-templates and list-metadata-template-fields operations.
| page_slug required | string Example: page_slug |
{- "asset": {
- "title": {
- "value": "My Code Editor Page",
- "remote_value": "My Code Editor Page",
- "override_remote_value": false
}, - "description": {
- "value": "A page with custom HTML and CSS.",
- "remote_value": "",
- "override_remote_value": false
}
}
}Update the metadata for a code editor page.
asset template fields:
title — Title of the page (string)description — Description of the page (string)The exact list of templates and fields available on a given portal can be retrieved using the list-metadata-templates and list-metadata-template-fields operations.
| page_slug required | string Example: page_slug |
| property name* additional property | any |
{ }{ }The page security is the set of rules that defines who (which users / groups) can explore or edit a given code editor page.
It is defined through 2 variables:
is_restricted attribute in the page object, which defines if a page is visible to every user who can explore the portalIf the page is set as restricted, then the page will only appear in the portal for users who have a ruleset declared for them, either directly or through a group. Other users won't have any access to the page.
Rulesets can also give users permission to edit the page and manage its security.
List the code editor page group level security rulesets
| page_slug required | string Example: page_slug |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a code editor page group level security ruleset
| page_slug required | string Example: page_slug |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a code editor page group level security ruleset
| page_slug required | string Example: page_slug |
| group_uid required | string Example: group_identifier |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Update a code editor page group level security ruleset
| page_slug required | string Example: page_slug |
| group_uid required | string Example: group_identifier |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}List the code editor page user-level permissions
| page_slug required | string Example: page_slug |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a code editor page user-level security ruleset
| page_slug required | string Example: page_slug |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a code editor page user-level security ruleset
| page_slug required | string Example: page_slug |
| username required | string Example: louise.data |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Update a code editor page user-level security ruleset
| page_slug required | string Example: page_slug |
| username required | string Example: louise.data |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Asset translations is a dictionary that stores terms localized into the languages supported by the domain.
When an asset is published, all internationalized (i18n) fields such as translatable metadata and schema information are enriched with their corresponding translations from this dictionary.
Retrieves the translation dictionary for a code editor page
| page_slug required | string Example: page_slug |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}Updates the translation dictionary for a code editor page
| page_slug required | string Example: page_slug |
additional property | object The translations for a specific key |
{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}{- "Climate Data Analysis 2023": {
- "fr": "Analyse des données climatiques 2023",
- "es": "Análisis de datos climáticos 2023"
}, - "Temperature measurements from global weather stations": {
- "fr": "Mesures de température des stations météorologiques mondiales"
}
}A form is a structured template used to collect data from users in a consistent and governed way across the portal.
A form is composed of:
Through the Automation API, it is possible to:
| uid | string non-empty Internal identifier of the form |
| slug required | string or null Public slug used to reference the form (e.g. in the portal) |
| title | string Human-readable form title |
| access_type required | string non-empty Enum: "authenticated" "restricted" "open" Access mode of the form. "open" means the form can be submitted without authentication or API key, "authenticated" requires logged users, "restricted" means the forms is available for specific users/groups or your portal. |
| has_published_version | boolean Default: false Whether the form has at least one published version |
| enable_moderation | boolean Default: false Whether submissions must be moderated before validation |
| enable_notifications_on_submission | boolean Default: false Whether notifications are sent on each new submission |
| enable_frontoffice_submission_edition | boolean Default: false Whether submitters are allowed to edit their submissions |
| first_published_at | string <date-time> Date when the formm was first published |
| created_at | string <date-time> Date when the form was created |
| updated_at | string <date-time> Date when the form was last edited |
object (RelatedUserReadOnly) The user who updated the form | |
object (RelatedUserReadOnly) The user who created the form | |
| published_at | string <date-time> Date of the last publication |
object (RelatedUserReadOnly) The user who published the form | |
object | |
| nb_submissions | integer Number of submissions associated to this form |
{- "uid": "fm_w4d2pu",
- "slug": "my-form",
- "title": "string",
- "access_type": "authenticated",
- "has_published_version": false,
- "enable_moderation": false,
- "enable_notifications_on_submission": false,
- "enable_frontoffice_submission_edition": false,
- "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}, - "published_at": "2019-08-24T14:15:22Z",
- "published_by": {
- "username": "louise.data"
}, - "errors": {
- "published": [
- null
], - "draft": [
- null
]
}, - "nb_submissions": 0
}Returns a paginated list of forms available for the current domain.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| status | string Default: "all" Example: status=published Filter forms by status. |
| search | string Full-text search |
| sort | string Example: sort=-updated_at Sort expression, usually a field name; prefix with "-" for descending order (e.g. "-updated_at"). |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "fm_w4d2pu",
- "slug": "my-form",
- "title": "string",
- "access_type": "authenticated",
- "has_published_version": false,
- "enable_moderation": false,
- "enable_notifications_on_submission": false,
- "enable_frontoffice_submission_edition": false,
- "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}, - "published_at": "2019-08-24T14:15:22Z",
- "published_by": {
- "username": "louise.data"
}, - "errors": {
- "published": [
- null
], - "draft": [
- null
]
}, - "nb_submissions": 0
}
]
}Creates a new form with basic configuration.
| slug required | string or null Public slug used to reference the form (e.g. in the portal) |
| title | string Human-readable form title |
| access_type required | string non-empty Enum: "authenticated" "restricted" "open" Access mode of the form. "open" means the form can be submitted without authentication or API key, "authenticated" requires logged users, "restricted" means the forms is available for specific users/groups or your portal. |
| has_published_version | boolean Default: false Whether the form has at least one published version |
| enable_moderation | boolean Default: false Whether submissions must be moderated before validation |
| enable_notifications_on_submission | boolean Default: false Whether notifications are sent on each new submission |
| enable_frontoffice_submission_edition | boolean Default: false Whether submitters are allowed to edit their submissions |
{- "slug": "my-form",
- "title": "string",
- "access_type": "authenticated",
- "has_published_version": false,
- "enable_moderation": false,
- "enable_notifications_on_submission": false,
- "enable_frontoffice_submission_edition": false
}{- "uid": "fm_w4d2pu",
- "slug": "my-form",
- "title": "string",
- "access_type": "authenticated",
- "has_published_version": false,
- "enable_moderation": false,
- "enable_notifications_on_submission": false,
- "enable_frontoffice_submission_edition": false,
- "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}, - "published_at": "2019-08-24T14:15:22Z",
- "published_by": {
- "username": "louise.data"
}, - "errors": {
- "published": [
- null
], - "draft": [
- null
]
}, - "nb_submissions": 0
}Retrieve a form
| form_uid required | string Example: fm_wztr5n |
{- "uid": "fm_w4d2pu",
- "slug": "my-form",
- "title": "string",
- "access_type": "authenticated",
- "has_published_version": false,
- "enable_moderation": false,
- "enable_notifications_on_submission": false,
- "enable_frontoffice_submission_edition": false,
- "first_published_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}, - "published_at": "2019-08-24T14:15:22Z",
- "published_by": {
- "username": "louise.data"
}, - "errors": {
- "published": [
- null
], - "draft": [
- null
]
}, - "nb_submissions": 0
}Form content represents the full structure and configuration of a form. It includes all elements needed to define the user-facing questionnaire.
A form content consists of:
Form content exists only in drafts and can be edited until the draft is published. When published, it defines the version of the form that users will fill in the portal.
| default_language required | string Default language used for the form content |
| other_languages | Array of strings Additional languages enabled for the form |
required | object (Ending) Configuration of the form ending behavior. |
object Form title, keyed by language code (e.g. "en") | |
object Form description, keyed by language code | |
| enable_recaptcha | boolean Whether a reCAPTCHA is enabled on the form |
| enable_notifications_on_submission | boolean Whether notifications are sent on submission |
Array of objects (ShowHideLogic) Rules defining dynamic show/hide behaviour for blocks | |
| additional_extractor_fields | Array of strings Additional metadata fields extracted from submissions |
required | Array of objects (Section) List of sections composing the form |
{- "default_language": "en",
- "other_languages": [
- "fr"
], - "ending": {
- "ending_type": "text",
- "ending_content": {
- "text": {
- "en": "### **Thank you** The form was submitted successfully"
}, - "url": {
- "property1": "string",
- "property2": "string"
}, - "page_url": {
- "property1": "string",
- "property2": "string"
}
}
}, - "title": {
- "en": "Cat Information Form"
}, - "description": {
- "en": "Tell us a bit about your cat"
}, - "enable_recaptcha": false,
- "enable_notifications_on_submission": false,
- "show_hide_logics": [
- {
- "target_uid": "block_mhab60jdvaupl",
- "target_type": "block",
- "operator": "and",
- "sources_and_conditions": [
- {
- "source_block_uid": "block_mhab2y4c4hsjp",
- "source_block_subfield": "email",
- "condition": {
- "condition_operator": "string_contains",
- "value": "@gmail.com"
}
}
], - "action": "hide"
}
], - "additional_extractor_fields": [
- "submitted_by",
- "submitted_at"
], - "sections": [
- {
- "uid": "section-MGGCEYZYNN18Z",
- "title": {
- "en": "Hello!",
- "fr": "Bonjour!"
}, - "description": {
- "en": "Basic information about your cat",
- "fr": "Informations générales sur votre chat"
}, - "blocks": [
- {
- "uid": "block_mggcfa4x3w07u",
- "technical_id": "text1",
- "type": "text",
- "label": {
- "en": "Name",
- "fr": "Nom"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": {
- "en": "Enter your cat's name",
- "fr": "Entrez le nom de votre chat"
}, - "is_unique_value": false,
- "max_length": 255
}, - {
- "uid": "block_mggcfrovq7p3i",
- "technical_id": "number",
- "type": "number",
- "label": {
- "en": "Age",
- "fr": "Âge"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": null,
- "is_unique_value": false,
- "input_type": "integer",
- "min_value": null,
- "max_value": null
}
]
}
]
}Returns a paginated list of drafts available of the form.
| form_uid required | string Example: fm_wztr5n |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "version": 1,
- "is_published": false,
- "is_draft": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "content": {
- "default_language": "en",
- "other_languages": [
- "fr"
], - "ending": {
- "ending_type": "text",
- "ending_content": {
- "text": {
- "en": "### **Thank you** The form was submitted successfully"
}, - "url": {
- "property1": "string",
- "property2": "string"
}, - "page_url": {
- "property1": "string",
- "property2": "string"
}
}
}, - "title": {
- "en": "Cat Information Form"
}, - "description": {
- "en": "Tell us a bit about your cat"
}, - "enable_recaptcha": false,
- "enable_notifications_on_submission": false,
- "show_hide_logics": [
- {
- "target_uid": "block_mhab60jdvaupl",
- "target_type": "block",
- "operator": "and",
- "sources_and_conditions": [
- {
- "source_block_uid": "block_mhab2y4c4hsjp",
- "source_block_subfield": "email",
- "condition": {
- "condition_operator": "string_contains",
- "value": "@gmail.com"
}
}
], - "action": "hide"
}
], - "additional_extractor_fields": [
- "submitted_by",
- "submitted_at"
], - "sections": [
- {
- "uid": "section-MGGCEYZYNN18Z",
- "title": {
- "en": "Hello!",
- "fr": "Bonjour!"
}, - "description": {
- "en": "Basic information about your cat",
- "fr": "Informations générales sur votre chat"
}, - "blocks": [
- {
- "uid": "block_mggcfa4x3w07u",
- "technical_id": "text1",
- "type": "text",
- "label": {
- "en": "Name",
- "fr": "Nom"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": {
- "en": "Enter your cat's name",
- "fr": "Entrez le nom de votre chat"
}, - "is_unique_value": false,
- "max_length": 255
}, - {
- "uid": "block_mggcfrovq7p3i",
- "technical_id": "number",
- "type": "number",
- "label": {
- "en": "Age",
- "fr": "Âge"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": null,
- "is_unique_value": false,
- "input_type": "integer",
- "min_value": null,
- "max_value": null
}
]
}
]
}
}
]
}Retrieve a specific draft version of a form by its version number.
| form_uid required | string Example: fm_wztr5n |
| version required | integer Draft version number |
{- "version": 1,
- "is_published": false,
- "is_draft": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "content": {
- "default_language": "en",
- "other_languages": [
- "fr"
], - "ending": {
- "ending_type": "text",
- "ending_content": {
- "text": {
- "en": "### **Thank you** The form was submitted successfully"
}, - "url": {
- "property1": "string",
- "property2": "string"
}, - "page_url": {
- "property1": "string",
- "property2": "string"
}
}
}, - "title": {
- "en": "Cat Information Form"
}, - "description": {
- "en": "Tell us a bit about your cat"
}, - "enable_recaptcha": false,
- "enable_notifications_on_submission": false,
- "show_hide_logics": [
- {
- "target_uid": "block_mhab60jdvaupl",
- "target_type": "block",
- "operator": "and",
- "sources_and_conditions": [
- {
- "source_block_uid": "block_mhab2y4c4hsjp",
- "source_block_subfield": "email",
- "condition": {
- "condition_operator": "string_contains",
- "value": "@gmail.com"
}
}
], - "action": "hide"
}
], - "additional_extractor_fields": [
- "submitted_by",
- "submitted_at"
], - "sections": [
- {
- "uid": "section-MGGCEYZYNN18Z",
- "title": {
- "en": "Hello!",
- "fr": "Bonjour!"
}, - "description": {
- "en": "Basic information about your cat",
- "fr": "Informations générales sur votre chat"
}, - "blocks": [
- {
- "uid": "block_mggcfa4x3w07u",
- "technical_id": "text1",
- "type": "text",
- "label": {
- "en": "Name",
- "fr": "Nom"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": {
- "en": "Enter your cat's name",
- "fr": "Entrez le nom de votre chat"
}, - "is_unique_value": false,
- "max_length": 255
}, - {
- "uid": "block_mggcfrovq7p3i",
- "technical_id": "number",
- "type": "number",
- "label": {
- "en": "Age",
- "fr": "Âge"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": null,
- "is_unique_value": false,
- "input_type": "integer",
- "min_value": null,
- "max_value": null
}
]
}
]
}
}Update a draft version with a new content
| form_uid required | string Example: fm_wztr5n |
| version required | integer Draft version number |
required | object (FormContent) Structure and content of the form, including sections, fields, ending screen and display logics. |
{- "content": {
- "default_language": "en",
- "other_languages": [
- "fr"
], - "ending": {
- "ending_type": "text",
- "ending_content": {
- "text": {
- "en": "### **Thank you** The form was submitted successfully"
}, - "url": {
- "property1": "string",
- "property2": "string"
}, - "page_url": {
- "property1": "string",
- "property2": "string"
}
}
}, - "title": {
- "en": "Cat Information Form"
}, - "description": {
- "en": "Tell us a bit about your cat"
}, - "enable_recaptcha": false,
- "enable_notifications_on_submission": false,
- "show_hide_logics": [
- {
- "target_uid": "block_mhab60jdvaupl",
- "target_type": "block",
- "operator": "and",
- "sources_and_conditions": [
- {
- "source_block_uid": "block_mhab2y4c4hsjp",
- "source_block_subfield": "email",
- "condition": {
- "condition_operator": "string_contains",
- "value": "@gmail.com"
}
}
], - "action": "hide"
}
], - "additional_extractor_fields": [
- "submitted_by",
- "submitted_at"
], - "sections": [
- {
- "uid": "section-MGGCEYZYNN18Z",
- "title": {
- "en": "Hello!",
- "fr": "Bonjour!"
}, - "description": {
- "en": "Basic information about your cat",
- "fr": "Informations générales sur votre chat"
}, - "blocks": [
- {
- "uid": "block_mggcfa4x3w07u",
- "technical_id": "text1",
- "type": "text",
- "label": {
- "en": "Name",
- "fr": "Nom"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": {
- "en": "Enter your cat's name",
- "fr": "Entrez le nom de votre chat"
}, - "is_unique_value": false,
- "max_length": 255
}, - {
- "uid": "block_mggcfrovq7p3i",
- "technical_id": "number",
- "type": "number",
- "label": {
- "en": "Age",
- "fr": "Âge"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": null,
- "is_unique_value": false,
- "input_type": "integer",
- "min_value": null,
- "max_value": null
}
]
}
]
}
}{- "version": 1,
- "is_published": false,
- "is_draft": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "content": {
- "default_language": "en",
- "other_languages": [
- "fr"
], - "ending": {
- "ending_type": "text",
- "ending_content": {
- "text": {
- "en": "### **Thank you** The form was submitted successfully"
}, - "url": {
- "property1": "string",
- "property2": "string"
}, - "page_url": {
- "property1": "string",
- "property2": "string"
}
}
}, - "title": {
- "en": "Cat Information Form"
}, - "description": {
- "en": "Tell us a bit about your cat"
}, - "enable_recaptcha": false,
- "enable_notifications_on_submission": false,
- "show_hide_logics": [
- {
- "target_uid": "block_mhab60jdvaupl",
- "target_type": "block",
- "operator": "and",
- "sources_and_conditions": [
- {
- "source_block_uid": "block_mhab2y4c4hsjp",
- "source_block_subfield": "email",
- "condition": {
- "condition_operator": "string_contains",
- "value": "@gmail.com"
}
}
], - "action": "hide"
}
], - "additional_extractor_fields": [
- "submitted_by",
- "submitted_at"
], - "sections": [
- {
- "uid": "section-MGGCEYZYNN18Z",
- "title": {
- "en": "Hello!",
- "fr": "Bonjour!"
}, - "description": {
- "en": "Basic information about your cat",
- "fr": "Informations générales sur votre chat"
}, - "blocks": [
- {
- "uid": "block_mggcfa4x3w07u",
- "technical_id": "text1",
- "type": "text",
- "label": {
- "en": "Name",
- "fr": "Nom"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": {
- "en": "Enter your cat's name",
- "fr": "Entrez le nom de votre chat"
}, - "is_unique_value": false,
- "max_length": 255
}, - {
- "uid": "block_mggcfrovq7p3i",
- "technical_id": "number",
- "type": "number",
- "label": {
- "en": "Age",
- "fr": "Âge"
}, - "help_text": null,
- "is_required": false,
- "tooltip": null,
- "is_invisible": false,
- "is_hidden": false,
- "placeholder": null,
- "is_unique_value": false,
- "input_type": "integer",
- "min_value": null,
- "max_value": null
}
]
}
]
}
}The form security defines who (which users or groups) can view, submit, or edit a given form in the catalog. It is defined through two elements:
Access type: A form defines its base visibility through the access_type property. Depending on its value, the form may be visible to every portal user or restricted to a defined subset.
Rulesets: Rulesets allow granting additional permissions to specific users or groups. They can extend access beyond the default restriction defined by access_type. They can also give users the ability to edit, review, or moderate submissions, depending on the form’s configuration.
List the form group level security rulesets
| form_uid required | string Example: fm_wztr5n |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a form group level security ruleset
| form_uid required | string Example: fm_wztr5n |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a form group level security ruleset
| form_uid required | string Example: fm_wztr5n |
| group_uid required | string Example: group_identifier |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}Update a form group level security ruleset
| form_uid required | string Example: fm_wztr5n |
| group_uid required | string Example: group_identifier |
object The group targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}{- "group": {
- "uid": "content_designers"
}, - "permissions": [
- "edit_dataset"
]
}List the form user-level security rulesets
| form_uid required | string Example: fm_wztr5n |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}
]
}Create a form user-level security ruleset
| form_uid required | string Example: fm_wztr5n |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Retrieve a form user-level security ruleset
| form_uid required | string Example: fm_wztr5n |
| username required | string Example: louise.data |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}Update a form user-level security ruleset
| form_uid required | string Example: fm_wztr5n |
| username required | string Example: louise.data |
object (RelatedUser) The user targeted by this ruleset. | |
| permissions | Array of strings (RulesetPermission) Items Enum: "explore_restricted_dataset" "explore_restricted_page" "edit_dataset" "publish_dataset" "manage_dataset" "manage_connection" "edit_page" "manage_page" "submit_private_form" "moderate_form" "edit_form" List of special permissions granted to the target. |
{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}{- "user": {
- "username": "louise.data"
}, - "permissions": [
- "edit_dataset"
]
}A form submission represents a single response provided by a user through a published form.
A submission contains:
enable_frontoffice_submission_edition is activated, allowing users to view their submitted data and submit a revision from the front office
Submissions are always tied to the specific published version of the form that was active at the time of submission.Add new submissions
To add new submissions, use the Portal API.
POST http://mydomain.huwise.com/api/portal/v1.0/forms/{slug}/submit/
No authentication needed if your form's access type is set to open
Use an API Key for forms with restricted access
Important: Use the form's slug (not the uid) in the endpoint URL.
The submission data should be sent as form data with a data parameter containing a JSON object. Structure your data using the technical IDs of each form block as keys:
{
"cat_name": "Rio",
"cat_age": 5,
"cat_breed": ["Siberian"],
"cat_rating": 5,
"contact": {
"email": "harry@cover.com"
},
"comments": null
}
The following is an example with cURL:
curl --location 'http://mydomain.huwise.com/api/portal/v1.0/forms/form-automation/submit/' \
--form 'data="{\"cat_name\":\"Rio\",\"cat_age\":5,\"cat_breed\":[\"Siberian\"],\"cat_rating\":5,\"contact\":{\"email\":\"harry@cover.com\"},\"comments\":null}"'
Notes:
data parameter is properly escaped when using cURLcontact) should follow the structure defined in your form schema| uid | string Unique identifier of the submission |
| lang | string Language of the form at the time the submission was filled, based on the form’s displayed language during submission. |
| created_at | string <date-time> Date the submission was created |
object (RelatedUserReadOnly) User who created the submission (if applicable) | |
| updated_at | string <date-time> Date the submission was last updated |
object (RelatedUserReadOnly) User who last updated the submission (if applicable) | |
object (SubmissionContent) Key-value structure containing all submitted values. Keys are block technical identifiers. | |
| status | string Enum: "pending" "approved" "rejected" Status of the submission. When moderation is enabled, the value reflects the review workflow ( |
object (SubmissionRevision) Common metadata shared by submissions and submission revisions. | |
| change_request_link | string <uri> URL to view the submitted form with its filled data and submit a revision. |
{- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "status": "approved",
- "revision": {
- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "changes_count": 2
},
}Returns a paginated list of forms available for the current domain.
| form_uid required | string Example: fm_wztr5n |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| search | string Full-text search |
| sort | string Example: sort=-updated_at Sort expression, usually a field name; prefix with "-" for descending order (e.g. "-updated_at"). |
| ordering | string Enum: "asc" "desc" Example: ordering=asc Ordering direction for the list of submissions. The default field used for ordering is implementation-specific (e.g. creation date). |
| expand | Array of strings Examples:
List of related fields to expand. For example, "created_by" or "updated_by" can be expanded to include more details about the users. |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "status": "approved",
- "revision": {
- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "changes_count": 2
},
}
]
}Retrieve a submission of form
| form_uid required | string Example: fm_wztr5n |
| s_uid required | string Example: 4c7286ad-6ede-4654-a1b3-3e39fcd199b7 |
{- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "status": "approved",
- "revision": {
- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "changes_count": 2
},
}Updates the content of a specific submission.
This request MUST be sent as multipart/form-data (not JSON), with a single field named data containing a JSON string that represents the updated submission values.
Each form field must be included in the JSON using its technical ID as the key (for example: "firstname", "lastname", "email"). To set a block’s value to null, just remove its key from the JSON — no need to send null.
Example of the data value: {"cat_name":"Rio","cat_age":5,"cat_breed":["Siberian"],"cat_rating":5,"contact":{"email":"harry@cover.com"}}
| form_uid required | string Example: fm_wztr5n |
| s_uid required | string Example: 4c7286ad-6ede-4654-a1b3-3e39fcd199b7 |
| data required | string JSON string representing the updated submission values. Keys are the technical IDs of the form fields. To set a block’s value to null, just remove its key from the JSON — no need to send null. |
{- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "status": "approved",
- "revision": {
- "uid": "7c9519d9-62fc-4a8a-a5ef-5213aff7f55e",
- "lang": "en",
- "created_at": "2025-10-07T09:24:43Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2025-10-28T15:24:02Z",
- "updated_by": {
- "username": "louise.data"
}, - "content": {
- "cat_name": "Rio",
- "cat_age": 5,
- "cat_breed": [
- "Siberian"
], - "cat_rating": 5
}, - "changes_count": 2
},
}| uid | string Unique identifier of the glossary term |
| name required | string The display name of the glossary term |
| description | string <= 2000 characters The description of the glossary term |
| aliases | Array of strings <= 10 items Alternative names for this glossary term |
| updated_at | string <date-time> The date and time the term was last updated (UTC) |
| created_at | string <date-time> The date and time the term was created (UTC) |
object (RelatedUserReadOnly) User who last updated the term | |
object (RelatedUserReadOnly) User who created the term |
{- "uid": "te_abc123",
- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
], - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}
}List all glossary terms on the domain.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| search | string Full-text search in term names, aliases, and descriptions |
| ordering | string Enum: "name" "-name" "updated_at" "-updated_at" "description" "-description" Sort results by the specified field. Prefix with |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "te_abc123",
- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
], - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}
}
]
}Create a new glossary term. The term name must be unique across all term names and aliases on the domain.
| name required | string The display name of the glossary term |
| description | string <= 2000 characters The description of the glossary term |
| aliases | Array of strings <= 10 items Alternative names for this glossary term |
{- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
]
}{- "uid": "te_abc123",
- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
], - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}
}Retrieve a single glossary term by its unique identifier.
| uid required | string Example: te_abc123 The unique identifier of the glossary term |
{- "uid": "te_abc123",
- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
], - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}
}Update an existing glossary term. The term name and aliases must remain unique across all terms on the domain.
| uid required | string Example: te_abc123 The unique identifier of the glossary term |
| name required | string The display name of the glossary term |
| description | string <= 2000 characters The description of the glossary term |
| aliases | Array of strings <= 10 items Alternative names for this glossary term |
{- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
]
}{- "uid": "te_abc123",
- "name": "API",
- "description": "A set of protocols and tools for building software applications",
- "aliases": [
- "Application Programming Interface",
- "Web API"
], - "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "created_by": {
- "username": "louise.data"
}
}Delete multiple glossary terms at once by providing a list of UIDs.
| uid_list required | Array of strings List of glossary term UIDs to delete |
{- "uid_list": [
- "te_abc123",
- "te_def456"
]
}""List all domain assets urls
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "url": "/assets/theme_image/Acronym-Turquoise.svg"
}
]
}Add an asset to the library. The HTTP request must be a multipart request with a file property.
| file required | string <binary> The image file to upload |
{- "url": "/assets/theme_image/Acronym-Turquoise.svg"
}| name required | string non-empty Name (identifier) of the template |
| title required | string Title (description) of the template |
| is_active required | boolean True if the template is (needs to be) activated. False otherwise. |
| is_always_active | boolean True if the template can't be deactivated. |
| is_system | boolean True if the template is provided by the system. A system template cannot be modifiable nor removable. False for all other templates. |
required | Array of objects (MetadataTemplateField) |
| created_at | string <date-time> Date when the template was created |
object (RelatedUserReadOnly) The user who created the template | |
| updated_at | string <date-time> Date when the template was last edited |
object (RelatedUserReadOnly) The user who last modified the template | |
| type required | string Enum: "interop" "basic" "extra" "admin" The type of the template. Only templates with type |
{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "is_always_active": false,
- "is_system": false,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "type": "basic"
}List all metadata templates of the current domain.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| is_active | boolean If provided and True then it will list only all activated templates. If provided and False it lists non-activated templates. If not provided then it will lists both activated and non-activated templates. |
| type | string Enum: "interop" "admin" "basic" "extra" Filter by type of Metadata Template. |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "is_always_active": false,
- "is_system": false,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "type": "basic"
}
]
}You can only create basic and admin metadata templates.
| name required | string non-empty Name (identifier) of the template |
| title required | string Title (description) of the template |
| is_active required | boolean True if the template is (needs to be) activated. False otherwise. |
required | Array of objects (MetadataTemplateField) |
| type required | string Enum: "basic" "admin" The type of the template. Only templates with type |
{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "type": "basic"
}{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "is_always_active": false,
- "is_system": false,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "type": "basic"
}| template_name required | string Example: template_name Metadata template name |
{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "is_always_active": false,
- "is_system": false,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "type": "basic"
}Only non-system templates of type basic and admin can be fully editable. Other templates may be enabled. Templates with is_system=true and is_always_active=true are exceptions and can't be disabled.
| template_name required | string Example: template_name Metadata template name |
| name required | string non-empty Name (identifier) of the template |
| title required | string Title (description) of the template |
| is_active required | boolean True if the template is (needs to be) activated. False otherwise. |
required | Array of objects (MetadataTemplateField) |
| type required | string Enum: "basic" "admin" The type of the template. Only templates with type |
{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "type": "basic"
}{- "name": "my-custom-template",
- "title": "My custom template",
- "is_active": true,
- "is_always_active": false,
- "is_system": false,
- "schema": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "created_by": {
- "username": "louise.data"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "updated_by": {
- "username": "louise.data"
}, - "type": "basic"
}| template_name required | string Example: template_name Metadata template name |
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}
]
}| template_name required | string Example: template_name Metadata template name |
| template_field_name required | string Example: field_name Metadata template field name |
{- "name": "my-custom-field",
- "type": "text",
- "label": "My custom field",
- "help_text": null,
- "is_hidden": false,
- "self_suggest": false,
- "is_filter": false,
- "i18n": false,
- "suggest_url": null,
- "choices": null,
- "labels": null,
- "requirement_level": "optional"
}List suggestions ("choices") for the provided template field name.
| template_name required | string Example: template_name Metadata template name |
| template_field_name required | string Example: field_name Metadata template field name |
| query required | string The query to perform to the service providing the suggestions. Most likely, it will be a prefix of what you're looking for. |
| count | number Number of results which will be provided in the response. |
{- "hits": [
- "string"
], - "nb_hits": 0,
- "page": 0,
- "hits_per_page": 0,
- "exhaustive_nb_hits": true,
- "exhaustive_typo": true,
- "exhaustive": {
- "nb_hits": true,
- "typo": true
}, - "query": "string",
- "params": "string",
- "processing_time_ms": 0
}Returns existing translations for the provided keys from the source language to the target language
| from_language required | string Example: from_language=en The source language code (e.g., 'en') |
| to_language required | string Example: to_language=fr The target language code (e.g., 'fr') |
| keys required | Array of strings Example: keys=my title&keys=my description The keys to translate (can be repeated multiple times) |
{- "Climate Data Analysis": "Analyse des données climatiques",
- "Temperature measurements from global weather stations": "Mesures de température des stations météorologiques mondiales"
}Users can submit different types of requests when they need access or want to contribute content to the platform. This API describes a unified model for handling three main kinds of user requests:
The API uses a discriminator based on the type field to clearly identify the correct schema for each request.
Examples for each request type are provided to make the different payloads easy to understand and reuse.
| uid required | string unique identifier of the user request |
| type required | string request type |
| status | string non-empty request status (ex. pending, approved, rejected) |
| request_message | string or null |
| rejection_message | string or null |
| created_at | string <date-time> non-empty Date when the request was created |
| updated_at | string <date-time> non-empty Date when the user request was last updated |
object (RelatedUserReadOnly) The user who updated the request | |
Anonymous user (object) or Logged user (object) The user who created the request. For external showcases, the user could be a guest (anonymous user). |
{- "uid": "fc50dcdf-ab41-4ed8-bc65-070278ba2363",
- "type": "domain_access",
- "status": "pending",
- "created_at": "2025-11-13T13:36:23Z",
- "created_by": {
- "username": "louise.data",
- "anonymous": false
}, - "updated_at": "2025-11-13T13:36:23Z",
- "updated_by": {
- "username": "louise.data"
}, - "request_message": "let me in!",
- "rejection_message": null
}Returns a paginated list of the user requests for the current domain.
| limit | integer [ 0 .. 1000 ] Default: 20 Example: limit=20 The maximum number of results returned by the API when the response is paginated. Tip: You can make a request with the parameter "limit" set to 0 to get only the metadata ("results" property will contain an empty array). |
| offset | integer The number of results to skip before beginning the listing in case of a paginated response |
| search | string Full-text search |
| expand | Array of strings Examples:
List of related fields to expand. For example, "created_by" or "updated_by" can be expanded to include more details about the users. |
| status | string Example: status=pending status request (pending, approved, rejected). |
| type | string Example: type=domain_access type request (domain_access, dataset_asset_access, external_asset_access, external_showcase) |
| raised_in | integer Example: raised_in=6 Return only the requests submitted in the last N days.Fort the last 7 days, it's the value 6. |
| raised_before | integer Example: raised_before=89 Return only the requests submitted before the last X days |
{- "total_count": 18,
- "next": null,
- "previous": null,
- "results": [
- {
- "uid": "fc50dcdf-ab41-4ed8-bc65-070278ba2363",
- "type": "domain_access",
- "status": "pending",
- "created_at": "2025-11-13T13:36:23Z",
- "created_by": {
- "username": "louise.data",
- "anonymous": false
}, - "updated_at": "2025-11-13T13:36:23Z",
- "updated_by": {
- "username": "louise.data"
}, - "request_message": "let me in!",
- "rejection_message": null
}
]
}Retrieve an user request
| ur_uid required | string Example: 4c7286ad-6ede-4654-a1b3-3e39fcd199b7 Unique identifier of the user request |
{- "uid": "fc50dcdf-ab41-4ed8-bc65-070278ba2363",
- "type": "domain_access",
- "status": "pending",
- "created_at": "2025-11-13T13:36:23Z",
- "created_by": {
- "username": "louise.data",
- "anonymous": false
}, - "updated_at": "2025-11-13T13:36:23Z",
- "updated_by": {
- "username": "louise.data"
}, - "request_message": "let me in!",
- "rejection_message": null
}