Skip to main content
The Geo Object API provides endpoints for managing geographical objects (markers, units, points of interest) on the tactical map.

Create Geo Object

Create a new geographical object and broadcast it to all clients.
curl -X POST "http://localhost:19023/ManageGeoObject/postGeoObject" \
  -u "username:password" \
  -H "Content-Type: application/json" \
  -d '{
    "geoObject": "Ground",
    "attitude": "friendly",
    "latitude": 40.7128,
    "longitude": -74.0060,
    "how": "gps",
    "name": "Checkpoint Alpha",
    "timeout": 3600,
    "remarks": "Primary checkpoint",
    "repeat": false
  }'

Authentication

This endpoint requires HTTP Basic Authentication.

Request Body

geoObject
string
required
Type of geographical object. See Geo Object Types for valid values.
attitude
string
required
Attitude/affiliation of the object:
  • friendly / friend - Friendly forces
  • hostile - Hostile forces
  • neutral - Neutral entities
  • unknown - Unknown affiliation
latitude
float
Latitude coordinate. Required if address is not provided.
longitude
float
Longitude coordinate. Required if address is not provided.
address
string
Address to geocode into coordinates. Alternative to providing latitude/longitude.
how
string
required
How the position was determined. See How Values for valid values.
name
string
Display name/callsign for the object
timeout
integer
required
Time in seconds until the object goes stale (0 for persistent)
remarks
string
Additional notes about the object
repeat
boolean
Whether to save this object for repeated broadcasting (default: false)
UID of another object to link to
distance
float
Distance in meters to offset from base coordinates
bearing
float
Bearing in degrees for distance offset (default: 360)

Response

message
string
The UID of the created geo object

Response Example

{
  "message": "geo-object-uid-abc123"
}

Update Geo Object

Update an existing geographical object by UID.
curl -X PUT "http://localhost:19023/ManageGeoObject/putGeoObject" \
  -u "username:password" \
  -H "Content-Type: application/json" \
  -d '{
    "uid": "geo-object-uid-123",
    "geoObject": "Ground",
    "attitude": "friendly",
    "latitude": 40.7128,
    "longitude": -74.0060,
    "how": "gps",
    "name": "Checkpoint Alpha - Updated",
    "timeout": 3600
  }'

Authentication

This endpoint requires HTTP Basic Authentication.

Request Body

Same as Create Geo Object, with the addition of:
uid
string
required
The UID of the existing object to update

Response

{
  "message": "geo-object-uid-123"
}

Get Geo Objects

Query geographical objects within a specified radius.
curl -X GET "http://localhost:19023/ManageGeoObject/getGeoObject?latitude=40.7128&longitude=-74.0060&radius=1000&attitude=friendly" \
  -u "username:password"

Authentication

This endpoint requires HTTP Basic Authentication.

Query Parameters

latitude
float
required
Center latitude for search
longitude
float
required
Center longitude for search
radius
integer
Search radius in meters (default: 100)
attitude
string
Filter by attitude: friendly, hostile, neutral, unknown, or * for all (default: *)

Response

Returns an array of geo objects within the specified radius.
array
array

Response Example

[
  {
    "latitude": 40.7129,
    "longitude": -74.0061,
    "distance": 15.2,
    "direction": 45.3,
    "type": "Ground",
    "attitude": "friendly"
  }
]

Get Repeated Messages

Retrieve all geo objects marked for repeated broadcasting.
curl -X GET "http://localhost:19023/ManageGeoObject/GetRepeatedMessages" \
  -u "username:password"

Authentication

This endpoint requires HTTP Basic Authentication.

Response

messages
object
Dictionary mapping UIDs to CoT XML messages

Response Example

{
  "messages": {
    "uid-123": "<?xml version='1.0'?><event>...</event>",
    "uid-456": "<?xml version='1.0'?><event>...</event>"
  }
}

Delete Repeated Messages

Remove geo objects from repeated broadcasting.
curl -X DELETE "http://localhost:19023/ManageGeoObject/DeleteRepeatedMessage?ids=uid-123,uid-456" \
  -u "username:password"

Authentication

This endpoint requires HTTP Basic Authentication.

Query Parameters

ids
string
required
Comma-separated list of message UIDs to delete

Response

{
  "message": "operation successful"
}

Geo Object Types

Common geo object types include:

Squad/Infantry Types

  • Sniper - a-.-G-U-C-I-d
  • Medic - a-.-G-U-i-m-etf
  • Recon - a-.-G-U-C-R
  • LMG - a-.-G-E-W-R
  • Grenadier - a-.-G-E-W-Z
  • anti Tank - a-.-G-U-C-A-A
  • AA - a-.-G-U-C-D
  • Engineer - a-.-G-U-C-E
  • Mortar - a-.-G-E-W-O

Emergency Services

  • Vehicle - a-.-G-E-V-C
  • Ambulance - a-.-G-E-V-m
  • Hospital - a-.-G-I-X-H
  • Police Station - a-.-G-I-i-l
  • Emergency Station - a-.-G-I-i-e
  • SAR - a-.-A-M-F-Q-H
  • Medevac - a-.-G-U-C-V-R-E

Incidents

  • Incident - a-.-X-i-o
  • fire - a-.-X-i-f
  • earthquake - a-.-X-i-g-e
  • avalanche - a-.-X-i-g-a
  • vehicle accident - a-.-X-i-t-v-a

Generic

  • Ground - a-.-G

How Values

Valid values for the how parameter:
  • gps - GPS derived
  • human / retyped - Human entered
  • machine - Machine generated
  • mensurated - Measured from imagery
  • estimated - Estimated position
  • nonCoT / gigo - Non-CoT source

Error Responses

500 Internal Server Error
{
  "message": "An error occurred adding geo object."
}
Or for retrieval:
{
  "message": "An error occurred retrieving geo object."
}

Build docs developers (and LLMs) love