Export form element submissions
curl --request POST \
--url https://app.azalt.co/api/v1/form-element-submissions/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"formIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"years": [
123
],
"includeParentSiteName": false,
"includeEmptyRows": true,
"includeElementName": false,
"includeFormName": false,
"includeUnits": false,
"includeMetadata": false,
"includeElementId": false,
"format": "csv"
}
'import requests
url = "https://app.azalt.co/api/v1/form-element-submissions/export"
payload = {
"formIds": ["<string>"],
"siteIds": ["<string>"],
"years": [123],
"includeParentSiteName": False,
"includeEmptyRows": True,
"includeElementName": False,
"includeFormName": False,
"includeUnits": False,
"includeMetadata": False,
"includeElementId": False,
"format": "csv"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
formIds: ['<string>'],
siteIds: ['<string>'],
years: [123],
includeParentSiteName: false,
includeEmptyRows: true,
includeElementName: false,
includeFormName: false,
includeUnits: false,
includeMetadata: false,
includeElementId: false,
format: 'csv'
})
};
fetch('https://app.azalt.co/api/v1/form-element-submissions/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.azalt.co/api/v1/form-element-submissions/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'formIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'years' => [
123
],
'includeParentSiteName' => false,
'includeEmptyRows' => true,
'includeElementName' => false,
'includeFormName' => false,
'includeUnits' => false,
'includeMetadata' => false,
'includeElementId' => false,
'format' => 'csv'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.azalt.co/api/v1/form-element-submissions/export"
payload := strings.NewReader("{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.azalt.co/api/v1/form-element-submissions/export")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.azalt.co/api/v1/form-element-submissions/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}"
response = http.request(request)
puts response.read_body{
"content": "<string>",
"filename": "<string>",
"format": "csv",
"mimeType": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}FormElementSubmission
Export form element submissions
Export form element submissions data to various formats for analysis and reporting.
Export Features:
- Bulk data export for multiple form elements and submissions
- Support for various export formats (CSV, Excel, etc.)
- Flexible filtering by date ranges, sites, and form criteria
- Structured data output suitable for external analysis tools
TIMESTAMP support:
- Includes a
recordedAtcolumn. For TIMESTAMP elements, one row is emitted per entry withrecordedAtset. For other elements,recordedAtis empty. - No placeholders are generated for TIMESTAMP elements, even when
includeEmptyRows=true.
Example request:
{
"formIds": ["form-123"],
"siteIds": ["site-1"],
"years": [2024],
"format": "csv",
"includeFormName": true
}
Example CSV rows (trimmed):
siteName,year,key,periodUnit,value,recordedAt
plant-a,2024,water_usage,3,120.5,2024-03-15T10:30:00Z
This endpoint is ideal for generating reports, conducting data analysis, or migrating data to external systems. The exported data maintains the hierarchical structure of forms, elements, and their submitted values.
POST
/
form-element-submissions
/
export
Export form element submissions
curl --request POST \
--url https://app.azalt.co/api/v1/form-element-submissions/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"formIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"years": [
123
],
"includeParentSiteName": false,
"includeEmptyRows": true,
"includeElementName": false,
"includeFormName": false,
"includeUnits": false,
"includeMetadata": false,
"includeElementId": false,
"format": "csv"
}
'import requests
url = "https://app.azalt.co/api/v1/form-element-submissions/export"
payload = {
"formIds": ["<string>"],
"siteIds": ["<string>"],
"years": [123],
"includeParentSiteName": False,
"includeEmptyRows": True,
"includeElementName": False,
"includeFormName": False,
"includeUnits": False,
"includeMetadata": False,
"includeElementId": False,
"format": "csv"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
formIds: ['<string>'],
siteIds: ['<string>'],
years: [123],
includeParentSiteName: false,
includeEmptyRows: true,
includeElementName: false,
includeFormName: false,
includeUnits: false,
includeMetadata: false,
includeElementId: false,
format: 'csv'
})
};
fetch('https://app.azalt.co/api/v1/form-element-submissions/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.azalt.co/api/v1/form-element-submissions/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'formIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'years' => [
123
],
'includeParentSiteName' => false,
'includeEmptyRows' => true,
'includeElementName' => false,
'includeFormName' => false,
'includeUnits' => false,
'includeMetadata' => false,
'includeElementId' => false,
'format' => 'csv'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.azalt.co/api/v1/form-element-submissions/export"
payload := strings.NewReader("{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.azalt.co/api/v1/form-element-submissions/export")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.azalt.co/api/v1/form-element-submissions/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"formIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"years\": [\n 123\n ],\n \"includeParentSiteName\": false,\n \"includeEmptyRows\": true,\n \"includeElementName\": false,\n \"includeFormName\": false,\n \"includeUnits\": false,\n \"includeMetadata\": false,\n \"includeElementId\": false,\n \"format\": \"csv\"\n}"
response = http.request(request)
puts response.read_body{
"content": "<string>",
"filename": "<string>",
"format": "csv",
"mimeType": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Minimum array length:
1Available options:
csv, xlsx 
