Skip to content

SPaT JSON Schema

Drew Johnston edited this page Dec 1, 2021 · 1 revision
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "spatSource": {
          "type": "string"
        },
        "isCertPresent": {
          "type": "boolean"
        },
        "originIp": {
          "type": "string"
        },
        "logFileName": {
          "type": "string"
        },
        "recordType": {
          "type": "string"
        },
        "securityResultCode": {
          "type": "string"
        },
        "receivedMessageDetails": {
          "type": "object",
          "properties": {
            "locationData": {
              "type": "null"
            },
            "rxSource": {
              "type": "string"
            }
          },
          "required": [
            "locationData",
            "rxSource"
          ]
        },
        "encodings": {
          "type": "null"
        },
        "payloadType": {
          "type": "string"
        },
        "serialId": {
          "type": "object",
          "properties": {
            "streamId": {
              "type": "string"
            },
            "bundleSize": {
              "type": "integer"
            },
            "bundleId": {
              "type": "integer"
            },
            "recordId": {
              "type": "integer"
            },
            "serialNumber": {
              "type": "integer"
            }
          },
          "required": [
            "streamId",
            "bundleSize",
            "bundleId",
            "recordId",
            "serialNumber"
          ]
        },
        "odeReceivedAt": {
          "type": "string"
        },
        "schemaVersion": {
          "type": "integer"
        },
        "maxDurationTime": {
          "type": "integer"
        },
        "odePacketID": {
          "type": "string"
        },
        "odeTimStartDateTime": {
          "type": "string"
        },
        "recordGeneratedAt": {
          "type": "string"
        },
        "recordGeneratedBy": {
          "type": "null"
        },
        "sanitized": {
          "type": "boolean"
        }
      },
      "required": [
        "spatSource",
        "isCertPresent",
        "originIp",
        "logFileName",
        "recordType",
        "securityResultCode",
        "receivedMessageDetails",
        "encodings",
        "payloadType",
        "serialId",
        "odeReceivedAt",
        "schemaVersion",
        "maxDurationTime",
        "odePacketID",
        "odeTimStartDateTime",
        "recordGeneratedAt",
        "recordGeneratedBy",
        "sanitized"
      ]
    },
    "payload": {
      "type": "object",
      "properties": {
        "dataType": {
          "type": "string"
        },
        "data": {
          "type": "object",
          "properties": {
            "timeStamp": {
              "type": "null"
            },
            "name": {
              "type": "null"
            },
            "intersectionStateList": {
              "type": "object",
              "properties": {
                "intersectionStatelist": {
                  "type": "array",
                  "items": [
                    {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "null"
                        },
                        "id": {
                          "type": "object",
                          "properties": {
                            "region": {
                              "type": "null"
                            },
                            "id": {
                              "type": "integer"
                            }
                          },
                          "required": [
                            "region",
                            "id"
                          ]
                        },
                        "revision": {
                          "type": "integer"
                        },
                        "status": {
                          "type": "string"
                        },
                        "moy": {
                          "type": "null"
                        },
                        "timeStamp": {
                          "type": "integer"
                        },
                        "enabledLanes": {
                          "type": "null"
                        },
                        "states": {
                          "type": "object",
                          "properties": {
                            "movementList": {
                              "type": "array",
                              "items": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "movementName": {
                                      "type": "null"
                                    },
                                    "signalGroup": {
                                      "type": "integer"
                                    },
                                    "state_time_speed": {
                                      "type": "object",
                                      "properties": {
                                        "movementEventList": {
                                          "type": "array",
                                          "items": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "eventState": {
                                                  "type": "string"
                                                },
                                                "timing": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startTime": {
                                                      "type": "null"
                                                    },
                                                    "minEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "maxEndTime": {
                                                      "type": "integer"
                                                    },
                                                    "likelyTime": {
                                                      "type": "null"
                                                    },
                                                    "confidence": {
                                                      "type": "null"
                                                    },
                                                    "nextTime": {
                                                      "type": "null"
                                                    }
                                                  },
                                                  "required": [
                                                    "startTime",
                                                    "minEndTime",
                                                    "maxEndTime",
                                                    "likelyTime",
                                                    "confidence",
                                                    "nextTime"
                                                  ]
                                                },
                                                "speeds": {
                                                  "type": "null"
                                                }
                                              },
                                              "required": [
                                                "eventState",
                                                "timing",
                                                "speeds"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "movementEventList"
                                      ]
                                    },
                                    "maneuverAssistList": {
                                      "type": "null"
                                    }
                                  },
                                  "required": [
                                    "movementName",
                                    "signalGroup",
                                    "state_time_speed",
                                    "maneuverAssistList"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "movementList"
                          ]
                        },
                        "maneuverAssistList": {
                          "type": "null"
                        }
                      },
                      "required": [
                        "name",
                        "id",
                        "revision",
                        "status",
                        "moy",
                        "timeStamp",
                        "enabledLanes",
                        "states",
                        "maneuverAssistList"
                      ]
                    }
                  ]
                }
              },
              "required": [
                "intersectionStatelist"
              ]
            }
          },
          "required": [
            "timeStamp",
            "name",
            "intersectionStateList"
          ]
        }
      },
      "required": [
        "dataType",
        "data"
      ]
    }
  },
  "required": [
    "metadata",
    "payload"
  ]
}

Releases

Change Notices

Informational Reference

  • Decode a file with asn1c
  • Deposit BSM to S3
  • Docker fix for SSL issues due to corporate network
  • Docker management
  • ECDSA Primer
  • Filter BSMs through PPM module
  • Geofence Filtering for PPM
  • Import BSMs from RSU log file
  • Import TIMs from RSU log file
  • jpo security svcs Integration
  • Link host directory to Docker directory
  • Migrating from SDW websocket depositor to SDW Depositor Submodule
  • ODE Release Deployment
  • ODE Release Preparation
  • Prepare a fresh Ubuntu instance for ODE installation
  • Process for Handling Bugs (Code Defects)
  • Run the ODE using the ASN codec module
  • Query RSU for set TIMs
  • Schema Version 6 Change Notice
  • Signed Message File Import
  • TIM REST Endpoint Changes
  • Using the .env configuration file
  • Using the ODE test harness

Test Procedures

  • Delete TIM on RSU test
  • Event Logger Test
  • Import Decode and Deliver BSM Test
  • Manage SNMP Test
  • Sending PDM to RSU Test
  • Sending TIM to RSU Test
  • Submit_TIM_To_SDW Test

Archived

  • Log File Changes (schemaVersion=4)
  • Receive BSMs over UDP
  • Receive ISD via UDP and deposit to SDC
  • Receive VSD via UDP and deposit to SDC
  • Run the crypto test vectors code with ODE team's OSS encoder
  • SchemaVersion 5 Change Notice
Clone this wiki locally