Skip to main content

Overview

The Mission API provides TAK-compatible endpoints for creating and managing missions, mission subscriptions, mission content, and mission logs. These endpoints are available on both HTTP and HTTPS TAK API services.

Base Endpoints

List All Missions

GET /Marti/api/missions
Returns a list of all available missions.
{
  "version": "3",
  "type": "Mission",
  "data": [...],
  "nodeId": "<server-node-id>"
}

Create or Update Mission

PUT /Marti/api/missions/{mission_id}
mission_id
string
required
Unique identifier for the mission
creatorUid
string
UID of the mission creator
mission_subscription
object
Mission subscription details for the created/updated mission
Creates a new mission or updates an existing one. Triggers a MissionCreatedNotification asynchronously.

Get Mission Details

GET /Marti/api/missions/{mission_id}
mission_id
string
required
Unique identifier for the mission
mission
object
Complete mission details including metadata, contents, and subscriptions

Mission Content

Get Mission CoT Events

GET /Marti/api/missions/{mission_id}/cot
mission_id
string
required
Unique identifier for the mission
Returns all Cursor-on-Target (CoT) events associated with the mission.
cots
array
Array of CoT event objects

Add Mission Contents

PUT /Marti/api/missions/{mission_id}/contents
mission_id
string
required
Unique identifier for the mission
hashes
array
Array of content hashes to add to the mission
uids
array
Array of UIDs to add to the mission
Adds data package contents or UIDs to a mission. Triggers MissionContentCreatedNotification for each hash.
{
  "version": "3",
  "type": "Mission",
  "data": [...]
}

Upload Mission Package

PUT /Marti/api/missions/{mission_id}/contents/missionpackage
mission_id
string
required
Unique identifier for the mission
filename
string
required
Name of the file being uploaded
creatorUid
string
UID of the creator
tool
string
default:"public"
Tool/privacy setting (“public” or “private”)
hash
string
Optional hash for the content (auto-generated if not provided)
Directly uploads a mission package file. The file is stored in Enterprise Sync and automatically added to the mission.

Mission Logs

Create Log Entry

POST /Marti/api/missions/logs/entries
mission_log_data
object
required
Log entry data in TAK format
Creates a new mission log entry. Returns HTTP 201 on success.
log
object
Created log entry with generated ID

Update Log Entry

PUT /Marti/api/missions/logs/entries
mission_log_data
object
required
Updated log entry data

Get Mission Logs

GET /Marti/api/missions/{missionID}/log
missionID
string
required
Mission identifier
secago
integer
Get logs from the last N seconds
start
string
Start timestamp for log range
end
string
End timestamp for log range

Delete Log Entry

DELETE /Marti/api/missions/logs/entries/{id}
id
string
required
Log entry identifier

Get All Logs

GET /Marti/api/missions/all/logs
Returns all mission logs across all missions.

Mission Subscriptions

Subscribe to Mission

PUT /Marti/api/missions/{mission_id}/subscription
mission_id
string
required
Mission identifier
uid
string
required
Client UID subscribing to the mission
topic
string
Subscription topic
password
string
Mission password if required
secago
integer
Sync data from last N seconds
start
string
Start time for sync
end
string
End time for sync
Subscribes a client to a mission. Returns HTTP 201 on successful subscription.

Unsubscribe from Mission

DELETE /Marti/api/missions/{mission_id}/subscription
mission_id
string
required
Mission identifier
uid
string
required
Client UID to unsubscribe
topic
string
Subscription topic
disconnectOnly
boolean
Only disconnect without removing subscription data

Get Mission Subscriptions

GET /Marti/api/missions/{mission_id}/subscriptions
GET /Marti/api/missions/{mission_id}/subscriptions/roles
mission_id
string
required
Mission identifier
Returns all subscriptions for a specific mission.

Get All Subscriptions

GET /Marti/api/missions/all/subscriptions
Returns all mission subscriptions across all missions.

Mission Hierarchy

Add Child Mission

PUT /Marti/api/missions/{child_mission_id}/parent/{parent_mission_id}
child_mission_id
string
required
Child mission identifier
parent_mission_id
string
required
Parent mission identifier
Establishes a parent-child relationship between missions.

Remove Parent Mission

DELETE /Marti/api/missions/{child_mission_id}/parent
child_mission_id
string
required
Child mission identifier

Get Child Missions

GET /Marti/api/missions/{parent_mission_id}/children
parent_mission_id
string
required
Parent mission identifier

Get Parent Mission

GET /Marti/api/missions/{child_mission_id}/parent
child_mission_id
string
required
Child mission identifier

Mission Invitations

Send Mission Invitation (PUT)

PUT /Marti/api/missions/{mission_id}/invite/{type}/{invitee}
mission_id
string
required
Mission identifier
type
string
required
Invitation type
invitee
string
required
UID of the invitee
creatorUid
string
default:"unknown"
UID of the invitation sender
role
string
Mission role for the invitee

Send Mission Invitation (POST)

POST /Marti/api/missions/{mission_id}/invite
mission_id
string
required
Mission identifier
creatorUid
string
UID of the invitation sender
contacts
string
Invitee contact information
invitee
string
UID of the invitee (in request body)
role
object
Role object with type field

Get Mission Invitations

GET /Marti/api/missions/invitations
clientUid
string
required
Client UID to get invitations for (HTTPS only)
The HTTP variant returns an empty invitations list, while HTTPS requires a clientUid query parameter and returns actual invitations.

Mission Changes and External Data

Get Mission Changes

GET /Marti/api/missions/{mission_id}/changes
mission_id
string
required
Mission identifier
Returns the change history for a mission.

Create External Mission Data

POST /Marti/api/missions/{mission_id}/externaldata
mission_id
string
required
Mission identifier
mission_external_data
object
required
External data object (e.g., ExCheck checklists)

Groups

Get All Groups

GET /Marti/api/groups/all
Returns all available groups. Currently returns the system __ANON__ group.
{
  "version": "3",
  "type": "com.bbn.marti.remote.groups.Group",
  "data": [
    {
      "name": "__ANON__",
      "direction": "OUT",
      "created": "2023-02-22",
      "type": "SYSTEM",
      "bitpos": 2,
      "active": true
    }
  ],
  "nodeId": "<server-node-id>"
}

HTTP vs HTTPS Differences

Both HTTP and HTTPS TAK API services implement the same mission endpoints with these key differences:
  • Controller: HTTP uses HTTPTakApiCommunicationController, HTTPS uses HTTPSTakApiCommunicationController
  • Invitations: HTTP returns empty list, HTTPS requires clientUid and returns actual invitations
  • URL Scheme: Mission upload returns http:// URLs for HTTP service, https:// for HTTPS service

Source Code References

  • HTTP Blueprint: FreeTAKServer/services/http_tak_api_service/blueprints/mission_blueprint.py
  • HTTPS Blueprint: FreeTAKServer/services/https_tak_api_service/blueprints/mission_blueprint.py

Build docs developers (and LLMs) love