Skip to main content

Overview

The ExCheck (Extended Checklist) API provides TAK-compatible endpoints for creating and managing checklist templates and active checklists. ExCheck allows teams to create, share, and track completion of task checklists in TAK environments.

Template Management

Create Template

POST /Marti/api/excheck/template
creatorUid
string
UID of the template creator (falls back to clientUid if not provided)
clientUid
string
Alternative parameter for creator UID
templatedata
xml
required
XML template data in TAK ExCheck format
Creates a new checklist template. Templates define the structure and tasks for checklists.
done

Get Template

GET /Marti/api/excheck/template/{templateUid}
templateUid
string
required
Unique identifier of the template
template_data
xml
Template definition in XML format

Manage Template Tasks

GET /Marti/api/excheck/template/{templateUid}/task/{taskUid}
POST /Marti/api/excheck/template/{templateUid}/task/{taskUid}
PUT /Marti/api/excheck/template/{templateUid}/task/{taskUid}
DELETE /Marti/api/excheck/template/{templateUid}/task/{taskUid}
templateUid
string
required
Template identifier
taskUid
string
required
Task identifier
taskdata
xml
Task data for POST/PUT operations
  • GET: Retrieve a specific template task
  • POST: Create a new template task
  • PUT: Update an existing template task
  • DELETE: Delete a template task

Active Checklists

Start Checklist from Template

POST /Marti/api/excheck/{subscription}/start
subscription
string
required
Template UID to instantiate as a checklist
name
string
required
Name for the new checklist instance
description
string
Description for the checklist
Creates an active checklist from a template. The checklist can then be updated as tasks are completed.
checklist
xml
Created checklist data

Get All Active Checklists

GET /Marti/api/excheck/checklist/active
Returns all currently active checklists.
checklists
xml
XML document containing all active checklists
<?xml version="1.0"?>
<checklists>
  <checklist uid="..." name="...">
    <!-- checklist content -->
  </checklist>
</checklists>
Response Content-Type is set to application/xml

Get Specific Checklist

GET /Marti/api/excheck/checklist/{checklistid}
checklistid
string
required
Unique identifier of the checklist
checklist_data
xml
Complete checklist data including all tasks and their status

Checklist Task Management

Update Checklist Task

PUT /Marti/api/excheck/checklist/{checklistid}/task/{taskid}
checklistid
string
required
Checklist identifier
taskid
string
required
Task identifier to update
checklisttaskdata
xml
required
Updated task data (typically includes completion status)
Updates a task within an active checklist. Triggers ChecklistUpdateNotification to both TCP and SSL CoT services to notify connected clients.
Notifications are sent to both tcp_cot_service and ssl_cot_service asynchronously

Get Checklist Task

GET /Marti/api/excheck/checklist/{checklistid}/task/{taskid}
checklistid
string
required
Checklist identifier
taskid
string
required
Task identifier
checklist_task_data
xml
Individual task data and status

Mission Integration

Add Checklist to Mission

PUT /Marti/api/excheck/checklist/{checklist_id}/mission/{mission_id}
checklist_id
string
required
Checklist identifier
mission_id
string
required
Mission identifier
clientUid
string
Client UID performing the operation
Links a checklist to a mission as external data. Triggers MissionExternalDataCreatedNotification asynchronously.
This integrates ExCheck with the Mission API, allowing checklists to be part of mission planning and execution

Workflow Example

Creating and Using a Checklist

# 1. Create a template
curl -X POST "http://server:8080/Marti/api/excheck/template?creatorUid=user-123" \
  -H "Content-Type: application/xml" \
  -d '<template>...</template>'

# 2. Start a checklist from the template
curl -X POST "http://server:8080/Marti/api/excheck/{template-uid}/start?name=Pre-Flight&description=Aircraft+checklist" \
  -H "Content-Type: application/json"

# 3. Get all active checklists
curl "http://server:8080/Marti/api/excheck/checklist/active"

# 4. Update task status
curl -X PUT "http://server:8080/Marti/api/excheck/checklist/{checklist-uid}/task/{task-uid}" \
  -H "Content-Type: application/xml" \
  -d '<task status="complete">...</task>'

# 5. Add checklist to a mission
curl -X PUT "http://server:8080/Marti/api/excheck/checklist/{checklist-uid}/mission/op-alpha?clientUid=user-123"

Data Format

ExCheck uses XML format for templates and checklists, following the TAK ExCheck specification:

Template Structure

<?xml version="1.0"?>
<checklistTemplate uid="template-uid" name="Template Name">
  <checklistDetails>
    <description>Template description</description>
    <creatorUid>user-123</creatorUid>
  </checklistDetails>
  <checklistTasks>
    <checklistTask uid="task-1">
      <description>Task description</description>
      <!-- task details -->
    </checklistTask>
  </checklistTasks>
</checklistTemplate>

Checklist Instance

<?xml version="1.0"?>
<checklist uid="checklist-uid" name="Checklist Name" templateUid="template-uid">
  <checklistDetails>
    <description>Checklist description</description>
    <startTime>2026-03-04T12:00:00Z</startTime>
  </checklistDetails>
  <checklistTasks>
    <checklistTask uid="task-1" status="pending|complete">
      <description>Task description</description>
      <completionTime>2026-03-04T12:15:00Z</completionTime>
    </checklistTask>
  </checklistTasks>
</checklist>

Notifications

The ExCheck API triggers real-time notifications:
  • ChecklistUpdateNotification: Sent when a task is updated (sent to TCP and SSL CoT services)
  • MissionExternalDataCreatedNotification: Sent when a checklist is added to a mission
These notifications ensure all connected TAK clients receive updates immediately.

HTTP vs HTTPS Differences

Both HTTP and HTTPS services implement identical ExCheck endpoints:
  • Controller: HTTP uses HTTPTakApiCommunicationController, HTTPS uses HTTPSTakApiCommunicationController
  • Endpoints: All routes and functionality are the same
  • Notifications: Both trigger the same notification types

Use Cases

  • Mission Planning: Pre-mission checklists for equipment, personnel, and procedures
  • Operational Checklists: In-mission task tracking and coordination
  • Training: Standardized training checklists across teams
  • Quality Assurance: Post-mission review checklists
  • Maintenance: Equipment maintenance and inspection checklists

Error Responses

  • 200 OK: Successful operation
  • 500 Internal Server Error: Processing error (exceptions are logged)

Source Code References

  • HTTP Blueprint: FreeTAKServer/services/http_tak_api_service/blueprints/excheck_blueprint.py:1-97
  • HTTPS Blueprint: FreeTAKServer/services/https_tak_api_service/blueprints/excheck_blueprint.py:1-97

Build docs developers (and LLMs) love