mirror of
https://github.com/SpaceTradersAPI/api-docs.git
synced 2024-12-25 14:18:07 +01:00
merge 2.0.0-rc.2 into main
This commit is contained in:
commit
8877039b7c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.DS_Store
|
2
.spectral.mjs
Normal file
2
.spectral.mjs
Normal file
@ -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 };
|
190
docs/alpha.md
190
docs/alpha.md
@ -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
|
@ -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.
|
1244
docs/quickstart.md
Normal file
1244
docs/quickstart.md
Normal file
File diff suppressed because it is too large
Load Diff
29
models/Agent.json
Normal file
29
models/Agent.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
16
models/Chart.json
Normal file
16
models/Chart.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
38
models/ConnectedSystem.json
Normal file
38
models/ConnectedSystem.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
50
models/Contract.json
Normal file
50
models/Contract.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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"
|
30
models/ContractDeliverGood.json
Normal file
30
models/ContractDeliverGood.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
17
models/ContractPayment.json
Normal file
17
models/ContractPayment.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
23
models/ContractTerms.json
Normal file
23
models/ContractTerms.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
33
models/Cooldown.json
Normal file
33
models/Cooldown.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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"
|
17
models/Extraction.json
Normal file
17
models/Extraction.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"description": "",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"shipSymbol": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"yield": {
|
||||
"$ref": "./ExtractionYield.json"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"shipSymbol",
|
||||
"yield"
|
||||
]
|
||||
}
|
@ -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
|
17
models/ExtractionYield.json
Normal file
17
models/ExtractionYield.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
35
models/Faction.json
Normal file
35
models/Faction.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
90
models/FactionTrait.json
Normal file
90
models/FactionTrait.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
25
models/JumpGate.json
Normal file
25
models/JumpGate.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
51
models/Market.json
Normal file
51
models/Market.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
41
models/MarketTradeGood.json
Normal file
41
models/MarketTradeGood.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
49
models/MarketTransaction.json
Normal file
49
models/MarketTransaction.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
27
models/Meta.json
Normal file
27
models/Meta.json
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
73
models/ScannedShip.json
Normal file
73
models/ScannedShip.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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'
|
34
models/ScannedSystem.json
Normal file
34
models/ScannedSystem.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
60
models/Ship.json
Normal file
60
models/Ship.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
161
models/Ship.yaml
161
models/Ship.yaml
@ -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
|
27
models/ShipCargo.json
Normal file
27
models/ShipCargo.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
29
models/ShipCargoItem.json
Normal file
29
models/ShipCargoItem.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
6
models/ShipCondition.json
Normal file
6
models/ShipCondition.json
Normal file
@ -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
|
||||
}
|
46
models/ShipCrew.json
Normal file
46
models/ShipCrew.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
38
models/ShipEngine.json
Normal file
38
models/ShipEngine.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
59
models/ShipFrame.json
Normal file
59
models/ShipFrame.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
39
models/ShipFuel.json
Normal file
39
models/ShipFuel.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
50
models/ShipModule.json
Normal file
50
models/ShipModule.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
66
models/ShipMount.json
Normal file
66
models/ShipMount.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
30
models/ShipNav.json
Normal file
30
models/ShipNav.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
11
models/ShipNavFlightMode.json
Normal file
11
models/ShipNavFlightMode.json
Normal file
@ -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"
|
||||
}
|
22
models/ShipNavRoute.json
Normal file
22
models/ShipNavRoute.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
30
models/ShipNavRouteWaypoint.json
Normal file
30
models/ShipNavRouteWaypoint.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
9
models/ShipNavStatus.json
Normal file
9
models/ShipNavStatus.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"type": "string",
|
||||
"description": "The current status of the ship",
|
||||
"enum": [
|
||||
"IN_TRANSIT",
|
||||
"IN_ORBIT",
|
||||
"DOCKED"
|
||||
]
|
||||
}
|
@ -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
|
39
models/ShipReactor.json
Normal file
39
models/ShipReactor.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
24
models/ShipRegistration.json
Normal file
24
models/ShipRegistration.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
18
models/ShipRequirements.json
Normal file
18
models/ShipRequirements.json
Normal file
@ -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."
|
||||
}
|
||||
}
|
||||
}
|
20
models/ShipRole.json
Normal file
20
models/ShipRole.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
16
models/ShipType.json
Normal file
16
models/ShipType.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
41
models/Shipyard.json
Normal file
41
models/Shipyard.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
@ -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
|
50
models/ShipyardShip.json
Normal file
50
models/ShipyardShip.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
29
models/ShipyardTransaction.json
Normal file
29
models/ShipyardTransaction.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
45
models/Survey.json
Normal file
45
models/Survey.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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'
|
13
models/SurveyDeposit.json
Normal file
13
models/SurveyDeposit.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
44
models/System.json
Normal file
44
models/System.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
12
models/SystemFaction.json
Normal file
12
models/SystemFaction.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"symbol": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"symbol"
|
||||
]
|
||||
}
|
16
models/SystemType.json
Normal file
16
models/SystemType.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
23
models/SystemWaypoint.json
Normal file
23
models/SystemWaypoint.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
19
models/TradeGood.json
Normal file
19
models/TradeGood.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"symbol": {
|
||||
"$ref": "./TradeSymbol.json"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"symbol",
|
||||
"name",
|
||||
"description"
|
||||
]
|
||||
}
|
115
models/TradeSymbol.json
Normal file
115
models/TradeSymbol.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
51
models/Waypoint.json
Normal file
51
models/Waypoint.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
@ -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
|
12
models/WaypointFaction.json
Normal file
12
models/WaypointFaction.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"symbol": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"symbol"
|
||||
]
|
||||
}
|
13
models/WaypointOrbital.json
Normal file
13
models/WaypointOrbital.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
83
models/WaypointTrait.json
Normal file
83
models/WaypointTrait.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
15
models/WaypointType.json
Normal file
15
models/WaypointType.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
18
redocly.yaml
Normal file
18
redocly.yaml
Normal file
@ -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
|
2394
reference/SpaceTraders.json
Normal file
2394
reference/SpaceTraders.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user