{ "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "IGeoAltitudeMode": { "properties": { "altitudeMode": { "enum": ["CLAMP_TO_GROUND", "RELATIVE_TO_GROUND", "ABSOLUTE"], "description" : "Enumeration of altitude modes to define how the altitude value in an IGeoPosition alt (altitude) property will be interpreted" } } }, "IGeoTimeSpan": { "type": "object", "description": "Defines a range in time that represents a beginning and end. This can be used to describe things such as availability, visibility, active/inactive for provided periods of time. From a filtering point of view, if a time filter is applied a feature would only be visible on a map view within the defined timespan(s)", "properties": { "begin": { "type": "string", "format": "date-time", "description": "Starting date time value as defined by http://tools.ietf.org/html/rfc3339" }, "end": { "type": "string", "format": "date-time", "description": "Ending date time value as defined by http://tools.ietf.org/html/rfc3339" } }, "required": ["begin", "end"] }, "IGeoPosition": { "type": "object", "description": "Defines a specific geospatial position derived using WGS-84 latitude longitude and alitude in meters", "properties": { "latitude": { "type": "number", "description": "Latitude value in degrees decimal (i.e. 23.4567) derived from WGS-84", "minimum": -90, "maximum": 90, "default": 0 }, "longitude": { "type": "number", "description": "Longitude value in degrees decimal (i.e. 23.4567) derived from WGS-84", "minimum": -180, "maximum": 180, "default": 0 }, "altitude": { "type": "number", "description": "A value in meters representing the altitude of the associated position. This will be interpreted base on the altitudeMode provided in the IGeoAltitudeMode enumeration", "default": 0 } }, "required": ["latitude", "longitude", "altitude"] }, "IGeoPositionGroup": { "type": "object", "description": "An ordered list of positions representing a 1 or more positions with an associated IGeoAltitudeMode to interpret the altitude values. In the case of a point, a single position will create a single icon, wheras mulitple positions will create the same icon at multiple positions to be interpreted as a composite feature. For consistency, and IGeoRenderables use an IGeoPositionGroup even when only containing a single position", "allOf": [{ "$ref": "#/definitions/IGeoAltitudeMode" }, { "properties": { "positions": { "type": "array", "description": "An ordered list of IGeoPosition objects representing a 1 or more positions with an associated IGeoAltitudeMode to interpret the altitude values. In the case of a point, a single position will create a single icon, wheras mulitple positions will create the same icon at multiple positions to be interpreted as a composite feature. For consistency, and IGeoRenderables use an IGeoPositionGroup even when only containing a single positions", "items": { "$ref": "#/definitions/IGeoPosition" } }, "timeStamp": { "type": "string", "format": "date-time", "description": "Defines a point in time that something occurred, was created, or was last updated time value as defined by http://tools.ietf.org/html/rfc3339" }, "timeSpans": { "type": "array", "description": "Defines one or more periods of time something occured, or was active.", "items": { "$ref": "#/definitions/IGeoTimeSpan" } } }, "required": ["positions"] }] }, "IGeoPositionHistory": { "type": "object", "description": "An ordered collection of IGeoPositionGroup objects", "properties": { "positionHistory": { "type": "array", "items": { "$ref": "#/definitions/IGeoPositionGroup" } } } }, "IGeoCamera": { "type": "object", "description": "Defines the virtual camera that views the scene. This element defines the position of the camera relative to the Earth's surface as well as the viewing direction of the camera. The camera position is defined by , , , and either . The viewing direction of the camera is defined by , , and . An IGeoCamera provides full six-degrees-of-freedom control over the view, so you can position the Camera in space and then rotate it around the X, Y, and Z axes. Most importantly, you can tilt the camera view so that you're looking above the horizon into the sky. The order of rotation is important. By default, the camera is looking straight down the −Z axis toward the Earth. Before rotations are performed, the camera is translated along the Z axis to . The order of transformations is as follows: - translate along the Z axis to - rotate around the Z axis. - rotate around the X axis. - rotate around the Z axis (again). Note that each time a rotation is applied, two of the camera axes change their orientation.", "allOf": [{ "$ref": "#/definitions/IGeoBase" }, { "$ref": "#/definitions/IGeoAltitudeMode" }, { "$ref": "#/definitions/IGeoPosition" }, { "properties": { "tilt": { "type": "number", "description": "Rotation, in degrees, of the camera around the X axis. A value of 0 indicates that the view is aimed straight down toward the earth (the most common case). A value for 90 for indicates that the view is aimed toward the horizon. Values greater than 90 indicate that the view is pointed up into the sky. Values for are clamped at +180 degrees", "minimum": 0, "maximum": 179, "default": 0 }, "roll": { "type": "number", "description": "Rotation, in degrees, of the camera around the Z axis. Values range from −180 to +180 degrees", "minimum": 0, "maximum": 179, "default": 0 }, "heading": { "type": "number", "description": "Direction (that is, North, South, East, West), in degrees. Default=0 (North). Values range from 0 to 360 degrees", "minimum": 0, "maximum": 359, "default": 0 } } }], "required": ["tilt", "roll", "heading"] }, "IGeoLookAt": { "type": "object", "description": "The LookAt element positions the 'camera' in relation to the IGeoPosition that is being viewed", "allOf": [{ "$ref": "#/definitions/IGeoBase" }, { "$ref": "#/definitions/IGeoAltitudeMode" }, { "$ref": "#/definitions/IGeoPosition" }, { "properties": { "tilt": { "type": "number", "description": "Rotation, in degrees, of the camera around the X axis. A value of 0 indicates that the view is aimed straight down toward the earth (the most common case). A value for 90 for indicates that the view is aimed toward the horizon. Values greater than 90 indicate that the view is pointed up into the sky. Values for are clamped at +180 degrees. ", "minimum": 0, "maximum": 179, "default": 0 }, "heading": { "type": "number", "description": "Direction (that is, North, South, East, West), in degrees. Default=0 (North). Values range from 0 to 360 degrees", "minimum": 0, "maximum": 359.99, "default": 0 }, "range": { "type": "number", "description": "Distance in meters from the point specified by IGeoPosition to the LookAt position", "default": 1000000 } } }], "required": ["tilt", "heading", "range"] }, "IGeoBounds": { "type": "object", "description": "A rectangular box representing a geospatial area", "properties": { "west": { "type": "number", "description": "The western most longitude of the rectangle", "minimum": -180, "maximum": 180 }, "east": { "type": "number", "description": "The eastern most longitude of the rectangle", "minimum": -180, "maximum": 180 }, "north": { "type": "number", "description": "The nothern most latitude of the rectangle", "minimum": -90, "maximum": 90 }, "south": { "type": "number", "description": "The southern most latitude of the rectangle", "minimum": -90, "maximum": 90 } }, "required": ["west", "east", "north", "south"] }, "IGeoView": { "type": "object", "description": "List of objects that describe the overall view of a map", "properties": { "camera": { "$ref": "#/definitions/IGeoCamera" }, "lookAt": { "$ref": "#/definitions/IGeoLookAt" }, "bounds": { "$ref": "#/definitions/IGeoBounds" }, "scale": { "type": "number", "description": "Approximate map scale of current view" } } }, "IGeoColor": { "type": "object", "description":"Object containing three color channels for red, green, and blue as well as an alpha channel for opacity", "properties": { "red": { "type": "number", "format":"int", "description":"Value for red color channel. Integer ranging between 0 and 255", "minimum": 0, "maximum": 255, "default": 0 }, "green": { "type": "number", "format":"int", "description":"Value for green color channel. Integer ranging between 0 and 255", "minimum": 0, "maximum": 255, "default": 0 }, "blue": { "type": "number", "format":"int", "description":"Value for blue color channel. Integer ranging between 0 and 255", "minimum": 0, "maximum": 255, "default": 0 }, "alpha": { "type": "number", "description":"Value for alpha channel to control opacity. Decimal ranging from 0 to 1", "minimum": 0, "maximum": 1, "default": 0.8 } }, "required": ["red", "green", "blue", "alpha"] }, "IGeoStrokeStyle": { "type": "object", "description":"Style attributes for strokes", "properties": { "strokeColor": { "$ref": "#/definitions/IGeoColor" }, "stipplingPattern": { "type": "number", "format":"short", "description": "specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16 pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is repeated three times before using the next bit", "default": 0 }, "stipplingFactor": { "type": "number", "format": "int", "description": "specifies the number of times each bit in the pattern is repeated before the next bit is used. For example, if the factor is 3, each bit is repeated three times before using the next bit. The specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no stippling", "langType": { "java": "int" }, "default": 0 }, "strokeWidth": { "type": "number", "description": "Width of the stroke on the screen in pixels", "default": 3 } }, "required": ["strokeColor", "strokePattern", "strokeWidth"] }, "IGeoFillStyle": { "type": "object", "description" : "Style properties for the fill of a feature. This can either be the interior of a shape such as a polygon or circle, or can also be applied to the fill of an a MIL-STD-2525 Icon to override the default affiliation color", "properties": { "description":"The interior color of a feature such as a polygon or circle. The fill and stroke can be set separtely to create a contract between the stroke and fill of any feature", "fillColor": { "$ref": "#/definitions/IGeoColor" }, "fillPattern": { "description": "Fill patterns allow for alternatives to a solid fill color", "enum": ["solid", "hatched", "crossHatched"], "default": "solid" } }, "required": ["fillColor", "fillPatern"] }, "IGeoIconStyle": { "type": "object", "description": "Style attributes associated with icons", "properties": { "size": { "type": "number", "description": "Size in pixels at 96 ppi. If the system rendering the text is running at a screen resolution other than 96 ppi, a translation should be done to make the icon larger of smaller to represent the same amount of physical space as if the screen were at 96 ppi. If the icon is not square, the size will represent the larger value of the rectangle", "minimum": 1, "default": 32 }, "offSetX": { "type": "number", "description": "X Offest of icon in pixels derived from the lower left point of the icon", "default": 0 }, "offSetY": { "type": "number", "description": "X Offest of icon in pixels derived from the lower left point of the icon", "default": 0 } }, "required": ["size", "offSetX", "offSetY"] }, "IGeoLabelStyle": { "type": "object", "description":"Style properties for the optional text labels that may display next to feature data on a map", "properties": { "size": { "type": "number", "description": "Size of the font in pixels asumming 96 ppi. If the system rendering the text is running at a screen resolution other than 96 ppi, a translation should be done to make the text larger of smaller to represent the same amount of physical space as if the screen were at 96 ppi. For example if the screen resolution of the target device rednering the text is 126 ppi, you would use the following formula to get a proper pixel value: ( devicePixelsPerInch / 96 ) x IGeoLabelStyle.size = ActucalPixelSize or ( 126 / 96 ) * 12 = 16", "default": 12 }, "color": { "$ref": "#/definitions/IGeoColor" }, "outlineColor": { "$ref": "#/definitions/IGeoColor" }, "justification": { "description": "Position to align text in relation to the associated geospatial coordinate", "enum": ["LEFT", "CENTER", "RIGHT"], "default": "LEFT" }, "fontFamily": { "type": "string", "description": "Name of the font family to be used. In the case that the system rendering this text does not have the font family, it shall use a defalt font and still display the text" }, "typeface" : { "description" : "Typeface design to be used for the font", "enum": ["REGULAR", "BOLD", "ITALIC", "BOLDITALIC"], "default": "REGULAR" } }, "required": ["scale"] }, "IGeoBase": { "type": "object", "description":"This is the base object all containers and features are derived from", "properties": { "name": { "type": "string", "description": "Name is used to display text labels alongside to a feature and can be used in user interfaces that manage the data on the map", "default": "" }, "geoId": { "type": "string", "description": "The id value should be a UUID (see https://www.ietf.org/rfc/rfc4122.txt) to avoid conflict of data from multiple sources. All id values SHALL be unique regardless of type and conflicting id values will be treated as the same element. Once this ID is set, it should not be changed to avoid refernces by ID to break. The setter is provided so that an item can be deserialized from an object with an exisitng ID or provided an exisiting ID immediately after instantiation.", "langType": { "java": "java.util.UUID", "js": "cmapi.randomUUID" } }, "dataProviderId": { "type": "string", "description": "This is a free form string that can represent an ID specific to this piece of data as it is tracked uniquely by the system providing this data. This is different from GeoId as the GeoId is of type UUID. Some systems may use IDs formatted in a way that it cannot be stored in a UUID. In this case, this property can be used by the system to track this psece of data by the ID they use internally. The GeoID proerty will be used by CMAPI as the unique ID and this ID is for the benefit of the system providing the data." }, "description": { "type": "string", "description" : "A simple string, or HTML formatted string that can be displayed to describe the IGeoBase. In the case of a feature the description property can be used to store the content that should display in a pop up window after clicking on a feature.", "default": "" }, "properties": { "type": "object", "description": "A key value pair where both the key and value where the key is a unique string and the value is an object that can be stored as and read from a string. In cases where an IGeoBase will be serialized all of the values will be serialized using the objects toString() method. It is the resposibility of the applications accessing values stored in the properties hash map to determine if the value is in a string format and convert back to whatever object type the string was derived from. The object should not contain any references to other objects where that relationship is expected to exist beyond copying a current value of a simple type as the relationship will not be properly restored when deserialization occurs. CMAPI will not use the properties hash for any internal purpose, it will simply allow 3rd party data to pass additional attributes that will stay associated with the CMAPI object as it moves between applications and systems.", "readOnly": true, "langType": { "java": "java.util.HashMap" } } }, "required": ["name", "geoId", "description"] }, "IGeoContainer": { "type": "object", "description":"Geo containers are designed to be a base interface for anything that can contain a children list of IGeoBase objects. This facilitates the concept of Containers such as overlays, as well as features such as a point that can contain child features.", "allOf": [{ "$ref": "#/definitions/IGeoBase" }, { "properties": { "children": { "type": "array", "description": "A list of objects that Implment the IGeoBase Interface", "readOnly": true, "items": { "$ref": "#/definitions/IGeoBase" } }, "readOnly": { "type": "boolean", "description": "Indicates if the object is intended to be read only (true) or allow changes to the values ot its properties (false)", "default": false } }, "required": ["children"] }] }, "IGeoRenderable": { "type": "object", "allOf": [{ "$ref": "#/definitions/IGeoContainer" }, { "$ref": "#/definitions/IGeoPositionGroup" }, { "properties": { "labelStyle": { "$ref": "#/definitions/IGeoLabelStyle" }, "strokeStyle": { "$ref": "#/definitions/IGeoStrokeStyle" }, "fillStyle": { "$ref": "#/definitions/IGeoFillStyle" }, "extrude": { "type": "boolean", "description": "A curtain is formed below each point or line segment and extends to the ground", "default": false }, "tessellate": { "type": "boolean", "description": "Value determines if the item will follow the terrain and drape, or follow a straight plane cutting through terrain above the altitude of the line segment. This property is ignored for single position items.", "default": true }, "buffer": { "type": "number", "description": "Indicates if a buffer object in meters can be applied to a single, or list of positions as an extension outwards from the original position(s)", "default": 0 }, "azimuth": { "type": "number", "description": "The direction a feature will be oriented in degrees", "minimum": 0, "maximum": 359, "default": 0 }, "pathType": { "enum": ["GREAT_CIRCLE", "LINEAR", "RHUMB_LINE"], "description" : "Enumeration of path rendering types that affect the way the map will interpret for paths and polygon boundaries. GREAT_CIRCLE - A great circle arc between two locations. LNEAR - Simple linear interpolation between two locations which will paass through ground. It represents the shortest distance between two points passing through the globe. RHUMB_LINE - A line of constant bearing between two locations. Default is GREAT_CRICLE", "default" : "GREAT_CIRCLE" } }, "required": ["labelStyle"] }] }, "IGeoPoint": { "description": "A feature to be represented as a geospatil location with an icon", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "iconStyle": { "$ref": "#/definitions/IGeoIconStyle" }, "iconURI": { "type": "string", "description": "Indicates the URL to request the icon image image or dataURI encoding of the icon image embedded as the value defined by RFC 2397 (see https://tools.ietf.org/html/rfc2397)" } }, "required": ["iconStyle"] }] }, "IGeoText": { "description": "A text annotation with a geospatial location", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }] }, "IGeoPolygon": { "description": "A polygon represented by three or more geospatial locations", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }] }, "IGeoPath": { "description": "A path AKA polyline represented by two or more geospatial locations", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }] }, "IGeoCircle": { "description": "A circular based form a single geospatial location as the center with a radius in meters", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "radius": { "description": "Radius of the circle in meters", "type": "number", "default": 100 } }, "required": ["radius"] }] }, "IGeoEllipse": { "description": "An ellipse represented by a geospatial center point location with a semi-major and semi-minor radius in meters", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "semiMajor": { "description": "The magnitude of the semi-major axis - Radius of the ellipse in meters on the x axis (width)", "type": "number", "default": 150 }, "semiMinor": { "description": "The magnitude of the semi-minor axis - Radius of the ellipse in meters on the y axis (height)", "type": "number", "default": 75 } }, "required": ["semiMajor", "semiMinor"] }] }, "IGeoRectangle": { "description" : "A geospatial rectangle represented by a center point location, width and height in meters", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "width": { "description": "Width of the rectangle in meters on the x axis", "type": "number", "default": 150 }, "height": { "description": "Height of the rectangle in meters on the y axis", "type": "number", "default": 75 } }, "required": ["width", "height"] }] }, "IGeoSquare": { "description" : "A geospatial square represented by a center point location and width in meters", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "width": { "description": "Width of the square in meters on the x and y axis ", "type": "number", "default": 100 } }, "required": ["width"] }] }, "IGeoImageOverlay": { "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "imageURI": { "type": "string", "description": "Indicates the URL to request the image or base 64 dataURI encoding of the icon image embedded as the value defined by RFC 2397 (see https://tools.ietf.org/html/rfc2397)" } } }] }, "IGeoMilSymbol": { "description" : "Feature to represent MIL-STD-2525 B and C symbols for the entire symbology standard", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "symbolStandard": { "description": "Version of the MIL-STD-2525 standard to use", "enum": ["MIL_STD_2525C", "MIL_STD_2525B"], "default": "MIL_STD_2525C" }, "symbolCode": { "description": "Symbol code as defined by MIL-STD-2525", "type": "string", "default": "SUGP-----------" }, "modifiers": { "type": "object", "langType": { "java": "java.util.HashMap" }, "typeExtension": { "type": "enum", "name": "modifier" }, "properties": { "A": { "type": "string", "enumLabel": "SYMBOL_ICON" }, "B": { "type": "string", "enumLabel": "ECHELON" }, "C": { "type": "string", "enumLabel": "QUANTITY" }, "D": { "type": "string", "enumLabel": "TASK_FORCE_INDICATOR" }, "E": { "type": "string", "enumLabel": "FRAME_SHAPE_MODIFIER" }, "F": { "type": "string", "enumLabel": "REDUCED_OR_REINFORCED" }, "G": { "type": "string", "enumLabel": "STAFF_COMMENTS" }, "H": { "type": "string", "enumLabel": "ADDITIONAL_INFO_1" }, "H1": { "type": "string", "enumLabel": "ADDITIONAL_INFO_2" }, "H2": { "type": "string", "enumLabel": "ADDITIONAL_INFO_3" }, "J": { "type": "string", "enumLabel": "EVALUATION_RATING" }, "K": { "type": "string", "enumLabel": "COMBAT_EFFECTIVENESS" }, "L": { "type": "string", "enumLabel": "SIGNATURE_EQUIPMENT" }, "M": { "type": "string", "enumLabel": "HIGHER_FORMATION" }, "N": { "type": "string", "enumLabel": "HOSTILE" }, "P": { "type": "string", "enumLabel": "IFF_SIF" }, "Q": { "type": "string", "enumLabel": "DIRECTION_OF_MOVEMENT" }, "R": { "type": "string", "enumLabel": "MOBILITY_INDICATOR" }, "R2": { "type": "string", "enumLabel": "SIGINT_MOBILITY_INDICATOR" }, "S": { "type": "string", "enumLabel": "OFFSET_INDICATOR" }, "T": { "type": "string", "enumLabel": "UNIQUE_DESIGNATOR_1" }, "T1": { "type": "string", "enumLabel": "UNIQUE_DESIGNATOR_2" }, "V": { "type": "string", "enumLabel": "EQUIPMENT_TYPE" }, "W": { "type": "string", "enumLabel": "DATE_TIME_GROUP" }, "W1": { "type": "string", "enumLabel": "DATE_TIME_GROUP_2" }, "X": { "type": "string", "enumLabel": "ALTITUDE_DEPTH" }, "Y": { "type": "string", "enumLabel": "LOCATION" }, "Z": { "type": "string", "enumLabel": "SPEED" }, "AA": { "type": "string", "enumLabel": "SPECIAL_C2_HEADQUARTERS" }, "AB": { "type": "string", "enumLabel": "FEINT_DUMMY_INDICATOR" }, "AC": { "type": "string", "enumLabel": "INSTALLATION" }, "AD": { "type": "string", "enumLabel": "PLATFORM_TYPE" }, "AE": { "type": "string", "enumLabel": "EQUIPMENT_TEARDOWN_TIME" }, "AF": { "type": "string", "enumLabel": "COMMON_IDENTIFIER" }, "AG": { "type": "string", "enumLabel": "AUXILIARY_EQUIPMENT_INDICATOR" }, "AH": { "type": "string", "enumLabel": "AREA_OF_UNCERTAINTY" }, "AI": { "type": "string", "enumLabel": "DEAD_RECKONING" }, "AJ": { "type": "string", "enumLabel": "SPEED_LEADER" }, "AK": { "type": "string", "enumLabel": "PAIRING_LINE" }, "AL": { "type": "string", "enumLabel": "OPERATIONAL_CONDITION" }, "AM": { "type": "string", "enumLabel": "DISTANCE" }, "AN": { "type": "string", "enumLabel": "AZIMUTH" }, "AO": { "type": "string", "enumLabel": "ENGAGEMENT_BAR" }, "CC": { "type": "string", "enumLabel": "COUNTRY_CODE" }, "SCC": { "type": "string", "enumLabel": "SONAR_CLASSIFICATION_CONFIDENCE" } } } }, "required": ["symbolStandard", "symbolCode", "modifiers"] }] }, "IGeoAirControlMeasure": { "description":"Air control measures (ACM) represent a three dimensional volume in the air above earth used to indicate where aircarfat should stay within, or stay out of", "allOf": [{ "$ref": "#/definitions/IGeoRenderable" }, { "properties": { "acmType": { "description": "Type of air control measure to create", "enum": ["ROUTE", "CYLINDER", "ORBIT", "POLYGON", "RADARC", "POLYARC", "TRACK", "CURTAIN"] }, "attributes": { "type": "object", "langType": { "java": "java.util.HashMap" }, "typeExtension": { "type": "enum", "name": "attribute" }, "properties": { "RADIUS": { "type": "string" }, "INNER_RADIUS": { "type": "string" }, "TURN": { "type": "string" }, "MIN_ALT": { "type": "string" }, "MAX_ALT": { "type": "string" }, "LEFT_AZIMUTH": { "type": "string" }, "RIGHT_AZIMUTH": { "type": "string" }, "WIDTH": { "type": "string" }, "LEFT_WIDTH": { "type": "string" }, "RIGHT_WIDTH": { "type": "string" } } } }, "required": ["acmType", "attributes"] }] }, "IGeoDocument": { "description": "File containing geospatial feature data in a known format such as KML or GeoJSON", "allOf": [{ "$ref": "#/definitions/IGeoBase" }, { "properties": { "documentURI": { "description": "URL the document should be loaded from, or a dataURI encoding of the resource embedded as the value defined by RFC 2397 (see https://tools.ietf.org/html/rfc2397)", "type": "string" }, "documentMIMEType": { "description": "MIME Type of document. Common Types are KML (application/vnd.google-earth.kml+xml), and GeoJSON (application/vnd.geo+json)", "type": "string" } }, "required": ["documentURI", "documentType"] }] } }, "type": "object", "anyOf": [{ "$ref": "#/definitions/IGeoContainer" }, { "$ref": "#/definitions/IGeoRenderable" }, { "$ref": "#/definitions/IGeoPoint" }, { "$ref": "#/definitions/IGeoPolygon" }, { "$ref": "#/definitions/IGeoRectangle" }, { "$ref": "#/definitions/IGeoEllipse" }, { "$ref": "#/definitions/IGeoImageOverlay" }, { "$ref": "#/definitions/IGeoDocument" }, { "$ref": "#/definitions/IGeoMilSymbol" }, { "$ref": "#/definitions/IGeoAirControlMeasure" }] }