Overview
The Enterprise Sync API provides TAK-compatible endpoints for uploading, downloading, and managing data packages (files) across TAK clients. This API handles mission packages, attachments, and other synchronized content.Upload Endpoints
Upload File (Standard)
string
required
Name of the file being uploaded (can also use “name” parameter)
string
required
UID of the creator/uploader
string
Optional hash for the content
string
default:"public"
Privacy setting: “public” or “private”
string
required
MIME type of the uploaded file
file
File data (multipart form data) or raw request body
Upload File (Content)
string
required
Hash identifier for the content
string
required
Name of the file
string
required
UID of the creator
string
default:"public"
Privacy setting
file
required
File data as multipart form data
Upload Mission Package
string
required
Hash for the mission package
string
required
Filename for the package
string
required
Creator UID
string
default:"public"
Privacy setting
file
required
Mission package file
HTTPS variant returns
https:// URL instead of http://Download Endpoints
Download Content
string
Hash of the content to download
string
UID of the content to download
binary
Binary file data with appropriate Content-Type header
Check Content Exists
string
required
Hash of the content to check
Query Mission Package
string
required
Hash of the mission package
Search Endpoints
Search Data Packages
string
default:"missionpackage"
Keyword to search for
string
default:"public"
Filter by privacy setting
Metadata Management
Update Package Privacy
string
required
Hash of the package
string
required
Either “private” (sets private=1) or anything else (sets private=0)
Download Package by Hash
string
required
Hash of the package to download
binary
File data sent as attachment with original filename
This endpoint supports CORS with wildcard (
@cross_origin(send_wildcard=True))Data Storage
Enterprise Sync stores the following metadata for each uploaded file:- UID: Unique identifier
- Hash: SHA-256 hash of the content
- PrimaryKey: Database primary key
- SubmissionDateTime: Upload timestamp
- SubmissionUser: Submitter UID
- CreatorUid: Creator UID
- Keywords: Searchable keywords (includes filename, creator UID, and type)
- MIMEType: Content type
- Size: File size in bytes
- Tool: Privacy setting (“public” or “private”)
- Private: Boolean flag (0=public, 1=private)
HTTP vs HTTPS Differences
Both HTTP and HTTPS services implement identical Enterprise Sync endpoints with these differences:- Controller: HTTP uses
HTTPTakApiCommunicationController, HTTPS usesHTTPSTakApiCommunicationController - Upload Response: Mission upload returns
http://URLs for HTTP,https://for HTTPS - Download Methods: HTTP returns tuple
(data, status), HTTPS may return data directly
Integration with Missions
Enterprise Sync integrates with the Mission API:- Files uploaded via Enterprise Sync receive a hash
- The hash can be added to mission contents via
/Marti/api/missions/{mission_id}/contents - Mission package uploads automatically add content to missions
- Mission subscribers can download content using the sync endpoints
Example Workflow
Upload and Add to Mission
Search and Download
Error Responses
- 404 Not Found: Content does not exist
- 500 Internal Server Error: Processing error during upload/download
Source Code References
- HTTP Blueprint:
FreeTAKServer/services/http_tak_api_service/blueprints/enterprise_sync_blueprint.py:1-144 - HTTPS Blueprint:
FreeTAKServer/services/https_tak_api_service/blueprints/enterprise_sync_blueprint.py:1-148 - Core Facade:
FreeTAKServer/core/enterprise_sync/enterprise_sync_facade.py:1-103