Кожне повідомлення Cursor on Target (CoT) — це один XML-документ, кореневий елемент якого, <event>, несе код типу, унікальний ідентифікатор, три мітки часу UTC і позицію <point>; усе інше їде всередині відкритого контейнера <detail>. Ця єдина форма переносить позиції, маркери, чат, маршрути, малюнки, тривоги та медичні запити між ATAK, WinTAK, iTAK і TAK Server. Ця сторінка — бібліотека для копіювання: анотований, синтаксично коректний CoT XML для повідомлень, якими тактичні системи реально обмінюються, з поясненням, що робить із ним клієнт TAK, який його отримав.

Про історію та дизайн формату читайте в нашому огляді формату Cursor on Target, а поелементний розбір — у глибокому зануренні в схему CoT; ця стаття свідомо лишається на рівні «покажіть мені XML». Назви елементів і атрибутів нижче звірено з публічною базовою схемою подій CoT MITRE, документацією підсхем та визначеннями типів CoT, опублікованими разом із клієнтами TAK. Позивні, UID і координати вигадані; мітки часу — ілюстративні значення ISO-8601 UTC.

Анатомія CoT-повідомлення

Мінімальна коректна подія CoT складається з семи атрибутів <event>, рівно одного <point> і, за потреби, <detail>:

<event version="2.0" uid="ANDROID-9c2f71a4" type="a-f-G-U-C" how="m-g"
       time="2026-10-07T06:12:44.000Z" start="2026-10-07T06:12:44.000Z"
       stale="2026-10-07T06:13:14.000Z">
  <point lat="50.450112" lon="30.523398" hae="152.4" ce="4.5" le="9.0"/>
  <detail>
    <contact callsign="GRIF-2" endpoint="*:-1:stcp"/>
    <__group name="Cyan" role="Team Member"/>
    <status battery="78"/>
    <takv platform="ATAK-CIV" version="5.2.0" device="Samsung SM-G975F" os="34"/>
    <track speed="1.4" course="270.0"/>
    <precisionlocation geopointsrc="GPS" altsrc="GPS"/>
  </detail>
</event>

Що дає кожна частина на клієнті-одержувачі:

Анатомія повідомлення Cursor on Target: ліворуч — скелет XML події CoT з атрибутами event (uid, type, how, time, start, stale), елементом point (lat, lon, hae, ce, le) та дочірніми елементами detail (contact, __group, status, takv, track, precisionlocation, remarks, link, usericon, __chat); праворуч стрілки з'єднують кожну частину з тим, що вона дає в ATAK і TAK Server: піктограма на карті та колір приналежності, обробка прострочення, позиція і точність, позивний, колір і роль у команді, батарея та версія клієнта, вектор швидкості й курсу, маршрутизація GeoChat.
Кожен елемент події CoT керує конкретною поведінкою в ATAK, WinTAK і TAK Server — від піктограми 2525, вибраної кодом типу, до сірого затухання після спливнення мітки stale.
ЧастинаЗначенняЩо з нею роблять ATAK / TAK Server
uidІдентичність об'єкта, а не повідомленняТой самий uid пересуває наявний маркер; новий uid створює новий. Видалення та скасування тривоги націлені саме на нього.
typeТаксономія «крапка-дефіс», що описує, чим є об'єктВибирає символ MIL-STD-2525 і колір приналежності; визначає серверну фільтрацію та правила федерації.
howЯк було отримано позиціюЗважує звіт в об'єднанні даних (GPS, оцінка чи ретрансляція); ATAK показує це в деталях маркера.
time / start / staleЧас створення та вікно чинностіПісля спливання stale клієнти роблять маркер сірим, а потім вилучають його; ніхто не надсилає явного повідомлення про завершення.
pointlat/lon (десяткові градусі WGS-84), hae (метри над еліпсоїдом), ce/le (радіуси похибки)Розміщує маркер; ce може малювати кільце точності. Невідомі значення — службовий замінник 9999999.
detailВідкритий контейнер розширеньВідомі дочірні елементи (нижче) задають позивний, колір команди, батарею, вектор швидкості; невідомі дочірні елементи ігноруються, а не відхиляються.

Три властивості <point> регулярно підводять інтеграторів. hae — висота над еліпсоїдом WGS-84, а не над середнім рівнем моря. ce і le — межі горизонтальної та вертикальної похибки з ймовірністю 1-сигма в метрах; схема вимагає їх навіть коли значення невідомі — 9999999.0 є узгодженим значенням-замінником «невідомо», і воно краще за самовпевнене 0.0. А lat/lon — знакові десяткові градусі, причому шість знаків після коми дають роздільність приблизно 0,1 м; MGRS чи UTM у CoT не передбачено.

Коди типів CoT і значення how: шпаргалка

Атрибут type — це розділений дефісами шлях таксономії, і його перший токен каже, яким видом події це є:

Перший токенРодинаТипові випадки
a-Атоми — реальні об'єкти світуПідрозділи, техніка, літаки, поранені, інциденти
b-Біти — інформаційні об'єктиЧат, маршрути, малюнки, маркери, відеоаліаси, тривоги
t-Завдання / керуванняПінги активності, завдання на видалення, отримання даних
y-ВідповідіПідтвердження, статус виконання завдань

Для атомів другий токен — приналежність, третій — бойовий вимір; решта спускається деревом функцій MIL-STD-2525 у верхньому регістрі, а малі літери зарезервовані для розширень CoT:

ТокенПриналежністьТокенБойовий вимір
pНа розглядіPКосмос
uНевідомийAПовітря
aЙмовірний союзникGСуша
fСвійSНадводна
nНейтральнийUПідводна
sПідозрюванийXІнше
hВорожийдалі йдуть ID функцій 2525 у верхньому регістрі (напр., -U-C бойовий, -E-V-A-T танк)

Оскільки таксономія декодується за префіксом, клієнт, який розуміє лише a-h-G, усе одно намалює загальну ворожу наземну піктограму для a-h-G-E-V-A-T. Поширені рядки з реального трафіку: a-f-G-U-C (дружній наземний бойовий — типовий тип пристрою ATAK), a-f-A-M-F-Q / a-f-A-M-H-Q (дружній БпЛА із фіксованим / гвинтовим крилом), a-u-G (невідомий наземний), b-m-p-s-m (маркер spot map), b-t-f (GeoChat), b-m-r (маршрут), b-r-f-h-c (медичний запит 9-line). Як піктограми відображаються символами, розібрано у відображенні символіки у TAK, а порівняння стандартів — у APP-6 проти MIL-STD-2525.

Атрибут how фіксує походження даних, і системи об'єднання даних зважують за ним звіти:

howЗначення
h-eОцінка, введена людиною
h-c / h-t / h-pПорахована людиною / переписана (голос, папір) / вставлена з іншого вікна
h-g-i-g-oОфіційно — «високо сумнівний трек»; на практиці ATAK штампує цим більшість вручну виставлених маркерів і GeoChat
m-gЗгенеровано машиною з GPS (уточнення m-g-d DGPS, m-g-n INS+GPS)
m-i / m-f / m-rВимірювання за зображенням / злиття з кількох джерел / передано шлюзом
m-n / m-s / m-cІнерціальна навігація / симуляція / конфігураційний файл

Правила часу: time, start і stale — значення ISO 8601 UTC, що закінчуються на Z (дробові секунди необов'язкові). time — момент створення події; start–stale — вікно чинності. Встановлення stale ранішим за start — оригінальна конвенція MITRE для «скидання треку», хоча в мережах TAK надійніше працює явне завдання на видалення (нижче).

Звіти про позицію: дружній PLI і ворожі/нейтральні маркери

Приклад на початку сторінки — звіт про власну позицію (PLI): ATAK повторює його кожні кілька секунд із тим самим uid, ставить stale приблизно на два–чотири інтервали звітування плюс запас і дозволяє всім іншим клієнтам прибрати маркер, якщо оновлення припинилися. Маркери від датчиків або виставлені оператором мають ту саму форму події, але інший type і триваліший stale:

<event version="2.0" uid="E-20261007-0413" type="a-h-G-E-V-A-T" how="h-g-i-g-o"
       time="2026-10-07T06:41:02.000Z" start="2026-10-07T06:41:02.000Z"
       stale="2026-10-07T18:41:02.000Z">
  <point lat="50.412220" lon="30.591054" hae="9999999.0" ce="25.0" le="9999999.0"/>
  <detail>
    <contact callsign="K-41"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4">Hull-down at treeline, 2 vehicles</remarks>
    <usericon iconsetpath="COT_MAPPING_2525C/a-h/a-h-G-E-V-A-T"/>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <archive/>
  </detail>
</event>

Що робить сторона-одержувач: type малює червоний ромб танка; contact/callsign стає підписом; usericon прив'язує конкретний запис набору піктограм (форма COT_MAPPING_2525C/<affiliation>/<type> — саме її видає палітра 2525 в ATAK); link relation="p-p" вказує джерело; <archive/> каже клієнтам зберегти маркер, а не погасити його разом зі спливанням stale. Невідомі контакти просто використовують a-u-G — жовта піктограма зі знаком питання з'являється без інших змін. Для звичайної кольорової крапки без 2525-кодування ATAK застосовує маркер spot map:

<event version="2.0" uid="9405e320-9356-41c4-8449-f46990aa17f8"
       type="b-m-p-s-m" how="h-g-i-g-o"
       time="2026-10-07T06:55:10.000Z" start="2026-10-07T06:55:10.000Z"
       stale="2026-10-08T06:55:10.000Z">
  <point lat="50.456090" lon="30.563750" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <contact callsign="R 1"/>
    <color argb="-65536"/>
    <usericon iconsetpath="COT_MAPPING_SPOTMAP/b-m-p-s-m/-65536"/>
  </detail>
</event>

Тут піктограму обирає usericon із палітри spot map і ARGB-значення кольору (32-бітове ціле зі знаком; -65536 — непрозорий червоний), а не код символіки — це зручно для дружніх анотацій, які не мають на увазі 2525-ідентичність.

Повідомлення GeoChat (b-t-f)

Чат у світі TAK — не окремий протокол: рядок GeoChat — це подія CoT типу b-t-f, текст якої лежить у <remarks>, а адресування — у <__chat>/<chatgrp>:

<event version="2.0"
       uid="GeoChat.ANDROID-9c2f71a4.All Chat Rooms.3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88"
       type="b-t-f" how="h-g-i-g-o"
       time="2026-10-07T07:02:31.000Z" start="2026-10-07T07:02:31.000Z"
       stale="2026-10-08T07:02:31.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <__chat id="All Chat Rooms" chatroom="All Chat Rooms" groupOwner="false"
            senderCallsign="GRIF-2"
            messageId="3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88">
      <chatgrp uid0="ANDROID-9c2f71a4" uid1="All Chat Rooms" id="All Chat Rooms"/>
    </__chat>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4"
             time="2026-10-07T07:02:31.000Z">Bearing 085, treeline, over.</remarks>
  </detail>
</event>

Як це читати: uid події за конвенцією — GeoChat.<sender>.<conversation>.<message-uuid>, що робить дедуплікацію при повторному відтворенні тривіальною; chatgrp/uid0 — відправник, а uid1 — призначення: UID єдиного одержувача для прямого повідомлення або назва кімнати для широкомовлення; remarks/@to несе UID одержувача в прямих повідомленнях; stale ставиться на день уперед, бо чат, на відміну від позицій, мусить переживати store-and-forward. Квитанції про доставку й прочитання повертаються типами b-t-f-d і b-t-f-r. Точка point події може прив'язати повідомлення до місця на карті; ATAK також пересилає живу позицію відправника, доки оператор її не вимкне. Повну картину store-and-forward і смуги пропускання див. у тактичному чаті та стратегії даних у TAK.

Маршрути, малюнки та лінії дальність–пеленг

Маршрут — це одна подія b-m-r, точки якої є дочірніми елементами <link> — b-m-p-w для іменованих точок маршруту, b-m-p-c для контрольних точок фігур, — за якими йде блок стилізації <link_attr>:

<event version="2.0" uid="9017073e-5658-42e7-baa8-b98f3c9c1622" type="b-m-r" how="h-e"
       time="2026-10-07T07:20:00.000Z" start="2026-10-07T07:20:00.000Z"
       stale="2026-10-08T07:20:00.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="f3acf150-d75c-407d-be43-e401ab40fe74" callsign="SP"
          type="b-m-p-w" point="50.443353,-77.054400" remarks="" relation="c"/>
    <link uid="820ebf04-1300-4c3a-a368-d6f1e21a5ddb" callsign=""
          type="b-m-p-c" point="50.436413,-77.045642" remarks="" relation="c"/>
    <link uid="f6926af1-deec-44f4-ae06-46065c829887" callsign="CP1"
          type="b-m-p-w" point="50.446574,-77.040572" remarks="" relation="c"/>
    <link_attr planningmethod="Infil" color="-1" method="Driving" prefix="CP"
               type="Vehicle" stroke="3" direction="Infil" routetype="Primary"
               order="Ascending Check Points"/>
    <strokeColor value="-1"/>
    <strokeWeight value="3.0"/>
    <contact callsign="ROUTE ALFA"/>
    <remarks></remarks>
    <archive/>
    <labels_on value="true"/>
  </detail>
</event>

ATAK відображає список link point як геометрію маршруту, перетворює записи b-m-p-w на маркери маршрутних точок із власними позивними і читає link_attr для режиму руху (Driving|Walking|Flying|Swimming|Watercraft), напрямку (Infil|Exfil) і типу маршруту (Primary|Secondary). Власна точка point події — службовий нуль 0/0: геометрія повністю живе в detail.

Малюнки дотримуються того самого принципу «геометрія в detail». Коло — це еліпс із рівними осями всередині <shape>:

<event version="2.0" uid="6d09b6f6-720a-4eef-a197-183012512316"
       type="u-d-c-c" how="h-e"
       time="2026-10-07T07:35:12.000Z" start="2026-10-07T07:35:12.000Z"
       stale="2026-10-08T07:35:12.000Z">
  <point lat="50.437376" lon="30.572999" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <shape>
      <ellipse major="300.0" minor="300.0" angle="360"/>
      <link uid="6d09b6f6-720a-4eef-a197-183012512316.Style"
            type="b-x-KmlStyle" relation="p-c">
        <Style>
          <LineStyle><color>ffffffff</color><width>4.0</width></LineStyle>
          <PolyStyle><color>96ffffff</color></PolyStyle>
        </Style>
      </link>
    </shape>
    <strokeColor value="-1"/>
    <strokeWeight value="4.0"/>
    <fillColor value="-1761607681"/>
    <contact callsign="PATROL AREA"/>
    <labels_on value="true"/>
  </detail>
</event>

Точка point — це центр, major/minor — метри, а блок у стилі KML, вкладений у link із типом b-x-KmlStyle, несе штрих і заливку. Прямокутник викидає елемент shape і перелічує кути як дочірні <link point="lat,lon"/> із типом u-d-r; довільна лінія робить те саме з типом u-d-f, замикаючи полігон повторенням першої точки в кінці. Лінія дальність–пеленг — знову інша: тип u-rb-a, точка point є якорем, а вектор заданий чисельно:

<event version="2.0" uid="58df2fcd-e33e-414f-a718-b18b50cd3137"
       type="u-rb-a" how="h-e"
       time="2026-10-07T07:44:03.000Z" start="2026-10-07T07:44:03.000Z"
       stale="2026-10-08T07:44:03.000Z">
  <point lat="50.420806" lon="30.554945" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <range value="886.14"/>
    <bearing value="45.6"/>
    <inclination value="0.0"/>
    <rangeUnits value="1"/>
    <bearingUnits value="0"/>
    <northRef value="0"/>
    <strokeColor value="-65536"/>
    <strokeWeight value="3.0"/>
    <contact callsign="R&amp;B 1"/>
  </detail>
</event>

Одиниці кодуються малими цілими числами: rangeUnits 0=км, 1=метри, 2=милі, 3=ярди, 4=фути, 5=морські милі; bearingUnits 0=градуси, 1=тисячні, 2=радіани; northRef 0=справжня північ, 1=магнітна, 2=сіткова. ATAK при імпорті перераховує положення наконечника стрілки з якоря та вектора.

Тривожні сигнали та запити CASEVAC/MEDEVAC

Маяки тривоги — маленькі термінові події: тип b-a-o-tbl для загальної тривоги 911, stale лише на десять секунд уперед (маяк ретранслюється, а не лишається висіти) і конвенція UID <device-uid>-9-1-1:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-tbl" how="h-g-i-g-o"
       time="2026-10-07T08:01:57.000Z" start="2026-10-07T08:01:57.000Z"
       stale="2026-10-07T08:02:07.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <contact callsign="GRIF-2-Alert"/>
    <emergency type="911 Alert">GRIF-2</emergency>
  </detail>
</event>

Рядки emergency/@type і відповідні типи CoT, як їх визначає ATAK:

ТривогаТип CoTТригер у ATAK
911 Alertb-a-o-tblКнопка тривоги, загальна
Ring The Bellb-a-o-panСвідомий запит термінової уваги
In Contactb-a-o-opnПідрозділ у контакті з противником
Geo-fence Breachedb-a-gТрек входить до геозони моніторингу або покидає її
Customb-a-o-cВизначається плагіном
Cancel Alertb-a-o-canОператор скасовує активний маяк

Отримавши подію, клієнти знаходять маркер за link/@uid, піднімають тривогу з дальністю і пеленгом на позицію потерпілого й підтримують маяк активним; TAK Server періодично ретранслює його. Скасування повторно використовує той самий uid події та змінює detail:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-can" how="h-g-i-g-o"
       time="2026-10-07T08:07:22.000Z" start="2026-10-07T08:07:22.000Z"
       stale="2026-10-07T08:07:32.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <emergency cancel="true">GRIF-2</emergency>
  </detail>
</event>

Запит 9-line MEDEVAC/CASEVAC — це маркер типу b-r-f-h-c, у detail якого лежить елемент <_medevac_> (зверніть увагу на підкреслення), що містить дев'ять рядків в атрибутах. Безпечний, широко зрозумілий піднабір:

<event version="2.0" uid="7b1e0c52-2f4d-4f18-9c6e-0d4a2b9f5c31"
       type="b-r-f-h-c" how="h-g-i-g-o"
       time="2026-10-07T08:10:40.000Z" start="2026-10-07T08:10:40.000Z"
       stale="2026-10-07T09:10:40.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <contact callsign="GRIF-2"/>
    <_medevac_ casevac="false" title="GRIF-2 9LINE" freq="41.50"
              urgent="1" priority="0" routine="0"
              litter="1" ambulatory="0"
              security="2" hlz_marking="2"
              equipment_none="true">
      <zMistsMap>
        <zMist title="MIST 1" z="Z1" m="GSW"
               i="left thigh" s="HR 110, BP 100/60" t="tourniquet, TXA"/>
      </zMistsMap>
    </_medevac_>
    <remarks>Pickup at gravel yard, wind 310/8</remarks>
  </detail>
</event>

Розшифрування: кількість пацієнтів за пріоритетом — у urgent/priority/routine; рядок 5 — у litter/ambulatory; security — індекс 0–3 (N — противника немає, P — можливий, E — противник у районі, X — потрібен супровід); hlz_marking індексує: A — панелі, B — піротехніка, C — дим, D — нічого, E — інше; спеціальне обладнання — булеві прапорці (hoist, extraction_equipment, ventilator); клінічний звіт MIST вкладено в zMistsMap. ATAK відтворює з цього елемента повну картку 9-line та інструменти майданчика посадки. Операційний робочий процес довкола нього розібрано у ПЗ координації CASEVAC.

Поле зору датчика та відеопосилання

Підсхема датчиків MITRE додає кероване поле зору до будь-якого маркера. Усередині події з позицією самої платформи — тут це дружній БпЛА з гвинтовим крилом, тип a-f-A-M-H-Q — додайте:

<event version="2.0" uid="UAV-ZP-07" type="a-f-A-M-H-Q" how="m-g"
       time="2026-10-07T08:22:05.000Z" start="2026-10-07T08:22:05.000Z"
       stale="2026-10-07T08:22:15.000Z">
  <point lat="50.437120" lon="30.552870" hae="820.0" ce="12.0" le="15.0"/>
  <detail>
    <contact callsign="ZP-07" endpoint="*:-1:stcp"/>
    <sensor azimuth="127.0" fov="30.0" vfov="22.0" range="2200.0"
           elevation="-18.0" model="EO/IR turret"/>
    <__video url="rtsp://192.168.4.60:8554/live.sdp"/>
  </detail>
</event>

azimuth — градуси від справжнього півночі, elevation — нахил (від'ємний означає вниз), fov/vfov — горизонтальне та вертикальне поле зору в градусах, range — похила дальність у метрах; разом вони дозволяють ATAK намалювати на карті конус датчика. Дочірній елемент <__video> прив'язує маркер до URL потоку, тож відкриття маркера відкриває трансляцію. Окремі реєстрації камер подорожують як власні події типу b-i-v з елементом <ConnectionEntry>, що містить address, port, protocol та суміжні атрибути тюнера і заповнює менеджер відео в кожного клієнта. Про ширший конвеєр — частоти телеметрії, метадані KLV, наведення на ціль — читайте в інтеграції телеметрії дронів із TAK.

Саме тут застрягає більшість програм інтеграції: радар, автопілот дрона, акустичний датчик і застарілий C2-канал описують світ по-різному, і кожен треба перекласти у валідний CoT — правильні типи, чесні ce/le, стабільні UID, розумні stale — інакше COP наповнюється треками-привидами. Ми будуємо саме такі CoT-шлюзи та адаптери, а також плагіни ATAK/WinTAK, які відображають результат. Розкажіть, який канал вам потрібен на тактичній картині →

Видалення маркерів і ping/pong активності

У CoT немає вбудованого видалення; TAK додає його поверх як завдання типу t-x-d-d, де <link> називає об'єкт видалення:

<event version="2.0" uid="6650d1ee-4b17-4d02-8c95-13a1f2e9b0aa"
       type="t-x-d-d" how="h-g-i-g-o"
       time="2026-10-07T08:31:19.000Z" start="2026-10-07T08:31:19.000Z"
       stale="2026-10-07T08:31:29.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="E-20261007-0413" relation="p-p" type="a-h-G-E-V-A-T"/>
    <__forcedelete/>
  </detail>
</event>

Без <__forcedelete/> ATAK лише позначає вказаний елемент простроченим локально та вилучає його згідно з налаштуваннями користувача; із цим елементом об'єкт вилучається остаточно в кожного клієнта, який отримав завдання. Імпортер вимагає, щоб link/@uid, @relation і @type були присутні й непорожні, тож лишайте всі три. Keepalive ще менший: клієнти TAK пінгують сервер, який замовк приблизно на 15 секунд, повторюючи це кожні кілька секунд, і трактують pong типу t-x-c-t-r як керуюче повідомлення, яке ніколи не потрапляє на карту:

<event version="2.0" uid="ANDROID-9c2f71a4-ping" type="t-x-c-t" how="m-g"
       time="2026-10-07T08:33:50.000Z" start="2026-10-07T08:33:50.000Z"
       stale="2026-10-07T08:34:00.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
</event>

Якщо ви будуєте шлюз, віддзеркалюйте цю поведінку: подія <uid>-ping через кожен інтервал, протягом якого має перевірятися з'єднання, і мовчазне відкидання pong.

Генерація валідного CoT: мітки часу, stale, UID, екранування

Типові баги генераторів CoT повторювані, і всіх їх дешево запобігти:

  • UTC, завжди. Кожна мітка часу закінчується на Z; локальні зсуви або відсутній Z зміщують маркери на години в минуле чи майбутнє. Дробові секунди необов'язкові, і будь-яка точність є коректною.
  • Дисципліна stale. Рухомі треки: два–чотири інтервали звітування плюс запас. Статичні маркери: години чи дні, з <archive/>, якщо мають зберегтися. Ніколи не лишайте stale на типовому далекому майбутньому для живого треку — маркери-привиди — скарга номер один із поля.
  • Стабільні UID. Походьте uid від сутності (серійний номер, номер треку, хеш вмісту), а не від повідомлення. Два реальні треки зі спільним uid сколапсують в один мерехтливий маркер.
  • Чесні похибки. Якщо не знаєте висоти або точності, видавайте 9999999.0, а не 0. Рушії об'єднання даних трактують 0 як заяву.
  • Координати. Знакові десяткові градусі, WGS-84; шести знаків після коми цілком достатньо. Обрізання до чотирьох знаків (приблизно 10 м) — легітимний вибір заради смуги пропускання, який роблять деякі бібліотеки, — але робіть це послідовно.
  • Екранування XML. Екрануйте &, <, > у значеннях атрибутів і тексті — позивні та примітки рано чи пізно містять амперсанд. Один зайвий < у полі remarks вбиває весь документ ще в парсері.
  • Провалідуйте раз — довіряйте потім. Перевіряйте вивід вашого генератора проти опублікованого XSD подій CoT під час розробки. XSD не спіймає семантичних помилок (stale раніше за start, беззмістовні хвости type), тож додайте ці перевірки як асершії в кодувальнику.

Надсилання CoT: mesh multicast чи TAK Server

Два транспорти закривають майже кожне розгортання. Безсерверна mesh SA мультикастить кожен XML-документ як одну UDP-дейтаграму на стандартну TAK-адресу 239.2.3.1:6969 (GeoChat історично використовував також 224.10.10.1:17012); кожен клієнт у сегменті чує все, і store-and-forward немає. У серверній моделі клієнти підключаються до TAK Server по TCP — порт 8087 відкритий, 8089 TLS із клієнтськими сертифікатами, — сервер стрімить XML в обидва боки, розсилає події з фільтрацією за групами та місіями і може перекодувати потік у компактний TAK-protobuf, узгоджений на з'єднанні. Деталі кодування й узгодження, зокрема коли protobuf ламає інструменти, розібрано у протоколі TAK: CoT XML проти protobuf; маршрутизація через межі серверів — у архітектурі TAK Federation Hub, а коаліційна карти — у з'єднанні CoT і стандартів NATO.

Просте емпіричне правило вирішує вибір між ними: якщо одержувачі в тому самому RF-сегменті й втрати припустимі — multicast нічого не коштує; якщо хтось перебуває поза сегментом, в іншій мережі або потребує повторного відтворення офлайн — потрібен сервер, як і всьому, що вимагає журналу аудиту.

Перетворіть ваш датчик або C2-канал на валідний CoT

Ми будуємо CoT-шлюзи та адаптери, що перетворюють радари, дрони, акустичні датчики та застарілі C2-канали на чисті потоки Cursor on Target, а також плагіни ATAK і WinTAK, які виводять їх на тактичну картину.

Інтегруйте вашу систему з TAK → TAKpilot для CloudTAK →

Підготовлено інженерною командою Corvus Intelligence, яка будує CoT-шлюзи, інтеграції з TAK Server та плагіни ATAK/WinTAK; кожна назва елемента, код типу і поведінка тут звірені з публічною документацією схеми CoT MITRE та визначеннями CoT, опублікованими з клієнтами TAK. Про Corvus Intelligence →