Added MaterialTrade and TechnologyBroker events to EDDN

This commit is contained in:
jixxed 2025-01-08 21:17:50 +01:00
parent 7c3863d72d
commit 732f037e32
4 changed files with 216 additions and 0 deletions

View File

@ -0,0 +1,46 @@
# EDDN MaterialTrade Schema
## Introduction
Here we document how to take data from an ED `MaterialTrade` Journal Event and
properly structure it for sending to EDDN.
Please consult [EDDN Schemas README](./README-EDDN-schemas.md) for general
documentation for a schema such as this.
If you find any discrepancies between what this document says and what is
defined in the relevant Schema file, then you should, in the first instance,
assume that it is the Schema file that is correct.
**PLEASE open
[an issue on GitHub](https://github.com/EDCD/EDDN/issues/new/choose)
to report any such anomalies you find so that we can check and resolve the
discrepancy.**
## Senders
The primary data source for this schema is the ED Journal event `MaterialTrade`.
This event occurs when a commander trades materials at a Material Trader.
### Required Fields
The following fields from the Journal event **MUST** be included:
- `timestamp` - When the trade occurred
- `event` - Always "MaterialTrade"
- `MarketID` - The unique identifier for the station's market
- `TraderType` - The type of material trader (e.g. "encoded", "manufactured", "raw")
### Elisions
You **MUST** remove the following key/value pairs from the data:
- `Paid` - This is the material that was paid for the trade
- `Received` - This is the material that was received for the trade
### Rate Limiting
Since these values can occur multiple times in a short timespan, senders
*must* take care to only send them once at most per event type while
docked at a station.
### Augmentations
#### horizons and odyssey flags
Please read [horizons and odyssey flags](../docs/Developers.md#horizons-and-odyssey-flags)
in the Developers' documentation.
#### gameversion and gamebuild
You **MUST** always set these as per [the relevant section](../docs/Developers.md#gameversions-and-gamebuild)
of the Developers' documentation.

View File

@ -0,0 +1,62 @@
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"id" : "https://eddn.edcd.io/schemas/materialtrade/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"
},
"gameversion": {
"type" : "string",
"description" : "From Fileheader event if available, else LoadGame if available there."
},
"gamebuild": {
"type" : "string",
"description" : "The `build` value from a Fileheader event if available, else LoadGame if available there."
},
"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",
"additionalProperties" : false,
"required" : [ "timestamp", "event", "MarketID", "TraderType" ],
"properties" : {
"timestamp": {
"type" : "string",
"format" : "date-time"
},
"event": {
"type" : "string",
"enum" : [ "MaterialTrade" ]
},
"MarketID": {
"type" : "integer"
},
"TraderType": {
"type" : "string"
}
}
}
}
}

View File

@ -0,0 +1,46 @@
# EDDN TechnologyBroker Schema
## Introduction
Here we document how to take data from an ED `TechnologyBroker` Journal Event and
properly structure it for sending to EDDN.
Please consult [EDDN Schemas README](./README-EDDN-schemas.md) for general
documentation for a schema such as this.
If you find any discrepancies between what this document says and what is
defined in the relevant Schema file, then you should, in the first instance,
assume that it is the Schema file that is correct.
**PLEASE open [an issue on GitHub](https://github.com/EDCD/EDDN/issues/new/choose)
to report any such anomalies you find so that we can check and resolve the
discrepancy.**
## Senders
The primary data source for this schema is the ED Journal event `TechnologyBroker`.
This event occurs when a commander unlocks new technology at a Technology Broker.
### Required Fields
The following fields from the Journal event **MUST** be included:
- `timestamp` - When the technology was unlocked
- `event` - Always "TechnologyBroker"
- `MarketID` - The unique identifier for the station's market
- `BrokerType` - The type of technology broker (e.g. "guardian", "human", "sirius")
### Elisions
You **MUST** remove the following key/value pairs from the data:
- `ItemsUnlocked` - This is the list of items that were unlocked
- `Commodities` - This is the list of commodities that were paid for the unlock
- `Materials` - This is the list of materials that were paid for the unlock
### Rate Limiting
Since these values can occur multiple times in a short timespan, senders
*must* take care to only send them once at most per event type while
docked at a station.
### Augmentations
#### horizons and odyssey flags
Please read [horizons and odyssey flags](../docs/Developers.md#horizons-and-odyssey-flags)
in the Developers' documentation.
#### gameversion and gamebuild
You **MUST** always set these as per [the relevant section](../docs/Developers.md#gameversions-and-gamebuild)
of the Developers' documentation.

View File

@ -0,0 +1,62 @@
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"id" : "https://eddn.edcd.io/schemas/technologybroker/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"
},
"gameversion": {
"type" : "string",
"description" : "From Fileheader event if available, else LoadGame if available there."
},
"gamebuild": {
"type" : "string",
"description" : "The `build` value from a Fileheader event if available, else LoadGame if available there."
},
"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",
"additionalProperties" : false,
"required" : [ "timestamp", "event", "MarketID", "BrokerType" ],
"properties" : {
"timestamp": {
"type" : "string",
"format" : "date-time"
},
"event": {
"type" : "string",
"enum" : [ "TechnologyBroker" ]
},
"MarketID": {
"type" : "integer"
},
"BrokerType": {
"type" : "string"
}
}
}
}
}