Skip to main content

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
Uploads a file to Enterprise Sync storage. Accepts either multipart form data or raw binary in 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
Alternative upload endpoint that stores content with specified hash.

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
Uploads a mission package and returns the metadata URL.
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
Downloads file content by hash or UID. At least one parameter is required.
binary
Binary file data with appropriate Content-Type header

Check Content Exists

string
required
Hash of the content to check
Checks if content exists without downloading it. Returns HTTP 200 if exists, 404 if not found.

Query Mission Package

string
required
Hash of the mission package
Downloads a mission package with proper MIME type and filename as attachment.

Search Endpoints

Search Data Packages

string
default:"missionpackage"
Keyword to search for
string
default:"public"
Filter by privacy setting
Searches for data packages matching the keyword. Only returns public packages (private=0).

Metadata Management

Update Package Privacy

string
required
Hash of the package
string
required
Either “private” (sets private=1) or anything else (sets private=0)
Updates the privacy setting of a data package.

Download Package by Hash

string
required
Hash of the package to download
Downloads a data package by its hash with proper MIME type and download filename.
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 uses HTTPSTakApiCommunicationController
  • 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:
  1. Files uploaded via Enterprise Sync receive a hash
  2. The hash can be added to mission contents via /Marti/api/missions/{mission_id}/contents
  3. Mission package uploads automatically add content to missions
  4. 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