Documentation Index
Fetch the complete documentation index at: https://mintlify.com/FreeTAKTeam/FreeTakServer/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Mission component provides comprehensive mission planning and management capabilities for FreeTAKServer. It enables users to create missions, manage mission content, track changes, handle subscriptions, and collaborate with team members through a TAK-compatible mission management system.
Architecture
Component Structure
FreeTAKServer/components/extended/mission/
├── mission_facade.py # Main facade
├── controllers/
│ ├── mission_general_controller.py
│ ├── mission_persistence_controller.py
│ ├── mission_subscription_controller.py
│ ├── mission_logs_controller.py
│ ├── mission_hierarchy_controller.py
│ ├── mission_external_data_controller.py
│ ├── mission_change_controller.py
│ ├── mission_notification_controller.py
│ ├── mission_cot_controller.py
│ └── mission_invitation_controller.py
├── persistence/
│ ├── mission.py
│ ├── mission_content.py
│ ├── mission_change.py
│ ├── mission_log.py
│ ├── subscription.py
│ └── external_data.py
├── domain/
└── configuration/
Key Classes
Mission Facade
Location: FreeTAKServer/components/extended/mission/mission_facade.py:24
class Mission(DefaultFacade):
def __init__(self, sync_action_mapper, request, response,
configuration, action_mapper=None,
tracing_provider_instance=None):
self.general_controller = MissionGeneralController(...)
self.persistence_controller = MissionPersistenceController(...)
self.subscription_controller = MissionSubscriptionController(...)
self.logs_controller = MissionLogsController(...)
self.hierarchy_controller = MissionHierarchyController(...)
self.external_data_controller = MissionExternalDataController(...)
self.change_controller = MissionChangeController(...)
self.notification_controller = MissionNotificationController(...)
self.cot_controller = MissionCOTController(...)
self.invitations_controller = MissionInvitationController(...)
MissionGeneralController
Location: FreeTAKServer/components/extended/mission/controllers/mission_general_controller.py:41
Handles core mission operations including creation, retrieval, and content management.
class MissionGeneralController(Controller):
def put_mission(self, mission_id, mission_data, mission_data_args,
creatorUid, config_loader, *args, **kwargs):
"""Create a new mission and save to database"""
# Create mission database object
mission_db_obj = self.persistency_controller.create_mission(
str(mission_id),
tool=str(initial_mission_data.get('tool', 'public')),
name=str(mission_id),
description=str(initial_mission_data.get('description')),
defaultRole=default_mission_role,
clientUid=creatorUid
)
Core Functionality
Mission Management
Creating Missions
Method: put_mission()
Location: mission_general_controller.py:72
# Create a new mission
request.set_value("mission_id", "operation-alpha")
request.set_value("mission_data_args", {
'defaultRole': 'MISSION_OWNER',
'tool': 'public',
'description': 'Operation Alpha mission',
'passwordProtected': False,
'classification': 'UNCLASSIFIED'
})
request.set_value("creatorUid", "user-123")
mission.put_mission()
Retrieving Missions
Methods:
get_missions() - Get all public missions (location: mission_general_controller.py:191)
get_mission(mission_id) - Get specific mission (location: mission_general_controller.py:206)
# Get all missions
mission.get_missions(config_loader=config_loader)
# Get specific mission
mission.get_mission(mission_id="operation-alpha", config_loader=config_loader)
Mission Content
Adding Content
Method: add_contents_to_mission()
Location: mission_general_controller.py:215
Supports adding:
- CoT messages
- Data packages
- External data links
- Files and documents
# Add content to mission
mission.add_mission_contents(
mission_id="operation-alpha",
hashes=["sha256hash1", "sha256hash2"],
uids=["content-uid-1"],
config_loader=config_loader,
action_mapper=action_mapper
)
Mission Subscriptions
Controller: MissionSubscriptionController
# Subscribe to mission
mission.add_mission_subscription(
mission_id="operation-alpha",
client_uid="user-123",
role="MISSION_SUBSCRIBER"
)
# Get mission subscriptions
subscriptions = mission.get_mission_subscriptions(
mission_id="operation-alpha"
)
Mission Logs
Controller: MissionLogsController
Methods: (locations in mission_facade.py:129-149)
# Add log entry
mission.add_mission_log(
mission_id="operation-alpha",
content="Mission started",
creator_uid="user-123"
)
# Retrieve logs
logs = mission.get_mission_logs(mission_id="operation-alpha")
Mission Hierarchy
Controller: MissionHierarchyController
Manages parent-child mission relationships:
# Add child mission to parent
mission.add_child_to_parent(
parent_mission_id="operation-alpha",
child_mission_id="task-bravo"
)
# Get children
children = mission.get_children(mission_id="operation-alpha")
Change Tracking
Controller: MissionChangeController
Tracks all mission modifications:
# Get mission changes
changes = mission.get_mission_changes(mission_id="operation-alpha")
Change types tracked:
- Mission creation
- Content uploads
- Content deletions
- Subscription changes
- External data additions
Mission CoT Integration
Controller: MissionCOTController
# Create mission CoT
mission.create_mission_cot(
mission_id="operation-alpha",
cot_data=cot_event
)
# Create mission geofence
mission.create_mission_geofence(
mission_id="operation-alpha",
geofence_data=geofence_polygon
)
# Get mission CoTs
cots = mission.get_mission_cots(mission_id="operation-alpha")
Mission Invitations
Controller: MissionInvitationController
# Send mission invitation
mission.send_invitation(
mission_id="operation-alpha",
invitee_uid="user-456",
role="MISSION_SUBSCRIBER"
)
# Get invitations
invitations = mission.get_invitations(mission_id="operation-alpha")
Data Models
Mission Model
Location: FreeTAKServer/components/extended/mission/persistence/mission.py:17
class Mission(MissionBase):
PrimaryKey: str
name: str
description: str
tool: str
creatorUid: str
createTime: datetime
defaultRole: Role
passwordProtected: bool
classification: str
contents: List[MissionContent]
externalData: List[ExternalData]
logs: List[MissionLog]
cots: List[MissionCoT]
changes: List[MissionChange]
child_missions: List[MissionToMission]
parent_missions: List[MissionToMission]
Notifications
Controller: MissionNotificationController
Sends CoT notifications for mission events:
# Mission created notification
mission.mission_created_notification(mission_id="operation-alpha")
# Content created notification
mission.mission_content_created_notification(
mission_id="operation-alpha",
content_hash="sha256hash"
)
Integration with Services
Enterprise Sync Integration
Missions integrate with Enterprise Sync for content storage:
# Content stored via Enterprise Sync
self.request.set_value("synctype", "content")
self.request.set_value("objectdata", file_data)
self.execute_sub_action("SaveEnterpriseSyncData")
Service Manager Integration
Mission notifications are routed through the Service Manager to connected clients.
API Examples
Complete Mission Workflow
# 1. Create mission
mission.put_mission(
mission_id="recon-mission-1",
mission_data=b'',
mission_data_args={
'defaultRole': 'MISSION_OWNER',
'description': 'Reconnaissance mission',
'tool': 'public'
},
creatorUid="commander-001",
config_loader=config
)
# 2. Add content
mission.add_mission_contents(
mission_id="recon-mission-1",
hashes=["content-hash-123"],
config_loader=config
)
# 3. Add subscribers
mission.add_mission_subscription(
mission_id="recon-mission-1",
client_uid="operator-001",
role="MISSION_SUBSCRIBER"
)
# 4. Add log entry
mission.add_mission_log(
mission_id="recon-mission-1",
content="Mission briefing completed",
creator_uid="commander-001"
)
# 5. Get mission status
mission_data = mission.get_mission(
mission_id="recon-mission-1",
config_loader=config
)
Best Practices
- Mission Naming: Use descriptive, unique mission IDs
- Role Management: Set appropriate default roles for mission security
- Change Tracking: Leverage change records for audit trails
- Subscriptions: Manage subscriptions to control information flow
- Logs: Use mission logs for operational record-keeping