EDDN/schemas/TEMPLATES/journalevent-v1.0.json
Athanasius 2eb213d766
schemas/TEMPLATES/journal: Remove the # 'fragment' from end of $id
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.
2022-09-02 13:36:43 +01:00

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" ] } }
}
}