diff --git a/docs/markets.md b/docs/markets.md new file mode 100644 index 0000000..821c114 --- /dev/null +++ b/docs/markets.md @@ -0,0 +1,73 @@ +# Markets + +This document is an overview of how markets will work in the game. Not all of these details are currently implemented, but we wanted to share some of what SpaceTraders will offer when the game is released. + +Markets and trade are core concepts in the game and the primary credit-earning mechanism in SpaceTraders. Markets are dynamic and evolve over time as they are influenced by player activity. + +- Prices will fluctuate with trade and the natural production / consumption of goods. +- Trading drives the growth of a system, but a sudden drop in trade could also cause the system to fall into turmoil, instability and piracy. +- Agents can earn credits from markets through arbitrage - connect a trade route between the export of one market to the import of another and collect the difference in trade price. +- Markets evolve every day and agents who capitalize on these developing opportunities will be rewarded. +- Early markets can be dominated by a single player, but several players will have to work together to grow and maintain more mature markets. +- Agents can gain advanced notice of market events and shifts by leveraging their faction reputation or by spying on local comms. + +## Mechanics + +Markets have hidden mechanics that influence the price of goods, the trade volume of those goods, and market events that can occur with agent activity. Here is a quick overview of the basic mechanics of how markets function: + +- Markets are always in flux - prices are changing with the supply or consumption of goods. Sudden events can also disrupt or enhance trade. +- Every trade good has a production rate (exports) and consumption rate (imports) which naturally drive price changes over time. +- As agents purchase more and more of a exported trade good, the production of that good will increase until it catches up with demand +- As agents supply more and more of an imported trade good, the consumption of that good will increase and may trigger new exports or settlement growth +- A sudden drop in the trade of a good can quickly throw the market into instability - prices will hit extremes and eventually the settlement may fall into turmoil. +- If you are investing long-term in a market or faction, you will want to trade consistently to keep prices stable. + +## Market Stages + +All markets can be categorized into three stages: early, developing, and mature. There will be higher profits in mature markets, but they will be difficult to find and maintain. The best way to trade in a mature market is to trade in an early or developing market until it evolves. + +### Early Markets + +Early stage markets trade in low volume and high price volatility but with better margins. + +- Early settlements often demand commodities such as food, clothing and medicine. +- Supplying these settlements with their needs will provide high reputation rewards for early supporters, which can trigger the market to grow. +- Early markets evolve into developing markets after a period of sustained trade and stability. + +### Developing Markets + +Middle stage markets rely on a steady supply of imports and regular transport of exports to continue to grow. Trade failures at this stage can quickly send the system into turmoil and piracy. + +- Settlements will eventually develop a primary export and may develop related imports +- Developing markets will grow in trade volume and develop price stability with player activity +- These markets are at the highest risk of collapse - a sudden drop in trade volume can throw the whole settlement into turmoil +- Some markets will expand horizontally into related exports or develop brand new exports + +### Mature Markets + +Late stage markets export much rarer and higher-priced trade goods. These markets are often only accessible to agents with high reputation. + +- Export high-tech and luxury goods that are in high demand at most other settlements +- Mature market goods are primarily sold through negotiation +- Ships transporting high value goods will be likely targets for pirates and hostile factions + +### Black Markets + +Some goods will be prohibited by factions but can still be traded through negotiation. Although these trades can be lucrative, they can also destabilize the settlement and throw it into turmoil or piracy. Agents may want to prevent others from trading in black market goods by offering to patrol waypoints on behalf of the local faction. + +- Trading in black market goods can cause a significant drop in reputation if you're caught. +- Ship modules such as hidden cargo holds, higher-tier envoys, and stealth tech can improve attempts at black market trade. +- Ships can be scanned for black market goods which will be seized by patrols. +- Agents can help factions patrol for black market cargo to prevent damage to the overall market by other agents or competing factions. + +## Exchanges + +Exchanges are markets with many types of goods listed and the prices remain fairly stable over time. These markets don't have a natural production or consumption rate, but slowly trend toward a medium price over time. Exchanges are a good way to exchange goods between agents or other ships. + +## Negotiation + +Not all opportunities are listed in the markets. Every settlement has the potential to buy or sell any trade good in the game. You can send an envoy to a settlement and attempt to negotiate the purchase or selling of a good - however the trade is not guaranteed. This can often be a more lucrative way of unloading cargo rather than jettisoning it into space. + +- Regular trade via these negotiations can sometimes trigger the development of a new import or export in the market. +- High-tech and luxury goods are primarily sold through negotiation - these can net agents a great sum of credits. +- Reputation with the local faction can have a significant impact on the types, prices and quantities of goods offered through negotiation. diff --git a/models/MarketTrade.yaml b/models/MarketTrade.yaml new file mode 100644 index 0000000..1093e9c --- /dev/null +++ b/models/MarketTrade.yaml @@ -0,0 +1,18 @@ +description: "" +type: object +properties: + waypointSymbol: + type: string + minLength: 1 + tradeSymbol: + type: string + minLength: 1 + price: + type: number + tariff: + type: number +required: + - waypointSymbol + - tradeSymbol + - price + - tariff diff --git a/reference/SpaceTraders.yaml b/reference/SpaceTraders.yaml index 991e69e..f982fe5 100644 --- a/reference/SpaceTraders.yaml +++ b/reference/SpaceTraders.yaml @@ -7,8 +7,8 @@ info: name: Joel Brubaker email: joel@spacetraders.io license: - name: 'No' - url: 'https://choosealicense.com/no-permission/' + name: "No" + url: "https://choosealicense.com/no-permission/" description: |- SpaceTraders is a multiplayer sci-fi strategy game where you acquire and manage a fleet of ships across a growing and dynamic universe. @@ -26,7 +26,7 @@ info: } ``` servers: - - url: 'https://v2-0-0.alpha.spacetraders.io' + - url: "https://v2-0-0.alpha.spacetraders.io" description: v2.0.0-alpha paths: /agents: @@ -35,7 +35,7 @@ paths: tags: - agents responses: - '201': + "201": description: OK content: application/json: @@ -80,7 +80,7 @@ paths: faction: COMMERCE_REPUBLIC type: PROCUREMENT terms: - deadline: '2022-03-11T05:16:59.113Z' + deadline: "2022-03-11T05:16:59.113Z" payment: onAccepted: 20000 onFulfilled: 100000 @@ -91,7 +91,7 @@ paths: fulfilled: 0 accepted: false fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' + expiresAt: "2022-03-09T05:16:59.112Z" ship: symbol: string frame: string @@ -149,14 +149,14 @@ paths: type: string default: COMMERCE_REPUBLIC description: The faction you choose determines your headquarters. - description: '' + description: "" /my/agent: get: summary: My Agent Details tags: - agents responses: - '200': + "200": description: OK content: application/json: @@ -177,14 +177,14 @@ paths: security: - AgentToken: [] description: Fetch your agent's details. - '/my/ships/{shipSymbol}/chart': + "/my/ships/{shipSymbol}/chart": post: summary: Chart Waypoint tags: - navigation responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: @@ -204,8 +204,8 @@ paths: submitted: - X1-ZZ - X1-ZZ-7-EE - operationId: 'post-my-ships-:shipSymbol-chart' - description: 'Chart a new system or waypoint. Returns an array of the symbols that have been charted, including the system and the waypoint if both were uncharted, or just the waypoint.' + operationId: "post-my-ships-:shipSymbol-chart" + description: "Chart a new system or waypoint. Returns an array of the symbols that have been charted, including the system and the waypoint if both were uncharted, or just the waypoint." security: - AgentToken: [] parameters: @@ -215,7 +215,7 @@ paths: in: path required: true description: The symbol of the ship - '/my/ships/{shipSymbol}/deliver': + "/my/ships/{shipSymbol}/deliver": parameters: - schema: type: string @@ -228,12 +228,12 @@ paths: tags: - contracts responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -266,7 +266,7 @@ paths: - contractId - tradeSymbol description: Deliver cargo on a given contract. - '/my/ships/{shipSymbol}/dock': + "/my/ships/{shipSymbol}/dock": parameters: - schema: type: string @@ -279,12 +279,12 @@ paths: tags: - navigation responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: - description: '' + description: "" type: object properties: data: @@ -309,7 +309,7 @@ paths: security: - AgentToken: [] description: Transition your ship from orbit to docked. Consecutive calls to this endpoint will succeed. - '/my/ships/{shipSymbol}/orbit': + "/my/ships/{shipSymbol}/orbit": parameters: - schema: type: string @@ -320,12 +320,12 @@ paths: post: summary: Orbit Ship responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -350,7 +350,7 @@ paths: description: Transition your ship from docked into orbit. Ships are placed into orbit by default when arriving at a destination. Consecutive calls to this endpoint will continue to return a 200 response status. tags: - navigation - '/my/ships/{shipSymbol}/jettison': + "/my/ships/{shipSymbol}/jettison": parameters: - schema: type: string @@ -362,12 +362,12 @@ paths: tags: - ships responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: - description: '' + description: "" type: object properties: data: @@ -409,7 +409,7 @@ paths: units: type: number minimum: 1 - '/my/ships/{shipSymbol}/extract': + "/my/ships/{shipSymbol}/extract": parameters: - schema: type: string @@ -420,12 +420,12 @@ paths: post: summary: Extract Resources responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -437,7 +437,7 @@ paths: units: 16 cooldown: duration: 119 - expiration: '2022-03-12T00:41:29.371Z' + expiration: "2022-03-12T00:41:29.371Z" properties: data: type: object @@ -462,7 +462,7 @@ paths: units: 16 cooldown: duration: 119 - expiration: '2022-03-12T00:41:29.371Z' + expiration: "2022-03-12T00:41:29.371Z" operationId: post-my-ships-shipSymbol-extract requestBody: content: @@ -470,7 +470,7 @@ paths: schema: type: - object - - 'null' + - "null" properties: survey: $ref: ../models/Survey.yaml @@ -483,8 +483,8 @@ paths: signature: X1-OE-D2DD38 deposits: - COPPER_ORE - expiration: '2022-03-08T05:41:55.514Z' - description: '' + expiration: "2022-03-08T05:41:55.514Z" + description: "" description: Extract resources from the waypoint into your ship. Send a survey as the payload to target specific yields. The entire survey must be sent as it contains a signature that the backend verifies. security: - AgentToken: [] @@ -494,19 +494,19 @@ paths: summary: Extraction Cooldown operationId: get-my-ships-shipSymbol-extract responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: data: cooldown: duration: 119 - expiration: '2022-03-12T00:41:29.285Z' + expiration: "2022-03-12T00:41:29.285Z" properties: data: type: object @@ -523,13 +523,13 @@ paths: data: cooldown: duration: 119 - expiration: '2022-03-12T00:41:29.285Z' + expiration: "2022-03-12T00:41:29.285Z" description: Get the status of your last extraction. security: - AgentToken: [] tags: - extract - '/my/ships/{shipSymbol}/survey': + "/my/ships/{shipSymbol}/survey": parameters: - schema: type: string @@ -539,12 +539,12 @@ paths: post: summary: Survey Waypoint responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -552,47 +552,47 @@ paths: - signature: X1-OE-D2DD38 deposits: - COPPER_ORE - expiration: '2022-03-08T05:41:55.514Z' + expiration: "2022-03-08T05:41:55.514Z" - signature: X1-OE-B58FEB deposits: - ALUMINUM_ORE - ALUMINUM_ORE - ALUMINUM_ORE - expiration: '2022-03-08T05:39:15.519Z' + expiration: "2022-03-08T05:39:15.519Z" - signature: X1-OE-0E326C deposits: - ALUMINUM_ORE - SILICON - expiration: '2022-03-08T05:20:27.521Z' + expiration: "2022-03-08T05:20:27.521Z" - signature: X1-OE-5CDFA4 deposits: - COPPER_ORE - COPPER_ORE - COPPER_ORE - IRON_ORE - expiration: '2022-03-08T05:44:34.522Z' + expiration: "2022-03-08T05:44:34.522Z" - signature: X1-OE-86C3A1 deposits: - COPPER_ORE - COPPER_ORE - IRON_ORE - expiration: '2022-03-08T05:43:45.522Z' + expiration: "2022-03-08T05:43:45.522Z" - signature: X1-OE-C97BEA deposits: - ALUMINUM_ORE - COPPER_ORE - QUARTZ - QUARTZ - expiration: '2022-03-08T05:22:39.523Z' + expiration: "2022-03-08T05:22:39.523Z" - signature: X1-OE-9913BD deposits: - QUARTZ - expiration: '2022-03-08T05:37:45.523Z' + expiration: "2022-03-08T05:37:45.523Z" - signature: X1-OE-8D87D2 deposits: - COPPER_ORE - SILICON - expiration: '2022-03-08T05:32:57.524Z' + expiration: "2022-03-08T05:32:57.524Z" properties: data: type: object @@ -611,40 +611,40 @@ paths: data: cooldown: duration: 899 - expiration: '2022-03-12T02:11:35.618Z' + expiration: "2022-03-12T02:11:35.618Z" surveys: - signature: X1-OE-397C82 deposits: - SILICON - expiration: '2022-03-12T02:00:19.622Z' + expiration: "2022-03-12T02:00:19.622Z" - signature: X1-OE-4413F6 deposits: - ALUMINUM_ORE - ALUMINUM_ORE - COPPER_ORE - IRON_ORE - expiration: '2022-03-12T02:20:08.625Z' + expiration: "2022-03-12T02:20:08.625Z" - signature: X1-OE-E6480F deposits: - ALUMINUM_ORE - IRON_ORE - QUARTZ - SILICON - expiration: '2022-03-12T02:18:00.626Z' + expiration: "2022-03-12T02:18:00.626Z" - signature: X1-OE-660BE9 deposits: - ALUMINUM_ORE - expiration: '2022-03-12T02:20:45.626Z' + expiration: "2022-03-12T02:20:45.626Z" - signature: X1-OE-D64798 deposits: - COPPER_ORE - QUARTZ - SILICON - expiration: '2022-03-12T02:07:33.626Z' + expiration: "2022-03-12T02:07:33.626Z" - signature: X1-OE-F799F3 deposits: - IRON_ORE - expiration: '2022-03-12T02:23:16.627Z' + expiration: "2022-03-12T02:23:16.627Z" operationId: post-my-ships-shipSymbol-survey security: - AgentToken: [] @@ -659,7 +659,7 @@ paths: tags: - extract responses: - '200': + "200": description: OK content: application/json: @@ -677,10 +677,10 @@ paths: data: cooldown: duration: 899 - expiration: '2022-03-12T02:11:35.618Z' + expiration: "2022-03-12T02:11:35.618Z" operationId: get-my-ships-shipSymbol-survey - description: 'Executing a survey will initiate a cooldown for a number of seconds before you can call it again. This endpoint returns the details of your cooldown, or a 404 if there is no cooldown for the survey action.' - '/my/ships/{shipSymbol}/jump': + description: "Executing a survey will initiate a cooldown for a number of seconds before you can call it again. This endpoint returns the details of your cooldown, or a 404 if there is no cooldown for the survey action." + "/my/ships/{shipSymbol}/jump": parameters: - schema: type: string @@ -692,12 +692,12 @@ paths: tags: - navigation responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -707,7 +707,7 @@ paths: destination: 00E0B1 cooldown: duration: 719 - expiration: '2022-03-12T00:52:56.735Z' + expiration: "2022-03-12T00:52:56.735Z" properties: data: type: object @@ -740,7 +740,7 @@ paths: destination: 00E0B1 cooldown: duration: 719 - expiration: '2022-03-12T00:52:56.735Z' + expiration: "2022-03-12T00:52:56.735Z" operationId: post-my-ships-shipSymbol-jump security: - AgentToken: [] @@ -757,19 +757,19 @@ paths: summary: Jump Cooldown operationId: get-my-ships-shipSymbol-jump responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: data: cooldown: duration: 719 - expiration: '2022-03-12T00:52:56.735Z' + expiration: "2022-03-12T00:52:56.735Z" properties: data: type: object @@ -784,7 +784,7 @@ paths: - AgentToken: [] tags: - navigation - '/my/ships/{shipSymbol}/purchase': + "/my/ships/{shipSymbol}/purchase": parameters: - schema: type: string @@ -796,12 +796,12 @@ paths: tags: - trade responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -836,7 +836,7 @@ paths: type: string units: type: number - '/my/ships/{shipSymbol}/sell': + "/my/ships/{shipSymbol}/sell": parameters: - schema: type: string @@ -848,12 +848,12 @@ paths: tags: - trade responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -889,8 +889,8 @@ paths: type: string units: type: number - description: '' - '/my/ships/{shipSymbol}/refuel': + description: "" + "/my/ships/{shipSymbol}/refuel": parameters: - schema: type: string @@ -902,12 +902,12 @@ paths: tags: - navigation responses: - '201': - description: Created + "200": + description: OK content: application/json: schema: - description: '' + description: "" type: object properties: data: @@ -936,7 +936,7 @@ paths: operationId: post-my-ships-shipSymbol-refuel security: - AgentToken: [] - '/my/ships/{shipSymbol}/scan': + "/my/ships/{shipSymbol}/scan": parameters: - schema: type: string @@ -948,12 +948,12 @@ paths: tags: - ships responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -966,7 +966,7 @@ paths: frameSymbol: FRAME_HEAVY_FREIGHTER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:14.725Z' + expiration: "2022-03-08T05:20:14.725Z" - symbol: ZANZIBAR_TRIKES-DF0AAF registration: factionSymbol: ZANZIBAR_TRIKES @@ -974,7 +974,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:00.725Z' + expiration: "2022-03-08T05:20:00.725Z" - symbol: ZANZIBAR_TRIKES-9B80BE registration: factionSymbol: ZANZIBAR_TRIKES @@ -982,7 +982,7 @@ paths: frameSymbol: FRAME_TRANSPORT reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:06.725Z' + expiration: "2022-03-08T05:20:06.725Z" - symbol: COMMERCE_REPUBLIC-117520 registration: factionSymbol: COMMERCE_REPUBLIC @@ -990,7 +990,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:19:55.725Z' + expiration: "2022-03-08T05:19:55.725Z" - symbol: SPACERS_GUILD-609AA5 registration: factionSymbol: SPACERS_GUILD @@ -998,7 +998,7 @@ paths: frameSymbol: FRAME_FRIGATE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:19:38.725Z' + expiration: "2022-03-08T05:19:38.725Z" - symbol: MINERS_COLLECTIVE-7AD322 registration: factionSymbol: MINERS_COLLECTIVE @@ -1006,7 +1006,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:19:11.725Z' + expiration: "2022-03-08T05:19:11.725Z" - symbol: ZANZIBAR_TRIKES-AE6D78 registration: factionSymbol: ZANZIBAR_TRIKES @@ -1014,7 +1014,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:44.725Z' + expiration: "2022-03-08T05:20:44.725Z" - symbol: SPACERS_GUILD-92828B registration: factionSymbol: SPACERS_GUILD @@ -1022,7 +1022,7 @@ paths: frameSymbol: FRAME_LIGHT_FREIGHTER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:49.726Z' + expiration: "2022-03-08T05:20:49.726Z" - symbol: ZANZIBAR_TRIKES-B5EAD1 registration: factionSymbol: ZANZIBAR_TRIKES @@ -1030,7 +1030,7 @@ paths: frameSymbol: FRAME_TRANSPORT reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:25.726Z' + expiration: "2022-03-08T05:20:25.726Z" - symbol: ZANZIBAR_TRIKES-6A4E0D registration: factionSymbol: ZANZIBAR_TRIKES @@ -1038,7 +1038,7 @@ paths: frameSymbol: FRAME_EXPLORER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:19:19.726Z' + expiration: "2022-03-08T05:19:19.726Z" cooldown: 60 properties: data: @@ -1063,7 +1063,7 @@ paths: data: cooldown: duration: 59 - expiration: '2022-03-12T00:42:44.220Z' + expiration: "2022-03-12T00:42:44.220Z" ships: - symbol: SPACERS_GUILD-65E1BA registration: @@ -1072,7 +1072,7 @@ paths: frameSymbol: FRAME_LIGHT_FREIGHTER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:14.222Z' + expiration: "2022-03-12T00:44:14.222Z" - symbol: MINERS_COLLECTIVE-C6ACCA registration: factionSymbol: MINERS_COLLECTIVE @@ -1080,7 +1080,7 @@ paths: frameSymbol: FRAME_INTERCEPTOR reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:38.222Z' + expiration: "2022-03-12T00:44:38.222Z" - symbol: COMMERCE_REPUBLIC-866DC7 registration: factionSymbol: COMMERCE_REPUBLIC @@ -1088,7 +1088,7 @@ paths: frameSymbol: FRAME_LIGHT_FREIGHTER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:45:21.222Z' + expiration: "2022-03-12T00:45:21.222Z" - symbol: SPACERS_GUILD-2B1D01 registration: factionSymbol: SPACERS_GUILD @@ -1096,7 +1096,7 @@ paths: frameSymbol: FRAME_HEAVY_FREIGHTER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:53.222Z' + expiration: "2022-03-12T00:44:53.222Z" - symbol: MINERS_COLLECTIVE-2F238C registration: factionSymbol: MINERS_COLLECTIVE @@ -1104,7 +1104,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:07.222Z' + expiration: "2022-03-12T00:44:07.222Z" - symbol: ZANZIBAR_TRIKES-ACF237 registration: factionSymbol: ZANZIBAR_TRIKES @@ -1112,7 +1112,7 @@ paths: frameSymbol: FRAME_INTERCEPTOR reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:22.223Z' + expiration: "2022-03-12T00:44:22.223Z" - symbol: SPACERS_GUILD-94A474 registration: factionSymbol: SPACERS_GUILD @@ -1120,7 +1120,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:43:51.223Z' + expiration: "2022-03-12T00:43:51.223Z" - symbol: ZANZIBAR_TRIKES-648BA8 registration: factionSymbol: ZANZIBAR_TRIKES @@ -1128,7 +1128,7 @@ paths: frameSymbol: FRAME_SHUTTLE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:56.223Z' + expiration: "2022-03-12T00:44:56.223Z" - symbol: COMMERCE_REPUBLIC-1EED24 registration: factionSymbol: COMMERCE_REPUBLIC @@ -1136,7 +1136,7 @@ paths: frameSymbol: FRAME_EXPLORER reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:45:23.223Z' + expiration: "2022-03-12T00:45:23.223Z" - symbol: ZANZIBAR_TRIKES-A5600D registration: factionSymbol: ZANZIBAR_TRIKES @@ -1144,7 +1144,7 @@ paths: frameSymbol: FRAME_FRIGATE reactorSymbol: REACTOR_FUSION_I engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:00.223Z' + expiration: "2022-03-12T00:44:00.223Z" operationId: post-my-ships-shipSymbol-scan security: - AgentToken: [] @@ -1169,12 +1169,12 @@ paths: Departing Ships: value: mode: APPROACHING_SHIPS - description: '' + description: "" get: summary: Scan Cooldown operationId: get-my-ships-shipSymbol-scan responses: - '200': + "200": description: OK content: application/json: @@ -1192,12 +1192,12 @@ paths: data: cooldown: duration: 59 - expiration: '2022-03-12T00:42:44.220Z' + expiration: "2022-03-12T00:42:44.220Z" security: - AgentToken: [] tags: - ships - '/my/ships/{shipSymbol}/navigate': + "/my/ships/{shipSymbol}/navigate": parameters: - schema: type: string @@ -1210,12 +1210,12 @@ paths: tags: - navigation responses: - '201': + "201": description: Created content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1262,12 +1262,12 @@ paths: summary: Navigation Status operationId: get-my-ships-shipSymbol-navigate responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1300,7 +1300,7 @@ paths: - AgentToken: [] tags: - navigation - '/my/ships/{shipSymbol}': + "/my/ships/{shipSymbol}": parameters: - schema: type: string @@ -1312,12 +1312,12 @@ paths: tags: - ships responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1334,7 +1334,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1359,12 +1359,12 @@ paths: tags: - ships responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1381,7 +1381,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1403,7 +1403,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1425,7 +1425,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1447,7 +1447,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1469,7 +1469,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1491,7 +1491,7 @@ paths: - MOUNT_MINING_LASER_I registration: factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' + agentSymbol: "653298" fee: 100 role: EXCAVATOR integrity: @@ -1672,12 +1672,12 @@ paths: tags: - shipyards responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1734,12 +1734,12 @@ paths: tags: - contracts responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1748,7 +1748,7 @@ paths: faction: COMMERCE_REPUBLIC type: PROCUREMENT terms: - deadline: '2022-03-11T05:16:59.113Z' + deadline: "2022-03-11T05:16:59.113Z" payment: onAccepted: 20000 onFulfilled: 100000 @@ -1759,12 +1759,12 @@ paths: fulfilled: 0 accepted: false fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' + expiresAt: "2022-03-09T05:16:59.112Z" - id: cl0hok3920023kv0jflbjpltg faction: COMMERCE_REPUBLIC type: PROCUREMENT terms: - deadline: '2022-03-11T05:16:59.123Z' + deadline: "2022-03-11T05:16:59.123Z" payment: onAccepted: 20000 onFulfilled: 100000 @@ -1775,7 +1775,7 @@ paths: fulfilled: 0 accepted: false fulfilled: false - expiresAt: '2022-03-09T05:16:59.122Z' + expiresAt: "2022-03-09T05:16:59.122Z" meta: total: 2 page: 1 @@ -1800,7 +1800,7 @@ paths: faction: COMMERCE_REPUBLIC type: PROCUREMENT terms: - deadline: '2022-03-11T05:16:59.113Z' + deadline: "2022-03-11T05:16:59.113Z" payment: onAccepted: 20000 onFulfilled: 100000 @@ -1811,7 +1811,7 @@ paths: fulfilled: 0 accepted: false fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' + expiresAt: "2022-03-09T05:16:59.112Z" meta: total: 10 page: 1 @@ -1820,7 +1820,7 @@ paths: security: - AgentToken: [] description: List all of your contracts. - '/my/contracts/{contractId}': + "/my/contracts/{contractId}": parameters: - schema: type: string @@ -1833,7 +1833,7 @@ paths: tags: - contracts responses: - '200': + "200": description: OK content: application/json: @@ -1850,7 +1850,7 @@ paths: faction: COMMERCE_REPUBLIC type: PROCUREMENT terms: - deadline: '2022-03-11T05:16:59.113Z' + deadline: "2022-03-11T05:16:59.113Z" payment: onAccepted: 20000 onFulfilled: 100000 @@ -1861,12 +1861,12 @@ paths: fulfilled: 0 accepted: false fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' + expiresAt: "2022-03-09T05:16:59.112Z" operationId: get-my-contracts-contractId security: - AgentToken: [] description: Get the details of a contract by ID. - '/my/contracts/{contractId}/accept': + "/my/contracts/{contractId}/accept": parameters: - schema: type: string @@ -1878,8 +1878,8 @@ paths: tags: - contracts responses: - '201': - description: Accepted + "200": + description: OK content: application/json: schema: @@ -1897,12 +1897,12 @@ paths: tags: - systems responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -1911,7 +1911,7 @@ paths: sector: X1 type: RED_STAR x: 0 - 'y': 0 + "y": 0 waypoints: - X1-OE-PM - X1-OE-PM01 @@ -1927,7 +1927,7 @@ paths: sector: X1 type: ORANGE_STAR x: 3 - 'y': 4 + "y": 4 waypoints: - X1-EV-A004 factions: @@ -1938,7 +1938,7 @@ paths: sector: X1 type: BLUE_STAR x: -2 - 'y': 11 + "y": 11 waypoints: [] factions: [] charted: false @@ -1967,7 +1967,7 @@ paths: sector: X1 type: RED_STAR x: 0 - 'y': 0 + "y": 0 waypoints: - X1-OE-PM - X1-OE-PM01 @@ -1987,7 +1987,7 @@ paths: description: Return a list of all systems. security: - AgentToken: [] - '/systems/{systemSymbol}': + "/systems/{systemSymbol}": parameters: - schema: type: string @@ -2001,12 +2001,12 @@ paths: tags: - systems responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -2015,7 +2015,7 @@ paths: sector: X1 type: BLUE_STAR x: -2 - 'y': 9 + "y": 9 waypoints: [] factions: [] charted: false @@ -2033,7 +2033,7 @@ paths: sector: X1 type: BLUE_STAR x: -2 - 'y': 9 + "y": 9 waypoints: [] factions: [] charted: false @@ -2041,7 +2041,7 @@ paths: operationId: get-systems-systemSymbol security: - AgentToken: [] - '/systems/{systemSymbol}/shipyards': + "/systems/{systemSymbol}/shipyards": parameters: - schema: type: string @@ -2054,12 +2054,12 @@ paths: tags: - shipyards responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -2086,7 +2086,7 @@ paths: security: - AgentToken: [] description: Returns a list of all shipyards in a system. - '/systems/{systemSymbol}/shipyards/{waypointSymbol}': + "/systems/{systemSymbol}/shipyards/{waypointSymbol}": parameters: - schema: type: string @@ -2105,7 +2105,7 @@ paths: tags: - shipyards responses: - '200': + "200": description: OK content: application/json: @@ -2117,7 +2117,7 @@ paths: operationId: get-systems-systemSymbol-shipyards-waypointSymbol security: - AgentToken: [] - '/systems/{systemSymbol}/shipyards/{waypointSymbol}/ships': + "/systems/{systemSymbol}/shipyards/{waypointSymbol}/ships": parameters: - schema: type: string @@ -2136,12 +2136,12 @@ paths: tags: - shipyards responses: - '200': + "200": description: OK content: application/json: schema: - description: '' + description: "" type: object x-examples: example-1: @@ -2177,6 +2177,114 @@ paths: operationId: get-systems-systemSymbol-shipyards-waypointSymbol-ships security: - AgentToken: [] + "/trade/{tradeSymbol}/imports": + parameters: + - schema: + type: string + name: tradeSymbol + in: path + required: true + description: The trade symbol + get: + summary: Trade Imports + tags: + - markets + responses: + "200": + description: OK + content: + application/json: + schema: + description: "" + type: object + properties: + data: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: ../models/MarketTrade.yaml + meta: + $ref: ../models/Meta.yaml + required: + - data + - meta + examples: {} + operationId: get-trade-tradeSymbol-imports + security: + - AgentToken: [] + "/trade/{tradeSymbol}/exports": + parameters: + - schema: + type: string + name: tradeSymbol + in: path + required: true + description: The trade symbol + get: + summary: Trade Exports + tags: + - markets + responses: + "200": + description: OK + content: + application/json: + schema: + description: "" + type: object + properties: + data: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: ../models/MarketTrade.yaml + meta: + $ref: ../models/Meta.yaml + required: + - data + - meta + examples: {} + operationId: get-trade-tradeSymbol-exports + security: + - AgentToken: [] + "/trade/{tradeSymbol}/exchange": + parameters: + - schema: + type: string + name: tradeSymbol + in: path + required: true + description: The trade symbol + get: + summary: Trade Exchanges + tags: + - markets + responses: + "200": + description: OK + content: + application/json: + schema: + description: "" + type: object + properties: + data: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: ../models/MarketTrade.yaml + meta: + $ref: ../models/Meta.yaml + required: + - data + - meta + examples: {} + operationId: get-trade-tradeSymbol-exchange + security: + - AgentToken: [] tags: - name: ships - name: markets @@ -2200,6 +2308,7 @@ tags: - name: systems - name: waypoints - name: shipyards + - name: markets components: schemas: {} securitySchemes: