mirror of
https://github.com/EDCD/EDDN.git
synced 2025-04-08 13:20:01 +03:00
As per <https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.1> > Therefore, "$id" MUST NOT contain a non-empty fragment, and SHOULD NOT contain an empty fragment.
114 lines
5.6 KiB
JSON
114 lines
5.6 KiB
JSON
# This is not a valid JSON file
|
|
# Removed all the 'comments' as you are sure you have complied with their
|
|
# instructions!
|
|
#
|
|
# 1. Replace all instances of newjournalevent with the lower-case folded name
|
|
# of the Journal event this schema is for.
|
|
# 2. Replace all instances of NewJournalEvent with the name of the journal
|
|
# event this schema is for, as it appears in the Journal. Specifically,
|
|
# you must conserve the case.
|
|
# 3. Leave the 'header' dictionary exactly as it is, it is mandatory.
|
|
# 4. Add any additional schema-mandatory message properties to the 'required'
|
|
# array.
|
|
# 5. If, and ONLY IF, you have good reason to believe there might be additional
|
|
# valid keys in the source data, change the 'additionalProperties' value
|
|
# to 'true'.
|
|
# EMPHASIS: You should really know about all of the possible keys and their
|
|
# values and be defining them, possibly as optional (not listed in
|
|
# 'required') properties. If needs be document, in the README for
|
|
# this Schema, that all but the defined properties should be
|
|
# elided when constructing a message.
|
|
# 6. The 'horizons' and 'odyssey' properties in 'message' MUST BE RETAINED.
|
|
# Any message based on Journal data should be able to add them as
|
|
# appropriate. Note that they *are optional in the resulting message*.
|
|
# You MUST NOT add these to the 'required' list, as the LoadGame Journal
|
|
# event is not guaranteed to contain either, depending on which client
|
|
# (base, horizons, odyssey) the player is running.
|
|
# 7. 'some_disallowed_key' demonstrates how to specify that a key (and thus its
|
|
# value) is not allowed in this schema. Note the **MANDATORY** description.
|
|
# 8. Note the trailing comma after the 'some_disallowed_key' entry in
|
|
# 'messages'. If all you did was remove these comments you would NOT have
|
|
# a valid JSON file. You should be adding **at least** one additional
|
|
# pertinent 'message' key:value definition.
|
|
# 9. Consult the journalevent-README.md file, particularly the section about
|
|
# `StarPos` and remove that section of this file if it is not needed.
|
|
# 10. You MUST NOT remove the 'disallowed' key, or edit its value. The purpose
|
|
# of this is to be cited as the allowed value on a disallowed key. As it
|
|
# defines that the only valid type for the value is **not** any of the
|
|
# possible JSON types, its effect is to disallow any value for the key, and
|
|
# as a result disallow the key.
|
|
{
|
|
"$schema" : "http://json-schema.org/draft-04/schema#",
|
|
"id" : "https://eddn.edcd.io/schemas/newjournalevent/1",
|
|
"type" : "object",
|
|
"additionalProperties" : false,
|
|
"required": [ "$schemaRef", "header", "message" ],
|
|
"properties": {
|
|
"$schemaRef": {
|
|
"type" : "string"
|
|
},
|
|
"header": {
|
|
"type" : "object",
|
|
"additionalProperties" : true,
|
|
"required" : [ "uploaderID", "softwareName", "softwareVersion" ],
|
|
"properties" : {
|
|
"uploaderID": {
|
|
"type" : "string"
|
|
},
|
|
"softwareName": {
|
|
"type" : "string"
|
|
},
|
|
"softwareVersion": {
|
|
"type" : "string"
|
|
},
|
|
"gatewayTimestamp": {
|
|
"type" : "string",
|
|
"format" : "date-time",
|
|
"description" : "Timestamp upon receipt at the gateway. If present, this property will be overwritten by the gateway; submitters are not intended to populate this property."
|
|
}
|
|
}
|
|
},
|
|
"message": {
|
|
"type" : "object",
|
|
"description" : "Contains all properties from the listed events in the client's journal minus the Localised strings and the properties marked below as 'disallowed'",
|
|
"additionalProperties" : false,
|
|
"required" : [ "timestamp", "event" ],
|
|
"properties" : {
|
|
"timestamp": {
|
|
"type" : "string",
|
|
"format" : "date-time"
|
|
},
|
|
"event" : {
|
|
"enum" : [ "NewJournalEvent" ]
|
|
},
|
|
"horizons": {
|
|
"type" : "boolean",
|
|
"description" : "Boolean value copied from the Journal LoadGame event, when it is present there."
|
|
},
|
|
"odyssey": {
|
|
"type" : "boolean",
|
|
"description" : "Boolean value copied from the Journal LoadGame event, when it is present there."
|
|
},
|
|
"StarPos": {
|
|
"type" : "array",
|
|
"items" : { "type": "number" },
|
|
"minItems" : 3,
|
|
"maxItems" : 3,
|
|
"description" : "Must be added by the sender"
|
|
},
|
|
"ExampleRenamedKey" : {
|
|
"type" : "string",
|
|
"renamed" : "SomeOtherKey"
|
|
}
|
|
"some_disallowed_key" {
|
|
"$ref" : "#/definitions/disallowed",
|
|
"description" : "MANDATORY brief description of why this key must be removed from source data"
|
|
},
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"disallowed" : { "not" : { "type": [ "array", "boolean", "integer", "number", "null", "object", "string" ] } }
|
|
}
|
|
}
|