diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/.spectral.mjs b/.spectral.mjs new file mode 100644 index 0000000..cca9041 --- /dev/null +++ b/.spectral.mjs @@ -0,0 +1,2 @@ +import ruleset from "https://stoplight.io/api/v1/projects/cHJqOjE3NTU4OQ/spectral.js?branch=main&token=e4f4ffbe-f8ad-4829-b09f-cf2703afac49"; +export default { extends: ruleset }; diff --git a/docs/alpha.md b/docs/alpha.md deleted file mode 100644 index 64f220b..0000000 --- a/docs/alpha.md +++ /dev/null @@ -1,190 +0,0 @@ -# Alpha Preview Guide - -Hello everyone and welcome to the SpaceTraders v2.0.0-alpha preview! We are excited to share progress with our supporters and hope you enjoy the new changes to the game. - -We've re-thought some elements of the API using lessons learned from the v1 release. We hope you will enjoy some of the fleshed out ship mechanics, larger universe to explore, and various new ideas that are still in the works. - -Our goal continues to be to create a fun and beginner friendly API that developers can reliably build on top of. We appreciate all of the positive comments and feedback, and look forward to a second year of building SpaceTraders! - -## Overview - -The alpha release will be a period of about a month where we fix any critical bugs and make any significant changes to API endpoints. The alpha phase will be shared mostly with our supporters and some close members of the community, so please don't advertise the release too broadly. Having said that, the alpha won't be a secret, so there is no harm if you want to share it directly with friends. - -Following the alpha will be a public beta release, at which point it should be relatively safe to build an SDK on top of the API. We'll continue to add new features, but we will be hesitant to make any significant breaking changes to existing endpoints. We expect the beta to be a few weeks as we confirm the API is scaling well and performance issues are addressed. - -Then we will finally update all of the documentation and website to point to the new 2.0 release. - -### Alpha Goals - -Our goals for the early alpha are to gather feedback so we can guarantee API stability for those that want to start building SDKs. Once we go into a beta release, we will be much less likely to change any specific endpoint, and after a full release we will strive to only make backwards-compatible changes. - -### Feedback - -We're genuinely happy to just have people play the game and try the API. Sharing your feedback or progress will be super motivating for us as we continue to work in our free time. - -If you want to help in a specific way, we're looking for the following feedback from the alpha release: - -- Find and report bugs or exploits in the game -- Look for typos or errors in the game data, symbols, etc. -- Let us know if performance is an issue for any of the endpoints -- Tell us which endpoints are painful to use or game mechanics that are tedious / uninteresting / not fun -- Anything you think will be difficult for us to add later without breaking how the API works - -Again the goal is to catch significant changes that need to be made before the beta release. We appreciate any time you can dedicate to test out the new API endpoints. - -### New Terminology - -The 2.0 version of the API has been significantly reworked and introduces some new terminology. Before reviewing the new endpoints in the next section, it's worth reading through some of the new terms and what they mean. - -- **Account** - you can register an account (not required) with your email address and discord handle and it will persist across resets. We will eventually add registration to the website, but for now you can do it via API calls. You will also be able to register your patreon contribution for special in-game recognition. -- **Agent** - when you start a new game, you register as an agent and choose a symbol (4-8 characters) as your call sign. All of your ships, credits, etc. exist under your agent entity, and you can only have one agent at a time under your account. You will be able to start a new game by retiring your agent and creating a new one. -- **Sector** - a slice of the universe filled with systems of different types such as star systems, black holes, or nebulae. -- **System** - a collection of waypoints orbiting around a central feature such as a star. Systems contain an array of waypoints on an x, y plane. -- **Waypoint** - a location within a system that you can travel to and interact with. Some common types of waypoints include planets, asteroid fields and jump gates. -- **Ship** - your ships can navigate between waypoints and jump across systems. A ship consists of a frame, reactor, engine, modules and mounts. -- **Ship Frame** - the structure of a ship which determines the number of modules and mounts that can be installed. -- **Ship Reactor** - the power module of the ship and limits the types of power-intensive modules and mounts that can be installed. -- **Ship Engine** - the engine of your ship and determines how fast your ship travels when navigating at slower-than-light speeds. -- **Ship Module** - an internal module that can be added or removed from your ship. Common modules include cargo bays, passenger cabins, and jump drives. -- **Ship Mount** - an external mount that can be added or removed from your ship. Common mounts include mining lasers and sensor arrays. -- **Ship Fuel** - a resource that is consumed by your ship when navigating. You can refuel your ship, and one unit of the FUEL trade good adds 100 units to your fuel to your ship's tank. -- **Ship Crew** - the staff that run your ship and keep it operating at peek performance. Crew can be recruited throughout the universe and will eventually be subject to changes in morale, which will impact how your ship performs. Ships which are understaffed will perform poorly such as longer cooldowns, slower navigation, and more damage to the ship while navigating. -- **Drone** - drone ships are the simplest type of ship to automate. They don't require fuel or crew, but are slower, wear down quickly, and are incapable of jumping between systems without access to a jump gate. -- **Navigate** - slower-than-light travel between waypoints. A ship will depart from a waypoint and arrive at a destination after a duration has passed. -- **Orbit** - when your ship arrives at a waypoint, it will be in orbit. Your ship must be in orbit to execute certain actions such as a scan or extraction. You can transition your ship from docked to orbit. -- **Dock** - you can dock your ship at a waypoint after navigating to it. You will be able to execute market trades, and other planet-side actions once you've docked at a waypoint. -- **Jump** - faster-than-light travel between systems. Jumping requires a jump drive or access to a jump gate. Jumps are instantaneous but subject to a cooldown between jumps. -- **Extraction** - mines ore at an asteroid field or siphons gases at various waypoint types and deposits cargo into your ship. Surveying can be used to target specific yield types from a waypoint. -- **Survey** - analyze a waypoint for specific yields such as ore or hydrocarbons. The resulting surveys are time-sensitive and will eventually expire as they move out of reach of your ship. -- **Scan** - analyze a waypoint, route or system for more details. We currently support scanning approaching or departing ships at a waypoint, and will later support more modes of scanning. -- **Chart** - most systems and waypoints are unexplored and will need to be charted by an agent before others will be able to query that location. -- **Cooldown** - actions such as jumping, scanning and extracting will put your ship on a cooldown for that action. You should wait until the number of seconds have passed on the cooldown before attempting the action again. -- **Contract** - contracts are generated through factions, and might request your agent to procure goods of a certain type, or transport goods to a location by a certain time, in return for payment. -- **Delivery** - transfers goods from your ship's cargo bay into a contract. -- **Jettison** - ejects cargo from your ship's hold -- **Trade** - all goods in the universe have a unique trade symbol (in all caps), such as `IRON_ORE`, `NANOBOTS` or `REACTOR_FISSION_I`. -- **Market** - most populated waypoints have a market where you can buy and sell goods. Each market will have a list of imports, exports and commodities that you can trade in. Markets evolve with player activity - prices will rise and fall with trades, and new imports or exports will be added as the market grows. -- **Tariff** - a flat tax added to each unit of a good traded at a market -- **Shipyards** - where agents can purchase ships, perform maintenance, or install new modules and mounts. - -### New API Endpoints - -Here is a list of the new endpoints for the terms above. For this alpha-preview, some of the parameters for an endpoint are not fully implemented, but we've included them here to give an indication of what will be supported. - -Each endpoint also has an example response you can retrieve by sending `stub=true` as a query parameter or in your POST body. You can also view a stubbed response for an error code by sending `errorCode={code}` with the stub parameter. - -All routes that are prefixed with `/my` will require an agent access token to be passed as an `Authorization: Bearer {token}` header in the request. - -When registering your account, you will be given a different type of token called an Account Token, which allows you to create a new Agent or update your account details such as email address, discord handle or patreon code. - -All routes targeting a specific ship, such as `/my/ships/COBRA-00AF/survey` will put a lock on your ship until the request is resolved. This means you can only take a single action at a time for your ship. Sending two simultaneous actions for a single ship will throw a 409 conflict response code. - -All routes with the prefix `/systems` will return limited data until an agent submits the chart for that system or you have a ship present in the system. - -All actions are typically sent as a POST request and return a 201 status code. All query endpoints are sent as a GET request and will return a 200. Errors are detailed in the response body of a failed request, with a message and unique error code. - -Static game data can be queried and should be cached using the `/game/data` endpoint. Most objects returned in the response of a request will include only the symbols for static data, which you will want to map to the objects from the game data endpoint. - -```bash -# view agent details -/my/agent - -# view account details -/my/account - -# view all ships -/my/ships - -# view ship details -/my/ships/EMBER-01 - -# jump to a target system -/my/ships/EMBER-01/jump destination=X1-OE - -# navigate between waypoints (modes coming soon) -/my/ships/EMBER-01/navigate mode=CRUISE destination=OE-PM00A - -# dock at a waypoint if permitted -/my/ships/EMBER-01/dock mode=STEALTH - -# put your ship into orbit around a waypoint -/my/ships/EMBER-01/orbit mode=BLOCKADE,SPY,PATROL - -# acquire specific yield signatures in an asteroid field for extraction -/my/ships/EMBER-01/survey - -# extract raw materials from a waypoint such as an asteroid field or gas cloud -# send the full survey object as the payload to target a specific signature -/my/ships/EMBER-01/extract survey='{signature: "...", deposits: "...", expiration: "..."}' - -# purchase cargo and load it into your ship -/my/ships/EMBER-01/purchase tradeSymbol=HEAVY_MACHINERY units=99999 - -# sell cargo and unload it from your ship -/my/ships/EMBER-01/sell tradeSymbol=HEAVY_MACHINERY units=99999 - -# jettison cargo from your ship -/my/ships/EMBER-01/jettison tradeSymbol=HEAVY_MACHINERY units=99999 - -# view all systems -/systems - -# view system details -/systems/X1-OE - -# view waypoint details -/systems/X1-OE/waypoints/X1-OE-001A - -# view all shipyards in a system -/systems/X1-OE/shipyards - -# view all ships for sale at a shipyard -/systems/X1-OE/shipyards/X1-OE-001A/ships - -# view all markets in a system -/systems/X1-OE/markets - -# view all trades at a given market -/systems/X1-OE/markets/X1-OE-001A -``` - -## Quick Start - -If you are ready to dive in, just hit the endpoint to register as a new agent. Don't worry too much about account creation right now - temporary accounts will be setup when creating a new agent. We will likely still be doing hard resets during the alpha. - -```json http -{ - "method": "POST", - "url": "https://v2-0-0.alpha.spacetraders.io/agents", - "headers": { - "Content-Type": "application/json" - }, - "body": { - "symbol": "YOUR_SYMBOL_HERE", - "faction": "COMMERCE_REPUBLIC" - } -} -``` - -When starting a new game, you'll have a command ship to fly around and a contract with the Commerce Republic that you can accept for some credits. Try completing the contract, or just fly around and begin trading and exploring. You can also purchase some low-upkeep drones to begin automating trade routes. - -## Roadmap - -We're still hard at work completing items we have envisioned for the alpha release. We're working on full API documentation in Spotlight Studio, seeding new types of ships and balancing stats, and so much more. - -Here is a list of what we are working on behind the scenes: - -- Full API documentation -- Seeding shipyards across the sector -- Command Points that are expended to control your ships -- A ship logs endpoint that keeps track of all your ship's actions and events that occur -- Markets evolving and systems growing / collapsing with agent activity -- Seeding unique factions across the universe and new contracts -- Ability to scavenge, salvage and run planet-side expeditions to discover hidden ruins and valuable relics -- Bi-weekly seasons with leaderboards for various achievements -- New documentation website with guides and explanation of game mechanics -- Tweaking API throttling -- Faction licenses to patrol and trade -- Ability to interdict ships as a patrol or pirate -- Shuttle populations around to grow new systems -- Constructing goods with the micro-fabricator / micro-refinery modules diff --git a/docs/markets.md b/docs/markets.md deleted file mode 100644 index 821c114..0000000 --- a/docs/markets.md +++ /dev/null @@ -1,73 +0,0 @@ -# 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/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 0000000..6fd5c2e --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1,1244 @@ +# Quickstart Guide + +SpaceTraders is a fleet management game where all players operate in the same universe. You can use the API to explore star systems, manage your ships, make money, and grow your empire (or stop others from doing the same). + +Typical commands in the game include: purchasing ships, navigating to waypoints, mining asteroids, trading goods, taking on bounties, jumping to new systems, and more. + +You can use the API to automate your fleet or build a client for you and other players to play. + + + +> #### Alpha 2.0 +> +> The game is a work in progress. We are currently in the alpha stage of development. We are actively working on the game and adding new features. If you have any questions or feedback, please join our [Discord](https://discord.gg/QB8zyNW7RH) and let us know. + +### Game Overview + +The following is a general overview of the game and what you can do as a player (some features are not yet implemented): + +- [x] you can register as a new agent which will grant you an API token, a command ship with 100,000 credits, and a faction contract in a starter system +- [x] you can use the API to explore the universe and make money by mining, trading, scavenging, and bounty hunting (scavenging and bounty hunting WIP) +- [x] you can purchase ships and upgrade them with new modules and mounts +- [x] you can chart new systems, discovering new factions and locations with valuable resources +- [x] you can grow systems by fulfilling faction contracts and supplying markets with necessary goods +- [x] you can connect trade routes between systems to automate the flow of goods +- [x] you can refine ores, minerals and other resources into valuable goods +- [ ] you can scavenge derelict ships for parts and sell them or use them to upgrade your ships +- [ ] you can take on bounties to earn credits or pirate other players trade routes +- [ ] you can send envoys to meet new factions and generate contracts or unique trade deals +- [ ] you can search for ancient artifacts on distant planets and sell them for a profit +- [ ] you can recruit crew members to help you run your ships + +### Check Server Status + +All of the steps in this guide are executed from the command line. You will want to install [HTTPie](http://httpie.io/docs#installation) to follow along. If you are on a Mac and you have homebrew installed, you can execute the following: + +```bash +brew install httpie +``` + +You can then hit any API endpoint by simplying typing `https` along with the http method and the url. You can test this by hitting the game status endpoint which will tell us if the game is currently available to play: + +```bash +https GET v2-0-0.rc-2.spacetraders.io +``` + +```json +{ + "status": "SpaceTraders is currently online and available to play", + "stats": { + "agents": 26, + "ships": 30, + "systems": 4, + "waypoints": 11 + }, + "leaderboards": { + "mostCredits": [], + "mostSubmittedCharts": [] + } +} +``` + + + +> #### After The Basics +> +> After you are comfortable with the basics, you may want to generate a client library for your favorite programming language. Our API documentation follows the OpenAPI specification, so you can use any tool that supports OpenAPI, such as [OpenAPI Generator](https://openapi-generator.tech/) to create a client library. + +### Generate An Access Token + +To access most API endpoints other than the game status, you will need to generate an API token by registering as an agent. + +Every agent is identified by a unique call sign (such as `ZER0` or `SP4CE_TR4DER`) and a starting faction. You can choose any symbol you want, but it must be unique. You can choose from one of the following starter factions: + +- [x] `COSMIC` - The Cosmic Engineers are a group of highly advanced scientists and engineers who seek to terraform and colonize new worlds, pushing the boundaries of technology and exploration. +- [x] `VOID` - The Voidfarers are a group of nomadic traders and adventurers who travel the galaxy in search of riches and adventure, willing to take risks and explore the unknown. +- [x] `GALACTIC` - The Galactic Alliance is a coalition of planets and factions that have banded together for mutual protection and support, working together to defend against external threats and promote cooperation. +- [x] `QUANTUM` - The Quantum Federation is a group of planets and factions that have joined together to share knowledge and technology, using their collective expertise to advance the science and technology of the galaxy. +- [x] `DOMINION` - The Stellar Dominion is a powerful, expansionist faction that seeks to conquer and control as many systems as possible, using their advanced technology and military might to dominate their rivals. +- [x] `ASTRO` - The Astro-Salvage Alliance is a group of scavengers and salvagers who search the galaxy for ancient artifacts and valuable technology, often combing through old ship battlegrounds and derelict space stations. +- [x] `CORSAIRS` - The Seventh Space Corsairs are a feared group of pirates and raiders who operate throughout the galaxy, preying on merchant ships and plundering valuable cargo. + +```bash +https POST v2-0-0.rc-2.spacetraders.io/register \ + symbol=ZER0 \ + faction=COSMIC +``` + +```json +{ + "data": { + "token": "eyJhbGciOiJSUzI1NiIsI...", + "agent": { + /* ... */ + }, + "contract": { + /* ... */ + }, + "faction": { + /* ... */ + }, + "ship": { + /* ... */ + } + } +} +``` + +You will see a JSON object with your token and agent details along with your starting contract, ship and faction. + +Copy your token somewhere safe and set it as a variable in your command prompt. You will need this token to access all of the other endpoints in this quickstart. You should also set a few more variables to make it easier to copy and paste the commands in this guide. The following is an example of how you might do this in a bash shell: + +```bash +apiToken= +shipSymbol= +contractId= +apiUrl=v2-0-0.rc-2.spacetraders.io +``` + + + +> #### Keep Your Token Safe +> +> During the alpha phase, you will need to save your token and use it for all API requests. Keep in mind anyone with this token can access your agent and make changes to your fleet. We will be adding a token management portal in the future to make it easier to manage your tokens. + +### Contracts + +When registering as a new agent, you will be assigned your first faction contract. Your contract is a set of objectives that you must complete to earn credits and advance your reputation. You can view your current contract by calling the `/my/contracts` endpoint: + +```bash +https -A bearer -a $apiToken GET $apiUrl/my/contracts/$contractId +``` + +```json +{ + "data": [ + { + "id": "clc0u1d210005p4ys90philn5", + "factionSymbol": "COMMERCE_REPUBLIC", + "type": "PROCUREMENT", + "terms": { + "deadline": "2022-12-30T18:14:46.104Z", + "payment": { + "onAccepted": 58800, + "onFulfilled": 235200 + }, + "deliver": [ + { + "tradeSymbol": "QUARTZ_SAND", + "destinationSymbol": "X1-OE-PM", + "unitsRequired": 14000, + "unitsFulfilled": 0 + } + ] + }, + "accepted": false, + "fulfilled": false, + "expiration": "2022-12-26T18:14:46.103Z" + } + ], + "meta": { + "total": 1, + "page": 1, + "limit": 20 + } +} +``` + +#### Accept Contract + +Contracts will typically provide a small payment on acceptance and the final ammount on completion. Contracts also expire after a certain amount of time, so you will need to accept and complete them in time or take a reputation hit with the faction. Also note that contracts that are not accepted will also expire and result in a minor loss to reputation. + +You can accept a contract by calling the `/my/contracts/:contractId/accept` endpoint: + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/contracts/$contractId/accept +``` + +```json +{ + "data": { + "contract": { + "id": "clc0u1d210005p4ys90philn5", + "factionSymbol": "COMMERCE_REPUBLIC", + "type": "PROCUREMENT", + "terms": { + "deadline": "2022-12-30T18:14:46.104Z", + "payment": { + "onAccepted": 58800, + "onFulfilled": 235200 + }, + "deliver": [ + { + "tradeSymbol": "QUARTZ_SAND", + "destinationSymbol": "X1-OE-PM", + "unitsRequired": 14000, + "unitsFulfilled": 0 + } + ] + }, + "accepted": true, + "fulfilled": false, + "expiration": "2022-12-26T18:14:46.103Z" + }, + "agent": { + "accountId": "clc0u1cvk0000p4ysdxjcuy2e", + "symbol": "595559", + "headquarters": "X1-OE-PM", + "credits": 125000 + } + } +} +``` + +Now that you have accepted the contract, let's look at how you can fulfill it by mining and delivering the required cargo. + +### Your Fleet + +Your fleet is a collection of ships that you own and control. You can purchase ships from shipyards and upgrade them with new modules and mounts. + +During the alpha release agents will start with a command ship. You can purchase additional ships from shipyards such as mining drones or freighters to help you transport cargo. + +#### View your ships + +You can view your ships by calling the `/my/ships` endpoint: + +```bash +https -A bearer -a $apiToken GET $apiUrl/my/ships +``` + +```json +{ + "data": [ + { + "symbol": "ELITE-1", + "nav": { + "systemSymbol": "X1-ST66", + "waypointSymbol": "X1-ST66-52115F", + "route": { + "departure": { + "symbol": "X1-ST66-22150C", + "type": "PLANET", + "systemSymbol": "X1-ST66", + "x": -6, + "y": -7 + }, + "destination": { + "symbol": "X1-ST66-52115F", + "type": "ASTEROID_FIELD", + "systemSymbol": "X1-ST66", + "x": 28, + "y": -12 + }, + "arrival": "2022-12-19T16:37:43.487Z" + }, + "status": "IN_ORBIT", + "flightMode": "CRUISE" + }, + "crew": { + "current": 62, + "capacity": 80, + "required": 62, + "rotation": "STRICT", + "morale": 100, + "wages": 0 + }, + "fuel": { + "current": 1166, + "capacity": 1200, + "consumed": { "amount": 34, "timestamp": "2022-12-19T16:36:20.487Z" } + }, + "frame": { + "symbol": "FRAME_FRIGATE", + "name": "Frame Frigate", + "description": "A medium-sized, multi-purpose spacecraft, often used for combat, transport, or support operations.", + "moduleSlots": 8, + "mountingPoints": 5, + "fuelCapacity": 1200, + "condition": 100, + "requirements": { "power": 8, "crew": 25 } + }, + "reactor": { + "symbol": "REACTOR_FISSION_I", + "name": "Fission Reactor I", + "description": "A basic fission power reactor, used to generate electricity from nuclear fission reactions.", + "condition": 100, + "powerOutput": 27, + "requirements": { "crew": 8 } + }, + "engine": { + "symbol": "ENGINE_ION_DRIVE_II", + "name": "Ion Drive II", + "description": "An advanced propulsion system that uses ionized particles to generate high-speed, low-thrust acceleration, with improved efficiency and performance.", + "condition": 100, + "speed": 30, + "requirements": { "power": 6, "crew": 8 } + }, + "modules": [ + { + "symbol": "MODULE_CARGO_HOLD_I", + "name": "Cargo Hold", + "description": "A module that increases a ship's cargo capacity.", + "capacity": 30, + "requirements": { "crew": 0, "power": 1, "slots": 1 } + }, + { + "symbol": "MODULE_CARGO_HOLD_I", + "name": "Cargo Hold", + "description": "A module that increases a ship's cargo capacity.", + "capacity": 30, + "requirements": { "crew": 0, "power": 1, "slots": 1 } + }, + { + "symbol": "MODULE_CREW_QUARTERS_I", + "name": "Crew Quarters", + "description": "A module that provides living space and amenities for the crew.", + "capacity": 40, + "requirements": { "crew": 2, "power": 1, "slots": 1 } + }, + { + "symbol": "MODULE_CREW_QUARTERS_I", + "name": "Crew Quarters", + "description": "A module that provides living space and amenities for the crew.", + "capacity": 40, + "requirements": { "crew": 2, "power": 1, "slots": 1 } + }, + { + "symbol": "MODULE_ENVOY_QUARTERS_I", + "name": "Envoy Quarters", + "description": "A module that provides living space and amenities for VIP passengers or diplomatic envoys.", + "capacity": 1, + "requirements": { "crew": 5, "power": 2, "slots": 2 } + }, + { + "symbol": "MODULE_JUMP_DRIVE_I", + "name": "Jump Drive I", + "description": "A basic antimatter jump drive that allows for instantaneous short-range interdimensional travel.", + "range": 500, + "requirements": { "crew": 10, "power": 4, "slots": 1 } + }, + { + "symbol": "MODULE_WARP_DRIVE_I", + "name": "Warp Drive I", + "description": "A basic warp drive that allows for short-range interstellar travel.", + "range": 2000, + "requirements": { "crew": 2, "power": 3, "slots": 1 } + } + ], + "mounts": [ + { + "symbol": "MOUNT_SENSOR_ARRAY_I", + "name": "Sensor Array I", + "description": "A basic sensor array that improves a ship's ability to detect and track other objects in space.", + "strength": 1, + "requirements": { "crew": 0, "power": 1 } + }, + { + "symbol": "MOUNT_MINING_LASER_I", + "name": "Mining Laser I", + "description": "A basic mining laser that can be used to extract valuable minerals from asteroids and other space objects.", + "strength": 10, + "requirements": { "crew": 0, "power": 1 } + }, + { + "symbol": "MOUNT_GAS_SIPHON_I", + "name": "Gas Siphon I", + "description": "A basic gas siphon that can extract gas from gas giants and other gas-rich bodies.", + "requirements": { "crew": 0, "power": 1 } + } + ], + "registration": { + "name": "ELITE-1", + "factionSymbol": "COSMIC", + "role": "COMMAND" + }, + "cargo": { + "capacity": 60, + "units": 15, + "inventory": [ + { + "symbol": "ANTIMATTER", + "name": "Antimatter", + "description": "A highly valuable and dangerous substance used for advanced propulsion and weapons systems.", + "units": 15 + } + ] + } + } + ], + "meta": { "total": 1, "page": 1, "limit": 20 } +} +``` + +This response contains a list of your ships, including nav details, cargo, and ship build. + +Your command ship comes equipped with a mining laser and survey mount, which you can use to extract minerals and ores from asteroids. Every ship has a symbol which is a unique identifier for that ship. You can use this symbol to refer to a specific ship in other API calls. + +To view a specific ship, use the following command: + +```bash +https -A bearer -a $apiToken GET $apiUrl/my/ships/$shipSymbol +``` + +### Scan nearby waypoints + +Your command ship is also equipped with a sensor array, which you can use to scan nearby waypoints. A waypoint is a location in space that you can travel to such as a planet or asteroid field. + +You can scan a waypoint to determine what type of location it is, any orbitals that are present, and any traits that it has including whether or not it has a shipyard or marketplace (to buy and sell goods). + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/scan/waypoints +``` + +```json +{ + "data": { + "cooldown": { + "shipSymbol": "DC4ECA-1", + "totalSeconds": 70, + "remainingSeconds": 69, + "expiration": "2022-12-23T22:17:09.284Z" + }, + "waypoints": [ + { + "systemSymbol": "X1-OE", + "symbol": "X1-OE-PM", + "type": "PLANET", + "x": -5, + "y": 9, + "orbitals": [ + { + "symbol": "X1-OE-PM01" + } + ], + "traits": [ + { + "symbol": "OVERCROWDED", + "name": "Overcrowded", + "description": "" + }, + { + "symbol": "HIGH_TECH", + "name": "High Tech", + "description": "" + }, + { + "symbol": "BUREAUCRATIC", + "name": "Bureaucratic", + "description": "" + }, + { + "symbol": "TEMPERATE", + "name": "Temperate", + "description": "" + }, + { + "symbol": "MARKETPLACE", + "name": "Marketplace", + "description": "" + }, + { + "symbol": "SHIPYARD", + "name": "Shipyard", + "description": "" + } + ], + "chart": { + "submittedBy": "COMMERCE_REPUBLIC", + "submittedOn": "2022-12-23T22:15:56.240Z" + }, + "faction": { + "symbol": "COMMERCE_REPUBLIC" + } + }, + { + "systemSymbol": "X1-OE", + "symbol": "X1-OE-PM01", + "type": "MOON", + "x": -5, + "y": 9, + "orbitals": [], + "traits": [ + { + "symbol": "WEAK_GRAVITY", + "name": "Weak Gravity", + "description": "" + }, + { + "symbol": "SCATTERED_SETTLEMENTS", + "name": "Scattered Settlements", + "description": "" + }, + { + "symbol": "MARKETPLACE", + "name": "Marketplace", + "description": "" + } + ], + "chart": { + "submittedBy": "COMMERCE_REPUBLIC", + "submittedOn": "2022-12-23T22:15:56.285Z" + }, + "faction": { + "symbol": "COMMERCE_REPUBLIC" + } + }, + { + "systemSymbol": "X1-OE", + "symbol": "X1-OE-A005", + "type": "ASTEROID_FIELD", + "x": 18, + "y": 25, + "orbitals": [], + "traits": [ + { + "symbol": "COMMON_METAL_DEPOSITS", + "name": "Common Metal Deposits", + "description": "" + } + ], + "chart": { + "submittedBy": "MINERS_COLLECTIVE", + "submittedOn": "2022-12-23T22:15:56.301Z" + }, + "faction": { + "symbol": "MINERS_COLLECTIVE" + } + }, + { + "systemSymbol": "X1-OE", + "symbol": "X1-OE-EL70", + "type": "ORBITAL_STATION", + "x": 42, + "y": 28, + "orbitals": [], + "traits": [ + { + "symbol": "TRADING_HUB", + "name": "Trading Hub", + "description": "" + }, + { + "symbol": "MARKETPLACE", + "name": "Marketplace", + "description": "" + } + ], + "chart": { + "submittedBy": "COMMERCE_REPUBLIC", + "submittedOn": "2022-12-23T22:15:56.308Z" + }, + "faction": { + "symbol": "COMMERCE_REPUBLIC" + } + }, + { + "systemSymbol": "X1-OE", + "symbol": "X1-OE-25X", + "type": "JUMP_GATE", + "x": 50, + "y": -34, + "orbitals": [], + "traits": [], + "chart": { + "submittedBy": "SPACERS_GUILD", + "submittedOn": "2022-12-23T22:15:56.321Z" + }, + "faction": { + "symbol": "SPACERS_GUILD" + } + } + ] + } +} +``` + +You will notice in the response that your ship has a cooldown after executing a scan. Most ship actions such as scanning, mining, or surveying will trigger a ship cooldown, preventing you from performing another action until the cooldown has expired. + +#### Viewing Systems and Waypoints + +You can also view system and waypoint details using the following endpoints. Note some details are unavailable unless you have a ship present in the system or at the waypoint, such as the exact pricing details of a market or shipyard. + +```bash +https -A bearer -a $apiToken GET $apiUrl/systems +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol/market +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol/shipyard +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol/jump-gate +``` + +#### Navigate to an asteroid field + +Find a waypoint with a type of ASTEROID_FIELD and navigate your command ship to it. Once your ship has arrived, we will be able to survey and mine the asteroid field for valuable minerals and ores. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/navigate \ + waypointSymbol=$waypointSymbol +``` + +```json +{ + "data": { + "nav": { + "systemSymbol": "X1-OE", + "waypointSymbol": "X1-OE-A005", + "route": { + "departure": { + "symbol": "X1-OE-PM", + "type": "PLANET", + "systemSymbol": "X1-OE", + "x": -6, + "y": -7 + }, + "destination": { + "symbol": "X1-OE-A005", + "type": "ASTEROID_FIELD", + "systemSymbol": "X1-OE", + "x": -29, + "y": 1 + }, + "arrival": "2022-12-23T18:27:01.514Z" + }, + "status": "IN_TRANSIT", + "flightMode": "CRUISE" + }, + "fuel": { + "current": 176, + "capacity": 100, + "consumed": { + "amount": 24, + "timestamp": "2022-12-23T18:14:46.515Z" + } + } + } +} +``` + +Note the route departure and destination details. The departure is the waypoint your ship is currently at, and the destination is the waypoint you are navigating to. The arrival timestamp is the time when your ship will arrive at the destination. While your ship is in-transit, you will not be able to take any other actions. + +#### Refuel your ship + +You will also notice that your ship has consumed fuel upon navigation. You will want to refuel your ship whenever possible or risk getting stranded in space. Once your ship arrives at it's destination, you can refuel it using the following endpoint. + +```bash +https -A bearer -a $apiToken POST api.spacetraders.io/my/ships/$shipSymbol/refuel +``` + +```json +{ + "data": { + "agent": { + "accountId": "clc0u1cxh0000p4z0l6k6vuol", + "symbol": "860A44", + "headquarters": "X1-OE-PM", + "credits": 999912799 + }, + "fuel": { + "current": 900, + "capacity": 900, + "consumed": { + "amount": 100, + "timestamp": "2022-12-23T18:14:46.032Z" + } + } + } +} +``` + +### Asteroid Mining + +Asteroids contain valuable minerals and ores that can be extracted and sold for profit. You can mine asteroids using the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/extract +``` + +```json +{ + "data": { + "extraction": { + "shipSymbol": "0B03EA-1", + "yield": { + "symbol": "ALUMINUM_ORE", + "units": 1 + } + }, + "cooldown": { + "shipSymbol": "0B03EA-1", + "totalSeconds": 70, + "remainingSeconds": 69, + "expiration": "2022-12-23T18:15:59.212Z" + }, + "cargo": { + "capacity": 30, + "units": 30, + "inventory": [ + { + "symbol": "ALUMINUM_ORE", + "name": "Aluminum Ore", + "description": "A valuable ore used in the production of aluminum and other alloys. Aluminum ore is an essential component in the construction of ship hulls and other structural components.", + "units": 30 + } + ] + } + } +} +``` + +If you are targeting specific minerals or ores, you will want to survey the asteroid field for targeted mining locations. + +#### Surveying + +Surveying an asteroid field will reveal the locations of specific mineral and ore deposits. You can survey an asteroid field using the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/survey +``` + +```json +{ + "data": { + "cooldown": { + "shipSymbol": "7C8E51-1", + "totalSeconds": 69, + "remainingSeconds": 69, + "expiration": "2022-12-23T18:15:59.073Z" + }, + "surveys": [ + { + "signature": "X1-OE-A005-99501F", + "symbol": "X1-OE-A005", + "deposits": [ + { + "symbol": "ALUMINUM_ORE" + }, + { + "symbol": "ICE_WATER" + }, + { + "symbol": "SILICON_CRYSTALS" + } + ], + "expiration": "2022-12-23T19:04:01.088Z", + "size": "SMALL" + } + ] + } +} +``` + +Copy the entire object of the survey you want to target. You will need this information to extract those deposits from the asteroid field. + +#### Extracting from surveys + +Once you have surveyed an asteroid field, you can extract specific minerals and ores from the field using the following endpoint. + +Note you will need to paste the entire survey object as a JSON string in the body of the request. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/extract \ + survey="{\"signature\":\"X1-OE-A005-99501F\",\"symbol\":\"X1-OE-A005\",\"deposits\":[{\"symbol\":\"ALUMINUM_ORE\"},{\"symbol\":\"ICE_WATER\"},{\"symbol\":\"SILICON_CRYSTALS\"}],\"expiration\":\"2022-12-23T19:04:01.088Z\",\"size\":\"SMALL\"}" +``` + +The ship will have a much higher chance of extracting ores and minerals from the list of deposits in the survey. + +### Contract Delivery + +Once your cargo hold is full and you have some of the desired minerals and ores for your contract, you should navigate to the destination waypoint of your contract. + +Upon arrival, you can deliver the goods using the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/contracts/$contractId/deliver \ + shipSymbol=$shipSymbol \ + tradeSymbol=$tradeSymbol \ + units=999 +``` + +```json +{ + "data": { + "contract": { + "id": "clc0u1d210005p4ys90philn5", + "factionSymbol": "COMMERCE_REPUBLIC", + "type": "PROCUREMENT", + "terms": { + "deadline": "2022-12-23T18:15:46.639Z", + "payment": { + "onAccepted": 58800, + "onFulfilled": 235200 + }, + "deliver": [ + { + "tradeSymbol": "QUARTZ_SAND", + "destinationSymbol": "X1-OE-PM", + "unitsRequired": 14000, + "unitsFulfilled": 1 + } + ] + }, + "accepted": true, + "fulfilled": false, + "expiration": "2022-12-26T18:14:46.103Z" + }, + "cargo": { + "capacity": 30, + "units": 999, + "inventory": [ + { + "symbol": "QUARTZ_SAND", + "name": "Quartz Sand", + "description": "High-purity quartz sand used in the production of glass and ceramics.", + "units": 499 + } + ] + } + } +} +``` + +Once the terms of the contract have been met, you can fulfill the contract and receive the final payment using the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/contracts/$contractId/fulfill +``` + +```json +{ + "data": { + "contract": { + "id": "clc0u1d210005p4ys90philn5", + "factionSymbol": "COMMERCE_REPUBLIC", + "type": "PROCUREMENT", + "terms": { + "deadline": "2022-12-23T18:15:46.639Z", + "payment": { + "onAccepted": 58800, + "onFulfilled": 235200 + }, + "deliver": [ + { + "tradeSymbol": "QUARTZ_SAND", + "destinationSymbol": "X1-OE-PM", + "unitsRequired": 14000, + "unitsFulfilled": 999999 + } + ] + }, + "accepted": true, + "fulfilled": true, + "expiration": "2022-12-26T18:14:46.103Z" + }, + "agent": { + "accountId": "clc0u1cvk0000p4ysdxjcuy2e", + "symbol": "595559", + "headquarters": "X1-OE-PM", + "credits": 1000208559 + } + } +} +``` + +### Markets + +You will likely extract some minerals and ores that you don't need for your current contract. You can sell these minerals and ores at the market. + +Find a waypoint with a market and check if it has the minerals and ores you want to sell listed as imports. Imports typically have a higher price than exports or goods generally available at the market. + +```bash +https -A bearer -a $apiToken GET $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol/market +``` + +```json +{ + "data": { + "symbol": "X1-ZZ-7-EE", + "imports": [ + { + "symbol": "HYDROCARBON" + }, + { + "symbol": "AMMONIA_ICE" + }, + { + "symbol": "LIQUID_NITROGEN" + } + ], + "exports": [ + { + "symbol": "POLYNUCLEOTIDES" + } + ], + "transactions": [] + } +} +``` + +#### Sell and Purchase + +When your ship is at a designated market waypoint, you can sell goods using the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/sell \ + symbol=$tradeSymbol \ + units=999 +``` + +```json +{ + "data": { + "agent": { + "accountId": "clc0u1cvr0000p4yvjcbbdtkr", + "symbol": "ED3EFE", + "headquarters": "X1-OE-PM", + "credits": 999914595 + }, + "cargo": { + "capacity": 30, + "units": 30, + "inventory": [ + { + "symbol": "SILICON_CRYSTALS", + "name": "Silicon Crystals", + "description": "High-quality silicon crystals used in the production of advanced electronic components and solar panels.", + "units": 9 + } + ] + }, + "transaction": { + "shipSymbol": "ED3EFE-1", + "tradeSymbol": "SILICON_CRYSTALS", + "type": "SELL", + "units": 1, + "pricePerUnit": 36, + "totalPrice": 36, + "timestamp": "2022-12-23T18:14:46.413Z" + } + } +} +``` + +If you want to purchase any goods from the market, you can use the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/purchase \ + symbol=$tradeSymbol \ + units=10 +``` + +### Purchase Ships + +You can expedite your mining exports by purchasing a new ship. Find a waypoint with a shipyard and view available ships with the following endpoint. + +```bash +https -A bearer -a $apiToken $apiUrl/systems/$systemSymbol/waypoints/$waypointSymbol/shipyard +``` + +```json +{ + "data": { + "symbol": "X1-OE-PM", + "shipTypes": [ + { + "type": "SHIP_MINING_DRONE" + } + ] + } +} +``` + +Find a shipyard with a `SHIP_MINING_DRONE` available and purchase it with the following endpoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships \ + shipType=SHIP_MINING_DRONE \ + waypointSymbol=$waypointSymbol +``` + +```json +{ + "data": { + "agent": { + "accountId": "clc0u1cok0000p4ytz33fltey", + "symbol": "8C7441", + "headquarters": "X1-OE-PM", + "credits": 999401919 + }, + "ship": { + "symbol": "8C7441-7", + "nav": { + "systemSymbol": "X1-OE", + "waypointSymbol": "X1-OE-PM", + "route": { + "departure": { + "symbol": "X1-OE-PM", + "type": "PLANET", + "systemSymbol": "X1-OE", + "x": -6, + "y": -7 + }, + "destination": { + "symbol": "X1-OE-PM", + "type": "PLANET", + "systemSymbol": "X1-OE", + "x": -6, + "y": -7 + }, + "arrival": "2022-12-23T18:14:46.289Z" + }, + "status": "DOCKED", + "flightMode": "CRUISE" + }, + "crew": { + "current": 0, + "capacity": 0, + "required": 0, + "rotation": "STRICT", + "morale": 100, + "wages": 0 + }, + "fuel": { + "current": 100, + "capacity": 100, + "consumed": { + "amount": 0, + "timestamp": "2022-12-23T18:14:46.289Z" + } + }, + "frame": { + "symbol": "FRAME_DRONE", + "name": "Frame Drone", + "description": "A small, unmanned spacecraft used for various tasks, such as surveillance, transportation, or combat.", + "moduleSlots": 3, + "mountingPoints": 2, + "fuelCapacity": 100, + "condition": 100, + "requirements": { + "power": 1, + "crew": -3 + } + }, + "reactor": { + "symbol": "REACTOR_CHEMICAL_I", + "name": "Chemical Reactor I", + "description": "A basic chemical power reactor, used to generate electricity from chemical reactions.", + "condition": 100, + "powerOutput": 14, + "requirements": { + "crew": 3 + } + }, + "engine": { + "symbol": "ENGINE_IMPULSE_DRIVE_I", + "name": "Impulse Drive I", + "description": "A basic low-energy propulsion system that generates thrust for interplanetary travel.", + "condition": 100, + "speed": 2, + "requirements": { + "power": 1, + "crew": 0 + } + }, + "modules": [ + { + "symbol": "MODULE_CARGO_HOLD_I", + "name": "Cargo Hold", + "description": "A module that increases a ship's cargo capacity.", + "capacity": 30, + "requirements": { + "crew": 0, + "power": 1, + "slots": 1 + } + }, + { + "symbol": "MODULE_MINERAL_PROCESSOR_I", + "name": "Mineral Processor", + "description": "A module that processes raw ore and minerals into refined materials.", + "requirements": { + "crew": 0, + "power": 1, + "slots": 2 + } + } + ], + "mounts": [ + { + "symbol": "MOUNT_MINING_LASER_I", + "name": "Mining Laser I", + "description": "A basic mining laser that can be used to extract valuable minerals from asteroids and other space objects.", + "strength": 10, + "requirements": { + "crew": 0, + "power": 1 + } + } + ], + "registration": { + "name": "8C7441-7", + "factionSymbol": "COMMERCE_REPUBLIC", + "role": "EXCAVATOR" + }, + "cargo": { + "capacity": 30, + "units": 0, + "inventory": [] + } + } + } +} +``` + +Drones are quite a bit slower than other ships, but they require zero crew to operate which means they are easier to automate and maintain. + +### Exploration + +If you want to continue to explore the universe, you can use the warp and jump drives on your command ship to travel to new systems. Warp drives are slower and consume regular fuel, where as jump drives will instantly transport you to a new system but require a unit of antimatter to operate. + +#### Scan nearby systems + +If you want to explore nearby systems, you can use your sensor array to scan for new systems. You can see how far away the system is from your current location by looking at the `distance` property. The `type` property will tell you what type of star the system has. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/scan/systems +``` + +```json +{ + "data": { + "cooldown": { + "shipSymbol": "DC4ECA-1", + "totalSeconds": 69, + "remainingSeconds": 69, + "expiration": "2022-12-23T22:17:09.240Z" + }, + "systems": [ + { + "symbol": "X1-EV", + "sectorSymbol": "X1", + "type": "ORANGE_STAR", + "x": 1, + "y": 1, + "distance": 1 + }, + { + "symbol": "X1-ZZ", + "sectorSymbol": "X1", + "type": "BLUE_STAR", + "x": 2, + "y": 2, + "distance": 3 + } + ] + } +} +``` + +#### Jump to a new system + +Choose a system to jump to and use the `jump` command to jump to that system. You will need to have a jump drive installed on your ship and you will need to have a unit of antimatter in your cargo hold. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/jump systemSymbol=$systemSymbol +``` + +```json +{ + "data": { + "nav": { + "systemSymbol": "X1-EV", + "waypointSymbol": "X1-EV-A004", + "route": { + "departure": { + "symbol": "X1-OE-PM", + "type": "PLANET", + "systemSymbol": "X1-OE", + "x": -6, + "y": -7 + }, + "destination": { + "symbol": "X1-EV-A004", + "type": "PLANET", + "systemSymbol": "X1-EV", + "x": 3, + "y": 10 + }, + "arrival": "2022-12-23T18:14:49.168Z" + }, + "status": "IN_ORBIT", + "flightMode": "CRUISE" + }, + "cooldown": { + "shipSymbol": "04A691-1", + "totalSeconds": 99, + "remainingSeconds": 99, + "expiration": "2022-12-23T18:16:29.164Z" + } + } +} +``` + +If you don't have antimatter but you have a warp drive installed, you can also use the `warp` command to travel to a new system. This will take longer and consume fuel, but you won't need to have antimatter in your cargo hold. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/warp waypointSymbol=$waypointSymbol +``` + +#### Chart a waypoint + +If you discover an uncharted waypoint, you can use the `chart` command to chart it. This will allow other agents to view more details about the waypoint. + +```bash +https -A bearer -a $apiToken POST $apiUrl/my/ships/$shipSymbol/chart +``` + +```json +{ + "data": { + "chart": { + "waypointSymbol": "X1-ZZ-Z9185A", + "submittedBy": "E0783A-1", + "submittedOn": "2022-12-23T18:14:46.699Z" + }, + "waypoint": { + "systemSymbol": "X1-ZZ", + "symbol": "X1-ZZ-Z9185A", + "type": "GAS_GIANT", + "x": 1005, + "y": 2569, + "orbitals": [], + "traits": [], + "chart": { + "waypointSymbol": "X1-ZZ-Z9185A", + "submittedBy": "E0783A-1", + "submittedOn": "2022-12-23T18:14:46.699Z" + }, + "faction": { + "symbol": "ZANZIBAR_TRIKES" + } + } + } +} +``` diff --git a/models/Agent.json b/models/Agent.json new file mode 100644 index 0000000..75b5beb --- /dev/null +++ b/models/Agent.json @@ -0,0 +1,29 @@ +{ + "description": "", + "type": "object", + "properties": { + "accountId": { + "type": "string", + "minLength": 1 + }, + "symbol": { + "type": "string", + "minLength": 1 + }, + "headquarters": { + "type": "string", + "minLength": 1, + "description": "The headquarters of the agent." + }, + "credits": { + "type": "integer", + "description": "The number of credits the agent has available. Credits can be negative if funds have been overdrawn." + } + }, + "required": [ + "accountId", + "symbol", + "headquarters", + "credits" + ] +} \ No newline at end of file diff --git a/models/Agent.yaml b/models/Agent.yaml deleted file mode 100644 index 29839da..0000000 --- a/models/Agent.yaml +++ /dev/null @@ -1,30 +0,0 @@ -description: "" -type: object -x-examples: - example-1: - accountId: cl0hok34m0003ks0jjql5q8f2 - symbol: 2C52AD - headquarters: X1-OE-PM - credits: 0 -properties: - accountId: - type: string - minLength: 1 - symbol: - type: string - minLength: 1 - headquarters: - type: string - minLength: 1 - credits: - type: integer -required: - - accountId - - symbol - - headquarters - - credits -examples: - - accountId: cl0hok34m0003ks0jjql5q8f2 - symbol: EMBER - headquarters: X1-OE-PM - credits: 0 diff --git a/models/Chart.json b/models/Chart.json new file mode 100644 index 0000000..7e0da01 --- /dev/null +++ b/models/Chart.json @@ -0,0 +1,16 @@ +{ + "type": "object", + "description": "The chart of a system or waypoint, which makes the location visible to other agents.", + "properties": { + "waypointSymbol": { + "type": "string" + }, + "submittedBy": { + "type": "string" + }, + "submittedOn": { + "type": "string", + "format": "date-time" + } + } +} \ No newline at end of file diff --git a/models/ConnectedSystem.json b/models/ConnectedSystem.json new file mode 100644 index 0000000..0d85a0c --- /dev/null +++ b/models/ConnectedSystem.json @@ -0,0 +1,38 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "sectorSymbol": { + "type": "string", + "minLength": 1 + }, + "type": { + "$ref": "./SystemType.json" + }, + "factionSymbol": { + "type": "string", + "description": "The symbol of the faction that owns the connected jump gate in the system." + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + }, + "distance": { + "type": "integer" + } + }, + "required": [ + "symbol", + "sectorSymbol", + "type", + "x", + "y", + "distance" + ] +} \ No newline at end of file diff --git a/models/Contract.json b/models/Contract.json new file mode 100644 index 0000000..cb4c577 --- /dev/null +++ b/models/Contract.json @@ -0,0 +1,50 @@ +{ + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "factionSymbol": { + "type": "string", + "minLength": 1, + "description": "The symbol of the faction that this contract is for." + }, + "type": { + "type": "string", + "enum": [ + "PROCUREMENT", + "TRANSPORT", + "SHUTTLE" + ] + }, + "terms": { + "$ref": "./ContractTerms.json" + }, + "accepted": { + "type": "boolean", + "default": false, + "description": "Whether the contract has been accepted by the agent" + }, + "fulfilled": { + "type": "boolean", + "default": false, + "description": "Whether the contract has been fulfilled" + }, + "expiration": { + "type": "string", + "format": "date-time", + "description": "The time at which the contract expires" + } + }, + "required": [ + "id", + "factionSymbol", + "type", + "terms", + "accepted", + "fulfilled", + "expiration" + ] +} \ No newline at end of file diff --git a/models/Contract.yaml b/models/Contract.yaml deleted file mode 100644 index 90a8114..0000000 --- a/models/Contract.yaml +++ /dev/null @@ -1,103 +0,0 @@ -description: "" -type: object -properties: - id: - type: string - minLength: 1 - faction: - type: string - minLength: 1 - type: - type: string - minLength: 1 - terms: - type: object - properties: - deadline: - type: string - minLength: 1 - payment: - type: object - properties: - onAccepted: - type: integer - onFulfilled: - type: integer - required: - - onAccepted - - onFulfilled - deliver: - type: array - uniqueItems: true - minItems: 1 - items: - required: - - tradeSymbol - - destination - - units - - fulfilled - properties: - tradeSymbol: - type: string - minLength: 1 - destination: - type: string - minLength: 1 - units: - type: integer - fulfilled: - type: integer - required: - - deadline - - payment - - deliver - accepted: - type: boolean - fulfilled: - type: boolean - expiresAt: - type: string - minLength: 1 -required: - - id - - faction - - type - - terms - - accepted - - fulfilled - - expiresAt -x-examples: - example-1: - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: "2022-03-11T05:16:59.113Z" - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: "2022-03-09T05:16:59.112Z" -examples: - - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: "2022-03-11T05:16:59.113Z" - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: "2022-03-09T05:16:59.112Z" diff --git a/models/ContractDeliverGood.json b/models/ContractDeliverGood.json new file mode 100644 index 0000000..02e1377 --- /dev/null +++ b/models/ContractDeliverGood.json @@ -0,0 +1,30 @@ +{ + "description": "The details of a delivery contract. Includes the type of good, units needed, and the destination.", + "type": "object", + "properties": { + "tradeSymbol": { + "type": "string", + "description": "The symbol of the trade good to deliver.", + "minLength": 1 + }, + "destinationSymbol": { + "type": "string", + "description": "The destination where goods need to be delivered.", + "minLength": 1 + }, + "unitsRequired": { + "type": "integer", + "description": "The number of units that need to be delivered on this contract." + }, + "unitsFulfilled": { + "type": "integer", + "description": "The number of units fulfilled on this contract." + } + }, + "required": [ + "tradeSymbol", + "destinationSymbol", + "unitsRequired", + "unitsFulfilled" + ] +} \ No newline at end of file diff --git a/models/ContractDelivery.yaml b/models/ContractDelivery.yaml deleted file mode 100644 index 8d3e18b..0000000 --- a/models/ContractDelivery.yaml +++ /dev/null @@ -1,36 +0,0 @@ -description: "" -type: object -properties: - data: - type: object - properties: - tradeSymbol: - type: string - minLength: 1 - destination: - type: string - minLength: 1 - units: - type: integer - fulfilled: - type: integer - required: - - tradeSymbol - - destination - - units - - fulfilled -required: - - data -x-examples: - example-1: - data: - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 500 -examples: - - data: - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 500 diff --git a/models/ContractPayment.json b/models/ContractPayment.json new file mode 100644 index 0000000..a102adf --- /dev/null +++ b/models/ContractPayment.json @@ -0,0 +1,17 @@ +{ + "type": "object", + "properties": { + "onAccepted": { + "type": "integer", + "description": "The amount of credits received up front for accepting the contract." + }, + "onFulfilled": { + "type": "integer", + "description": "The amount of credits received when the contract is fulfilled." + } + }, + "required": [ + "onAccepted", + "onFulfilled" + ] +} \ No newline at end of file diff --git a/models/ContractTerms.json b/models/ContractTerms.json new file mode 100644 index 0000000..0fc4809 --- /dev/null +++ b/models/ContractTerms.json @@ -0,0 +1,23 @@ +{ + "type": "object", + "properties": { + "deadline": { + "type": "string", + "format": "date-time", + "description": "The deadline for the contract." + }, + "payment": { + "$ref": "./ContractPayment.json" + }, + "deliver": { + "type": "array", + "items": { + "$ref": "./ContractDeliverGood.json" + } + } + }, + "required": [ + "deadline", + "payment" + ] +} \ No newline at end of file diff --git a/models/Cooldown.json b/models/Cooldown.json new file mode 100644 index 0000000..f10e582 --- /dev/null +++ b/models/Cooldown.json @@ -0,0 +1,33 @@ +{ + "type": "object", + "description": "A cooldown is a period of time in which a ship cannot perform certain actions.", + "properties": { + "shipSymbol": { + "type": "string", + "description": "The symbol of the ship that is on cooldown", + "minLength": 1 + }, + "totalSeconds": { + "type": "integer", + "description": "The total duration of the cooldown in seconds", + "minimum": 0 + }, + "remainingSeconds": { + "type": "integer", + "description": "The remaining duration of the cooldown in seconds", + "minimum": 0 + }, + "expiration": { + "type": "string", + "format": "date-time", + "description": "The date and time when the cooldown expires in ISO 8601 format", + "minimum": 0 + } + }, + "required": [ + "shipSymbol", + "totalSeconds", + "remainingSeconds", + "expiration" + ] +} \ No newline at end of file diff --git a/models/Cooldown.yaml b/models/Cooldown.yaml deleted file mode 100644 index 85f7efc..0000000 --- a/models/Cooldown.yaml +++ /dev/null @@ -1,18 +0,0 @@ -description: "" -type: object -properties: - duration: - type: integer - expiration: - type: string - minLength: 1 -required: - - duration - - expiration -x-examples: - example-1: - duration: 119 - expiration: "2022-03-12T00:41:29.285Z" -examples: - - duration: 119 - expiration: "2022-03-12T00:41:29.285Z" diff --git a/models/Extraction.json b/models/Extraction.json new file mode 100644 index 0000000..a25051e --- /dev/null +++ b/models/Extraction.json @@ -0,0 +1,17 @@ +{ + "description": "", + "type": "object", + "properties": { + "shipSymbol": { + "type": "string", + "minLength": 1 + }, + "yield": { + "$ref": "./ExtractionYield.json" + } + }, + "required": [ + "shipSymbol", + "yield" + ] +} \ No newline at end of file diff --git a/models/Extraction.yaml b/models/Extraction.yaml deleted file mode 100644 index 3b415b5..0000000 --- a/models/Extraction.yaml +++ /dev/null @@ -1,31 +0,0 @@ -description: "" -type: object -properties: - shipSymbol: - type: string - minLength: 1 - yield: - type: object - properties: - tradeSymbol: - type: string - minLength: 1 - units: - type: integer - required: - - tradeSymbol - - units -required: - - shipSymbol - - yield -x-examples: - example-1: - shipSymbol: 4B902A-1 - yield: - tradeSymbol: SILICON - units: 16 -examples: - - shipSymbol: 4B902A-1 - yield: - tradeSymbol: SILICON - units: 16 diff --git a/models/ExtractionYield.json b/models/ExtractionYield.json new file mode 100644 index 0000000..ab238a1 --- /dev/null +++ b/models/ExtractionYield.json @@ -0,0 +1,17 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "units": { + "type": "integer", + "description": "The number of units extracted that were placed into the ship's cargo hold." + } + }, + "required": [ + "symbol", + "units" + ] +} \ No newline at end of file diff --git a/models/Faction.json b/models/Faction.json new file mode 100644 index 0000000..523fdf2 --- /dev/null +++ b/models/Faction.json @@ -0,0 +1,35 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "headquarters": { + "type": "string", + "minLength": 1 + }, + "traits": { + "type": "array", + "items": { + "$ref": "./FactionTrait.json" + } + } + }, + "required": [ + "symbol", + "name", + "description", + "headquarters", + "traits" + ] +} \ No newline at end of file diff --git a/models/Faction.yaml b/models/Faction.yaml deleted file mode 100644 index 9fbb1ab..0000000 --- a/models/Faction.yaml +++ /dev/null @@ -1,46 +0,0 @@ -description: '' -type: object -x-examples: - example-1: - symbol: COMMERCE_REPUBLIC - name: Commerce Repubic - description: The Commerce Republic takes capital from top tier worlds and invests it into new systems with high potential for growth. - headquarters: X1-OE-PM - traits: - - BUREAUCRATIC - - CAPITALISTIC - - GUILD - - ESTABLISHED -examples: - - symbol: COMMERCE_REPUBLIC - name: Commerce Repubic - description: The Commerce Republic takes capital from top tier worlds and invests it into new systems with high potential for growth. - headquarters: X1-OE-PM - traits: - - BUREAUCRATIC - - CAPITALISTIC - - GUILD - - ESTABLISHED -properties: - symbol: - type: string - minLength: 1 - name: - type: string - minLength: 1 - description: - type: string - minLength: 1 - headquarters: - type: string - minLength: 1 - traits: - type: array - items: - type: string -required: - - symbol - - name - - description - - headquarters - - traits diff --git a/models/FactionTrait.json b/models/FactionTrait.json new file mode 100644 index 0000000..4c0fe72 --- /dev/null +++ b/models/FactionTrait.json @@ -0,0 +1,90 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The unique identifier of the trait.", + "enum": [ + "BUREAUCRATIC", + "SECRETIVE", + "CAPITALISTIC", + "INDUSTRIOUS", + "PEACEFUL", + "DISTRUSTFUL", + "WELCOMING", + "ANARCHIST", + "CONFLICTED", + "AUTHORITARIAN", + "OLIGARCHICAL", + "DYNASTIC", + "DEMOCRACTIC", + "DECENTRALIZED", + "SMUGGLERS", + "SCAVENGERS", + "REBELLIOUS", + "EXILES", + "PIRATES", + "RAIDERS", + "CLAN", + "GUILD", + "DOMINION", + "FRINGE", + "FORSAKEN", + "ISOLATED", + "LOCALIZED", + "ESTABLISHED", + "NOTABLE", + "DOMINANT", + "INESCAPABLE", + "INNOVATIVE", + "BOLD", + "VISIONARY", + "CURIOUS", + "DARING", + "EXPLORATORY", + "RESOURCEFUL", + "FLEXIBLE", + "COOPERATIVE", + "UNITED", + "STRATEGIC", + "INTELLIGENT", + "RESEARCH_FOCUSED", + "COLLABORATIVE", + "PROGRESSIVE", + "MILITARISTIC", + "TECHNOLOGICALLY_ADVANCED", + "AGGRESSIVE", + "IMPERIALISTIC", + "TREASURE_HUNTERS", + "DEXTEROUS", + "UNPREDICTABLE", + "BRUTAL", + "FLEETING", + "ADAPTABLE", + "SELF_SUFFICIENT", + "DEFENSIVE", + "PROUD", + "DIVERSE", + "INDEPENDENT", + "SELF_INTERESTED", + "FRAGMENTED", + "COMMERCIAL", + "FREE_MARKETS", + "ENTREPRENEURIAL" + ] + }, + "name": { + "type": "string", + "description": "The name of the trait." + }, + "description": { + "type": "string", + "description": "A description of the trait." + } + }, + "required": [ + "symbol", + "name", + "description" + ] +} \ No newline at end of file diff --git a/models/Jump.yaml b/models/Jump.yaml deleted file mode 100644 index 9d9c957..0000000 --- a/models/Jump.yaml +++ /dev/null @@ -1,19 +0,0 @@ -description: '' -type: object -properties: - shipSymbol: - type: string - minLength: 1 - destination: - type: string - minLength: 1 -required: - - shipSymbol - - destination -x-examples: - example-1: - shipSymbol: 1D7FDA-1 - destination: 00E0B1 -examples: - - shipSymbol: 1D7FDA-1 - destination: 00E0B1 diff --git a/models/JumpGate.json b/models/JumpGate.json new file mode 100644 index 0000000..69dad45 --- /dev/null +++ b/models/JumpGate.json @@ -0,0 +1,25 @@ +{ + "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": { + "type": "array", + "description": "The systems within range of the gate that have a corresponding gate.", + "items": { + "$ref": "./ConnectedSystem.json" + } + } + }, + "required": [ + "jumpRange", + "connectedSystems" + ] +} \ No newline at end of file diff --git a/models/Market.json b/models/Market.json new file mode 100644 index 0000000..e1a97e8 --- /dev/null +++ b/models/Market.json @@ -0,0 +1,51 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The symbol of the market. The symbol is the same as the waypoint where the market is located." + }, + "exports": { + "type": "array", + "description": "The list of goods that are exported from this market.", + "items": { + "$ref": "./TradeGood.json" + } + }, + "imports": { + "type": "array", + "description": "The list of goods that are sought as imports in this market.", + "items": { + "$ref": "./TradeGood.json" + } + }, + "exchange": { + "type": "array", + "description": "The list of goods that are bought and sold between agents at this market.", + "items": { + "$ref": "./TradeGood.json" + } + }, + "transactions": { + "type": "array", + "description": "The list of recent transactions at this market. Visible only when a ship is present at the market.", + "items": { + "$ref": "./MarketTransaction.json" + } + }, + "tradeGoods": { + "type": "array", + "description": "The list of goods that are traded at this market. Visible only when a ship is present at the market.", + "items": { + "$ref": "./MarketTradeGood.json" + } + } + }, + "required": [ + "symbol", + "exports", + "imports", + "exchange" + ] +} \ No newline at end of file diff --git a/models/MarketTrade.yaml b/models/MarketTrade.yaml deleted file mode 100644 index 1f7eadc..0000000 --- a/models/MarketTrade.yaml +++ /dev/null @@ -1,18 +0,0 @@ -description: "" -type: object -properties: - waypointSymbol: - type: string - minLength: 1 - tradeSymbol: - type: string - minLength: 1 - price: - type: integer - tariff: - type: integer -required: - - waypointSymbol - - tradeSymbol - - price - - tariff diff --git a/models/MarketTradeGood.json b/models/MarketTradeGood.json new file mode 100644 index 0000000..7319318 --- /dev/null +++ b/models/MarketTradeGood.json @@ -0,0 +1,41 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The symbol of the trade good." + }, + "tradeVolume": { + "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.", + "minimum": 1 + }, + "supply": { + "type": "string", + "description": "A rough estimate of the total supply of this good in the marketplace.", + "enum": [ + "SCARCE", + "LIMITED", + "MODERATE", + "ABUNDANT" + ] + }, + "purchasePrice": { + "type": "integer", + "description": "The price at which this good can be purchased from the market.", + "minimum": 0 + }, + "sellPrice": { + "type": "integer", + "description": "The price at which this good can be sold to the market.", + "minimum": 0 + } + }, + "required": [ + "symbol", + "tradeVolume", + "supply", + "purchasePrice", + "sellPrice" + ] +} \ No newline at end of file diff --git a/models/MarketTransaction.json b/models/MarketTransaction.json new file mode 100644 index 0000000..56234b1 --- /dev/null +++ b/models/MarketTransaction.json @@ -0,0 +1,49 @@ +{ + "type": "object", + "properties": { + "shipSymbol": { + "type": "string", + "description": "The symbol of the ship that made the transaction." + }, + "tradeSymbol": { + "type": "string", + "description": "The symbol of the trade good." + }, + "type": { + "type": "string", + "description": "The type of transaction.", + "enum": [ + "PURCHASE", + "SELL" + ] + }, + "units": { + "type": "integer", + "description": "The number of units of the transaction.", + "minimum": 1 + }, + "pricePerUnit": { + "type": "integer", + "description": "The price per unit of the transaction.", + "minimum": 1 + }, + "totalPrice": { + "type": "integer", + "description": "The total price of the transaction.", + "minimum": 1 + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the transaction." + } + }, + "required": [ + "symbol", + "type", + "units", + "pricePerUnit", + "shipSymbol", + "timestamp" + ] +} \ No newline at end of file diff --git a/models/Meta.json b/models/Meta.json new file mode 100644 index 0000000..48b7e71 --- /dev/null +++ b/models/Meta.json @@ -0,0 +1,27 @@ +{ + "description": "", + "type": "object", + "properties": { + "total": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + }, + "required": [ + "total", + "page", + "limit" + ], + "x-examples": { + "example-1": { + "total": 6, + "page": 1, + "limit": 20 + } + } +} \ No newline at end of file diff --git a/models/Meta.yaml b/models/Meta.yaml deleted file mode 100644 index 53922c0..0000000 --- a/models/Meta.yaml +++ /dev/null @@ -1,22 +0,0 @@ -description: "" -type: object -properties: - total: - type: integer - page: - type: integer - limit: - type: integer -required: - - total - - page - - limit -x-examples: - example-1: - total: 6 - page: 1 - limit: 20 -examples: - - total: 10 - page: 1 - limit: 10 diff --git a/models/ScannedShip.json b/models/ScannedShip.json new file mode 100644 index 0000000..7588a89 --- /dev/null +++ b/models/ScannedShip.json @@ -0,0 +1,73 @@ +{ + "description": "The ship that was scanned. Details include information about the ship that could be detected by the scanner.", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The globally unique identifier of the ship." + }, + "registration": { + "$ref": "./ShipRegistration.json" + }, + "nav": { + "$ref": "./ShipNav.json" + }, + "frame": { + "type": "object", + "description": "The frame of the ship.", + "properties": { + "symbol": { + "type": "string" + } + }, + "required": [ + "symbol" + ] + }, + "reactor": { + "type": "object", + "description": "The reactor of the ship.", + "properties": { + "symbol": { + "type": "string" + } + }, + "required": [ + "symbol" + ] + }, + "engine": { + "type": "object", + "description": "The engine of the ship.", + "properties": { + "symbol": { + "type": "string" + } + }, + "required": [ + "symbol" + ] + }, + "mounts": { + "type": "array", + "items": { + "type": "object", + "description": "A mount on the ship.", + "properties": { + "symbol": { + "type": "string" + } + }, + "required": [ + "symbol" + ] + } + } + }, + "required": [ + "symbol", + "registration", + "nav", + "engine" + ] +} \ No newline at end of file diff --git a/models/ScannedShip.yaml b/models/ScannedShip.yaml deleted file mode 100644 index 3e9af22..0000000 --- a/models/ScannedShip.yaml +++ /dev/null @@ -1,47 +0,0 @@ -description: '' -type: object -properties: - symbol: - type: string - minLength: 1 - registration: - type: object - properties: - factionSymbol: - type: string - minLength: 1 - role: - type: string - minLength: 1 - required: - - factionSymbol - - role - frameSymbol: - type: string - minLength: 1 - reactorSymbol: - type: string - minLength: 1 - engineSymbol: - type: string - minLength: 1 - expiration: - type: string - minLength: 1 -required: - - symbol - - registration - - frameSymbol - - reactorSymbol - - engineSymbol - - expiration -x-examples: - example-1: - symbol: SPACERS_GUILD-65E1BA - registration: - factionSymbol: SPACERS_GUILD - role: EXCAVATOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:14.222Z' diff --git a/models/ScannedSystem.json b/models/ScannedSystem.json new file mode 100644 index 0000000..504c1c0 --- /dev/null +++ b/models/ScannedSystem.json @@ -0,0 +1,34 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "sectorSymbol": { + "type": "string", + "minLength": 1 + }, + "type": { + "$ref": "./SystemType.json" + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + }, + "distance": { + "type": "integer" + } + }, + "required": [ + "symbol", + "sectorSymbol", + "type", + "x", + "y", + "distance" + ] +} \ No newline at end of file diff --git a/models/Ship.json b/models/Ship.json new file mode 100644 index 0000000..40e9ed8 --- /dev/null +++ b/models/Ship.json @@ -0,0 +1,60 @@ +{ + "description": "A ship", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The globally unique identifier of the ship in the following format: `[AGENT_SYMBOL]_[HEX_ID]`", + "minLength": 8 + }, + "registration": { + "$ref": "./ShipRegistration.json" + }, + "nav": { + "$ref": "./ShipNav.json" + }, + "crew": { + "$ref": "./ShipCrew.json" + }, + "frame": { + "$ref": "./ShipFrame.json" + }, + "reactor": { + "$ref": "./ShipReactor.json" + }, + "engine": { + "$ref": "./ShipEngine.json" + }, + "modules": { + "type": "array", + "items": { + "$ref": "./ShipModule.json" + } + }, + "mounts": { + "type": "array", + "items": { + "$ref": "./ShipMount.json" + } + }, + "cargo": { + "$ref": "./ShipCargo.json" + }, + "fuel": { + "$ref": "./ShipFuel.json" + } + }, + "required": [ + "symbol", + "registration", + "nav", + "crew", + "frame", + "reactor", + "engine", + "modules", + "mounts", + "cargo", + "fuel" + ] +} \ No newline at end of file diff --git a/models/Ship.yaml b/models/Ship.yaml deleted file mode 100644 index 2ad4179..0000000 --- a/models/Ship.yaml +++ /dev/null @@ -1,161 +0,0 @@ -description: "" -type: object -x-examples: - example-1: - symbol: 2C52AD-1 - crew: null - officers: null - frame: FRAME_FRIGATE - reactor: REACTOR_FUSION_I - engine: ENGINE_ION_DRIVE_II - modules: - - MODULE_GAS_TANK - - MODULE_CARGO_HOLD - - MODULE_CARGO_HOLD - - MODULE_CREW_QUARTERS - - MODULE_ENVOY_QUARTERS - - MODULE_JUMP_DRIVE_I - mounts: - - MOUNT_SENSOR_ARRAY_II - - MOUNT_MINING_LASER_II - - MOUNT_GAS_SIPHON_II - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 2C52AD - fee: 0 - role: COMMAND - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: - - tradeSymbol: IRON_ORE - units: 100 -examples: - - symbol: 55B261-1 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] -properties: - symbol: - type: string - minLength: 1 - frame: - type: string - minLength: 1 - reactor: - type: string - minLength: 1 - engine: - type: string - minLength: 1 - modules: - type: array - items: - type: string - mounts: - type: array - items: - type: string - registration: - type: object - required: - - factionSymbol - - agentSymbol - - fee - - role - properties: - factionSymbol: - type: string - minLength: 1 - agentSymbol: - type: string - minLength: 1 - fee: - type: integer - role: - type: string - minLength: 1 - integrity: - type: object - required: - - frame - - reactor - - engine - properties: - frame: - type: number - reactor: - type: number - engine: - type: number - stats: - type: object - required: - - fuelTank - - cargoLimit - - jumpRange - properties: - fuelTank: - type: integer - cargoLimit: - type: integer - jumpRange: - type: integer - status: - type: string - minLength: 1 - location: - type: string - minLength: 1 - cargo: - type: array - uniqueItems: true - minItems: 0 - items: - type: object - properties: - tradeSymbol: - type: string - minLength: 1 - units: - type: integer - required: - - tradeSymbol - - units - fuel: - type: integer -required: - - symbol - - frame - - reactor - - engine - - modules - - mounts - - registration - - integrity - - status - - location - - cargo - - fuel diff --git a/models/ShipCargo.json b/models/ShipCargo.json new file mode 100644 index 0000000..0ca6653 --- /dev/null +++ b/models/ShipCargo.json @@ -0,0 +1,27 @@ +{ + "type": "object", + "properties": { + "capacity": { + "type": "integer", + "description": "The max number of items that can be stored in the cargo hold.", + "minimum": 0 + }, + "units": { + "type": "integer", + "description": "The number of items currently stored in the cargo hold.", + "minimum": 0 + }, + "inventory": { + "type": "array", + "description": "The items currently in the cargo hold.", + "items": { + "$ref": "./ShipCargoItem.json" + } + } + }, + "required": [ + "capacity", + "units", + "inventory" + ] +} \ No newline at end of file diff --git a/models/ShipCargoItem.json b/models/ShipCargoItem.json new file mode 100644 index 0000000..052a220 --- /dev/null +++ b/models/ShipCargoItem.json @@ -0,0 +1,29 @@ +{ + "type": "object", + "description": "The type of cargo item and the number of units.", + "properties": { + "symbol": { + "type": "string", + "description": "The unique identifier of the cargo item type." + }, + "name": { + "type": "string", + "description": "The name of the cargo item type." + }, + "description": { + "type": "string", + "description": "The description of the cargo item type." + }, + "units": { + "type": "integer", + "description": "The number of units of the cargo item.", + "minimum": 1 + } + }, + "required": [ + "symbol", + "name", + "description", + "units" + ] +} \ No newline at end of file diff --git a/models/ShipCondition.json b/models/ShipCondition.json new file mode 100644 index 0000000..b1b2c01 --- /dev/null +++ b/models/ShipCondition.json @@ -0,0 +1,6 @@ +{ + "type": "integer", + "description": "Condition is a range of 0 to 100 where 0 is completely worn out and 100 is brand new.", + "minimum": 0, + "maximum": 100 +} \ No newline at end of file diff --git a/models/ShipCrew.json b/models/ShipCrew.json new file mode 100644 index 0000000..16ad2d5 --- /dev/null +++ b/models/ShipCrew.json @@ -0,0 +1,46 @@ +{ + "type": "object", + "description": "The ship's crew service and maintain the ship's systems and equipment.", + "properties": { + "current": { + "type": "integer", + "description": "The current number of crew members on the ship." + }, + "required": { + "type": "integer", + "description": "The minimum number of crew members required to maintain the ship." + }, + "capacity": { + "type": "integer", + "description": "The maximum number of crew members the ship can support." + }, + "rotation": { + "type": "string", + "description": "The rotation of crew shifts. A stricter shift improves the ship's performance. A more relaxed shift improves the crew's morale.", + "enum": [ + "STRICT", + "RELAXED" + ], + "default": "STRICT" + }, + "morale": { + "type": "integer", + "description": "A rough measure of the crew's morale. A higher morale means the crew is happier and more productive. A lower morale means the ship is more prone to accidents.", + "minimum": 0, + "maximum": 100 + }, + "wages": { + "type": "integer", + "description": "The amount of credits per crew member paid per hour. Wages are paid when a ship docks at a civilized waypoint.", + "minimum": 0 + } + }, + "required": [ + "current", + "required", + "capacity", + "rotation", + "morale", + "wages" + ] +} \ No newline at end of file diff --git a/models/ShipEngine.json b/models/ShipEngine.json new file mode 100644 index 0000000..b5bdb88 --- /dev/null +++ b/models/ShipEngine.json @@ -0,0 +1,38 @@ +{ + "type": "object", + "description": "The engine determines how quickly a ship travels between waypoints.", + "properties": { + "symbol": { + "type": "string", + "enum": [ + "ENGINE_IMPULSE_DRIVE_I", + "ENGINE_ION_DRIVE_I", + "ENGINE_ION_DRIVE_II", + "ENGINE_HYPER_DRIVE_I" + ] + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "condition": { + "$ref": "./ShipCondition.json" + }, + "speed": { + "type": "number", + "minimum": 1 + }, + "requirements": { + "$ref": "./ShipRequirements.json" + } + }, + "required": [ + "symbol", + "name", + "description", + "speed", + "requirements" + ] +} \ No newline at end of file diff --git a/models/ShipFrame.json b/models/ShipFrame.json new file mode 100644 index 0000000..de9b9d4 --- /dev/null +++ b/models/ShipFrame.json @@ -0,0 +1,59 @@ +{ + "type": "object", + "description": "The frame of the ship. The frame determines the number of modules and mounting points of the ship, as well as base fuel capacity. As the condition of the frame takes more wear, the ship will become more sluggish and less maneuverable.", + "properties": { + "symbol": { + "type": "string", + "enum": [ + "FRAME_PROBE", + "FRAME_DRONE", + "FRAME_INTERCEPTOR", + "FRAME_RACER", + "FRAME_FIGHTER", + "FRAME_FRIGATE", + "FRAME_SHUTTLE", + "FRAME_EXPLORER", + "FRAME_MINER", + "FRAME_LIGHT_FREIGHTER", + "FRAME_HEAVY_FREIGHTER", + "FRAME_TRANSPORT", + "FRAME_DESTROYER", + "FRAME_CRUISER", + "FRAME_CARRIER" + ] + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "condition": { + "$ref": "./ShipCondition.json" + }, + "moduleSlots": { + "type": "integer", + "minimum": 0 + }, + "mountingPoints": { + "type": "integer", + "minimum": 0 + }, + "fuelCapacity": { + "type": "integer", + "minimum": 0 + }, + "requirements": { + "$ref": "./ShipRequirements.json" + } + }, + "required": [ + "symbol", + "name", + "description", + "moduleSlots", + "mountingPoints", + "fuelCapacity", + "requirements" + ] +} \ No newline at end of file diff --git a/models/ShipFuel.json b/models/ShipFuel.json new file mode 100644 index 0000000..a86e324 --- /dev/null +++ b/models/ShipFuel.json @@ -0,0 +1,39 @@ +{ + "type": "object", + "description": "Details of the ship's fuel tanks including how much fuel was consumed during the last transit or action.", + "properties": { + "current": { + "type": "integer", + "description": "The current amount of fuel in the ship's tanks.", + "minimum": 0 + }, + "capacity": { + "type": "integer", + "description": "The maximum amount of fuel the ship's tanks can hold.", + "minimum": 0 + }, + "consumed": { + "type": "object", + "properties": { + "amount": { + "type": "integer", + "description": "The amount of fuel consumed by the most recent transit or action.", + "minimum": 0 + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "The time at which the fuel was consumed." + } + }, + "required": [ + "amount", + "timestamp" + ] + } + }, + "required": [ + "current", + "capacity" + ] +} \ No newline at end of file diff --git a/models/ShipModule.json b/models/ShipModule.json new file mode 100644 index 0000000..05139e1 --- /dev/null +++ b/models/ShipModule.json @@ -0,0 +1,50 @@ +{ + "type": "object", + "description": "A module can be installed in a ship and provides a set of capabilities such as storage space or quarters for crew. Module installations are permanent.", + "properties": { + "symbol": { + "type": "string", + "enum": [ + "MODULE_MINERAL_PROCESSOR_I", + "MODULE_CARGO_HOLD_I", + "MODULE_CREW_QUARTERS_I", + "MODULE_ENVOY_QUARTERS_I", + "MODULE_PASSENGER_CABIN_I", + "MODULE_MICRO_REFINERY_I", + "MODULE_ORE_REFINERY_I", + "MODULE_FUEL_REFINERY_I", + "MODULE_SCIENCE_LAB_I", + "MODULE_JUMP_DRIVE_I", + "MODULE_JUMP_DRIVE_II", + "MODULE_JUMP_DRIVE_III", + "MODULE_WARP_DRIVE_I", + "MODULE_WARP_DRIVE_II", + "MODULE_WARP_DRIVE_III", + "MODULE_SHIELD_GENERATOR_I", + "MODULE_SHIELD_GENERATOR_II" + ] + }, + "capacity": { + "type": "integer", + "minimum": 0 + }, + "range": { + "type": "integer", + "minimum": 0 + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "requirements": { + "$ref": "./ShipRequirements.json" + } + }, + "required": [ + "symbol", + "name", + "requirements" + ] +} \ No newline at end of file diff --git a/models/ShipMount.json b/models/ShipMount.json new file mode 100644 index 0000000..218a482 --- /dev/null +++ b/models/ShipMount.json @@ -0,0 +1,66 @@ +{ + "type": "object", + "description": "A mount is installed on the exterier of a ship.", + "properties": { + "symbol": { + "type": "string", + "enum": [ + "MOUNT_GAS_SIPHON_I", + "MOUNT_GAS_SIPHON_II", + "MOUNT_GAS_SIPHON_III", + "MOUNT_SURVEYOR_I", + "MOUNT_SURVEYOR_II", + "MOUNT_SURVEYOR_III", + "MOUNT_SENSOR_ARRAY_I", + "MOUNT_SENSOR_ARRAY_II", + "MOUNT_SENSOR_ARRAY_III", + "MOUNT_MINING_LASER_I", + "MOUNT_MINING_LASER_II", + "MOUNT_MINING_LASER_III", + "MOUNT_LASER_CANNON_I", + "MOUNT_MISSILE_LAUNCHER_I", + "MOUNT_TURRET_I" + ] + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "strength": { + "type": "integer", + "minimum": 0 + }, + "deposits": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "QUARTZ_SAND", + "SILICON_CRYSTALS", + "PRECIOUS_STONES", + "ICE_WATER", + "AMMONIA_ICE", + "IRON_ORE", + "COPPER_ORE", + "SILVER_ORE", + "ALUMINUM_ORE", + "GOLD_ORE", + "PLATINUM_ORE", + "DIAMONDS", + "URANITE_ORE", + "MERITIUM_ORE" + ] + } + }, + "requirements": { + "$ref": "./ShipRequirements.json" + } + }, + "required": [ + "symbol", + "name", + "requirements" + ] +} \ No newline at end of file diff --git a/models/ShipNav.json b/models/ShipNav.json new file mode 100644 index 0000000..c6aaf57 --- /dev/null +++ b/models/ShipNav.json @@ -0,0 +1,30 @@ +{ + "type": "object", + "description": "The navigation information of the ship.", + "properties": { + "systemSymbol": { + "type": "string", + "description": "The system symbol of the ship's current location." + }, + "waypointSymbol": { + "type": "string", + "description": "The waypoint symbol of the ship's current location, or if the ship is in-transit, the waypoint symbol of the ship's destination." + }, + "route": { + "$ref": "./ShipNavRoute.json" + }, + "status": { + "$ref": "./ShipNavStatus.json" + }, + "flightMode": { + "$ref": "./ShipNavFlightMode.json" + } + }, + "required": [ + "systemSymbol", + "waypointSymbol", + "route", + "status", + "flightMode" + ] +} \ No newline at end of file diff --git a/models/ShipNavFlightMode.json b/models/ShipNavFlightMode.json new file mode 100644 index 0000000..39dee56 --- /dev/null +++ b/models/ShipNavFlightMode.json @@ -0,0 +1,11 @@ +{ + "type": "string", + "description": "The ship's set speed when traveling between waypoints or systems.", + "enum": [ + "DRIFT", + "STEALTH", + "CRUISE", + "BURN" + ], + "default": "CRUISE" +} \ No newline at end of file diff --git a/models/ShipNavRoute.json b/models/ShipNavRoute.json new file mode 100644 index 0000000..2daf619 --- /dev/null +++ b/models/ShipNavRoute.json @@ -0,0 +1,22 @@ +{ + "type": "object", + "description": "The routing information for the ship's most recent transit or current location.", + "properties": { + "destination": { + "$ref": "./ShipNavRouteWaypoint.json" + }, + "departure": { + "$ref": "./ShipNavRouteWaypoint.json" + }, + "arrival": { + "type": "string", + "format": "date-time", + "description": "The date time of the ship's arrival. If the ship is in-transit, this is the expected time of arrival." + } + }, + "required": [ + "destination", + "departure", + "arrival" + ] +} \ No newline at end of file diff --git a/models/ShipNavRouteWaypoint.json b/models/ShipNavRouteWaypoint.json new file mode 100644 index 0000000..646f650 --- /dev/null +++ b/models/ShipNavRouteWaypoint.json @@ -0,0 +1,30 @@ +{ + "description": "The destination or departure of a ships nav route.", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "type": { + "$ref": "./WaypointType.json" + }, + "systemSymbol": { + "type": "string", + "minLength": 1 + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } + }, + "required": [ + "symbol", + "type", + "systemSymbol", + "x", + "y" + ] +} \ No newline at end of file diff --git a/models/ShipNavStatus.json b/models/ShipNavStatus.json new file mode 100644 index 0000000..26768f0 --- /dev/null +++ b/models/ShipNavStatus.json @@ -0,0 +1,9 @@ +{ + "type": "string", + "description": "The current status of the ship", + "enum": [ + "IN_TRANSIT", + "IN_ORBIT", + "DOCKED" + ] +} \ No newline at end of file diff --git a/models/ShipNavigation.yaml b/models/ShipNavigation.yaml deleted file mode 100644 index b142d4e..0000000 --- a/models/ShipNavigation.yaml +++ /dev/null @@ -1,33 +0,0 @@ -description: "" -type: object -properties: - shipSymbol: - type: string - minLength: 1 - departure: - type: string - minLength: 1 - destination: - type: string - minLength: 1 - durationRemaining: - type: integer - arrivedAt: {} -required: - - shipSymbol - - departure - - destination - - durationRemaining -x-examples: - example-1: - shipSymbol: 3AE434-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2159 - arrivedAt: null -examples: - - shipSymbol: 3AE434-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2159 - arrivedAt: null diff --git a/models/ShipReactor.json b/models/ShipReactor.json new file mode 100644 index 0000000..53614d7 --- /dev/null +++ b/models/ShipReactor.json @@ -0,0 +1,39 @@ +{ + "type": "object", + "description": "The reactor of the ship. The reactor is responsible for powering the ship's systems and weapons.", + "properties": { + "symbol": { + "type": "string", + "enum": [ + "REACTOR_SOLAR_I", + "REACTOR_FUSION_I", + "REACTOR_FISSION_I", + "REACTOR_CHEMICAL_I", + "REACTOR_ANTIMATTER_I" + ] + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "condition": { + "$ref": "./ShipCondition.json" + }, + "powerOutput": { + "type": "integer", + "minimum": 1 + }, + "requirements": { + "$ref": "./ShipRequirements.json" + } + }, + "required": [ + "symbol", + "name", + "description", + "powerOutput", + "requirements" + ] +} \ No newline at end of file diff --git a/models/ShipRegistration.json b/models/ShipRegistration.json new file mode 100644 index 0000000..74b8859 --- /dev/null +++ b/models/ShipRegistration.json @@ -0,0 +1,24 @@ +{ + "type": "object", + "description": "The public registration information of the ship", + "properties": { + "name": { + "type": "string", + "description": "The agent's registered name of the ship", + "minLength": 1 + }, + "factionSymbol": { + "type": "string", + "description": "The symbol of the faction the ship is registered with", + "minLength": 1 + }, + "role": { + "$ref": "./ShipRole.json" + } + }, + "required": [ + "name", + "faction", + "role" + ] +} \ No newline at end of file diff --git a/models/ShipRequirements.json b/models/ShipRequirements.json new file mode 100644 index 0000000..2510319 --- /dev/null +++ b/models/ShipRequirements.json @@ -0,0 +1,18 @@ +{ + "type": "object", + "description": "The requirements for installation on a ship", + "properties": { + "power": { + "type": "integer", + "description": "The amount of power required from the reactor." + }, + "crew": { + "type": "integer", + "description": "The number of crew required for operation." + }, + "slots": { + "type": "integer", + "description": "The number of module slots required for installation." + } + } +} \ No newline at end of file diff --git a/models/ShipRole.json b/models/ShipRole.json new file mode 100644 index 0000000..d6c3bb6 --- /dev/null +++ b/models/ShipRole.json @@ -0,0 +1,20 @@ +{ + "type": "string", + "description": "The registered role of the ship", + "enum": [ + "FABRICATOR", + "HARVESTER", + "HAULER", + "INTERCEPTOR", + "EXCAVATOR", + "TRANSPORT", + "REPAIR", + "SURVEYOR", + "COMMAND", + "CARRIER", + "PATROL", + "SATELLITE", + "EXPLORER", + "REFINERY" + ] +} \ No newline at end of file diff --git a/models/ShipType.json b/models/ShipType.json new file mode 100644 index 0000000..15b8e21 --- /dev/null +++ b/models/ShipType.json @@ -0,0 +1,16 @@ +{ + "description": "", + "type": "string", + "enum": [ + "SHIP_PROBE", + "SHIP_MINING_DRONE", + "SHIP_INTERCEPTOR", + "SHIP_LIGHT_HAULER", + "SHIP_COMMAND_FRIGATE", + "SHIP_EXPLORER", + "SHIP_HEAVY_FREIGHTER", + "SHIP_LIGHT_SHUTTLE", + "SHIP_ORE_HOUND", + "SHIP_REFINING_FREIGHTER" + ] +} \ No newline at end of file diff --git a/models/Shipyard.json b/models/Shipyard.json new file mode 100644 index 0000000..d63a7f9 --- /dev/null +++ b/models/Shipyard.json @@ -0,0 +1,41 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The symbol of the shipyard. The symbol is the same as the waypoint where the shipyard is located.", + "minLength": 1 + }, + "shipTypes": { + "type": "array", + "description": "The list of ship types available for purchase at this shipyard.", + "items": { + "type": "object", + "properties": { + "type": { + "$ref": "./ShipType.json" + } + } + } + }, + "transactions": { + "type": "array", + "description": "The list of recent transactions at this shipyard.", + "items": { + "$ref": "./ShipyardTransaction.json" + } + }, + "ships": { + "type": "array", + "description": "The ships that are currently available for purchase at the shipyard.", + "items": { + "$ref": "./ShipyardShip.json" + } + } + }, + "required": [ + "symbol", + "shipTypes" + ] +} \ No newline at end of file diff --git a/models/Shipyard.yaml b/models/Shipyard.yaml deleted file mode 100644 index e0568f2..0000000 --- a/models/Shipyard.yaml +++ /dev/null @@ -1,19 +0,0 @@ -description: '' -type: object -properties: - symbol: - type: string - minLength: 1 - faction: - type: string - minLength: 1 -required: - - symbol - - faction -x-examples: - example-1: - symbol: X1-OE-PM - faction: COMMERCE_REPUBLIC -examples: - - symbol: X1-OE-PM - faction: COMMERCE_REPUBLIC diff --git a/models/ShipyardListing.yaml b/models/ShipyardListing.yaml deleted file mode 100644 index 63ed2fb..0000000 --- a/models/ShipyardListing.yaml +++ /dev/null @@ -1,66 +0,0 @@ -description: "" -type: object -x-examples: - example-1: - id: cl0nahta90000aq0jonm1nprl - waypoint: X1-OE-PM - price: 58191 - role: EXCAVATOR - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I -examples: - - id: cl0nahta90000aq0jonm1nprl - waypoint: X1-OE-PM - price: 58191 - role: EXCAVATOR - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I -properties: - id: - type: string - minLength: 1 - waypoint: - type: string - minLength: 1 - price: - type: integer - role: - type: string - minLength: 1 - frame: - type: string - minLength: 1 - reactor: - type: string - minLength: 1 - engine: - type: string - minLength: 1 - modules: - type: array - items: - type: string - mounts: - type: array - items: - type: string -required: - - id - - waypoint - - price - - role - - frame - - reactor - - engine - - modules - - mounts diff --git a/models/ShipyardShip.json b/models/ShipyardShip.json new file mode 100644 index 0000000..6a4819b --- /dev/null +++ b/models/ShipyardShip.json @@ -0,0 +1,50 @@ +{ + "description": "", + "type": "object", + "properties": { + "type": { + "$ref": "./ShipType.json" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "purchasePrice": { + "type": "integer" + }, + "frame": { + "$ref": "./ShipFrame.json" + }, + "reactor": { + "$ref": "./ShipReactor.json" + }, + "engine": { + "$ref": "./ShipEngine.json" + }, + "modules": { + "type": "array", + "items": { + "$ref": "./ShipModule.json" + } + }, + "mounts": { + "type": "array", + "items": { + "$ref": "./ShipMount.json" + } + } + }, + "required": [ + "symbol", + "name", + "description", + "purchasePrice", + "frame", + "reactor", + "engine", + "modules", + "mounts" + ] +} \ No newline at end of file diff --git a/models/ShipyardTransaction.json b/models/ShipyardTransaction.json new file mode 100644 index 0000000..8e9461b --- /dev/null +++ b/models/ShipyardTransaction.json @@ -0,0 +1,29 @@ +{ + "type": "object", + "properties": { + "shipSymbol": { + "type": "string", + "description": "The symbol of the ship that was purchased." + }, + "price": { + "type": "integer", + "description": "The price of the transaction.", + "minimum": 1 + }, + "agentSymbol": { + "type": "string", + "description": "The symbol of the agent that made the transaction." + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the transaction." + } + }, + "required": [ + "symbol", + "price", + "agentSymbol", + "timestamp" + ] +} \ No newline at end of file diff --git a/models/Survey.json b/models/Survey.json new file mode 100644 index 0000000..7cd4f44 --- /dev/null +++ b/models/Survey.json @@ -0,0 +1,45 @@ +{ + "description": "A resource survey of a waypoint, detailing a specific extraction location and the types of resources that can be found there.", + "type": "object", + "properties": { + "signature": { + "type": "string", + "description": "A unique signature for the location of this survey. This signature is verified when attempting an extraction using this survey.", + "minLength": 1 + }, + "symbol": { + "type": "string", + "description": "The symbol of the waypoint that this survey is for.", + "minLength": 1 + }, + "deposits": { + "type": "array", + "description": "A list of deposits that can be found at this location.", + "items": { + "$ref": "./SurveyDeposit.json" + } + }, + "expiration": { + "type": "string", + "format": "date-time", + "description": "The date and time when the survey expires. After this date and time, the survey will no longer be available for extraction.", + "minimum": 0 + }, + "size": { + "type": "string", + "description": "The size of the deposit. This value indicates how much can be extracted from the survey before it is exhausted.", + "enum": [ + "SMALL", + "MODERATE", + "LARGE" + ] + } + }, + "required": [ + "signature", + "symbol", + "deposits", + "expiration", + "size" + ] +} \ No newline at end of file diff --git a/models/Survey.yaml b/models/Survey.yaml deleted file mode 100644 index f45910e..0000000 --- a/models/Survey.yaml +++ /dev/null @@ -1,28 +0,0 @@ -description: '' -type: object -x-examples: - example-1: - signature: X1-OE-D2DD38 - deposits: - - COPPER_ORE - expiration: '2022-03-08T05:41:55.514Z' -properties: - signature: - type: string - minLength: 1 - deposits: - type: array - items: - type: string - expiration: - type: string - minLength: 1 -required: - - signature - - deposits - - expiration -examples: - - signature: X1-OE-D2DD38 - deposits: - - COPPER_ORE - expiration: '2022-03-08T05:41:55.514Z' diff --git a/models/SurveyDeposit.json b/models/SurveyDeposit.json new file mode 100644 index 0000000..671a4fd --- /dev/null +++ b/models/SurveyDeposit.json @@ -0,0 +1,13 @@ +{ + "type": "object", + "description": "A surveyed deposit of a mineral or resource available for extraction.", + "properties": { + "symbol": { + "type": "string", + "description": "The symbol of the deposit." + } + }, + "required": [ + "symbol" + ] +} \ No newline at end of file diff --git a/models/System.json b/models/System.json new file mode 100644 index 0000000..4be99e0 --- /dev/null +++ b/models/System.json @@ -0,0 +1,44 @@ +{ + "description": "", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "sectorSymbol": { + "type": "string", + "minLength": 1 + }, + "type": { + "$ref": "./SystemType.json" + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + }, + "waypoints": { + "type": "array", + "items": { + "$ref": "./SystemWaypoint.json" + } + }, + "factions": { + "type": "array", + "items": { + "$ref": "./SystemFaction.json" + } + } + }, + "required": [ + "symbol", + "sectorSymbol", + "type", + "x", + "y", + "waypoints", + "factions" + ] +} \ No newline at end of file diff --git a/models/System.yaml b/models/System.yaml deleted file mode 100644 index 8581157..0000000 --- a/models/System.yaml +++ /dev/null @@ -1,74 +0,0 @@ -description: "" -type: object -x-examples: - example-1: - symbol: X1-OE - sector: X1 - type: RED_STAR - x: 0 - "y": 0 - waypoints: - - X1-OE-PM - - X1-OE-PM01 - - X1-OE-A005 - - X1-OE-25X - factions: - - COMMERCE_REPUBLIC - - MINERS_COLLECTIVE - - SPACERS_GUILD - charted: true - chartedBy: null -examples: - - symbol: X1-OE - sector: X1 - type: RED_STAR - x: 0 - "y": 0 - waypoints: - - X1-OE-PM - - X1-OE-PM01 - - X1-OE-A005 - - X1-OE-25X - factions: - - COMMERCE_REPUBLIC - - MINERS_COLLECTIVE - - SPACERS_GUILD - charted: true - chartedBy: null -properties: - symbol: - type: string - minLength: 1 - sector: - type: string - minLength: 1 - type: - type: string - minLength: 1 - x: - type: integer - "y": - type: integer - waypoints: - type: array - items: - type: string - factions: - type: array - items: - type: string - charted: - type: boolean - chartedBy: - type: - - string - - "null" -required: - - symbol - - sector - - type - - x - - "y" - - waypoints - - factions - - charted diff --git a/models/SystemFaction.json b/models/SystemFaction.json new file mode 100644 index 0000000..1022638 --- /dev/null +++ b/models/SystemFaction.json @@ -0,0 +1,12 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "symbol" + ] +} \ No newline at end of file diff --git a/models/SystemType.json b/models/SystemType.json new file mode 100644 index 0000000..16f3dcc --- /dev/null +++ b/models/SystemType.json @@ -0,0 +1,16 @@ +{ + "type": "string", + "description": "The type of waypoint.", + "enum": [ + "NEUTRON_STAR", + "RED_STAR", + "ORANGE_STAR", + "BLUE_STAR", + "YOUNG_STAR", + "WHITE_DWARF", + "BLACK_HOLE", + "HYPERGIANT", + "NEBULA", + "UNSTABLE" + ] +} \ No newline at end of file diff --git a/models/SystemWaypoint.json b/models/SystemWaypoint.json new file mode 100644 index 0000000..8ca378c --- /dev/null +++ b/models/SystemWaypoint.json @@ -0,0 +1,23 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string" + }, + "type": { + "$ref": "./WaypointType.json" + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } + }, + "required": [ + "symbol", + "type", + "x", + "y" + ] +} \ No newline at end of file diff --git a/models/Trade.yaml b/models/Trade.yaml deleted file mode 100644 index 1d8b987..0000000 --- a/models/Trade.yaml +++ /dev/null @@ -1,29 +0,0 @@ -description: "" -type: object -properties: - waypointSymbol: - type: string - minLength: 1 - tradeSymbol: - type: string - minLength: 1 - credits: - type: integer - units: - type: integer -required: - - waypointSymbol - - tradeSymbol - - credits - - units -x-examples: - example-1: - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - credits: -843 - units: 1 -examples: - - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - credits: 843 - units: 1 diff --git a/models/TradeGood.json b/models/TradeGood.json new file mode 100644 index 0000000..f5bb7ec --- /dev/null +++ b/models/TradeGood.json @@ -0,0 +1,19 @@ +{ + "type": "object", + "properties": { + "symbol": { + "$ref": "./TradeSymbol.json" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "symbol", + "name", + "description" + ] +} \ No newline at end of file diff --git a/models/TradeSymbol.json b/models/TradeSymbol.json new file mode 100644 index 0000000..c76d80f --- /dev/null +++ b/models/TradeSymbol.json @@ -0,0 +1,115 @@ +{ + "type": "string", + "enum": [ + "PRECIOUS_STONES", + "QUARTZ_SAND", + "SILICON_CRYSTALS", + "AMMONIA_ICE", + "LIQUID_HYDROGEN", + "LIQUID_NITROGEN", + "ICE_WATER", + "EXOTIC_MATTER", + "ADVANCED_CIRCUITRY", + "GRAVITON_EMITTERS", + "IRON", + "IRON_ORE", + "COPPER", + "COPPER_ORE", + "ALUMINUM", + "ALUMINUM_ORE", + "SILVER", + "SILVER_ORE", + "GOLD", + "GOLD_ORE", + "PLATINUM", + "PLATINUM_ORE", + "DIAMONDS", + "URANITE", + "URANITE_ORE", + "MERITIUM", + "MERITIUM_ORE", + "HYDROCARBON", + "ANTIMATTER", + "FERTILIZERS", + "FABRICS", + "FOOD", + "JEWELRY", + "MACHINERY", + "FIREARMS", + "ASSAULT_RIFLES", + "MILITARY_EQUIPMENT", + "EXPLOSIVES", + "LAB_INSTRUMENTS", + "AMMUNITION", + "ELECTRONICS", + "SHIP_PLATING", + "EQUIPMENT", + "FUEL", + "MEDICINE", + "DRUGS", + "CLOTHING", + "MICROPROCESSORS", + "PLASTICS", + "POLYNUCLEOTIDES", + "BIOCOMPOSITES", + "NANOBOTS", + "AI_MAINFRAMES", + "QUANTUM_DRIVES", + "ROBOTIC_DRONES", + "CYBER_IMPLANTS", + "GENE_THERAPEUTICS", + "NEURAL_CHIPS", + "MOOD_REGULATORS", + "VIRAL_AGENTS", + "MICRO_FUSION_GENERATORS", + "SUPERGRAINS", + "LASER_RIFLES", + "HOLOGRAPHICS", + "SHIP_SALVAGE", + "RELIC_TECH", + "NOVEL_LIFEFORMS", + "BOTANICAL_SPECIMENS", + "CULTURAL_ARTIFACTS", + "REACTOR_SOLAR_I", + "REACTOR_FUSION_I", + "REACTOR_FISSION_I", + "REACTOR_CHEMICAL_I", + "REACTOR_ANTIMATTER_I", + "ENGINE_IMPULSE_DRIVE_I", + "ENGINE_ION_DRIVE_I", + "ENGINE_ION_DRIVE_II", + "ENGINE_HYPER_DRIVE_I", + "MODULE_MINERAL_PROCESSOR_I", + "MODULE_CARGO_HOLD_I", + "MODULE_CREW_QUARTERS_I", + "MODULE_ENVOY_QUARTERS_I", + "MODULE_PASSENGER_CABIN_I", + "MODULE_MICRO_REFINERY_I", + "MODULE_ORE_REFINERY_I", + "MODULE_FUEL_REFINERY_I", + "MODULE_SCIENCE_LAB_I", + "MODULE_JUMP_DRIVE_I", + "MODULE_JUMP_DRIVE_II", + "MODULE_JUMP_DRIVE_III", + "MODULE_WARP_DRIVE_I", + "MODULE_WARP_DRIVE_II", + "MODULE_WARP_DRIVE_III", + "MODULE_SHIELD_GENERATOR_I", + "MODULE_SHIELD_GENERATOR_II", + "MOUNT_GAS_SIPHON_I", + "MOUNT_GAS_SIPHON_II", + "MOUNT_GAS_SIPHON_III", + "MOUNT_SURVEYOR_I", + "MOUNT_SURVEYOR_II", + "MOUNT_SURVEYOR_III", + "MOUNT_SENSOR_ARRAY_I", + "MOUNT_SENSOR_ARRAY_II", + "MOUNT_SENSOR_ARRAY_III", + "MOUNT_MINING_LASER_I", + "MOUNT_MINING_LASER_II", + "MOUNT_MINING_LASER_III", + "MOUNT_LASER_CANNON_I", + "MOUNT_MISSILE_LAUNCHER_I", + "MOUNT_TURRET_I" + ] +} \ No newline at end of file diff --git a/models/Waypoint.json b/models/Waypoint.json new file mode 100644 index 0000000..b0ab1a2 --- /dev/null +++ b/models/Waypoint.json @@ -0,0 +1,51 @@ +{ + "description": "A waypoint is a location that ships can travel to such as a Planet, Moon or Space Station.", + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "type": { + "$ref": "./WaypointType.json" + }, + "systemSymbol": { + "type": "string", + "minLength": 1 + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + }, + "orbitals": { + "type": "array", + "items": { + "$ref": "./WaypointOrbital.json" + } + }, + "faction": { + "$ref": "./WaypointFaction.json" + }, + "traits": { + "type": "array", + "description": "The traits of the waypoint.", + "items": { + "$ref": "./WaypointTrait.json" + } + }, + "chart": { + "$ref": "./Chart.json" + } + }, + "required": [ + "symbol", + "type", + "systemSymbol", + "x", + "y", + "orbitals", + "traits" + ] +} \ No newline at end of file diff --git a/models/Waypoint.yaml b/models/Waypoint.yaml deleted file mode 100644 index b9e963a..0000000 --- a/models/Waypoint.yaml +++ /dev/null @@ -1,89 +0,0 @@ -description: "" -type: object -x-examples: - example-1: - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - "y": 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null -examples: - - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - "y": 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null -properties: - system: - type: string - minLength: 1 - symbol: - type: string - minLength: 1 - type: - type: string - minLength: 1 - x: - type: integer - "y": - type: integer - orbitals: - type: array - items: - type: string - faction: - type: string - minLength: 1 - features: - type: array - items: - type: string - traits: - type: array - items: - type: string - charted: - type: boolean - chartedBy: - type: - - string - - "null" -required: - - system - - symbol - - type - - x - - "y" - - orbitals - - faction - - features - - traits - - charted diff --git a/models/WaypointFaction.json b/models/WaypointFaction.json new file mode 100644 index 0000000..1022638 --- /dev/null +++ b/models/WaypointFaction.json @@ -0,0 +1,12 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "symbol" + ] +} \ No newline at end of file diff --git a/models/WaypointOrbital.json b/models/WaypointOrbital.json new file mode 100644 index 0000000..2f34ed9 --- /dev/null +++ b/models/WaypointOrbital.json @@ -0,0 +1,13 @@ +{ + "type": "object", + "description": "An orbital is another waypoint that orbits a parent waypoint.", + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "symbol" + ] +} \ No newline at end of file diff --git a/models/WaypointTrait.json b/models/WaypointTrait.json new file mode 100644 index 0000000..d7dc5ca --- /dev/null +++ b/models/WaypointTrait.json @@ -0,0 +1,83 @@ +{ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The unique identifier of the trait.", + "enum": [ + "UNCHARTED", + "MARKETPLACE", + "SHIPYARD", + "OUTPOST", + "SCATTERED_SETTLEMENTS", + "SPRAWLING_CITIES", + "MEGA_STRUCTURES", + "OVERCROWDED", + "HIGH_TECH", + "CORRUPT", + "BUREAUCRATIC", + "TRADING_HUB", + "INDUSTRIAL", + "BLACK_MARKET", + "RESEARCH_FACILITY", + "MILITARY_BASE", + "SURVEILLANCE_OUTPOST", + "EXPLORATION_OUTPOST", + "MINERAL_DEPOSITS", + "COMMON_METAL_DEPOSITS", + "PRECIOUS_METAL_DEPOSITS", + "RARE_METAL_DEPOSITS", + "METHANE_POOLS", + "ICE_CRYSTALS", + "EXPLOSIVE_GASES", + "STRONG_MAGNETOSPHERE", + "VIBRANT_AURORAS", + "SALT_FLATS", + "CANYONS", + "PERPETUAL_DAYLIGHT", + "PERPETUAL_OVERCAST", + "DRY_SEABEDS", + "MAGMA_SEAS", + "SUPERVOLCANOES", + "ASH_CLOUDS", + "VAST_RUINS", + "MUTATED_FLORA", + "TERRAFORMED", + "EXTREME_TEMPERATURES", + "EXTREME_PRESSURE", + "DIVERSE_LIFE", + "SCARCE_LIFE", + "FOSSILS", + "WEAK_GRAVITY", + "STRONG_GRAVITY", + "CRUSHING_GRAVITY", + "TOXIC_ATMOSPHERE", + "CORROSIVE_ATMOSPHERE", + "BREATHABLE_ATMOSPHERE", + "JOVIAN", + "ROCKY", + "VOLCANIC", + "FROZEN", + "SWAMP", + "BARREN", + "TEMPERATE", + "JUNGLE", + "OCEAN", + "STRIPPED" + ] + }, + "name": { + "type": "string", + "description": "The name of the trait." + }, + "description": { + "type": "string", + "description": "A description of the trait." + } + }, + "required": [ + "symbol", + "name", + "description" + ] +} \ No newline at end of file diff --git a/models/WaypointType.json b/models/WaypointType.json new file mode 100644 index 0000000..4b978cb --- /dev/null +++ b/models/WaypointType.json @@ -0,0 +1,15 @@ +{ + "type": "string", + "description": "The type of waypoint.", + "enum": [ + "PLANET", + "GAS_GIANT", + "MOON", + "ORBITAL_STATION", + "JUMP_GATE", + "ASTEROID_FIELD", + "NEBULA", + "DEBRIS_FIELD", + "GRAVITY_WELL" + ] +} \ No newline at end of file diff --git a/redocly.yaml b/redocly.yaml new file mode 100644 index 0000000..a40ea95 --- /dev/null +++ b/redocly.yaml @@ -0,0 +1,18 @@ +# See https://redocly.com/docs/cli/configuration/ + +apis: + # Update the apiName with your actual API name, and the version with your actual API version. + SpaceTraders@2.1.0: + # Update the path to your OpenAPI root file + root: ./reference/SpaceTraders.json + +lint: + extends: + - recommended + +features.openapi: + generateCodeSamples: + languages: + - lang: curl + - lang: Node.js + - lang: Python diff --git a/reference/SpaceTraders.json b/reference/SpaceTraders.json new file mode 100644 index 0000000..f09236b --- /dev/null +++ b/reference/SpaceTraders.json @@ -0,0 +1,2394 @@ +{ + "openapi": "3.0.0", + "info": { + "contact": { + "email": "joel@spacetraders.io", + "name": "Joel Brubaker" + }, + "description": "SpaceTraders is a multiplayer sci-fi strategy game where you acquire and manage a fleet of ships across a growing and dynamic universe.\n\nSimilar to games such as Eve Online, you work with or against other players to establish trade routes, chart new systems, mine precious ores, patrol for pirates, spy on factions, and discover hidden treasures.\n\nSpaceTraders as a game is unique in that it is entirely accessible through open and well-documented API endpoints.\n\nIf this sounds fun and interesting to you, please drop into our Discord and get to know the community. We are actively working on new clients, new ideas and sharing tips for how to play the game.\n\n\n```json http\n{\n \"method\": \"GET\",\n \"url\": \"https://api-server-2-0-0-rc-2-vxxwq5xqdq-uc.a.run.app\",\n}\n```", + "license": { + "name": "No Permission", + "url": "https://choosealicense.com/no-permission/" + }, + "title": "SpaceTraders API", + "version": "2.0.0-rc.2" + }, + "security": [ + { + "AgentToken": [] + } + ], + "servers": [ + { + "description": "v2.0.0-rc.2", + "url": "https://v2-0-0.rc-2.spacetraders.io" + } + ], + "tags": [ + { + "description": "Factions", + "name": "factions" + }, + { + "description": "Fleet", + "name": "fleet" + }, + { + "description": "Contracts", + "name": "contracts" + }, + { + "description": "Systems", + "name": "systems" + }, + { + "description": "Agents", + "name": "agents" + } + ], + "components": { + "requestBodies": {}, + "schemas": {}, + "securitySchemes": { + "AgentToken": { + "description": "When you register a new agent you will be granted a private bearer token which grants authorization to use the API.", + "scheme": "bearer", + "type": "http" + } + } + }, + "paths": { + "/register": { + "post": { + "description": "Creates a new agent and ties it to a temporary Account.\n\nThe agent symbol is a 4-8 character string that will represent your agent. This symbol will prefix the symbol of every ship you own. Agent symbols will be cast to all uppercase characters.\n\nA new agent will be granted an authorization token, a contract with their starting faction, a command ship with a jump drive, and one hundred thousand credits.\n\n> #### Keep your token safe and secure\n>\n> Save your token during the alpha phase. There is no way to regenerate this token without starting a new agent. In the future you will be able to generate and manage your tokens from the SpaceTraders website.\n\nYou can accept your contract using the `/my/contracts/{contractId}/accept` endpoint. You will want to navigate your command ship to a nearby asteroid field and execute the `/my/ships/{shipSymbol}/extract` endpoint to mine various types of ores and minerals.\n\nReturn to the contract destination and execute the `/my/ships/{shipSymbol}/deliver` endpoint to deposit goods into the contract.\n\nWhen your contract is fulfilled, you can call `/my/contracts/{contractId}/fulfill` to retrieve payment.", + "operationId": "register", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "faction": { + "description": "The faction you choose determines your headquarters.", + "enum": [ + "COSMIC", + "VOID", + "GALACTIC", + "QUANTUM", + "DOMINION" + ] + }, + "symbol": { + "description": "How other agents will see your ships and information.", + "example": "BADGER", + "maxLength": 8, + "minLength": 4, + "type": "string" + } + }, + "required": [ + "symbol", + "faction" + ], + "type": "object" + } + } + }, + "description": "" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "contract": { + "$ref": "../models/Contract.json" + }, + "faction": { + "$ref": "../models/Faction.json" + }, + "ship": { + "$ref": "../models/Ship.json" + }, + "token": { + "description": "A Bearer token for accessing secured API endpoints.", + "type": "string" + } + }, + "required": [ + "token", + "agent", + "faction", + "contract", + "ship" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "summary": "Register New Agent", + "tags": [] + } + }, + "/systems": { + "get": { + "description": "Return a list of all systems.", + "operationId": "get-systems", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "items": { + "$ref": "../models/System.json" + }, + "type": "array" + }, + "meta": { + "$ref": "../models/Meta.json" + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "List Systems", + "tags": [ + "systems" + ], + "parameters": [ + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "page", + "description": "What entry offset to request" + }, + { + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100 + }, + "in": "query", + "name": "limit", + "description": "How many entries to return per page" + } + ] + } + }, + "/systems/{systemSymbol}": { + "get": { + "description": "Get the details of a system.", + "operationId": "get-system", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/System.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get System", + "tags": [ + "systems" + ] + }, + "parameters": [ + { + "description": "The system symbol", + "in": "path", + "name": "systemSymbol", + "required": true, + "schema": { + "default": "X1-OE", + "type": "string" + } + } + ] + }, + "/systems/{systemSymbol}/waypoints": { + "get": { + "description": "Fetch all of the waypoints for a given system. System must be charted or a ship must be present to return waypoint details.", + "operationId": "get-system-waypoints", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "items": { + "$ref": "../models/Waypoint.json" + }, + "type": "array" + }, + "meta": { + "$ref": "../models/Meta.json" + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "List Waypoints", + "tags": [ + "systems" + ], + "parameters": [ + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "page", + "description": "What entry offset to request" + }, + { + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100 + }, + "in": "query", + "name": "limit", + "description": "How many entries to return per page" + } + ] + }, + "parameters": [ + { + "description": "The system symbol", + "in": "path", + "name": "systemSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "/systems/{systemSymbol}/waypoints/{waypointSymbol}": { + "get": { + "description": "View the details of a waypoint.", + "operationId": "get-waypoint", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/Waypoint.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Waypoint", + "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" + } + } + ] + }, + "/systems/{systemSymbol}/waypoints/{waypointSymbol}/market": { + "get": { + "description": "Retrieve imports, exports and exchange data from a marketplace. Imports can be sold, exports can be purchased, and exchange goods can be purchased or sold. Send a ship to the waypoint to access trade good prices and recent transactions.", + "operationId": "get-market", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "$ref": "../models/Market.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Market", + "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" + } + } + ] + }, + "/systems/{systemSymbol}/waypoints/{waypointSymbol}/shipyard": { + "get": { + "description": "Get the shipyard for a waypoint.", + "operationId": "get-shipyard", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/Shipyard.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Shipyard", + "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" + } + } + ] + }, + "/systems/{systemSymbol}/waypoints/{waypointSymbol}/jump-gate": { + "get": { + "description": "Get jump gate details for a waypoint.", + "operationId": "get-jump-gate", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/JumpGate.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Jump Gate", + "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": "List all discovered factions in the game.", + "operationId": "get-factions", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "items": { + "$ref": "../models/Faction.json" + }, + "type": "array" + }, + "meta": { + "$ref": "../models/Meta.json" + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "" + } + }, + "summary": "List Factions", + "tags": [ + "factions" + ], + "parameters": [ + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "page", + "description": "What entry offset to request" + }, + { + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100 + }, + "in": "query", + "name": "limit", + "description": "How many entries to return per page" + } + ] + } + }, + "/factions/{factionSymbol}": { + "get": { + "description": "View the details of a faction.", + "operationId": "get-faction", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "$ref": "../models/Faction.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "summary": "Get Faction", + "tags": [ + "factions" + ] + }, + "parameters": [ + { + "description": "The faction symbol", + "in": "path", + "name": "factionSymbol", + "required": true, + "schema": { + "default": "CGR", + "type": "string" + } + } + ] + }, + "/my/agent": { + "get": { + "description": "Fetch your agent's details.", + "operationId": "get-my-agent", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "$ref": "../models/Agent.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "My Agent Details", + "tags": [ + "agents" + ] + } + }, + "/my/contracts": { + "get": { + "description": "List all of your contracts.", + "operationId": "get-contracts", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "items": { + "$ref": "../models/Contract.json" + }, + "type": "array" + }, + "meta": { + "$ref": "../models/Meta.json" + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "List Contracts", + "tags": [ + "contracts" + ], + "parameters": [ + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "page", + "description": "What entry offset to request" + }, + { + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100 + }, + "in": "query", + "name": "limit", + "description": "How many entries to return per page" + } + ] + } + }, + "/my/contracts/{contractId}": { + "get": { + "description": "Get the details of a contract by ID.", + "operationId": "get-contract", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "$ref": "../models/Contract.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Contract", + "tags": [ + "contracts" + ] + }, + "parameters": [ + { + "description": "The contract ID", + "in": "path", + "name": "contractId", + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "/my/contracts/{contractId}/accept": { + "parameters": [ + { + "in": "path", + "name": "contractId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Accept a contract.", + "operationId": "accept-contract", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "contract": { + "$ref": "../models/Contract.json" + } + }, + "required": [ + "contract", + "agent" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Accept Contract", + "tags": [ + "contracts" + ] + } + }, + "/my/contracts/{contractId}/deliver": { + "parameters": [ + { + "description": "The ID of the contract", + "in": "path", + "name": "contractId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Deliver cargo on a given contract.", + "operationId": "deliver-contract", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "shipSymbol": { + "type": "string" + }, + "tradeSymbol": { + "type": "string" + }, + "units": { + "type": "integer" + } + }, + "required": [ + "shipSymbol", + "tradeSymbol", + "units" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "contract": { + "$ref": "../models/Contract.json" + }, + "cargo": { + "$ref": "../models/ShipCargo.json" + } + }, + "required": [ + "contract", + "cargo" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Deliver Contract", + "tags": [ + "contracts" + ] + } + }, + "/my/contracts/{contractId}/fulfill": { + "parameters": [ + { + "description": "The ID of the contract", + "in": "path", + "name": "contractId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Fulfill a contract", + "operationId": "fulfill-contract", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "contract": { + "$ref": "../models/Contract.json" + } + }, + "required": [ + "contract", + "agent" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Fulfill Contract", + "tags": [ + "contracts" + ] + } + }, + "/my/ships": { + "get": { + "description": "Retrieve all of your ships.", + "operationId": "get-my-ships", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "items": { + "$ref": "../models/Ship.json" + }, + "type": "array" + }, + "meta": { + "$ref": "../models/Meta.json" + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "List Ships", + "tags": [ + "fleet" + ], + "parameters": [ + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "page", + "description": "What entry offset to request" + }, + { + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100 + }, + "in": "query", + "name": "limit", + "description": "How many entries to return per page" + } + ] + }, + "post": { + "description": "Purchase a ship", + "operationId": "purchase-ship", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "shipType": { + "$ref": "../models/ShipType.json" + }, + "waypointSymbol": { + "description": "The symbol of the waypoint you want to purchase the ship at.", + "type": "string" + } + }, + "required": [ + "shipType", + "waypointSymbol" + ], + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "ship": { + "$ref": "../models/Ship.json" + } + }, + "required": [ + "ship", + "agent" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Purchase Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}": { + "get": { + "description": "Retrieve the details of your ship.", + "operationId": "get-my-ship", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/Ship.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Ship", + "tags": [ + "fleet" + ] + }, + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "/my/ships/{shipSymbol}/orbit": { + "parameters": [ + { + "description": "The symbol of the ship", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Attempt to move your ship into orbit at it's current location. The request will only succeed if your ship is capable of moving into orbit at the time of the request.\n\nThe endpoint is idempotent - successive calls will succeed even if the ship is already in orbit.", + "operationId": "orbit-ship", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "title": "Orbit Ship 200 Response", + "description": "", + "properties": { + "data": { + "properties": { + "nav": { + "$ref": "../models/ShipNav.json" + } + }, + "type": "object", + "required": [ + "nav" + ] + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The ship has successfully moved into orbit at it's current location." + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Orbit Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/refine": { + "parameters": [ + { + "description": "The symbol of the ship", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Attempt to refine the raw materials on your ship. The request will only succeed if your ship is capable of refining at the time of the request.", + "operationId": "ship-refine", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "produce": { + "type": "string", + "enum": [ + "IRON", + "COPPER", + "SILVER", + "GOLD", + "ALUMINUM", + "PLATINUM", + "URANITE", + "MERITIUM", + "FUEL" + ] + } + }, + "required": [ + "produce" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "title": "Ship Refine 200 Response", + "description": "", + "properties": { + "data": { + "properties": { + "cargo": { + "$ref": "../models/ShipCargo.json" + }, + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "produced": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tradeSymbol": { + "type": "string" + }, + "units": { + "type": "integer" + } + } + } + }, + "consumed": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tradeSymbol": { + "type": "string" + }, + "units": { + "type": "integer" + } + } + } + } + }, + "type": "object", + "required": [ + "cargo", + "cooldown", + "produced", + "consumed" + ] + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The ship has successfully started refining." + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Ship Refine", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/chart": { + "parameters": [ + { + "description": "The symbol of the ship", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Command a ship to chart the current waypoint.\n\nWaypoints in the universe are uncharted by default. These locations will not show up in the API until they have been charted by a ship.\n\nCharting a location will record your agent as the one who created the chart.", + "operationId": "create-chart", + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "chart": { + "$ref": "../models/Chart.json" + }, + "waypoint": { + "$ref": "../models/Waypoint.json" + } + }, + "required": [ + "chart", + "waypoint" + ], + "type": "object" + } + }, + "type": "object", + "required": [ + "data" + ] + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Create Chart", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/cooldown": { + "get": { + "description": "Retrieve the details of your ship's reactor cooldown. Some actions such as activating your jump drive, scanning, or extracting resources taxes your reactor and results in a cooldown.\n\nYour ship cannot perform additional actions until your cooldown has expired. The duration of your cooldown is relative to the power consumption of the related modules or mounts for the action taken.\n\nResponse returns a 204 status code (no-content) when the ship has no cooldown.", + "operationId": "get-ship-cooldown", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "$ref": "../models/Cooldown.json" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + }, + "204": { + "description": "No cooldown" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Get Ship Cooldown", + "tags": [ + "fleet" + ] + }, + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ] + }, + "/my/ships/{shipSymbol}/dock": { + "parameters": [ + { + "description": "The symbol of the ship", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Attempt to dock your ship at it's current location. Docking will only succeed if the waypoint is a dockable location, and your ship is capable of docking at the time of the request.\n\nThe endpoint is idempotent - successive calls will succeed even if the ship is already docked.", + "operationId": "dock-ship", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "title": "Dock Ship 200 Response", + "description": "", + "properties": { + "data": { + "properties": { + "nav": { + "$ref": "../models/ShipNav.json" + } + }, + "required": [ + "nav" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The ship has successfully docked at it's current location." + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Dock Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/survey": { + "parameters": [ + { + "description": "The symbol of the ship", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "If you want to target specific yields for an extraction, you can survey a waypoint, such as an asteroid field, and send the survey in the body of the extract request. Each survey may have multiple deposits, and if a symbol shows up more than once, that indicates a higher chance of extracting that resource.\n\nYour ship will enter a cooldown between consecutive survey requests. Surveys will eventually expire after a period of time. Multiple ships can use the same survey for extraction.", + "operationId": "create-survey", + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "surveys": { + "items": { + "$ref": "../models/Survey.json" + }, + "type": "array" + } + }, + "required": [ + "surveys", + "cooldown" + ], + "type": "object" + } + }, + "type": "object", + "required": [ + "data" + ] + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Create Survey", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/extract": { + "parameters": [ + { + "description": "The ship symbol", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Extract resources from the waypoint into your ship. Send an optional survey as the payload to target specific yields.", + "operationId": "extract-resources", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "survey": { + "$ref": "../models/Survey.json" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "extraction": { + "$ref": "../models/Extraction.json" + }, + "cargo": { + "$ref": "../models/ShipCargo.json" + } + }, + "required": [ + "extraction", + "cooldown", + "cargo" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Extract Resources", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/jettison": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Jettison cargo from your ship's cargo hold.", + "operationId": "jettison", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "symbol": { + "type": "string" + }, + "units": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "symbol", + "units" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "cargo": { + "$ref": "../models/ShipCargo.json" + } + }, + "required": [ + "cargo" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Jettison Cargo", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/jump": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Jump your ship instantly to a target system. Unlike other forms of navigation, jumping requires a unit of antimatter.", + "operationId": "jump-ship", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "systemSymbol": { + "description": "The system symbol to jump to.", + "type": "string" + } + }, + "required": [ + "systemSymbol" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "nav": { + "$ref": "../models/ShipNav.json" + } + }, + "required": [ + "route", + "cooldown" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Jump Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/navigate": { + "parameters": [ + { + "description": "The ship symbol", + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Navigate to a target destination. The destination must be located within the same system as the ship. Navigating will consume the necessary fuel and supplies from the ship's manifest, and will pay out crew wages from the agent's account.\n\nThe returned response will detail the route information including the expected time of arrival. Most ship actions are unavailable until the ship has arrived at it's destination.\n\nTo travel between systems, see the ship's warp or jump actions.", + "operationId": "navigate-ship", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "waypointSymbol": { + "description": "The target destination.", + "type": "string" + } + }, + "required": [ + "waypointSymbol" + ], + "type": "object" + } + } + }, + "description": "" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "fuel": { + "$ref": "../models/ShipFuel.json" + }, + "nav": { + "$ref": "../models/ShipNav.json" + } + }, + "required": [ + "nav", + "fuel" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The successful transit information including the route details and changes to ship fuel, supplies, and crew wages paid. The route includes the expected time of arrival." + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Navigate Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/warp": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Warp your ship to a target destination in another system. Warping will consume the necessary fuel and supplies from the ship's manifest, and will pay out crew wages from the agent's account.\n\nThe returned response will detail the route information including the expected time of arrival. Most ship actions are unavailable until the ship has arrived at it's destination.", + "operationId": "warp-ship", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "waypointSymbol": { + "description": "The target destination.", + "type": "string" + } + }, + "required": [ + "waypointSymbol" + ], + "type": "object" + } + } + }, + "description": "" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "fuel": { + "$ref": "../models/ShipFuel.json" + }, + "nav": { + "$ref": "../models/ShipNav.json" + } + }, + "required": [ + "nav", + "fuel" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The successful transit information including the route details and changes to ship fuel, supplies, and crew wages paid. The route includes the expected time of arrival." + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Warp Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/sell": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Sell cargo.", + "operationId": "sell-cargo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "SellCargoRequest", + "properties": { + "symbol": { + "type": "string" + }, + "units": { + "type": "integer" + } + }, + "required": [ + "symbol", + "units" + ], + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "title": "Sell Cargo 201 Response", + "description": "", + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "cargo": { + "$ref": "../models/ShipCargo.json" + }, + "transaction": { + "$ref": "../models/MarketTransaction.json" + } + }, + "required": [ + "cargo", + "transaction", + "agent" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Sell Cargo", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/scan/systems": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Activate your ship's sensor arrays to scan for system information.", + "operationId": "create-ship-system-scan", + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "systems": { + "items": { + "$ref": "../models/ScannedSystem.json" + }, + "type": "array" + } + }, + "required": [ + "cooldown", + "systems" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Scan Systems", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/scan/ships": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Activate your ship's sensor arrays to scan for ship information.", + "operationId": "create-ship-ship-scan", + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "cooldown": { + "$ref": "../models/Cooldown.json" + }, + "ships": { + "items": { + "$ref": "../models/ScannedShip.json" + }, + "type": "array" + } + }, + "required": [ + "cooldown", + "ships" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Scan Ships", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/refuel": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Refuel your ship from the local market.", + "operationId": "refuel-ship", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "", + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "fuel": { + "$ref": "../models/ShipFuel.json" + } + }, + "required": [ + "agent", + "fuel" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Refuel Ship", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/purchase": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Purchase cargo.", + "operationId": "purchase-cargo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Purchase Cargo Request", + "properties": { + "symbol": { + "type": "string" + }, + "units": { + "type": "integer" + } + }, + "required": [ + "symbol", + "units" + ], + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "title": "Purchase Cargo 201 Response", + "description": "", + "properties": { + "data": { + "properties": { + "agent": { + "$ref": "../models/Agent.json" + }, + "cargo": { + "$ref": "../models/ShipCargo.json" + }, + "transaction": { + "$ref": "../models/MarketTransaction.json" + } + }, + "required": [ + "cargo", + "transaction", + "agent" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Purchase Cargo", + "tags": [ + "fleet" + ] + } + }, + "/my/ships/{shipSymbol}/transfer": { + "parameters": [ + { + "in": "path", + "name": "shipSymbol", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "description": "Transfer cargo between ships.", + "operationId": "transfer-cargo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Transfer Cargo Request", + "properties": { + "tradeSymbol": { + "type": "string" + }, + "units": { + "type": "integer" + }, + "shipSymbol": { + "type": "string" + } + }, + "required": [ + "tradeSymbol", + "units", + "shipSymbol" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "title": "Transfer Cargo 200 Response", + "description": "", + "properties": { + "data": { + "properties": { + "cargo": { + "$ref": "../models/ShipCargo.json" + } + }, + "required": [ + "cargo" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Created" + } + }, + "security": [ + { + "AgentToken": [] + } + ], + "summary": "Transfer Cargo", + "tags": [ + "fleet" + ] + } + } + } +} \ No newline at end of file diff --git a/reference/SpaceTraders.yaml b/reference/SpaceTraders.yaml deleted file mode 100644 index b6bd22d..0000000 --- a/reference/SpaceTraders.yaml +++ /dev/null @@ -1,2986 +0,0 @@ -openapi: 3.1.0 -info: - title: SpaceTraders API - version: 2.0.0-alpha - summary: SpaceTraders is a unique multiplayer game built on a free Web API. - contact: - name: Joel Brubaker - email: joel@spacetraders.io - license: - 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. - - Similar to games such as Eve Online, you work with or against other players to establish trade routes, chart new systems, mine precious ores, patrol for pirates, spy on factions, and discover hidden treasures. - - But what makes SpaceTraders unique is that the game is entirely accessible through open and well-documented API endpoints. In fact, SpaceTraders doesn't have a first-class client to play the game - if you want to take it for a spin, you should try one of our community-created web clients, or use the API documentation to see how you might play a game through an API. - - If this sounds fun and interesting to you, please drop into our Discord and get to know the community. We are actively working on new clients, new ideas and sharing tips for how to play the game. - - - ```json http - { - "method": "GET", - "url": "https://v2-0-0.alpha.spacetraders.io", - } - ``` -servers: - - url: 'https://v2-0-0.alpha.spacetraders.io' - description: v2.0.0-alpha -paths: - /agents: - post: - summary: Register New Agent - tags: - - agents - responses: - '201': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - token: - type: string - agent: - $ref: ../models/Agent.yaml - faction: - $ref: ../models/Faction.yaml - contract: - $ref: ../models/Contract.yaml - ship: - $ref: ../models/Ship.yaml - examples: - Success: - value: - data: - token: string - agent: - accountId: cl0hok34m0003ks0jjql5q8f2 - symbol: EMBER - headquarters: X1-OE-PM - credits: 0 - faction: - symbol: COMMERCE_REPUBLIC - name: Commerce Repubic - description: The Commerce Republic takes capital from top tier worlds and invests it into new systems with high potential for growth. - headquarters: X1-OE-PM - traits: - - BUREAUCRATIC - - CAPITALISTIC - - GUILD - - ESTABLISHED - contract: - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: '2022-03-11T05:16:59.113Z' - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' - ship: - symbol: string - frame: string - reactor: string - engine: string - fuel: 0 - modules: - - string - mounts: - - string - registration: - factionSymbol: string - agentSymbol: string - fee: 0 - role: string - integrity: - frame: 0 - reactor: 0 - engine: 0 - status: string - location: string - cargo: - - tradeSymbol: string - units: 0 - operationId: post-agents - description: |- - Creates a new agent and ties it to a temporary Account. Use `COMMERCE_REPUBLIC` as your starting faction if you don't know any other factions to choose from. - - The agent symbol is a 4-8 character string that will represent your agent. This symbol will prefix the symbol of every ship you own. Agent symbols will be cast to all uppercase characters. - - A new agent will be granted an authorization token, a contract with their starting faction, a command ship with a jump drive, and one hundred thousand credits. - - > #### Keep your token safe and secure - > - > Save your token during the alpha phase. There is no way to regenerate this token without starting a new agent. In the future you will be able to generate and manage your tokens from the SpaceTraders website. - - You can accept your contract using the `/my/contracts/{contractId}/accept` endpoint. You will want to navigate your command ship to a nearby asteroid field waypoint, and execute the `/my/ships/{shipSymbol}/accept` endpoint to mine various types of ores and minerals. - - Return to the contract destination and execute the `/my/ships/{shipSymbol}/deliver` endpoint to deposit goods into the contract. - - When your contract is fulfilled, you can call `/my/contracts/{contractId}/fulfill` to retrieve payment. - requestBody: - content: - application/json: - schema: - type: object - properties: - symbol: - type: string - description: How other agents will see your ships and information. - minLength: 4 - maxLength: 8 - example: BADGER - faction: - type: string - default: COMMERCE_REPUBLIC - description: The faction you choose determines your headquarters. - description: '' - /my/agent: - get: - summary: My Agent Details - tags: - - agents - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - $ref: ../models/Agent.yaml - examples: - Agent: - value: - data: - accountId: cl0hok34m0003ks0jjql5q8f2 - symbol: EMBER - headquarters: X1-OE-PM - credits: 0 - operationId: get-my-agent - security: - - AgentToken: [] - description: Fetch your agent's details. - '/my/ships/{shipSymbol}/chart': - post: - summary: Chart Waypoint - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - submitted: - type: array - items: - type: string - examples: - Success: - value: - data: - submitted: - - X1-ZZ - - X1-ZZ-7-EE - operationId: 'post-my-ships-:shipSymbol-chart' - description: |- - Command a ship to chart the current system and/or waypoint. - - Systems and waypoints in the universe are uncharted by default. These locations will not show up in the API until they have been charted by a ship. - - Charting a location will record your agent as the one who created the chart. - - Returns an array of system / waypoint symbols that have been charted. - security: - - AgentToken: [] - tags: - - systems - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The symbol of the ship - '/my/ships/{shipSymbol}/deliver': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The symbol of the ship - post: - summary: Deliver on Contract - tags: - - contracts - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: -30000 - properties: - data: - $ref: ../models/ContractDelivery.yaml - required: - - data - operationId: post-my-ships-shipSymbol-deliver - security: - - AgentToken: [] - requestBody: - content: - application/json: - schema: - type: object - properties: - contractId: - type: string - tradeSymbol: - type: string - units: - type: integer - required: - - contractId - - tradeSymbol - description: Deliver cargo on a given contract. - '/my/ships/{shipSymbol}/dock': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The symbol of the ship - post: - summary: Dock Ship - tags: - - navigation - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - properties: - data: - type: object - properties: - status: - type: string - required: - - status - required: - - data - x-examples: - example-1: - data: - status: DOCKED - examples: - Success: - value: - data: - status: DOCKED - operationId: post-my-ships-shipSymbol-dock - security: - - AgentToken: [] - description: Transition your ship from orbit to docked. Consecutive calls to this endpoint will succeed. - '/my/ships/{shipSymbol}/orbit': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The symbol of the ship - post: - summary: Orbit Ship - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - status: ORBIT - properties: - data: - type: object - properties: - status: - type: string - required: - - data - examples: - Success: - value: - data: - status: ORBIT - operationId: post-my-ships-shipSymbol-orbit - security: - - AgentToken: [] - 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': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Jettison Cargo - tags: - - ships - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - properties: - data: - type: object - properties: - tradeSymbol: - type: string - minLength: 1 - units: - type: integer - required: - - tradeSymbol - - units - required: - - data - x-examples: - example-1: - data: - tradeSymbol: ALUMINUM - units: 95 - examples: - Success: - value: - data: - tradeSymbol: ALUMINUM - units: 95 - operationId: post-my-ships-shipSymbol-jettison - description: Jettison cargo from your ship's cargo hold. - security: - - AgentToken: [] - requestBody: - content: - application/json: - schema: - type: object - properties: - tradeSymbol: - type: string - units: - type: integer - minimum: 1 - '/my/ships/{shipSymbol}/extract': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The ship symbol - post: - summary: Extract Resources - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - extraction: - shipSymbol: 4B902A-1 - yield: - tradeSymbol: SILICON - units: 16 - cooldown: - duration: 119 - expiration: '2022-03-12T00:41:29.371Z' - properties: - data: - type: object - required: - - extraction - - cooldown - properties: - extraction: - $ref: ../models/Extraction.yaml - cooldown: - $ref: ../models/Cooldown.yaml - required: - - data - examples: - Success: - value: - data: - extraction: - shipSymbol: 4B902A-1 - yield: - tradeSymbol: SILICON - units: 16 - cooldown: - duration: 119 - expiration: '2022-03-12T00:41:29.371Z' - operationId: post-my-ships-shipSymbol-extract - requestBody: - content: - application/json: - schema: - type: - - object - - 'null' - properties: - survey: - $ref: ../models/Survey.yaml - examples: - No Survey: - value: {} - With Survey: - value: - survey: - signature: X1-OE-D2DD38 - deposits: - - COPPER_ORE - 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: [] - tags: - - extract - get: - summary: Extraction Cooldown - operationId: get-my-ships-shipSymbol-extract - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - cooldown: - duration: 119 - expiration: '2022-03-12T00:41:29.285Z' - properties: - data: - type: object - required: - - cooldown - properties: - cooldown: - $ref: ../models/Cooldown.yaml - required: - - data - examples: - Success: - value: - data: - cooldown: - duration: 119 - expiration: '2022-03-12T00:41:29.285Z' - description: Get the status of your last extraction. - security: - - AgentToken: [] - tags: - - extract - '/my/ships/{shipSymbol}/survey': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Survey Waypoint - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - signature: X1-OE-D2DD38 - deposits: - - COPPER_ORE - 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' - - signature: X1-OE-0E326C - deposits: - - ALUMINUM_ORE - - SILICON - 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' - - signature: X1-OE-86C3A1 - deposits: - - COPPER_ORE - - COPPER_ORE - - IRON_ORE - 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' - - signature: X1-OE-9913BD - deposits: - - QUARTZ - expiration: '2022-03-08T05:37:45.523Z' - - signature: X1-OE-8D87D2 - deposits: - - COPPER_ORE - - SILICON - expiration: '2022-03-08T05:32:57.524Z' - properties: - data: - type: object - properties: - surveys: - type: array - items: - $ref: ../models/Survey.yaml - cooldown: - $ref: ../models/Cooldown.yaml - required: - - data - examples: - Success: - value: - data: - cooldown: - duration: 899 - expiration: '2022-03-12T02:11:35.618Z' - surveys: - - signature: X1-OE-397C82 - deposits: - - SILICON - 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' - - signature: X1-OE-E6480F - deposits: - - ALUMINUM_ORE - - IRON_ORE - - QUARTZ - - SILICON - expiration: '2022-03-12T02:18:00.626Z' - - signature: X1-OE-660BE9 - deposits: - - ALUMINUM_ORE - expiration: '2022-03-12T02:20:45.626Z' - - signature: X1-OE-D64798 - deposits: - - COPPER_ORE - - QUARTZ - - SILICON - expiration: '2022-03-12T02:07:33.626Z' - - signature: X1-OE-F799F3 - deposits: - - IRON_ORE - expiration: '2022-03-12T02:23:16.627Z' - operationId: post-my-ships-shipSymbol-survey - security: - - AgentToken: [] - description: |- - If you want to target specific yields for an extraction, you can survey a waypoint, such as an asteroid field, and send the survey in the body of the extract request. Each survey may have multiple deposits, and if a symbol shows up more than once, that indicates a higher chance of extracting that resource. - - Your ship will enter a cooldown between consecutive survey requests. Surveys will eventually expire after a period of time. Multiple ships can use the same survey for extraction. - tags: - - extract - get: - summary: Survey Cooldown - tags: - - extract - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - cooldown: - $ref: ../models/Cooldown.yaml - examples: - Success: - value: - data: - cooldown: - duration: 899 - 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': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Jump Ship - tags: - - navigation - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - jump: - shipSymbol: 1D7FDA-1 - destination: 00E0B1 - cooldown: - duration: 719 - expiration: '2022-03-12T00:52:56.735Z' - properties: - data: - type: object - required: - - jump - - cooldown - properties: - jump: - type: object - required: - - shipSymbol - - destination - properties: - shipSymbol: - type: string - minLength: 1 - destination: - type: string - minLength: 1 - cooldown: - $ref: ../models/Cooldown.yaml - required: - - data - examples: - Success: - value: - data: - jump: - shipSymbol: 1D7FDA-1 - destination: 00E0B1 - cooldown: - duration: 719 - expiration: '2022-03-12T00:52:56.735Z' - operationId: post-my-ships-shipSymbol-jump - security: - - AgentToken: [] - requestBody: - content: - application/json: - schema: - type: object - properties: - destination: - type: string - description: The system symbol to jump to. - get: - summary: Jump Cooldown - operationId: get-my-ships-shipSymbol-jump - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - cooldown: - duration: 719 - expiration: '2022-03-12T00:52:56.735Z' - properties: - data: - type: object - required: - - cooldown - properties: - cooldown: - $ref: ../models/Cooldown.yaml - required: - - data - security: - - AgentToken: [] - tags: - - navigation - '/my/ships/{shipSymbol}/purchase': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Purchase Cargo - tags: - - trade - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - credits: -843 - units: 1 - properties: - data: - $ref: ../models/Trade.yaml - required: - - data - examples: - Success: - value: - data: - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - credits: -843 - units: 1 - operationId: post-my-ships-shipSymbol-purchase - security: - - AgentToken: [] - requestBody: - content: - application/json: - schema: - type: object - properties: - tradeSymbol: - type: string - units: - type: integer - '/my/ships/{shipSymbol}/sell': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Sell Cargo - tags: - - trade - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - waypointSymbol: X1-OE-PM - tradeSymbol: SILICON - credits: 144 - units: -1 - properties: - data: - $ref: ../models/Trade.yaml - required: - - data - examples: - Success: - value: - data: - waypointSymbol: X1-OE-PM - tradeSymbol: SILICON - credits: 144 - units: -1 - operationId: post-my-ships-shipSymbol-sell - description: Sell cargo from your ship's hold to the local market. - security: - - AgentToken: [] - requestBody: - content: - application/json: - schema: - type: object - properties: - tradeSymbol: - type: string - units: - type: integer - description: '' - '/my/ships/{shipSymbol}/refuel': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Refuel Ship - tags: - - navigation - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - properties: - data: - type: object - properties: - credits: - type: integer - fuel: - type: integer - required: - - credits - - fuel - required: - - data - x-examples: - example-1: - data: - credits: 0 - fuel: 0 - examples: - Success: - value: - data: - credits: -1920 - fuel: 800 - operationId: post-my-ships-shipSymbol-refuel - security: - - AgentToken: [] - '/my/ships/{shipSymbol}/deploy': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The ship symbol - post: - summary: Deploy Asset - tags: - - markets - responses: - '204': - description: OK - operationId: post-my-ships-shipSymbol-deploy - security: - - AgentToken: [] - description: |- - Use this endpoint to deploy a Communications Relay to a waypoint. A waypoint with a communications relay will allow agents to retrieve price information from the market. Without a relay, agents must send a ship to a market to retrieve price information. - - Communication relays can be purchased from a market that exports `COMM_RELAY_I`. - requestBody: - content: - application/json: - schema: - type: object - properties: - tradeSymbol: - type: string - required: - - tradeSymbol - '/my/ships/{shipSymbol}/scan': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - post: - summary: Scan - tags: - - ships - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - ships: - - symbol: COMMERCE_REPUBLIC-0060A0 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: EXCAVATOR - frameSymbol: FRAME_HEAVY_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:14.725Z' - - symbol: ZANZIBAR_TRIKES-DF0AAF - registration: - factionSymbol: ZANZIBAR_TRIKES - role: HAULER - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:00.725Z' - - symbol: ZANZIBAR_TRIKES-9B80BE - registration: - factionSymbol: ZANZIBAR_TRIKES - role: TRANSPORT - frameSymbol: FRAME_TRANSPORT - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:06.725Z' - - symbol: COMMERCE_REPUBLIC-117520 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: HARVESTER - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:19:55.725Z' - - symbol: SPACERS_GUILD-609AA5 - registration: - factionSymbol: SPACERS_GUILD - role: HAULER - frameSymbol: FRAME_FRIGATE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:19:38.725Z' - - symbol: MINERS_COLLECTIVE-7AD322 - registration: - factionSymbol: MINERS_COLLECTIVE - role: EXCAVATOR - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:19:11.725Z' - - symbol: ZANZIBAR_TRIKES-AE6D78 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: HAULER - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:44.725Z' - - symbol: SPACERS_GUILD-92828B - registration: - factionSymbol: SPACERS_GUILD - role: SURVEYOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:20:49.726Z' - - symbol: ZANZIBAR_TRIKES-B5EAD1 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: TRANSPORT - frameSymbol: FRAME_TRANSPORT - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-08T05:20:25.726Z' - - symbol: ZANZIBAR_TRIKES-6A4E0D - registration: - factionSymbol: ZANZIBAR_TRIKES - role: HAULER - frameSymbol: FRAME_EXPLORER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-08T05:19:19.726Z' - cooldown: 60 - properties: - data: - oneOf: - - properties: - ships: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/ScannedShip.yaml - cooldown: - $ref: ../models/Cooldown.yaml - required: - - ships - - cooldown - - properties: - cooldown: - $ref: ../models/Cooldown.yaml - system: - $ref: ../models/System.yaml - - properties: - cooldown: - $ref: ../models/Cooldown.yaml - waypoint: - $ref: ../models/Waypoint.yaml - type: object - required: - - data - examples: - Approaching Ships: - value: - data: - cooldown: - duration: 59 - expiration: '2022-03-12T00:42:44.220Z' - ships: - - symbol: SPACERS_GUILD-65E1BA - registration: - factionSymbol: SPACERS_GUILD - role: EXCAVATOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:14.222Z' - - symbol: MINERS_COLLECTIVE-C6ACCA - registration: - factionSymbol: MINERS_COLLECTIVE - role: HARVESTER - frameSymbol: FRAME_INTERCEPTOR - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:38.222Z' - - symbol: COMMERCE_REPUBLIC-866DC7 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: SURVEYOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:45:21.222Z' - - symbol: SPACERS_GUILD-2B1D01 - registration: - factionSymbol: SPACERS_GUILD - role: SURVEYOR - frameSymbol: FRAME_HEAVY_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:53.222Z' - - symbol: MINERS_COLLECTIVE-2F238C - registration: - factionSymbol: MINERS_COLLECTIVE - role: HAULER - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:07.222Z' - - symbol: ZANZIBAR_TRIKES-ACF237 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: HAULER - frameSymbol: FRAME_INTERCEPTOR - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:22.223Z' - - symbol: SPACERS_GUILD-94A474 - registration: - factionSymbol: SPACERS_GUILD - role: EXCAVATOR - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:43:51.223Z' - - symbol: ZANZIBAR_TRIKES-648BA8 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: PATROL - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:56.223Z' - - symbol: COMMERCE_REPUBLIC-1EED24 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: PATROL - frameSymbol: FRAME_EXPLORER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:45:23.223Z' - - symbol: ZANZIBAR_TRIKES-A5600D - registration: - factionSymbol: ZANZIBAR_TRIKES - role: PATROL - frameSymbol: FRAME_FRIGATE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:00.223Z' - Departing Ships: - value: - data: - cooldown: - duration: 59 - expiration: '2022-03-12T00:42:44.220Z' - ships: - - symbol: SPACERS_GUILD-65E1BA - registration: - factionSymbol: SPACERS_GUILD - role: EXCAVATOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:14.222Z' - - symbol: MINERS_COLLECTIVE-C6ACCA - registration: - factionSymbol: MINERS_COLLECTIVE - role: HARVESTER - frameSymbol: FRAME_INTERCEPTOR - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:38.222Z' - - symbol: COMMERCE_REPUBLIC-866DC7 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: SURVEYOR - frameSymbol: FRAME_LIGHT_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:45:21.222Z' - - symbol: SPACERS_GUILD-2B1D01 - registration: - factionSymbol: SPACERS_GUILD - role: SURVEYOR - frameSymbol: FRAME_HEAVY_FREIGHTER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:53.222Z' - - symbol: MINERS_COLLECTIVE-2F238C - registration: - factionSymbol: MINERS_COLLECTIVE - role: HAULER - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:07.222Z' - - symbol: ZANZIBAR_TRIKES-ACF237 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: HAULER - frameSymbol: FRAME_INTERCEPTOR - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:22.223Z' - - symbol: SPACERS_GUILD-94A474 - registration: - factionSymbol: SPACERS_GUILD - role: EXCAVATOR - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:43:51.223Z' - - symbol: ZANZIBAR_TRIKES-648BA8 - registration: - factionSymbol: ZANZIBAR_TRIKES - role: PATROL - frameSymbol: FRAME_SHUTTLE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_I - expiration: '2022-03-12T00:44:56.223Z' - - symbol: COMMERCE_REPUBLIC-1EED24 - registration: - factionSymbol: COMMERCE_REPUBLIC - role: PATROL - frameSymbol: FRAME_EXPLORER - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:45:23.223Z' - - symbol: ZANZIBAR_TRIKES-A5600D - registration: - factionSymbol: ZANZIBAR_TRIKES - role: PATROL - frameSymbol: FRAME_FRIGATE - reactorSymbol: REACTOR_FUSION_I - engineSymbol: ENGINE_ION_DRIVE_II - expiration: '2022-03-12T00:44:00.223Z' - System Scan: - value: - data: - cooldown: - duration: 0 - expiration: '2022-03-12T00:42:44.220Z' - system: - symbol: X1-OE - sector: X1 - type: RED_STAR - x: 0 - 'y': 0 - waypoints: - - X1-OE-PM - - X1-OE-PM01 - - X1-OE-25X - - X1-OE-A005 - factions: - - COMMERCE_REPUBLIC - - SPACERS_GUILD - - MINERS_COLLECTIVE - charted: true - chartedBy: null - Waypoint Scan: - value: - data: - cooldown: - duration: 0 - expiration: '2022-03-12T00:42:44.220Z' - waypoint: - system: X1-OE - symbol: X1-OE-25X - type: JUMP_GATE - x: -1 - 'y': -59 - orbitals: [] - faction: SPACERS_GUILD - features: [] - traits: [] - charted: true - chartedBy: null - operationId: post-my-ships-shipSymbol-scan - security: - - AgentToken: [] - description: 'Execute a ship scan to view approach / departing ships, system information or details about a waypoint. Send a scan mode to select the type of scan performed by your ship.' - requestBody: - content: - application/json: - schema: - type: object - properties: - mode: - type: string - enum: - - APPROACHING_SHIPS - - DEPARTING_SHIPS - - SYSTEM - - WAYPOINT - required: - - mode - examples: - Approaching Ships: - value: - mode: APPROACHING_SHIPS - Departing Ships: - value: - mode: APPROACHING_SHIPS - description: '' - get: - summary: Scan Cooldown - operationId: get-my-ships-shipSymbol-scan - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - type: object - properties: - cooldown: - $ref: ../models/Cooldown.yaml - examples: - Success: - value: - data: - cooldown: - duration: 59 - expiration: '2022-03-12T00:42:44.220Z' - security: - - AgentToken: [] - tags: - - ships - '/my/ships/{shipSymbol}/navigate': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - description: The ship symbol - post: - summary: Navigate Ship - tags: - - navigation - responses: - '201': - description: Created - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - shipSymbol: 3AE434-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2159 - arrivedAt: null - properties: - data: - type: object - properties: - navigation: - $ref: ../models/ShipNavigation.yaml - fuelCost: - type: integer - required: - - data - examples: - Success: - value: - data: - fuelCost: 38 - navigation: - shipSymbol: BA03F2-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2279 - arrivedAt: null - operationId: post-my-ships-shipSymbol-navigate - requestBody: - content: - application/json: - schema: - type: object - properties: - destination: - type: string - description: The waypoint symbol to navigate to. - security: - - AgentToken: [] - get: - summary: Navigation Status - operationId: get-my-ships-shipSymbol-navigate - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - shipSymbol: 3AE434-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2159 - arrivedAt: null - properties: - data: - type: object - properties: - navigation: - $ref: ../models/ShipNavigation.yaml - required: - - data - examples: - Success: - value: - data: - navigation: - shipSymbol: BA03F2-1 - departure: X1-OE-PM - destination: X1-OE-A005 - durationRemaining: 2279 - arrivedAt: null - description: Get the status of your last navigation. - security: - - AgentToken: [] - tags: - - navigation - '/my/ships/{shipSymbol}': - parameters: - - schema: - type: string - name: shipSymbol - in: path - required: true - get: - summary: View Ship - tags: - - ships - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - symbol: 653298-1 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - properties: - data: - $ref: ../models/Ship.yaml - required: - - data - operationId: get-my-ships-shipSymbol - description: Retrieve the details of your ship. - security: - - AgentToken: [] - /my/ships: - get: - summary: List Ships - tags: - - ships - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - symbol: 653298-1 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 653298-2 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 653298-3 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 653298-4 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 653298-5 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 653298-6 - crew: null - officers: null - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: '653298' - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - meta: - total: 6 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/Ship.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: - Success: - value: - data: - - symbol: 55B261-1 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 55B261-2 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 55B261-3 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 55B261-4 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 55B261-5 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - - symbol: 55B261-6 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 55B261 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - meta: - total: 6 - page: 1 - limit: 20 - operationId: get-my-ships - description: Retrieve all of your ships. - security: - - AgentToken: [] - post: - summary: Purchase Ship - tags: - - shipyards - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - symbol: 4F4D44-1 - crew: null - officers: null - fuel: 100 - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - registration: - factionSymbol: COMMERCE_REPUBLIC - agentSymbol: 4F4D44 - fee: 100 - role: EXCAVATOR - integrity: - frame: 1 - reactor: 1 - engine: 1 - status: DOCKED - location: X1-OE-PM - cargo: [] - properties: - data: - type: object - properties: - ship: - $ref: ../models/Ship.yaml - credits: - type: integer - required: - - data - operationId: post-my-ships - security: - - AgentToken: [] - description: Purchase a ship - requestBody: - content: - application/json: - schema: - type: object - properties: - id: - type: string - description: The id of the shipyard listing you want to purchase. - /my/contracts: - get: - summary: List Contracts - tags: - - contracts - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: '2022-03-11T05:16:59.113Z' - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' - - id: cl0hok3920023kv0jflbjpltg - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: '2022-03-11T05:16:59.123Z' - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: '2022-03-09T05:16:59.122Z' - meta: - total: 2 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/Contract.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: - Success: - value: - data: - - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: '2022-03-11T05:16:59.113Z' - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - expiresAt: '2022-03-09T05:16:59.112Z' - meta: - total: 10 - page: 1 - limit: 10 - operationId: get-my-contracts - security: - - AgentToken: [] - description: List all of your contracts. - '/my/contracts/{contractId}': - parameters: - - schema: - type: string - name: contractId - in: path - required: true - description: The contract ID - get: - summary: Contract Details - tags: - - contracts - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - $ref: ../models/Contract.yaml - examples: - Success: - value: - data: - id: cl0hok38t0014ks0jnoy8o5vh - faction: COMMERCE_REPUBLIC - type: PROCUREMENT - terms: - deadline: '2022-03-11T05:16:59.113Z' - payment: - onAccepted: 20000 - onFulfilled: 100000 - deliver: - - tradeSymbol: IRON_ORE - destination: X1-OE-PM - units: 10000 - fulfilled: 0 - accepted: false - fulfilled: false - 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': - parameters: - - schema: - type: string - name: contractId - in: path - required: true - post: - summary: Accept Contract - tags: - - contracts - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - $ref: ../models/Contract.yaml - operationId: post-my-contracts-contractId-accept - security: - - AgentToken: [] - description: Accept a contract. - /systems: - get: - summary: List Systems - tags: - - systems - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - symbol: X1-OE - sector: X1 - type: RED_STAR - x: 0 - 'y': 0 - waypoints: - - X1-OE-PM - - X1-OE-PM01 - - X1-OE-A005 - - X1-OE-25X - factions: - - COMMERCE_REPUBLIC - - MINERS_COLLECTIVE - - SPACERS_GUILD - charted: true - chartedBy: null - - symbol: X1-EV - sector: X1 - type: ORANGE_STAR - x: 3 - 'y': 4 - waypoints: - - X1-EV-A004 - factions: - - COMMERCE_REPUBLIC - charted: true - chartedBy: null - - symbol: X1-ZZ - sector: X1 - type: BLUE_STAR - x: -2 - 'y': 11 - waypoints: [] - factions: [] - charted: false - chartedBy: null - meta: - total: 3 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/System.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: - Success: - value: - data: - - symbol: X1-OE - sector: X1 - type: RED_STAR - x: 0 - 'y': 0 - waypoints: - - X1-OE-PM - - X1-OE-PM01 - - X1-OE-A005 - - X1-OE-25X - factions: - - COMMERCE_REPUBLIC - - MINERS_COLLECTIVE - - SPACERS_GUILD - charted: true - chartedBy: null - meta: - total: 0 - page: 0 - limit: 0 - operationId: get-systems - description: Return a list of all systems. - security: - - AgentToken: [] - '/systems/{systemSymbol}': - parameters: - - schema: - type: string - default: X1-OE - name: systemSymbol - in: path - required: true - description: The system symbol - get: - summary: View System - tags: - - systems - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - symbol: X1-ZZ - sector: X1 - type: BLUE_STAR - x: -2 - 'y': 9 - waypoints: [] - factions: [] - charted: false - chartedBy: null - properties: - data: - $ref: ../models/System.yaml - required: - - data - examples: - Success: - value: - data: - symbol: X1-ZZ - sector: X1 - type: BLUE_STAR - x: -2 - 'y': 9 - waypoints: [] - factions: [] - charted: false - chartedBy: null - operationId: get-systems-systemSymbol - security: - - AgentToken: [] - '/systems/{systemSymbol}/shipyards': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: the system symbol - get: - summary: List Shipyards - tags: - - shipyards - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - symbol: X1-OE-PM - faction: COMMERCE_REPUBLIC - meta: - total: 1 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/Shipyard.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - operationId: get-systems-systemSymbol-shipyards - security: - - AgentToken: [] - description: Returns a list of all shipyards in a system. - '/systems/{systemSymbol}/shipyards/{waypointSymbol}': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - - schema: - type: string - name: waypointSymbol - in: path - required: true - description: The waypoint symbol - get: - summary: Shipyard Details - tags: - - shipyards - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - data: - $ref: ../models/Shipyard.yaml - operationId: get-systems-systemSymbol-shipyards-waypointSymbol - security: - - AgentToken: [] - '/systems/{systemSymbol}/shipyards/{waypointSymbol}/ships': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - - schema: - type: string - name: waypointSymbol - in: path - required: true - description: The waypoint symbol - get: - summary: Shipyard Listings - tags: - - shipyards - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - id: cl0nahta90000aq0jonm1nprl - waypoint: X1-OE-PM - price: 58191 - role: EXCAVATOR - frame: FRAME_DRONE - reactor: REACTOR_SOLAR_I - engine: ENGINE_SOLAR_PROPULSION - modules: - - MODULE_CARGO_HOLD - mounts: - - MOUNT_MINING_LASER_I - meta: - total: 1 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/ShipyardListing.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: {} - 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: [] - '/systems/{systemSymbol}/markets': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - get: - summary: List Markets - tags: - - markets - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - exports: - - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - price: 834 - tariff: 0 - imports: - - waypointSymbol: X1-OE-PM - tradeSymbol: SILICON - price: 144 - tariff: 0 - - waypointSymbol: X1-OE-PM - tradeSymbol: QUARTZ - price: 286 - tariff: 0 - exchange: [] - properties: - data: - type: array - items: - type: string - required: - - data - examples: - Success: - value: - data: - - X1-AK3-88760F - meta: - total: 1 - page: 1 - limit: 20 - operationId: get-systems-systemSymbol-markets - description: |- - Retrieve a list of all charted markets in the given system. Markets are only available if the waypoint is charted and contains a communications relay. - - To install a communications relay at a market, look at the `my/ships/{shipSymbol}/deploy` endpoint. - security: - - AgentToken: [] - '/systems/{systemSymbol}/markets/{waypointSymbol}': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - - schema: - type: string - name: waypointSymbol - in: path - required: true - description: The waypoint symbol - get: - summary: View Market - tags: - - markets - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - exports: - - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - price: 834 - tariff: 0 - imports: - - waypointSymbol: X1-OE-PM - tradeSymbol: SILICON - price: 144 - tariff: 0 - - waypointSymbol: X1-OE-PM - tradeSymbol: QUARTZ - price: 286 - tariff: 0 - exchange: [] - properties: - data: - type: object - required: - - exports - - imports - - exchange - properties: - exports: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/MarketTrade.yaml - imports: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/MarketTrade.yaml - exchange: - type: array - items: - $ref: ../models/MarketTrade.yaml - required: - - data - examples: - Success: - value: - data: - exports: - - waypointSymbol: X1-OE-PM - tradeSymbol: MICROPROCESSORS - price: 834 - tariff: 0 - imports: - - waypointSymbol: X1-OE-PM - tradeSymbol: SILICON - price: 144 - tariff: 0 - - waypointSymbol: X1-OE-PM - tradeSymbol: QUARTZ - price: 286 - tariff: 0 - exchange: [] - operationId: get-systems-systemSymbol-markets-waypointSymbol - description: |- - Retrieve imports, exports and exchange data from a marketplace. Imports can be sold, exports can be purchased, and exchange trades can be purchased or sold. - - Market data is only available if you have a ship at the location, or the location is charted and has a communications relay deployed. - - See `/my/ships/{shipSymbol}/deploy` for deploying relays at a location. - security: - - AgentToken: [] - '/systems/{systemSymbol}/waypoints': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - get: - summary: List Waypoints - tags: - - systems - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - 'y': 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-PM01 - type: MOON - x: 10 - 'y': 5 - orbitals: [] - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - traits: - - WEAK_GRAVITY - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-A005 - type: ASTEROID_FIELD - x: -1 - 'y': -29 - orbitals: [] - faction: MINERS_COLLECTIVE - features: [] - traits: - - COMMON_METAL_DEPOSITS - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-25X - type: JUMP_GATE - x: -38 - 'y': 47 - orbitals: [] - faction: SPACERS_GUILD - features: [] - traits: [] - charted: true - chartedBy: null - meta: - total: 4 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/Waypoint.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: - Success: - value: - data: - - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - 'y': 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-PM01 - type: MOON - x: 10 - 'y': 5 - orbitals: [] - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - traits: - - WEAK_GRAVITY - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-A005 - type: ASTEROID_FIELD - x: -1 - 'y': -29 - orbitals: [] - faction: MINERS_COLLECTIVE - features: [] - traits: - - COMMON_METAL_DEPOSITS - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-25X - type: JUMP_GATE - x: -38 - 'y': 47 - orbitals: [] - faction: SPACERS_GUILD - features: [] - traits: [] - charted: true - chartedBy: null - meta: - total: 4 - page: 1 - limit: 20 - operationId: get-systems-systemSymbol-waypoints-waypointSymbol - security: - - AgentToken: [] - description: Fetch all of the waypoints for a given system. System must be charted or a ship must be present to return waypoint details. - '/systems/{systemSymbol}/waypoints/{waypointSymbol}': - parameters: - - schema: - type: string - name: systemSymbol - in: path - required: true - description: The system symbol - - schema: - type: string - name: waypointSymbol - in: path - required: true - description: The waypoint symbol - get: - summary: View Waypoint - tags: - - systems - responses: - '200': - description: OK - content: - application/json: - schema: - description: '' - type: object - x-examples: - example-1: - data: - - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - 'y': 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-PM01 - type: MOON - x: 10 - 'y': 5 - orbitals: [] - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - traits: - - WEAK_GRAVITY - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-A005 - type: ASTEROID_FIELD - x: -1 - 'y': -29 - orbitals: [] - faction: MINERS_COLLECTIVE - features: [] - traits: - - COMMON_METAL_DEPOSITS - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-25X - type: JUMP_GATE - x: -38 - 'y': 47 - orbitals: [] - faction: SPACERS_GUILD - features: [] - traits: [] - charted: true - chartedBy: null - meta: - total: 4 - page: 1 - limit: 20 - properties: - data: - type: array - uniqueItems: true - minItems: 1 - items: - $ref: ../models/Waypoint.yaml - meta: - $ref: ../models/Meta.yaml - required: - - data - - meta - examples: - Success: - value: - data: - - system: X1-OE - symbol: X1-OE-PM - type: PLANET - x: 10 - 'y': 5 - orbitals: - - X1-OE-PM01 - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - - SHIPYARD - traits: - - OVERCROWDED - - HIGH_TECH - - BUREAUCRATIC - - TRADING_HUB - - TEMPERATE - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-PM01 - type: MOON - x: 10 - 'y': 5 - orbitals: [] - faction: COMMERCE_REPUBLIC - features: - - MARKETPLACE - traits: - - WEAK_GRAVITY - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-A005 - type: ASTEROID_FIELD - x: -1 - 'y': -29 - orbitals: [] - faction: MINERS_COLLECTIVE - features: [] - traits: - - COMMON_METAL_DEPOSITS - charted: true - chartedBy: null - - system: X1-OE - symbol: X1-OE-25X - type: JUMP_GATE - x: -38 - 'y': 47 - orbitals: [] - faction: SPACERS_GUILD - features: [] - traits: [] - charted: true - chartedBy: null - meta: - total: 4 - page: 1 - limit: 20 - operationId: get-systems-systemSymbol-waypoints - security: - - AgentToken: [] - description: View the details of a waypoint. -tags: - - name: ships - - name: markets - - name: trade - - name: sell - - name: purchase - - name: navigation - - name: agents - - name: dock - - name: orbit - - name: jettison - - name: jump - - name: refuel - - name: scan - - name: contracts - - name: chart - - name: extract - - name: mining - - name: deliver - - name: survey - - name: systems - - name: waypoints - - name: shipyards - - name: markets -components: - schemas: {} - securitySchemes: - AgentToken: - type: http - scheme: bearer - description: When you register a new agent you will be granted a private bearer token which grants authorization to use the API. - requestBodies: {}