syntax = "proto3"; option optimize_for = LITE_RUNTIME; package atakmap.commoncommo.protobuf.v1; import "contact.proto"; import "group.proto"; import "precisionlocation.proto"; import "status.proto"; import "takv.proto"; import "track.proto"; // CotEvent detail // The strong typed message fields are optional. If used, they *MUST* adhere // to the requirements of the message (see their proto file) and // their XML source element used to populate the message MUST // be omitted from the xmlDetail. // WHOLE ELEMENTS MUST BE CONVERTED TO MESSAGES. Do not try to // put part of the data from a given element into one of the messages // and put other parts of the data in an element of xmlDetail! This applies // especially if you add new things to the XML representation which do not // have a place in the equivalent protobuf message. Instead, omit the // message and put the entire element in xmlDetail! // // xmlDetail is optional. If omitted, all Detail data has been // converted to the strongly typed message fields. // If present, this contains any remaining detail data that has NOT been // included in one of the strongly typed message fields. To process the // xmlDetail, the following rules MUST be followed: // Senders of this message MUST: // 1. Remove child elements used to populate the other message // fields. If the same child element appears more times than an // associated message field(s) is intended to encompass, or if any // error occurs mapping to the message equivalent, do not remove // the element(s) in question and do not populate the message // equivalent. // 2. If no data under remains, STOP - do not populate // xmlDetail // 3. Serialize the remaining XML tree under .... // as XML in UTF-8 encoding // 4. Remove the and element tags // 5. Remove the XML header // 6. Place the result in xmlDetail // Receivers of this message MUST do the equivalent of the following: // 1. If the field is not present (zero length), stop - do nothing // 2. Prepend and append // 3. Prepend an XML header for UTF-8 encoding, version 1.0 // ( or similar) // 4. Read the result, expecting a valid XML document with a document // root of // 5. Merge in XML equivalents of each of the strongly typed // messages present in this Detail message. // In the event that a sending application does not follow // sending rule #1 above properly and data for the same element // appears in xmlDetail, the data in xmlDetail should be left alone // and the data in the equivalent message should ignored. message Detail { string xmlDetail = 1; // Contact contact = 2; // <__group> Group group = 3; // PrecisionLocation precisionLocation = 4; // Status status = 5; // Takv takv = 6; // Track track = 7; }