EDDN/schemas/commodity-v3.0.json
2024-01-24 15:32:36 +01:00

184 lines
8.5 KiB
JSON

{
"$schema" : "http://json-schema.org/draft-04/schema#",
"id" : "https://eddn.edcd.io/schemas/commodity/3#",
"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" : "Fileheader->gameversion, else LoadGame->gameversion, else 'CAPI-market', else ''."
},
"gamebuild": {
"type" : "string",
"description" : "Fileheader->build, else LoadGame->build, else 'CAPI-market', else ''."
},
"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" : [ "systemName", "stationName", "marketId", "timestamp", "commodities" ],
"properties" : {
"systemName": {
"type" : "string",
"renamed" : "StarSystem",
"minLength" : 1
},
"stationName": {
"type" : "string",
"renamed" : "StationName",
"minLength" : 1
},
"stationType": {
"type" : "string",
"renamed" : "StationType"
},
"carrierDockingAccess": {
"type" : "string",
"renamed" : "CarrierDockingAccess"
},
"marketId": {
"type" : "integer",
"renamed" : "MarketID"
},
"horizons": {
"type" : "boolean",
"description" : "Whether the sending Cmdr has a Horizons pass."
},
"odyssey": {
"type" : "boolean",
"description" : "Whether the sending Cmdr has an Odyssey expansion."
},
"timestamp": {
"type" : "string",
"format" : "date-time"
},
"commodities": {
"type" : "array",
"description" : "Commodities returned by the Companion API, with illegal commodities omitted",
"items" : {
"type" : "object",
"additionalProperties" : false,
"required" : [ "name", "meanPrice", "buyPrice", "stock", "stockBracket", "sellPrice", "demand", "demandBracket" ],
"properties" : {
"name": {
"type" : "string",
"renamed" : "Name",
"minLength" : 1,
"description" : "Symbolic name as returned by the Companion API"
},
"meanPrice": {
"type" : "integer",
"renamed" : "MeanPrice"
},
"buyPrice": {
"type" : "integer",
"renamed" : "BuyPrice",
"description" : "Price to buy from the market"
},
"stock": {
"type" : "integer",
"renamed" : "Stock"
},
"stockBracket": {
"$ref" : "#/definitions/levelType",
"renamed" : "StockBracket"
},
"sellPrice": {
"type" : "integer",
"renamed" : "SellPrice",
"description" : "Price to sell to the market"
},
"demand": {
"type" : "integer",
"renamed" : "Demand"
},
"demandBracket": {
"$ref" : "#/definitions/levelType",
"renamed" : "DemandBracket"
},
"statusFlags": {
"type" : "array",
"minItems" : 1,
"uniqueItems" : true,
"items" : {
"type" : "string",
"minLength" : 1
}
},
"Producer": {
"$ref" : "#/definitions/disallowed",
"description" : "Not present in CAPI data, so removed from Journal-sourced data"
},
"Rare" : {
"$ref" : "#/definitions/disallowed",
"description" : "Not present in CAPI data, so removed from Journal-sourced data"
},
"id": {
"$ref" : "#/definitions/disallowed",
"description" : "Not wanted for historical reasons?"
}
}
}
},
"economies": {
"type" : "array",
"items" : {
"type" : "object",
"additionalProperties" : false,
"required" : [ "name", "proportion" ],
"properties" : {
"name": {
"type" : "string",
"minLength" : 1,
"description" : "Economy type as returned by the Companion API"
},
"proportion": {
"type" : "number"
}
}
}
},
"prohibited": {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string",
"minLength" : 1
}
}
}
}
},
"definitions": {
"disallowed" : { "not" : { "type": [ "array", "boolean", "integer", "number", "null", "object", "string" ] } },
"levelType": {
"enum" : [0, 1, 2, 3, ""],
"description" : "Note: A value of \"\" indicates that the commodity is not normally sold/purchased at this station, but is currently temporarily for sale/purchase"
}
}
}