* update: new traits and add modifiers

* breaking: jump gates and construction

* update: add supply to shipyard listing

* add gas siphon endpoint

* add cooldown to jumps

* add missing types

* update supply and activity levels

* update: add waypoint query filters for type and traits

* add cargo modules

* add shipyard activity
This commit is contained in:
SpaceAdmiral 2023-10-28 09:26:28 -07:00 committed by GitHub
parent efd909475f
commit a46d675039
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 433 additions and 33 deletions

View File

@ -0,0 +1,9 @@
{
"type": "string",
"description": "The activity level of a trade good. If the good is an import, this represents how strong consumption is for the good. If the good is an export, this represents how strong the production is for the good.",
"enum": [
"WEAK",
"GROWING",
"STRONG"
]
}

26
models/Construction.json Normal file
View File

@ -0,0 +1,26 @@
{
"type": "object",
"description": "The construction details of a waypoint.",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the waypoint."
},
"materials": {
"type": "array",
"description": "The materials required to construct the waypoint.",
"items": {
"$ref": "./ConstructionMaterial.json"
}
},
"isComplete": {
"type": "boolean",
"description": "Whether the waypoint has been constructed."
}
},
"required": [
"symbol",
"materials",
"isComplete"
]
}

View File

@ -0,0 +1,22 @@
{
"description": "The details of the required construction materials for a given waypoint under construction.",
"type": "object",
"properties": {
"tradeSymbol": {
"$ref": "./TradeSymbol.json"
},
"required": {
"type": "integer",
"description": "The number of units required."
},
"fulfilled": {
"type": "integer",
"description": "The number of units fulfilled toward the required amount."
}
},
"required": [
"tradeSymbol",
"required",
"fulfilled"
]
}

View File

@ -2,24 +2,16 @@
"type": "object", "type": "object",
"description": "", "description": "",
"properties": { "properties": {
"jumpRange": { "connections": {
"type": "number",
"description": "The maximum jump range of the gate."
},
"factionSymbol": {
"type": "string",
"description": "The symbol of the faction that owns the gate."
},
"connectedSystems": {
"type": "array", "type": "array",
"description": "The systems within range of the gate that have a corresponding gate.", "description": "All the gates that are connected to this waypoint.",
"items": { "items": {
"$ref": "./ConnectedSystem.json" "type": "string",
"description": "The symbol of the waypoint that has a corresponding gate."
} }
} }
}, },
"required": [ "required": [
"jumpRange", "connections"
"connectedSystems"
] ]
} }

View File

@ -5,20 +5,25 @@
"type": "string", "type": "string",
"description": "The symbol of the trade good." "description": "The symbol of the trade good."
}, },
"type": {
"type": "string",
"description": "The type of trade good (export, import, or exchange).",
"enum": [
"EXPORT",
"IMPORT",
"EXCHANGE"
]
},
"tradeVolume": { "tradeVolume": {
"type": "integer", "type": "integer",
"description": "The typical volume flowing through the market for this type of good. The larger the trade volume, the more stable prices will be.", "description": "This is the maximum number of units that can be purchased or sold at this market in a single trade for this good. Trade volume also gives an indication of price volatility. A market with a low trade volume will have large price swings, while high trade volume will be more resilient to price changes.",
"minimum": 1 "minimum": 1
}, },
"supply": { "supply": {
"type": "string", "$ref": "./SupplyLevel.json"
"description": "A rough estimate of the total supply of this good in the marketplace.", },
"enum": [ "activity": {
"SCARCE", "$ref": "./ActivityLevel.json"
"LIMITED",
"MODERATE",
"ABUNDANT"
]
}, },
"purchasePrice": { "purchasePrice": {
"type": "integer", "type": "integer",
@ -33,6 +38,7 @@
}, },
"required": [ "required": [
"symbol", "symbol",
"type",
"tradeVolume", "tradeVolume",
"supply", "supply",
"purchasePrice", "purchasePrice",

View File

@ -6,7 +6,10 @@
"type": "string", "type": "string",
"enum": [ "enum": [
"MODULE_MINERAL_PROCESSOR_I", "MODULE_MINERAL_PROCESSOR_I",
"MODULE_GAS_PROCESSOR_I",
"MODULE_CARGO_HOLD_I", "MODULE_CARGO_HOLD_I",
"MODULE_CARGO_HOLD_II",
"MODULE_CARGO_HOLD_III",
"MODULE_CREW_QUARTERS_I", "MODULE_CREW_QUARTERS_I",
"MODULE_ENVOY_QUARTERS_I", "MODULE_ENVOY_QUARTERS_I",
"MODULE_PASSENGER_CABIN_I", "MODULE_PASSENGER_CABIN_I",

View File

@ -4,6 +4,7 @@
"enum": [ "enum": [
"SHIP_PROBE", "SHIP_PROBE",
"SHIP_MINING_DRONE", "SHIP_MINING_DRONE",
"SHIP_SIPHON_DRONE",
"SHIP_INTERCEPTOR", "SHIP_INTERCEPTOR",
"SHIP_LIGHT_HAULER", "SHIP_LIGHT_HAULER",
"SHIP_COMMAND_FRIGATE", "SHIP_COMMAND_FRIGATE",
@ -11,6 +12,7 @@
"SHIP_HEAVY_FREIGHTER", "SHIP_HEAVY_FREIGHTER",
"SHIP_LIGHT_SHUTTLE", "SHIP_LIGHT_SHUTTLE",
"SHIP_ORE_HOUND", "SHIP_ORE_HOUND",
"SHIP_REFINING_FREIGHTER" "SHIP_REFINING_FREIGHTER",
"SHIP_SURVEYOR"
] ]
} }

View File

@ -11,6 +11,12 @@
"description": { "description": {
"type": "string" "type": "string"
}, },
"supply": {
"$ref": "./SupplyLevel.json"
},
"activity": {
"$ref": "./ActivityLevel.json"
},
"purchasePrice": { "purchasePrice": {
"type": "integer" "type": "integer"
}, },
@ -55,6 +61,7 @@
"symbol", "symbol",
"name", "name",
"description", "description",
"supply",
"purchasePrice", "purchasePrice",
"frame", "frame",
"reactor", "reactor",

19
models/Siphon.json Normal file
View File

@ -0,0 +1,19 @@
{
"description": "Siphon details.",
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"minLength": 1,
"description": "Symbol of the ship that executed the siphon."
},
"yield": {
"$ref": "./SiphonYield.json",
"description": "Yields from the siphon operation."
}
},
"required": [
"shipSymbol",
"yield"
]
}

18
models/SiphonYield.json Normal file
View File

@ -0,0 +1,18 @@
{
"type": "object",
"description": "A yield from the siphon operation.",
"properties": {
"symbol": {
"$ref": "./TradeSymbol.json",
"description": "Symbol of the good that was siphoned."
},
"units": {
"type": "integer",
"description": "The number of units siphoned that were placed into the ship's cargo hold."
}
},
"required": [
"symbol",
"units"
]
}

11
models/SupplyLevel.json Normal file
View File

@ -0,0 +1,11 @@
{
"type": "string",
"description": "The supply level of a trade good.",
"enum": [
"SCARCE",
"LIMITED",
"MODERATE",
"HIGH",
"ABUNDANT"
]
}

View File

@ -43,6 +43,7 @@
"AMMUNITION", "AMMUNITION",
"ELECTRONICS", "ELECTRONICS",
"SHIP_PLATING", "SHIP_PLATING",
"SHIP_PARTS",
"EQUIPMENT", "EQUIPMENT",
"FUEL", "FUEL",
"MEDICINE", "MEDICINE",
@ -50,6 +51,7 @@
"CLOTHING", "CLOTHING",
"MICROPROCESSORS", "MICROPROCESSORS",
"PLASTICS", "PLASTICS",
"QUANTUM_STABILIZERS",
"POLYNUCLEOTIDES", "POLYNUCLEOTIDES",
"BIOCOMPOSITES", "BIOCOMPOSITES",
"NANOBOTS", "NANOBOTS",
@ -80,6 +82,7 @@
"ENGINE_ION_DRIVE_II", "ENGINE_ION_DRIVE_II",
"ENGINE_HYPER_DRIVE_I", "ENGINE_HYPER_DRIVE_I",
"MODULE_MINERAL_PROCESSOR_I", "MODULE_MINERAL_PROCESSOR_I",
"MODULE_GAS_PROCESSOR_I",
"MODULE_CARGO_HOLD_I", "MODULE_CARGO_HOLD_I",
"MODULE_CREW_QUARTERS_I", "MODULE_CREW_QUARTERS_I",
"MODULE_ENVOY_QUARTERS_I", "MODULE_ENVOY_QUARTERS_I",

View File

@ -45,8 +45,19 @@
"$ref": "./WaypointTrait.json" "$ref": "./WaypointTrait.json"
} }
}, },
"modifiers": {
"type": "array",
"description": "The modifiers of the waypoint.",
"items": {
"$ref": "./WaypointModifier.json"
}
},
"chart": { "chart": {
"$ref": "./Chart.json" "$ref": "./Chart.json"
},
"isUnderConstruction": {
"type": "boolean",
"description": "True if the waypoint is under construction."
} }
}, },
"required": [ "required": [
@ -56,6 +67,7 @@
"x", "x",
"y", "y",
"orbitals", "orbitals",
"traits" "traits",
"isUnderConstruction"
] ]
} }

View File

@ -0,0 +1,29 @@
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The unique identifier of the modifier.",
"enum": [
"STRIPPED",
"UNSTABLE",
"RADIATION_LEAK",
"CRITICAL_LIMIT",
"CIVIL_UNREST"
]
},
"name": {
"type": "string",
"description": "The name of the trait."
},
"description": {
"type": "string",
"description": "A description of the trait."
}
},
"required": [
"symbol",
"name",
"description"
]
}

View File

@ -6,6 +6,7 @@
"description": "The unique identifier of the trait.", "description": "The unique identifier of the trait.",
"enum": [ "enum": [
"UNCHARTED", "UNCHARTED",
"UNDER_CONSTRUCTION",
"MARKETPLACE", "MARKETPLACE",
"SHIPYARD", "SHIPYARD",
"OUTPOST", "OUTPOST",
@ -54,6 +55,7 @@
"TOXIC_ATMOSPHERE", "TOXIC_ATMOSPHERE",
"CORROSIVE_ATMOSPHERE", "CORROSIVE_ATMOSPHERE",
"BREATHABLE_ATMOSPHERE", "BREATHABLE_ATMOSPHERE",
"THIN_ATMOSPHERE",
"JOVIAN", "JOVIAN",
"ROCKY", "ROCKY",
"VOLCANIC", "VOLCANIC",
@ -63,6 +65,13 @@
"TEMPERATE", "TEMPERATE",
"JUNGLE", "JUNGLE",
"OCEAN", "OCEAN",
"RADIOACTIVE",
"MICRO_GRAVITY_ANOMALIES",
"DEBRIS_CLUSTER",
"DEEP_CRATERS",
"SHALLOW_CRATERS",
"UNSTABLE_COMPOSITION",
"HOLLOWED_INTERIOR",
"STRIPPED" "STRIPPED"
] ]
}, },

View File

@ -8,8 +8,13 @@
"ORBITAL_STATION", "ORBITAL_STATION",
"JUMP_GATE", "JUMP_GATE",
"ASTEROID_FIELD", "ASTEROID_FIELD",
"ASTEROID",
"ENGINEERED_ASTEROID",
"ASTEROID_BASE",
"NEBULA", "NEBULA",
"DEBRIS_FIELD", "DEBRIS_FIELD",
"GRAVITY_WELL" "GRAVITY_WELL",
"ARTIFICIAL_GRAVITY_WELL",
"FUEL_STATION"
] ]
} }

View File

@ -502,6 +502,32 @@
"in": "query", "in": "query",
"name": "limit", "name": "limit",
"description": "How many entries to return per page" "description": "How many entries to return per page"
},
{
"description": "Filter waypoints by type.",
"in": "query",
"name": "type",
"schema": {
"$ref": "../models/WaypointType.json"
}
},
{
"description": "Filter waypoints by one or more traits.",
"in": "query",
"name": "traits",
"schema": {
"oneOf": [
{
"$ref": "../models/WaypointTrait.json"
},
{
"type": "array",
"items": {
"$ref": "../models/WaypointTrait.json"
}
}
]
}
} }
], ],
"security": [ "security": [
@ -695,7 +721,7 @@
}, },
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/jump-gate": { "/systems/{systemSymbol}/waypoints/{waypointSymbol}/jump-gate": {
"get": { "get": {
"description": "Get jump gate details for a waypoint. Requires a waypoint of type `JUMP_GATE` to use.\n\nThe response will return all systems that are have a Jump Gate in range of this Jump Gate. Those systems can be jumped to from this Jump Gate.", "description": "Get jump gate details for a waypoint. Requires a waypoint of type `JUMP_GATE` to use.\n\nWaypoints connected to this jump gate can be ",
"operationId": "get-jump-gate", "operationId": "get-jump-gate",
"responses": { "responses": {
"200": { "200": {
@ -750,6 +776,140 @@
} }
] ]
}, },
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/construction": {
"get": {
"description": "Get construction details for a waypoint. Requires a waypoint with a property of `isUnderConstruction` to be true.",
"operationId": "get-construction",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"description": "",
"properties": {
"data": {
"$ref": "../models/Construction.json"
}
},
"required": [
"data"
],
"type": "object"
}
}
},
"description": "Successfully fetched construction site."
}
},
"security": [
{},
{
"AgentToken": []
}
],
"summary": "Get Construction Site",
"tags": [
"Systems"
]
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/construction/supply": {
"post": {
"description": "Supply a construction site with the specified good. Requires a waypoint with a property of `isUnderConstruction` to be true.\n\nThe good must be in your ship's cargo. The good will be removed from your ship's cargo and added to the construction site's materials.",
"operationId": "supply-construction",
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"shipSymbol": {
"type": "string",
"description": "Symbol of the ship to use."
},
"tradeSymbol": {
"type": "string",
"description": "The symbol of the good to supply."
},
"units": {
"type": "integer",
"description": "Amount of units to supply."
}
},
"required": [
"shipSymbol",
"tradeSymbol",
"units"
],
"type": "object"
}
}
},
"description": ""
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"description": "",
"properties": {
"data": {
"properties": {
"construction": {
"$ref": "../models/Construction.json"
},
"cargo": {
"$ref": "../models/ShipCargo.json"
}
},
"required": [
"construction",
"cargo"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
}
},
"description": "Successfully supplied construction site."
}
},
"security": [
{
"AgentToken": []
}
],
"summary": "Supply Construction Site",
"tags": [
"Systems"
]
},
"parameters": [
{
"description": "The system symbol",
"in": "path",
"name": "systemSymbol",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "The waypoint symbol",
"in": "path",
"name": "waypointSymbol",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"/factions": { "/factions": {
"get": { "get": {
"description": "Return a paginated list of all the factions in the game.", "description": "Return a paginated list of all the factions in the game.",
@ -2048,6 +2208,69 @@
] ]
} }
}, },
"/my/ships/{shipSymbol}/siphon": {
"parameters": [
{
"description": "The ship symbol.",
"in": "path",
"name": "shipSymbol",
"required": true,
"schema": {
"type": "string"
}
}
],
"post": {
"description": "Siphon gases, such as hydrocarbon, from gas giants.\n\nThe ship must be in orbit to be able to siphon and must have siphon mounts and a gas processor installed.",
"operationId": "siphon-resources",
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"description": "",
"properties": {
"data": {
"properties": {
"cooldown": {
"$ref": "../models/Cooldown.json"
},
"siphon": {
"$ref": "../models/Siphon.json"
},
"cargo": {
"$ref": "../models/ShipCargo.json"
}
},
"required": [
"siphon",
"cooldown",
"cargo"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
}
},
"description": "Siphon successful."
}
},
"security": [
{
"AgentToken": []
}
],
"summary": "Siphon Resources",
"tags": [
"Fleet"
]
}
},
"/my/ships/{shipSymbol}/extract/survey": { "/my/ships/{shipSymbol}/extract/survey": {
"parameters": [ "parameters": [
{ {
@ -2211,20 +2434,20 @@
} }
], ],
"post": { "post": {
"description": "Jump your ship instantly to a target system. The ship must be in orbit to use this function. When used while in orbit of a Jump Gate waypoint, any ship can use this command, jumping to the target system's Jump Gate waypoint.\n\nWhen used elsewhere, jumping requires the ship to have a `Jump Drive` module installed and consumes a unit of antimatter from the ship's cargo. The command will fail if there is no antimatter to consume. When jumping via the `Jump Drive` module, the ship ends up at its largest source of energy in the system, such as a gas planet or a jump gate.", "description": "Jump your ship instantly to a target connected waypoint. The ship must be in orbit to execute a jump.\n\nA unit of antimatter is purchased and consumed from the market when jumping. The price of antimatter is determined by the market and is subject to change. A ship can only jump to connected waypoints",
"operationId": "jump-ship", "operationId": "jump-ship",
"requestBody": { "requestBody": {
"content": { "content": {
"application/json": { "application/json": {
"schema": { "schema": {
"properties": { "properties": {
"systemSymbol": { "waypointSymbol": {
"description": "The system symbol to jump to.", "description": "The symbol of the waypoint to jump to. The destination must be a connected waypoint.",
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"systemSymbol" "waypointSymbol"
], ],
"type": "object" "type": "object"
} }
@ -2240,16 +2463,20 @@
"properties": { "properties": {
"data": { "data": {
"properties": { "properties": {
"nav": {
"$ref": "../models/ShipNav.json"
},
"cooldown": { "cooldown": {
"$ref": "../models/Cooldown.json" "$ref": "../models/Cooldown.json"
}, },
"nav": { "transaction": {
"$ref": "../models/ShipNav.json" "$ref": "../models/MarketTransaction.json"
} }
}, },
"required": [ "required": [
"nav", "nav",
"cooldown" "cooldown",
"transaction"
], ],
"type": "object" "type": "object"
} }