From 3e19fc085a6891bf6da7bde3b18bffbc06823a4d Mon Sep 17 00:00:00 2001 From: SpaceAdmiral Date: Wed, 4 Oct 2023 13:46:37 -0700 Subject: [PATCH] breaking: jump gates and construction --- models/Construction.json | 26 ++++++ models/ConstructionMaterial.json | 22 +++++ models/JumpGate.json | 18 +--- models/TradeSymbol.json | 1 + models/Waypoint.json | 7 +- reference/SpaceTraders.json | 152 +++++++++++++++++++++++++++++-- 6 files changed, 203 insertions(+), 23 deletions(-) create mode 100644 models/Construction.json create mode 100644 models/ConstructionMaterial.json diff --git a/models/Construction.json b/models/Construction.json new file mode 100644 index 0000000..73972cd --- /dev/null +++ b/models/Construction.json @@ -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" + ] +} \ No newline at end of file diff --git a/models/ConstructionMaterial.json b/models/ConstructionMaterial.json new file mode 100644 index 0000000..fc9e9ca --- /dev/null +++ b/models/ConstructionMaterial.json @@ -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" + ] +} \ No newline at end of file diff --git a/models/JumpGate.json b/models/JumpGate.json index 69dad45..ca9203e 100644 --- a/models/JumpGate.json +++ b/models/JumpGate.json @@ -2,24 +2,16 @@ "type": "object", "description": "", "properties": { - "jumpRange": { - "type": "number", - "description": "The maximum jump range of the gate." - }, - "factionSymbol": { - "type": "string", - "description": "The symbol of the faction that owns the gate." - }, - "connectedSystems": { + "connections": { "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": { - "$ref": "./ConnectedSystem.json" + "type": "string", + "description": "The symbol of the waypoint that has a corresponding gate." } } }, "required": [ - "jumpRange", - "connectedSystems" + "connections" ] } \ No newline at end of file diff --git a/models/TradeSymbol.json b/models/TradeSymbol.json index 2eb679a..9fd06e3 100644 --- a/models/TradeSymbol.json +++ b/models/TradeSymbol.json @@ -51,6 +51,7 @@ "CLOTHING", "MICROPROCESSORS", "PLASTICS", + "QUANTUM_STABILIZERS", "POLYNUCLEOTIDES", "BIOCOMPOSITES", "NANOBOTS", diff --git a/models/Waypoint.json b/models/Waypoint.json index 65e90b8..8248d89 100644 --- a/models/Waypoint.json +++ b/models/Waypoint.json @@ -54,6 +54,10 @@ }, "chart": { "$ref": "./Chart.json" + }, + "isUnderConstruction": { + "type": "boolean", + "description": "True if the waypoint is under construction." } }, "required": [ @@ -63,6 +67,7 @@ "x", "y", "orbitals", - "traits" + "traits", + "isUnderConstruction" ] } \ No newline at end of file diff --git a/reference/SpaceTraders.json b/reference/SpaceTraders.json index e284c3d..b83bb8a 100644 --- a/reference/SpaceTraders.json +++ b/reference/SpaceTraders.json @@ -695,7 +695,7 @@ }, "/systems/{systemSymbol}/waypoints/{waypointSymbol}/jump-gate": { "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", "responses": { "200": { @@ -750,6 +750,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": { "get": { "description": "Return a paginated list of all the factions in the game.", @@ -2211,20 +2345,20 @@ } ], "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", "requestBody": { "content": { "application/json": { "schema": { "properties": { - "systemSymbol": { - "description": "The system symbol to jump to.", + "waypointSymbol": { + "description": "The symbol of the waypoint to jump to. The destination must be a connected waypoint.", "type": "string" } }, "required": [ - "systemSymbol" + "waypointSymbol" ], "type": "object" } @@ -2240,16 +2374,16 @@ "properties": { "data": { "properties": { - "cooldown": { - "$ref": "../models/Cooldown.json" - }, "nav": { "$ref": "../models/ShipNav.json" + }, + "transaction": { + "$ref": "../models/MarketTransaction.json" } }, "required": [ "nav", - "cooldown" + "transaction" ], "type": "object" }