﻿{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.mpai.community/OSD/V1.4/data/Position.json",
  "title": "Position",
  "type": "object", "additionalProperties": false, "unevaluatedProperties": false, 
  "required": ["Header", "PositionID", "CartPosition"], "properties": {

    "Header":       { "type": "string", "pattern": "^OSD-OPS-[0-9]{1,2}[.][0-9]{1,2}$" }, 
    
    "MInstanceID":  { "type": "string" },    
    
    "PositionID":   { "type": "string" },

    "General": { "type": "object", "additionalProperties": false, "unevaluatedProperties": false, 
    "required": ["CoordTypeID", "ObjectType", "MediaType"], "properties": {

      "CoordType":  { "$ref": "https://schemas.mpai.community/TFA/V1.4/types/CoordinateTypes.json" },
      "ObjectType":   { "$ref": "https://schemas.mpai.community/TFA/V1.4/types/ObjectTypes.json" }, 
      "MediaType":    { "$ref": "https://schemas.mpai.community/TFA/V1.4/types/MediaTypes.json" } } },

    "CartPosition":          { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "CartPositionAccuracy":  { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherPosition":         { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherPositionAccuracy": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "CartVelocity":          { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "CartVelocityAccuracy":  { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherVelocity":         { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherVelocityAccuracy": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "CartAccel":             { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "CartAccelAccuracy":     { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherAccel":            { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },
    "SpherAccelAccuracy":    { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "number" } },

    "DescrMetadata": { "type": "string" } }
}