Skip to main content

Overview

Xenia provides multiple export options for submission data:
  • PDF Reports: Formatted inspection reports with scores, photos, and signatures
  • Excel Exports: Tabular data for analysis and reporting
  • Flagged Items Report: Focus on non-compliant items
  • Public Report Links: Shareable report URLs

PDF Export

Generate a PDF report for one or more submissions.

Export Single Submission

curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/checklists/{checklistId}/logs-pdf" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "logIds": ["submission-uuid"],
    "includePhotos": true,
    "includeSignatures": true,
    "includeNotes": true,
    "includeScore": true
  }'
Request Body:
FieldTypeRequiredDescription
logIdsstring[]YesSubmission IDs to export
includePhotosbooleanNoInclude attached photos (default: true)
includeSignaturesbooleanNoInclude signature captures (default: true)
includeNotesbooleanNoInclude item notes (default: true)
includeScorebooleanNoInclude scoring summary (default: true)
mergedbooleanNoMerge multiple submissions into one PDF
Response (Async):
{
  "status": "success",
  "code": 200,
  "data": {
    "jobId": "export-job-uuid",
    "status": "processing",
    "message": "PDF generation started. You will receive an email when ready."
  }
}
PDF generation is asynchronous for large submissions. The generated PDF is emailed to the requesting user.

Export Multiple Submissions (Merged)

Combine multiple submissions into a single PDF document.
curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/checklists/{checklistId}/logs-pdf" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "logIds": ["submission-uuid-1", "submission-uuid-2", "submission-uuid-3"],
    "merged": true,
    "includePhotos": false
  }'

Excel Export

Export submission data to Excel format for analysis.

Export Submissions to Excel

curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/checklists/{checklistId}/logs-excel" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateFrom": "2024-12-01",
    "dateTo": "2024-12-31",
    "locationIds": ["location-uuid-1", "location-uuid-2"],
    "status": "submitted"
  }'
Request Body:
FieldTypeDescription
dateFromstringStart date filter (YYYY-MM-DD)
dateTostringEnd date filter (YYYY-MM-DD)
locationIdsstring[]Filter by locations
statusstringFilter by status
logIdsstring[]Specific submission IDs
Response (Async):
{
  "status": "success",
  "code": 200,
  "data": {
    "jobId": "export-job-uuid",
    "status": "processing",
    "message": "Excel export started. You will receive an email when ready."
  }
}

Excel Output Format

The Excel export contains:
ColumnDescription
Submission IDUnique identifier
Template NameSource template
LocationLocation name
SubmitterUser who submitted
DateSubmission date
ScoreOverall score (if enabled)
StatusSubmission status
[Question 1]Answer to first question
[Question 2]Answer to second question
Additional question columns

Spreadsheet Data (JSON)

Get submission data in a tabular format suitable for custom reporting.
curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/checklists/submissions-spreadsheet" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "checklistId": "template-uuid",
    "dateFrom": "2024-12-01",
    "dateTo": "2024-12-31",
    "columns": ["submissionId", "location", "date", "score", "status"]
  }'
Response:
{
  "status": "success",
  "code": 200,
  "data": {
    "headers": ["Submission ID", "Location", "Date", "Score", "Status"],
    "rows": [
      ["sub-001", "Building A", "2024-12-15", 95, "submitted"],
      ["sub-002", "Building B", "2024-12-16", 88, "submitted"],
      ["sub-003", "Building A", "2024-12-17", 72, "pending_approval"]
    ],
    "totalRows": 3
  }
}

Flagged Items Report

Get a report of all flagged (non-compliant) items across submissions.
curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/submissions/flagged-items" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "checklistId": "template-uuid",
    "dateFrom": "2024-12-01",
    "dateTo": "2024-12-31",
    "locationIds": ["location-uuid"]
  }'
Response:
{
  "status": "success",
  "code": 200,
  "data": [
    {
      "submissionId": "sub-uuid-1",
      "submissionDate": "2024-12-15T10:30:00Z",
      "location": {
        "id": "location-uuid",
        "name": "Building A"
      },
      "submitter": {
        "id": "user-uuid",
        "fullName": "John Smith"
      },
      "flaggedItem": {
        "id": "item-uuid",
        "title": "Fire extinguisher inspection tag current?",
        "sectionTitle": "Fire Safety",
        "answer": "no",
        "flagNote": "Tag expired 2 months ago",
        "attachments": ["https://storage.example.com/expired-tag.jpg"]
      }
    },
    {
      "submissionId": "sub-uuid-2",
      "submissionDate": "2024-12-16T14:00:00Z",
      "location": {
        "id": "location-uuid",
        "name": "Building A"
      },
      "submitter": {
        "id": "user-uuid-2",
        "fullName": "Jane Doe"
      },
      "flaggedItem": {
        "id": "item-uuid-2",
        "title": "Emergency exit clear?",
        "sectionTitle": "Fire Safety",
        "answer": "no",
        "flagNote": "Boxes blocking exit",
        "attachments": []
      }
    }
  ]
}
Use the flagged items report to create corrective action tasks. Loop through flagged items and create tasks for each issue.

Toggle Public Report Access

Enable or disable public sharing for a submission report.
curl -X GET "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/logs/{logId}/toggle-public-report" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}"
Response:
{
  "status": "success",
  "code": 200,
  "data": {
    "isPublic": true,
    "publicUrl": "https://reports.xenia.team/public/abc123xyz",
    "expiresAt": null
  }
}

Generate Public PDF

Generate a PDF for a public report link.
curl -X POST "https://api.xenia.team/api/v1/ops/public/submissions/{submissionId}/pdf" \
  -H "Content-Type: application/json" \
  -d '{
    "accessToken": "public-access-token"
  }'
Response:
{
  "status": "success",
  "code": 200,
  "data": {
    "status": "processing",
    "pollUrl": "/api/v1/ops/public/submissions/{submissionId}/pdf-status"
  }
}

Check PDF Generation Status

curl -X GET "https://api.xenia.team/api/v1/ops/public/submissions/{submissionId}/pdf-status?accessToken=public-access-token"
Response (Processing):
{
  "status": "success",
  "code": 200,
  "data": {
    "status": "processing",
    "progress": 60
  }
}
Response (Complete):
{
  "status": "success",
  "code": 200,
  "data": {
    "status": "complete",
    "downloadUrl": "https://storage.example.com/reports/submission-report.pdf"
  }
}

Submission Statistics

Count by Status

Get submission counts grouped by status.
curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/submissions-count-by-status" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "checklistId": "template-uuid",
    "dateFrom": "2024-12-01",
    "dateTo": "2024-12-31"
  }'
Response:
{
  "status": "success",
  "code": 200,
  "data": {
    "draft": 5,
    "submitted": 120,
    "pending_approval": 15,
    "approved": 100,
    "rejected": 10,
    "total": 250
  }
}

Template Submission Summary

Get submission summary across multiple templates.
curl -X POST "https://api.xenia.team/api/v1/ops/workspaces/{workspaceId}/template-submissions" \
  -H "x-client-key: YOUR_CLIENT_KEY" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "workspace-id: {workspaceId}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateFrom": "2024-12-01",
    "dateTo": "2024-12-31"
  }'
Response:
{
  "status": "success",
  "code": 200,
  "data": [
    {
      "checklistId": "template-uuid-1",
      "checklistName": "Daily Safety Inspection",
      "submissionCount": 150,
      "averageScore": 91.5,
      "passRate": 95.3
    },
    {
      "checklistId": "template-uuid-2",
      "checklistName": "Weekly Equipment Check",
      "submissionCount": 24,
      "averageScore": 88.2,
      "passRate": 91.7
    }
  ]
}

Common Workflows

Automated Daily Report

Generate daily reports for management review:
#!/bin/bash
# Daily report generation script

WORKSPACE_ID="your-workspace-uuid"
CHECKLIST_ID="daily-safety-template-uuid"
TODAY=$(date +%Y-%m-%d)

# Export yesterday's submissions to Excel
curl -X POST ".../checklists/${CHECKLIST_ID}/logs-excel" \
  -d "{
    \"dateFrom\": \"${TODAY}\",
    \"dateTo\": \"${TODAY}\",
    \"status\": \"submitted\"
  }"

# Get flagged items for follow-up
FLAGGED=$(curl -X POST ".../submissions/flagged-items" \
  -d "{
    \"checklistId\": \"${CHECKLIST_ID}\",
    \"dateFrom\": \"${TODAY}\",
    \"dateTo\": \"${TODAY}\"
  }")

# Process flagged items (create tasks, send alerts, etc.)
echo "${FLAGGED}" | jq '.data[] | .flaggedItem.title'

BI Integration

Extract submission data for business intelligence platforms:
# Get submission data in tabular format
curl -X POST ".../checklists/submissions-spreadsheet" \
  -d '{
    "checklistId": "template-uuid",
    "dateFrom": "2024-01-01",
    "dateTo": "2024-12-31",
    "columns": [
      "submissionId",
      "location",
      "date",
      "score",
      "status",
      "submitterName"
    ]
  }' | jq '.data.rows' > submissions_2024.json

# Import into data warehouse
# bq load --source_format=NEWLINE_DELIMITED_JSON dataset.submissions submissions_2024.json

Compliance Report Generation


Best Practices

Large Excel exports can be resource-intensive. Schedule automated exports during off-peak hours to minimize impact.
Always specify date ranges when exporting. This improves performance and keeps file sizes manageable.
Regularly export flagged items and create corrective action tasks. This closes the loop on identified issues.
Maintain a regular archive of exports for compliance and audit purposes. Don’t rely solely on real-time API access.