Commit 5f23dffa authored by Mark Canterbury's avatar Mark Canterbury
Browse files

Adding automatic JSON translation

parent 65ec720b
Loading
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -60,6 +60,9 @@
        },
        "delivery:DeliveryDesiredStatus": {
          "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
        },
        "delivery:EncryptionDetails": {
          "$ref": "#/$defs/DeliveryEncryptionDetails"
        }
      },
      "required": [
@@ -302,6 +305,19 @@
        "delivery:URL"
      ],
      "additionalProperties": false
    },
    "DeliveryEncryptionDetails": {
      "type": "object",
      "properties": {
        "delivery:EncryptionReference": {
          "$ref": "ts_103120_Core_2019_10#/$defs/ObjectIdentifier"
        },
        "delivery:AdditionalInformation": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}
+223 −0
Original line number Diff line number Diff line
@@ -80,6 +80,9 @@
        },
        "task:ListOfTrafficPolicyReferences": {
          "$ref": "#/$defs/ListOfTrafficPolicyReferences"
        },
        "task:ListOfIRIPolicyReferences": {
          "$ref": "#/$defs/ListOfIRIPolicyReferences"
        }
      },
      "required": [
@@ -569,6 +572,9 @@
        "task:DeliveryAddress": {
          "$ref": "#/$defs/DeliveryAddress"
        },
        "task:EncryptionReference": {
          "$ref": "ts_103120_Core_2019_10#/$defs/ObjectIdentifier"
        },
        "task:EncryptionDetails": {
          "$ref": "#/$defs/NationalEncryptionDetails"
        },
@@ -768,6 +774,33 @@
      "required": [],
      "additionalProperties": false
    },
    "ListOfIRIPolicyReferences": {
      "type": "object",
      "properties": {
        "task:IRIPolicyReference": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/IRIPolicyReference"
          }
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "IRIPolicyReference": {
      "type": "object",
      "properties": {
        "task:Order": {
          "type": "integer",
          "minimum": 1
        },
        "task:ObjectIdentifier": {
          "$ref": "ts_103120_Core_2019_10#/$defs/ObjectIdentifier"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "ListOfLDDeadlines": {
      "type": "object",
      "properties": {
@@ -796,6 +829,196 @@
      },
      "required": [],
      "additionalProperties": false
    },
    "TDTaskObject": {
      "type": "object",
      "properties": {
        "@xsi:type": {
          "type": "string",
          "enum": [
            "{http://uri.etsi.org/03120/common/2020/09/Task}TDTaskObject"
          ]
        },
        "ObjectIdentifier": {
          "$ref": "ts_103120_Core_2019_10#/$defs/ObjectIdentifier"
        },
        "CountryCode": {
          "$ref": "ts_103280_2017_07#/$defs/ISOCountryCode"
        },
        "OwnerIdentifier": {
          "$ref": "ts_103280_2017_07#/$defs/ShortString"
        },
        "Generation": {
          "type": "integer",
          "minimum": 0
        },
        "ExternalIdentifier": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "AssociatedObjects": {
          "$ref": "ts_103120_Core_2019_10#/$defs/AssociatedObjects"
        },
        "LastChanged": {
          "$ref": "ts_103280_2017_07#/$defs/QualifiedDateTime"
        },
        "NationalHandlingParameters": {
          "$ref": "ts_103120_Core_2019_10#/$defs/NationalHandlingParameters"
        },
        "task:Reference": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "task:RequesterReference": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "task:CSPReference": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "task:Status": {
          "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
        },
        "task:StatusReason": {
          "$ref": "ts_103120_Core_2019_10#/$defs/ActionUnsuccesfulInformation"
        },
        "task:DesiredStatus": {
          "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
        },
        "task:RequestDetails": {
          "$ref": "#/$defs/TakedownRequestDetails"
        },
        "task:CSPID": {
          "$ref": "ts_103120_Core_2019_10#/$defs/EndpointID"
        },
        "task:Flags": {
          "$ref": "#/$defs/TDTaskFlags"
        },
        "task:NationalTDTaskingParameters": {
          "$ref": "#/$defs/NationalTDTaskingParameters"
        },
        "task:Deadlines": {
          "$ref": "#/$defs/ListOfTDDeadlines"
        },
        "task:AlternativeDisclosureReferences": {
          "$ref": "#/$defs/ListOfAlternativeDisclosureReferences"
        },
        "task:ManualInformation": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        }
      },
      "required": [
        "@xsi:type",
        "ObjectIdentifier"
      ],
      "additionalProperties": false
    },
    "TakedownRequestDetails": {
      "type": "object",
      "properties": {
        "task:RequestValues": {
          "$ref": "#/$defs/RequestValues"
        },
        "task:RequestValueRefinement": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "task:ObservedTimes": {
          "$ref": "#/$defs/ListOfObservedTimes"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "ListOfObservedTimes": {
      "type": "object",
      "properties": {
        "task:ObservedTime": {
          "type": "array",
          "items": {
            "$ref": "ts_103280_2017_07#/$defs/QualifiedDateTime"
          }
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "TDTaskFlags": {
      "type": "object",
      "properties": {
        "task:TDTaskFlag": {
          "type": "array",
          "items": {
            "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
          }
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "NationalTDTaskingParameters": {
      "type": "object",
      "properties": {
        "task:CountryCode": {
          "$ref": "ts_103280_2017_07#/$defs/ISOCountryCode"
        }
      },
      "required": [
        "task:CountryCode"
      ],
      "additionalProperties": false
    },
    "ListOfTDDeadlines": {
      "type": "object",
      "properties": {
        "task:TakedownDeadline": {
          "type": "array",
          "items": {}
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "TakedownDeadline": {
      "type": "object",
      "properties": {
        "task:DateTime": {
          "$ref": "ts_103280_2017_07#/$defs/QualifiedDateTime"
        },
        "task:NatureOfDeadline": {
          "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
        },
        "task:OtherInformation": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "ListOfAlternativeDisclosureReferences": {
      "type": "object",
      "properties": {
        "task:AlternativeDisclosureReference": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AlternativeDisclosureReference"
          }
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "AlternativeDisclosureReference": {
      "type": "object",
      "properties": {
        "task:ReferenceValue": {
          "$ref": "ts_103280_2017_07#/$defs/LongString"
        },
        "task:NatureOfReference": {
          "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry"
        },
        "task:TransmissionTime": {
          "$ref": "ts_103280_2017_07#/$defs/QualifiedDateTime"
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}
+212 −0
Original line number Diff line number Diff line
@@ -242,6 +242,29 @@
    "VRF": {
      "$ref": "#/$defs/ShortString"
    },
    "Percentage": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "AltitudeMeters": {
      "type": "integer",
      "minimum": -1000,
      "maximum": 50000
    },
    "UncertaintyMeters": {
      "type": "integer",
      "minimum": 1
    },
    "FixMode": {
      "type": "string",
      "enum": [
        "unknown",
        "noFix",
        "fix2D",
        "fix3D"
      ]
    },
    "IPAddress": {
      "oneOf": [
        {
@@ -441,6 +464,195 @@
        "etsi280:longitude"
      ],
      "additionalProperties": false
    },
    "Altitude": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "etsi280:altitudeAboveGroundLevel": {
              "$ref": "#/$defs/AltitudeMeters"
            }
          },
          "required": [
            "etsi280:altitudeAboveGroundLevel"
          ]
        },
        {
          "type": "object",
          "properties": {
            "etsi280:altitudeAboveMeanSeaLevel": {
              "$ref": "#/$defs/AltitudeMeters"
            }
          },
          "required": [
            "etsi280:altitudeAboveMeanSeaLevel"
          ]
        }
      ]
    },
    "GNSSLocation": {
      "type": "object",
      "properties": {
        "etsi280:location": {
          "$ref": "#/$defs/GeoShape"
        },
        "etsi280:fixMode": {
          "$ref": "#/$defs/FixMode"
        }
      },
      "required": [
        "etsi280:location",
        "etsi280:fixMode"
      ],
      "additionalProperties": false
    },
    "WGS84Location": {
      "type": "object",
      "properties": {
        "etsi280:location": {
          "$ref": "#/$defs/WGS84Coordinate"
        },
        "etsi280:altitude": {
          "$ref": "#/$defs/Altitude"
        }
      },
      "required": [
        "etsi280:location"
      ],
      "additionalProperties": false
    },
    "WGS84Coordinate": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "etsi280:wGS84CoordinateDecimal": {
              "$ref": "#/$defs/WGS84CoordinateDecimal"
            }
          },
          "required": [
            "etsi280:wGS84CoordinateDecimal"
          ]
        },
        {
          "type": "object",
          "properties": {
            "etsi280:wGS84CoordinateAngular": {
              "$ref": "#/$defs/WGS84CoordinateAngular"
            }
          },
          "required": [
            "etsi280:wGS84CoordinateAngular"
          ]
        }
      ]
    },
    "GeoShape": {
      "type": "object",
      "properties": {
        "etsi280:shape": {
          "$ref": "#/$defs/GMLShape"
        },
        "etsi280:confidence": {
          "$ref": "#/$defs/Percentage"
        }
      },
      "required": [
        "etsi280:shape"
      ],
      "additionalProperties": false
    },
    "GMLShape": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "etsi280:point": {
              "$ref": "#/$defs/GeoPoint"
            }
          },
          "required": [
            "etsi280:point"
          ]
        },
        {
          "type": "object",
          "properties": {
            "etsi280:sphere": {
              "$ref": "#/$defs/GeoSphere"
            }
          },
          "required": [
            "etsi280:sphere"
          ]
        },
        {
          "type": "object",
          "properties": {
            "etsi280:xyEllipsoid": {
              "$ref": "#/$defs/XYEllipsoid"
            }
          },
          "required": [
            "etsi280:xyEllipsoid"
          ]
        }
      ]
    },
    "GeoPoint": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "etsi280:wGS84Point": {
              "$ref": "#/$defs/WGS84Location"
            }
          },
          "required": [
            "etsi280:wGS84Point"
          ]
        }
      ]
    },
    "GeoSphere": {
      "type": "object",
      "properties": {
        "etsi280:centerPoint": {
          "$ref": "#/$defs/GeoPoint"
        },
        "etsi280:radiusMeters": {
          "$ref": "#/$defs/UncertaintyMeters"
        }
      },
      "required": [
        "etsi280:centerPoint",
        "etsi280:radiusMeters"
      ],
      "additionalProperties": false
    },
    "XYEllipsoid": {
      "type": "object",
      "properties": {
        "etsi280:centerPoint": {
          "$ref": "#/$defs/GeoPoint"
        },
        "etsi280:uncertaintyLongitude": {
          "$ref": "#/$defs/UncertaintyMeters"
        },
        "etsi280:uncertaintyLatitude": {
          "$ref": "#/$defs/UncertaintyMeters"
        },
        "etsi280:uncertaintyAltitude": {
          "$ref": "#/$defs/UncertaintyMeters"
        }
      },
      "required": [
        "etsi280:centerPoint",
        "etsi280:uncertaintyLongitude",
        "etsi280:uncertaintyLatitude"
      ],
      "additionalProperties": false
    }
  }
}
+4 −1
Original line number Diff line number Diff line
@@ -68,7 +68,10 @@ class XSDNativeSimpleTypeMapping(SimpleTypeMapping):
            if type(v) is XsdMaxExclusiveFacet:
                mapped_type["exclusiveMaximum"] = v.value
                continue
            raise Exception(f"Unhandled facet {v}")
            if type(v) is XsdEnumerationFacets:
                mapped_type["enum"] = v.enumeration
                continue
            raise Exception(f"Unhandled facet {v} ({type(v)})")
        if parent_type:
            return {"allOf": [parent_type, mapped_type]}
        return mapped_type