├── .github └── workflows │ └── validate.yml ├── .gitignore ├── .spectral.mjs ├── .stoplight.json ├── README.md ├── docs └── overview.md ├── models ├── ActivityLevel.json ├── Agent.json ├── Chart.json ├── ConnectedSystem.json ├── Construction.json ├── ConstructionMaterial.json ├── Contract.json ├── ContractDeliverGood.json ├── ContractPayment.json ├── ContractTerms.json ├── Cooldown.json ├── Extraction.json ├── ExtractionYield.json ├── Faction.json ├── FactionSymbol.json ├── FactionTrait.json ├── FactionTraitSymbol.json ├── JumpGate.json ├── Market.json ├── MarketTradeGood.json ├── MarketTransaction.json ├── Meta.json ├── RepairTransaction.json ├── ScannedShip.json ├── ScannedSystem.json ├── ScannedWaypoint.json ├── ScrapTransaction.json ├── Ship.json ├── ShipCargo.json ├── ShipCargoItem.json ├── ShipComponentCondition.json ├── ShipComponentIntegrity.json ├── ShipComponentQuality.json ├── ShipConditionEvent.json ├── ShipCrew.json ├── ShipEngine.json ├── ShipFrame.json ├── ShipFuel.json ├── ShipModificationTransaction.json ├── ShipModule.json ├── ShipMount.json ├── ShipNav.json ├── ShipNavFlightMode.json ├── ShipNavRoute.json ├── ShipNavRouteWaypoint.json ├── ShipNavRouteWaypointDeprecated.json ├── ShipNavStatus.json ├── ShipReactor.json ├── ShipRegistration.json ├── ShipRequirements.json ├── ShipRole.json ├── ShipType.json ├── Shipyard.json ├── ShipyardShip.json ├── ShipyardTransaction.json ├── Siphon.json ├── SiphonYield.json ├── SupplyLevel.json ├── Survey.json ├── SurveyDeposit.json ├── System.json ├── SystemFaction.json ├── SystemSymbol.json ├── SystemType.json ├── SystemWaypoint.json ├── TradeGood.json ├── TradeSymbol.json ├── Waypoint.json ├── WaypointFaction.json ├── WaypointModifier.json ├── WaypointModifierSymbol.json ├── WaypointOrbital.json ├── WaypointSymbol.json ├── WaypointTrait.json ├── WaypointTraitSymbol.json └── WaypointType.json ├── redocly.yaml └── reference └── SpaceTraders.json /.github/workflows/validate.yml: -------------------------------------------------------------------------------- 1 | name: Validate OpenAPI Spec 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | jobs: 10 | generate: 11 | runs-on: ubuntu-latest 12 | name: Generate Clients 13 | steps: 14 | - uses: actions/checkout@v2 15 | 16 | - name: Typescript Axios 17 | uses: openapi-generators/openapitools-generator-action@v1 18 | with: 19 | generator: typescript-axios 20 | openapi-file: ./reference/SpaceTraders.json 21 | 22 | - name: Dart 23 | uses: openapi-generators/openapitools-generator-action@v1 24 | with: 25 | generator: dart 26 | openapi-file: ./reference/SpaceTraders.json 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .stoplight/styleguide.json 3 | -------------------------------------------------------------------------------- /.spectral.mjs: -------------------------------------------------------------------------------- 1 | import ruleset from "https://stoplight.io/api/v1/projects/cHJqOjE3NTU4OQ/spectral.js?branch=main&token=e4f4ffbe-f8ad-4829-b09f-cf2703afac49"; 2 | export default {extends: ruleset}; 3 | -------------------------------------------------------------------------------- /.stoplight.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": [], 3 | "formats": { 4 | "openapi": { 5 | "rootDir": "reference", 6 | "include": ["**"] 7 | }, 8 | "json_schema": { 9 | "rootDir": "models", 10 | "include": ["**"] 11 | }, 12 | "markdown": { 13 | "rootDir": "docs" 14 | }, 15 | "image": { 16 | "rootDir": "assets/images" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | SpaceTraders is an API-based game where you acquire and manage a fleet of ships to explore, trade, and fight your way across the galaxy. 4 | 5 | ## Quicklinks 6 | 7 | Use the links below to get started with SpaceTraders. 8 | 9 | - [Main Website](https://spacetraders.io) - Learn more about the game and the team behind it. 10 | - [Documentation](https://docs.spacetraders.io) - Read the full documentation for the SpaceTraders API. 11 | - [Quickstart](https://docs.spacetraders.io/quickstart/new-game) - Try out the SpaceTraders API directly in your browser. 12 | - [Game concepts](https://docs.spacetraders.io/game-concepts/agents-and-factions) - Learn about core game mechanics such as fleets, factions and systems. 13 | - [API guide](https://docs.spacetraders.io/api-guide/open-api-spec) - Learn the fundamentals of working with the SpaceTraders API. 14 | 15 | ## Overview 16 | 17 | SpaceTraders is an open-universe game and learning platform that offers a set of HTTP endpoints to control a fleet of ships and explore a multiplayer universe. 18 | 19 | The API is documented using [OpenAPI](https://github.com/SpaceTradersAPI/api-docs) and Stoplight Studio. You can send requests directly from Stoplight Studio or use the [interactive documentation](https://docs.spacetraders.io/quickstart/new-game) to try out the API. 20 | 21 | Unlike a traditional game, SpaceTraders does not have a first-party client or app to play the game. Instead, you can use the API to build your own client, write a script to automate your ships, or try an app built by the community. 22 | 23 | We have a [Discord channel](https://discord.com/invite/jh6zurdWk5) where you can share your projects, ask questions, and get help from other players. 24 | 25 | ## Gameplay 26 | 27 | The goal of the game is to manage a fleet of ships as you explore the universe and try to turn a profit. You can trade goods across systems, mine asteroids for valuable ores, or take on faction contracts to earn credits and reputation. 28 | 29 | All players operate in the same universe, so you can compete with others to earn the most credits or chart the most systems. The game is currently in alpha, and we plan to add player-vs-player combat, bounty hunting, and more. 30 | 31 | ## Roadmap 32 | 33 | We plan to work toward the following features and capabilities. If you have any feedback or suggestions, please share them in our [Discord channel](https://discord.com/invite/jh6zurdWk5). 34 | 35 | - scavenge derelict ships for valuable cargo and spare parts 36 | - create webhooks to receive notifications when events occur in the game 37 | - search for ancient artifacts on distant planets to sell for profit 38 | - send envoys to meet new factions and generate contracts or unique trade deals 39 | - private game worlds deployed on a separate server for testing or playing with friends 40 | - take on bounties to earn credits or pirate other players trade routes 41 | - a GraphQL API for querying systems and waypoints 42 | - deploy envoys to track rumors and generate contracts 43 | 44 | --- 45 | 46 | ## Next steps 47 | 48 | The SpaceTraders API is an excellent platform to learn a new programming language, test a new framework, or stretch your skills in a fun and meaningful way. 49 | 50 | If you are new to SpaceTraders, you should try our interactive [quickstart guide](https://docs.spacetraders.io/quickstart/new-game) which will walk you through basic API requests in just a few minutes. 51 | 52 | If you're looking for some project inspiration, here are some ideas to get you started: 53 | 54 | - create a script to mine asteroids and automate trade routes 55 | - build a web or mobile app to manage your fleet of ships 56 | - track and share market price data with other players 57 | - generate an SDK from the OpenAPI spec and publish it 58 | - create a Discord bot for others players to use 59 | 60 | And finally, if you find an issue and want to report it, please open an issue on our [GitHub repository](https://github.com/SpaceTradersAPI/api-docs) or share it in our [Discord channel](https://discord.com/invite/jh6zurdWk5). 61 | 62 | ## Donating 63 | 64 | By supporting us, you’re not just helping keep the servers running, but potentially helping thousands of fellow developers learn and exercise their programming skills. 65 | We’re grateful for your support, and together, we’re excited to see the full potential of the API! 66 | Thank you for being a part of this journey. 67 | 68 | Additionally: 69 | - We will make sure that we reserve your callsign between alpha/beta resets 70 | - Vote for your most desired features 71 | - Custom Role in Discord 72 | 73 | [Donate with Stripe Link](https://donate.stripe.com/28o29m5vxcri6OccMM) 74 | -------------------------------------------------------------------------------- /docs/overview.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | SpaceTraders is an API-based game where you acquire and manage a fleet of ships to explore, trade, and fight your way across the galaxy. 4 | 5 | ## Quicklinks 6 | 7 | Use the links below to get started with SpaceTraders. 8 | 9 | - [Main Website](https://spacetraders.io) - Learn more about the game and the team behind it. 10 | - [Documentation](https://docs.spacetraders.io) - Read the full documentation for the SpaceTraders API. 11 | - [Quickstart](https://docs.spacetraders.io/quickstart/new-game) - Try out the SpaceTraders API directly in your browser. 12 | - [Game concepts](https://docs.spacetraders.io/game-concepts/agents-and-factions) - Learn about core game mechanics such as fleets, factions and systems. 13 | - [API guide](https://docs.spacetraders.io/api-guide/open-api-spec) - Learn the fundamentals of working with the SpaceTraders API. 14 | 15 | ## Overview 16 | 17 | SpaceTraders is an open-universe game and learning platform that offers a set of HTTP endpoints to control a fleet of ships and explore a multiplayer universe. 18 | 19 | The API is documented using [OpenAPI](https://github.com/SpaceTradersAPI/api-docs) and Stoplight Studio. You can send requests directly from Stoplight Studio or use the [interactive documentation](https://docs.spacetraders.io/quickstart/new-game) to try out the API. 20 | 21 | Unlike a traditional game, SpaceTraders does not have a first-party client or app to play the game. Instead, you can use the API to build your own client, write a script to automate your ships, or try an app built by the community. 22 | 23 | We have a [Discord channel](https://discord.com/invite/jh6zurdWk5) where you can share your projects, ask questions, and get help from other players. 24 | 25 | ## Gameplay 26 | 27 | The goal of the game is to manage a fleet of ships as you explore the universe and try to turn a profit. You can trade goods across systems, mine asteroids for valuable ores, or take on faction contracts to earn credits and reputation. 28 | 29 | All players operate in the same universe, so you can compete with others to earn the most credits or chart the most systems. The game is currently in alpha, and we plan to add player-vs-player combat, bounty hunting, and more. 30 | 31 | ## Roadmap 32 | 33 | We plan to work toward the following features and capabilities. If you have any feedback or suggestions, please share them in our [Discord channel](https://discord.com/invite/jh6zurdWk5). 34 | 35 | - scavenge derelict ships for valuable cargo and spare parts 36 | - create webhooks to receive notifications when events occur in the game 37 | - search for ancient artifacts on distant planets to sell for profit 38 | - send envoys to meet new factions and generate contracts or unique trade deals 39 | - private game worlds deployed on a separate server for testing or playing with friends 40 | - take on bounties to earn credits or pirate other players trade routes 41 | - a GraphQL API for querying systems and waypoints 42 | - deploy envoys to track rumors and generate contracts 43 | 44 | --- 45 | 46 | ## Next steps 47 | 48 | The SpaceTraders API is an excellent platform to learn a new programming language, test a new framework, or stretch your skills in a fun and meaningful way. 49 | 50 | If you are new to SpaceTraders, you should try our interactive [quickstart guide](https://docs.spacetraders.io/quickstart/new-game) which will walk you through basic API requests in just a few minutes. 51 | 52 | If you're looking for some project inspiration, here are some ideas to get you started: 53 | 54 | - create a script to mine asteroids and automate trade routes 55 | - build a web or mobile app to manage your fleet of ships 56 | - track and share market price data with other players 57 | - generate an SDK from the OpenAPI spec and publish it 58 | - create a Discord bot for others players to use 59 | 60 | And finally, if you find an issue and want to report it, please open an issue on our [GitHub repository](https://github.com/SpaceTradersAPI/api-docs) or share it in our [Discord channel](https://discord.com/invite/jh6zurdWk5). 61 | -------------------------------------------------------------------------------- /models/ActivityLevel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The activity level of a trade good. If the good is an import, this represents how strong consumption is. If the good is an export, this represents how strong the production is for the good. When activity is strong, consumption or production is near maximum capacity. When activity is weak, consumption or production is near minimum capacity.", 4 | "enum": ["WEAK", "GROWING", "STRONG", "RESTRICTED"], 5 | "x-enumDescriptions": { 6 | "WEAK": "Indicates very low production or consumption activity. This may suggest a surplus in supply or a lack of demand.", 7 | "GROWING": "Represents increasing activity in production or consumption, suggesting a developing market.", 8 | "STRONG": "Signifies high levels of production or consumption. Indicates a healthy and active market with high demand or supply.", 9 | "RESTRICTED": "Reflects a bottleneck in production or consumption, possibly due to a lack of supply or demand in related goods." 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /models/Agent.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Agent details.", 3 | "type": "object", 4 | "properties": { 5 | "accountId": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "Account ID that is tied to this agent. Only included on your own agent." 9 | }, 10 | "symbol": { 11 | "type": "string", 12 | "minLength": 3, 13 | "maxLength": 14, 14 | "description": "Symbol of the agent." 15 | }, 16 | "headquarters": { 17 | "type": "string", 18 | "minLength": 1, 19 | "description": "The headquarters of the agent." 20 | }, 21 | "credits": { 22 | "type": "integer", 23 | "format": "int64", 24 | "description": "The number of credits the agent has available. Credits can be negative if funds have been overdrawn." 25 | }, 26 | "startingFaction": { 27 | "type": "string", 28 | "minLength": 1, 29 | "description": "The faction the agent started with." 30 | }, 31 | "shipCount": { 32 | "type": "integer", 33 | "description": "How many ships are owned by the agent." 34 | } 35 | }, 36 | "required": ["symbol", "headquarters", "credits", "startingFaction", "shipCount"] 37 | } 38 | -------------------------------------------------------------------------------- /models/Chart.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The chart of a system or waypoint, which makes the location visible to other agents.", 4 | "properties": { 5 | "waypointSymbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "submittedBy": { 9 | "type": "string", 10 | "description": "The agent that submitted the chart for this waypoint." 11 | }, 12 | "submittedOn": { 13 | "type": "string", 14 | "format": "date-time", 15 | "description": "The time the chart for this waypoint was submitted." 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /models/ConnectedSystem.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "type": "string", 6 | "minLength": 1, 7 | "description": "The symbol of the system." 8 | }, 9 | "sectorSymbol": { 10 | "type": "string", 11 | "minLength": 1, 12 | "description": "The sector of this system." 13 | }, 14 | "type": { 15 | "$ref": "./SystemType.json" 16 | }, 17 | "factionSymbol": { 18 | "type": "string", 19 | "description": "The symbol of the faction that owns the connected jump gate in the system." 20 | }, 21 | "x": { 22 | "type": "integer", 23 | "description": "Position in the universe in the x axis." 24 | }, 25 | "y": { 26 | "type": "integer", 27 | "description": "Position in the universe in the y axis." 28 | }, 29 | "distance": { 30 | "type": "integer", 31 | "description": "The distance of this system to the connected Jump Gate." 32 | } 33 | }, 34 | "required": ["symbol", "sectorSymbol", "type", "x", "y", "distance"] 35 | } 36 | -------------------------------------------------------------------------------- /models/Construction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The construction details of a waypoint.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The symbol of the waypoint." 8 | }, 9 | "materials": { 10 | "type": "array", 11 | "description": "The materials required to construct the waypoint.", 12 | "items": { 13 | "$ref": "./ConstructionMaterial.json" 14 | } 15 | }, 16 | "isComplete": { 17 | "type": "boolean", 18 | "description": "Whether the waypoint has been constructed." 19 | } 20 | }, 21 | "required": ["symbol", "materials", "isComplete"] 22 | } 23 | -------------------------------------------------------------------------------- /models/ConstructionMaterial.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The details of the required construction materials for a given waypoint under construction.", 3 | "type": "object", 4 | "properties": { 5 | "tradeSymbol": { 6 | "$ref": "./TradeSymbol.json" 7 | }, 8 | "required": { 9 | "type": "integer", 10 | "description": "The number of units required." 11 | }, 12 | "fulfilled": { 13 | "type": "integer", 14 | "description": "The number of units fulfilled toward the required amount." 15 | } 16 | }, 17 | "required": ["tradeSymbol", "required", "fulfilled"] 18 | } 19 | -------------------------------------------------------------------------------- /models/Contract.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Contract details.", 3 | "type": "object", 4 | "properties": { 5 | "id": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "ID of the contract." 9 | }, 10 | "factionSymbol": { 11 | "type": "string", 12 | "minLength": 1, 13 | "description": "The symbol of the faction that this contract is for." 14 | }, 15 | "type": { 16 | "type": "string", 17 | "enum": ["PROCUREMENT", "TRANSPORT", "SHUTTLE"], 18 | "description": "Type of contract." 19 | }, 20 | "terms": { 21 | "$ref": "./ContractTerms.json" 22 | }, 23 | "accepted": { 24 | "type": "boolean", 25 | "default": false, 26 | "description": "Whether the contract has been accepted by the agent" 27 | }, 28 | "fulfilled": { 29 | "type": "boolean", 30 | "default": false, 31 | "description": "Whether the contract has been fulfilled" 32 | }, 33 | "expiration": { 34 | "type": "string", 35 | "format": "date-time", 36 | "description": "Deprecated in favor of deadlineToAccept", 37 | "deprecated": true 38 | }, 39 | "deadlineToAccept": { 40 | "type": "string", 41 | "format": "date-time", 42 | "description": "The time at which the contract is no longer available to be accepted" 43 | } 44 | }, 45 | "required": ["id", "factionSymbol", "type", "terms", "accepted", "fulfilled", "expiration"] 46 | } 47 | -------------------------------------------------------------------------------- /models/ContractDeliverGood.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The details of a delivery contract. Includes the type of good, units needed, and the destination.", 3 | "type": "object", 4 | "properties": { 5 | "tradeSymbol": { 6 | "type": "string", 7 | "description": "The symbol of the trade good to deliver.", 8 | "minLength": 1 9 | }, 10 | "destinationSymbol": { 11 | "type": "string", 12 | "description": "The destination where goods need to be delivered.", 13 | "minLength": 1 14 | }, 15 | "unitsRequired": { 16 | "type": "integer", 17 | "description": "The number of units that need to be delivered on this contract." 18 | }, 19 | "unitsFulfilled": { 20 | "type": "integer", 21 | "description": "The number of units fulfilled on this contract." 22 | } 23 | }, 24 | "required": ["tradeSymbol", "destinationSymbol", "unitsRequired", "unitsFulfilled"] 25 | } 26 | -------------------------------------------------------------------------------- /models/ContractPayment.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "Payments for the contract.", 4 | "properties": { 5 | "onAccepted": { 6 | "type": "integer", 7 | "description": "The amount of credits received up front for accepting the contract." 8 | }, 9 | "onFulfilled": { 10 | "type": "integer", 11 | "description": "The amount of credits received when the contract is fulfilled." 12 | } 13 | }, 14 | "required": ["onAccepted", "onFulfilled"] 15 | } 16 | -------------------------------------------------------------------------------- /models/ContractTerms.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The terms to fulfill the contract.", 4 | "properties": { 5 | "deadline": { 6 | "type": "string", 7 | "format": "date-time", 8 | "description": "The deadline for the contract." 9 | }, 10 | "payment": { 11 | "$ref": "./ContractPayment.json" 12 | }, 13 | "deliver": { 14 | "type": "array", 15 | "description": "The cargo that needs to be delivered to fulfill the contract.", 16 | "items": { 17 | "$ref": "./ContractDeliverGood.json" 18 | } 19 | } 20 | }, 21 | "required": ["deadline", "payment"] 22 | } 23 | -------------------------------------------------------------------------------- /models/Cooldown.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A cooldown is a period of time in which a ship cannot perform certain actions.", 4 | "properties": { 5 | "shipSymbol": { 6 | "type": "string", 7 | "description": "The symbol of the ship that is on cooldown", 8 | "minLength": 1 9 | }, 10 | "totalSeconds": { 11 | "type": "integer", 12 | "description": "The total duration of the cooldown in seconds", 13 | "minimum": 0 14 | }, 15 | "remainingSeconds": { 16 | "type": "integer", 17 | "description": "The remaining duration of the cooldown in seconds", 18 | "minimum": 0 19 | }, 20 | "expiration": { 21 | "type": "string", 22 | "format": "date-time", 23 | "description": "The date and time when the cooldown expires in ISO 8601 format" 24 | } 25 | }, 26 | "required": ["shipSymbol", "totalSeconds", "remainingSeconds"] 27 | } 28 | -------------------------------------------------------------------------------- /models/Extraction.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Extraction details.", 3 | "type": "object", 4 | "properties": { 5 | "shipSymbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "Symbol of the ship that executed the extraction." 9 | }, 10 | "yield": { 11 | "$ref": "./ExtractionYield.json" 12 | } 13 | }, 14 | "required": ["shipSymbol", "yield"] 15 | } 16 | -------------------------------------------------------------------------------- /models/ExtractionYield.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A yield from the extraction operation.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./TradeSymbol.json" 7 | }, 8 | "units": { 9 | "type": "integer", 10 | "description": "The number of units extracted that were placed into the ship's cargo hold." 11 | } 12 | }, 13 | "required": ["symbol", "units"] 14 | } 15 | -------------------------------------------------------------------------------- /models/Faction.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Faction details.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./FactionSymbol.json" 7 | }, 8 | "name": { 9 | "type": "string", 10 | "minLength": 1, 11 | "description": "Name of the faction." 12 | }, 13 | "description": { 14 | "type": "string", 15 | "minLength": 1, 16 | "description": "Description of the faction." 17 | }, 18 | "headquarters": { 19 | "type": "string", 20 | "minLength": 1, 21 | "description": "The waypoint in which the faction's HQ is located in." 22 | }, 23 | "traits": { 24 | "type": "array", 25 | "description": "List of traits that define this faction.", 26 | "items": { 27 | "$ref": "./FactionTrait.json" 28 | } 29 | }, 30 | "isRecruiting": { 31 | "type": "boolean", 32 | "description": "Whether or not the faction is currently recruiting new agents." 33 | } 34 | }, 35 | "required": ["symbol", "name", "description", "traits", "isRecruiting"] 36 | } 37 | -------------------------------------------------------------------------------- /models/FactionSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The symbol of the faction.", 4 | "minLength": 1, 5 | "enum": [ 6 | "COSMIC", 7 | "VOID", 8 | "GALACTIC", 9 | "QUANTUM", 10 | "DOMINION", 11 | "ASTRO", 12 | "CORSAIRS", 13 | "OBSIDIAN", 14 | "AEGIS", 15 | "UNITED", 16 | "SOLITARY", 17 | "COBALT", 18 | "OMEGA", 19 | "ECHO", 20 | "LORDS", 21 | "CULT", 22 | "ANCIENTS", 23 | "SHADOW", 24 | "ETHEREAL" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /models/FactionTrait.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "$ref": "./FactionTraitSymbol.json" 6 | }, 7 | "name": { 8 | "type": "string", 9 | "description": "The name of the trait." 10 | }, 11 | "description": { 12 | "type": "string", 13 | "description": "A description of the trait." 14 | } 15 | }, 16 | "required": ["symbol", "name", "description"] 17 | } 18 | -------------------------------------------------------------------------------- /models/FactionTraitSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The unique identifier of the trait.", 4 | "enum": [ 5 | "BUREAUCRATIC", 6 | "SECRETIVE", 7 | "CAPITALISTIC", 8 | "INDUSTRIOUS", 9 | "PEACEFUL", 10 | "DISTRUSTFUL", 11 | "WELCOMING", 12 | "SMUGGLERS", 13 | "SCAVENGERS", 14 | "REBELLIOUS", 15 | "EXILES", 16 | "PIRATES", 17 | "RAIDERS", 18 | "CLAN", 19 | "GUILD", 20 | "DOMINION", 21 | "FRINGE", 22 | "FORSAKEN", 23 | "ISOLATED", 24 | "LOCALIZED", 25 | "ESTABLISHED", 26 | "NOTABLE", 27 | "DOMINANT", 28 | "INESCAPABLE", 29 | "INNOVATIVE", 30 | "BOLD", 31 | "VISIONARY", 32 | "CURIOUS", 33 | "DARING", 34 | "EXPLORATORY", 35 | "RESOURCEFUL", 36 | "FLEXIBLE", 37 | "COOPERATIVE", 38 | "UNITED", 39 | "STRATEGIC", 40 | "INTELLIGENT", 41 | "RESEARCH_FOCUSED", 42 | "COLLABORATIVE", 43 | "PROGRESSIVE", 44 | "MILITARISTIC", 45 | "TECHNOLOGICALLY_ADVANCED", 46 | "AGGRESSIVE", 47 | "IMPERIALISTIC", 48 | "TREASURE_HUNTERS", 49 | "DEXTEROUS", 50 | "UNPREDICTABLE", 51 | "BRUTAL", 52 | "FLEETING", 53 | "ADAPTABLE", 54 | "SELF_SUFFICIENT", 55 | "DEFENSIVE", 56 | "PROUD", 57 | "DIVERSE", 58 | "INDEPENDENT", 59 | "SELF_INTERESTED", 60 | "FRAGMENTED", 61 | "COMMERCIAL", 62 | "FREE_MARKETS", 63 | "ENTREPRENEURIAL" 64 | ] 65 | } 66 | -------------------------------------------------------------------------------- /models/JumpGate.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "connections": { 9 | "type": "array", 10 | "description": "All the gates that are connected to this waypoint.", 11 | "items": { 12 | "type": "string", 13 | "description": "The symbol of the waypoint that has a corresponding gate." 14 | } 15 | } 16 | }, 17 | "required": ["symbol", "connections"] 18 | } 19 | -------------------------------------------------------------------------------- /models/Market.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Market details.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The symbol of the market. The symbol is the same as the waypoint where the market is located." 8 | }, 9 | "exports": { 10 | "type": "array", 11 | "description": "The list of goods that are exported from this market.", 12 | "items": { 13 | "$ref": "./TradeGood.json" 14 | } 15 | }, 16 | "imports": { 17 | "type": "array", 18 | "description": "The list of goods that are sought as imports in this market.", 19 | "items": { 20 | "$ref": "./TradeGood.json" 21 | } 22 | }, 23 | "exchange": { 24 | "type": "array", 25 | "description": "The list of goods that are bought and sold between agents at this market.", 26 | "items": { 27 | "$ref": "./TradeGood.json" 28 | } 29 | }, 30 | "transactions": { 31 | "type": "array", 32 | "description": "The list of recent transactions at this market. Visible only when a ship is present at the market.", 33 | "items": { 34 | "$ref": "./MarketTransaction.json" 35 | } 36 | }, 37 | "tradeGoods": { 38 | "type": "array", 39 | "description": "The list of goods that are traded at this market. Visible only when a ship is present at the market.", 40 | "items": { 41 | "$ref": "./MarketTradeGood.json" 42 | } 43 | } 44 | }, 45 | "required": ["symbol", "exports", "imports", "exchange"] 46 | } 47 | -------------------------------------------------------------------------------- /models/MarketTradeGood.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "$ref": "./TradeSymbol.json" 6 | }, 7 | "type": { 8 | "type": "string", 9 | "description": "The type of trade good (export, import, or exchange).", 10 | "enum": ["EXPORT", "IMPORT", "EXCHANGE"] 11 | }, 12 | "tradeVolume": { 13 | "type": "integer", 14 | "description": "This is the maximum number of units that can be purchased or sold at this market in a single trade for this good. Trade volume also gives an indication of price volatility. A market with a low trade volume will have large price swings, while high trade volume will be more resilient to price changes.", 15 | "minimum": 1 16 | }, 17 | "supply": { 18 | "$ref": "./SupplyLevel.json" 19 | }, 20 | "activity": { 21 | "$ref": "./ActivityLevel.json" 22 | }, 23 | "purchasePrice": { 24 | "type": "integer", 25 | "description": "The price at which this good can be purchased from the market.", 26 | "minimum": 0 27 | }, 28 | "sellPrice": { 29 | "type": "integer", 30 | "description": "The price at which this good can be sold to the market.", 31 | "minimum": 0 32 | } 33 | }, 34 | "required": ["symbol", "type", "tradeVolume", "supply", "purchasePrice", "sellPrice"] 35 | } 36 | -------------------------------------------------------------------------------- /models/MarketTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "waypointSymbol": { 5 | "$ref": "./WaypointSymbol.json" 6 | }, 7 | "shipSymbol": { 8 | "type": "string", 9 | "description": "The symbol of the ship that made the transaction." 10 | }, 11 | "tradeSymbol": { 12 | "type": "string", 13 | "description": "The symbol of the trade good." 14 | }, 15 | "type": { 16 | "type": "string", 17 | "description": "The type of transaction.", 18 | "enum": ["PURCHASE", "SELL"] 19 | }, 20 | "units": { 21 | "type": "integer", 22 | "description": "The number of units of the transaction.", 23 | "minimum": 0 24 | }, 25 | "pricePerUnit": { 26 | "type": "integer", 27 | "description": "The price per unit of the transaction.", 28 | "minimum": 0 29 | }, 30 | "totalPrice": { 31 | "type": "integer", 32 | "description": "The total price of the transaction.", 33 | "minimum": 0 34 | }, 35 | "timestamp": { 36 | "type": "string", 37 | "format": "date-time", 38 | "description": "The timestamp of the transaction." 39 | } 40 | }, 41 | "required": [ 42 | "waypointSymbol", 43 | "shipSymbol", 44 | "tradeSymbol", 45 | "type", 46 | "units", 47 | "pricePerUnit", 48 | "totalPrice", 49 | "timestamp" 50 | ], 51 | "description": "Result of a transaction with a market." 52 | } 53 | -------------------------------------------------------------------------------- /models/Meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Meta details for pagination.", 3 | "type": "object", 4 | "x-examples": { 5 | "example-1": { 6 | "total": 6, 7 | "page": 1, 8 | "limit": 20 9 | } 10 | }, 11 | "properties": { 12 | "total": { 13 | "type": "integer", 14 | "description": "Shows the total amount of items of this kind that exist.", 15 | "minimum": 0 16 | }, 17 | "page": { 18 | "type": "integer", 19 | "default": 1, 20 | "description": "A page denotes an amount of items, offset from the first item. Each page holds an amount of items equal to the `limit`.", 21 | "minimum": 1 22 | }, 23 | "limit": { 24 | "type": "integer", 25 | "default": 10, 26 | "description": "The amount of items in each page. Limits how many items can be fetched at once.", 27 | "minimum": 1, 28 | "maximum": 20 29 | } 30 | }, 31 | "required": ["total", "page", "limit"] 32 | } 33 | -------------------------------------------------------------------------------- /models/RepairTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "waypointSymbol": { 5 | "$ref": "./WaypointSymbol.json" 6 | }, 7 | "shipSymbol": { 8 | "type": "string", 9 | "description": "The symbol of the ship." 10 | }, 11 | "totalPrice": { 12 | "type": "integer", 13 | "description": "The total price of the transaction.", 14 | "minimum": 0 15 | }, 16 | "timestamp": { 17 | "type": "string", 18 | "format": "date-time", 19 | "description": "The timestamp of the transaction." 20 | } 21 | }, 22 | "required": ["waypointSymbol", "shipSymbol", "totalPrice", "timestamp"], 23 | "description": "Result of a repair transaction." 24 | } 25 | -------------------------------------------------------------------------------- /models/ScannedShip.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The ship that was scanned. Details include information about the ship that could be detected by the scanner.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The globally unique identifier of the ship." 8 | }, 9 | "registration": { 10 | "$ref": "./ShipRegistration.json" 11 | }, 12 | "nav": { 13 | "$ref": "./ShipNav.json" 14 | }, 15 | "frame": { 16 | "type": "object", 17 | "description": "The frame of the ship.", 18 | "properties": { 19 | "symbol": { 20 | "type": "string", 21 | "description": "The symbol of the frame." 22 | } 23 | }, 24 | "required": ["symbol"] 25 | }, 26 | "reactor": { 27 | "type": "object", 28 | "description": "The reactor of the ship.", 29 | "properties": { 30 | "symbol": { 31 | "type": "string", 32 | "description": "The symbol of the reactor." 33 | } 34 | }, 35 | "required": ["symbol"] 36 | }, 37 | "engine": { 38 | "type": "object", 39 | "description": "The engine of the ship.", 40 | "required": ["symbol"], 41 | "properties": { 42 | "symbol": { 43 | "type": "string", 44 | "description": "The symbol of the engine." 45 | } 46 | } 47 | }, 48 | "mounts": { 49 | "type": "array", 50 | "description": "List of mounts installed in the ship.", 51 | "items": { 52 | "type": "object", 53 | "description": "A mount on the ship.", 54 | "properties": { 55 | "symbol": { 56 | "type": "string", 57 | "description": "The symbol of the mount." 58 | } 59 | }, 60 | "required": ["symbol"] 61 | } 62 | } 63 | }, 64 | "required": ["symbol", "registration", "nav", "engine"] 65 | } 66 | -------------------------------------------------------------------------------- /models/ScannedSystem.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Details of a system was that scanned.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "Symbol of the system." 9 | }, 10 | "sectorSymbol": { 11 | "type": "string", 12 | "minLength": 1, 13 | "description": "Symbol of the system's sector." 14 | }, 15 | "type": { 16 | "$ref": "./SystemType.json" 17 | }, 18 | "x": { 19 | "type": "integer", 20 | "description": "Position in the universe in the x axis." 21 | }, 22 | "y": { 23 | "type": "integer", 24 | "description": "Position in the universe in the y axis." 25 | }, 26 | "distance": { 27 | "type": "integer", 28 | "description": "The system's distance from the scanning ship." 29 | } 30 | }, 31 | "required": ["symbol", "sectorSymbol", "type", "x", "y", "distance"] 32 | } 33 | -------------------------------------------------------------------------------- /models/ScannedWaypoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A waypoint that was scanned by a ship.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "type": { 9 | "$ref": "./WaypointType.json" 10 | }, 11 | "systemSymbol": { 12 | "$ref": "./SystemSymbol.json" 13 | }, 14 | "x": { 15 | "type": "integer", 16 | "description": "Position in the universe in the x axis." 17 | }, 18 | "y": { 19 | "type": "integer", 20 | "description": "Position in the universe in the y axis." 21 | }, 22 | "orbitals": { 23 | "type": "array", 24 | "description": "List of waypoints that orbit this waypoint.", 25 | "items": { 26 | "$ref": "./WaypointOrbital.json" 27 | } 28 | }, 29 | "faction": { 30 | "$ref": "./WaypointFaction.json" 31 | }, 32 | "traits": { 33 | "type": "array", 34 | "description": "The traits of the waypoint.", 35 | "items": { 36 | "$ref": "./WaypointTrait.json" 37 | } 38 | }, 39 | "chart": { 40 | "$ref": "./Chart.json" 41 | } 42 | }, 43 | "required": ["symbol", "type", "systemSymbol", "x", "y", "orbitals", "traits"] 44 | } 45 | -------------------------------------------------------------------------------- /models/ScrapTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "waypointSymbol": { 5 | "$ref": "./WaypointSymbol.json" 6 | }, 7 | "shipSymbol": { 8 | "type": "string", 9 | "description": "The symbol of the ship." 10 | }, 11 | "totalPrice": { 12 | "type": "integer", 13 | "description": "The total price of the transaction.", 14 | "minimum": 0 15 | }, 16 | "timestamp": { 17 | "type": "string", 18 | "format": "date-time", 19 | "description": "The timestamp of the transaction." 20 | } 21 | }, 22 | "required": ["waypointSymbol", "shipSymbol", "totalPrice", "timestamp"], 23 | "description": "Result of a scrap transaction." 24 | } 25 | -------------------------------------------------------------------------------- /models/Ship.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Ship details.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The globally unique identifier of the ship in the following format: `[AGENT_SYMBOL]-[HEX_ID]`" 8 | }, 9 | "registration": { 10 | "$ref": "./ShipRegistration.json" 11 | }, 12 | "nav": { 13 | "$ref": "./ShipNav.json" 14 | }, 15 | "crew": { 16 | "$ref": "./ShipCrew.json" 17 | }, 18 | "frame": { 19 | "$ref": "./ShipFrame.json" 20 | }, 21 | "reactor": { 22 | "$ref": "./ShipReactor.json" 23 | }, 24 | "engine": { 25 | "$ref": "./ShipEngine.json" 26 | }, 27 | "cooldown": { 28 | "$ref": "./Cooldown.json" 29 | }, 30 | "modules": { 31 | "type": "array", 32 | "description": "Modules installed in this ship.", 33 | "items": { 34 | "$ref": "./ShipModule.json" 35 | } 36 | }, 37 | "mounts": { 38 | "type": "array", 39 | "description": "Mounts installed in this ship.", 40 | "items": { 41 | "$ref": "./ShipMount.json" 42 | } 43 | }, 44 | "cargo": { 45 | "$ref": "./ShipCargo.json" 46 | }, 47 | "fuel": { 48 | "$ref": "./ShipFuel.json" 49 | } 50 | }, 51 | "required": [ 52 | "symbol", 53 | "registration", 54 | "nav", 55 | "crew", 56 | "frame", 57 | "reactor", 58 | "engine", 59 | "modules", 60 | "mounts", 61 | "cargo", 62 | "fuel", 63 | "cooldown" 64 | ] 65 | } 66 | -------------------------------------------------------------------------------- /models/ShipCargo.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "capacity": { 5 | "type": "integer", 6 | "description": "The max number of items that can be stored in the cargo hold.", 7 | "minimum": 0 8 | }, 9 | "units": { 10 | "type": "integer", 11 | "description": "The number of items currently stored in the cargo hold.", 12 | "minimum": 0 13 | }, 14 | "inventory": { 15 | "type": "array", 16 | "description": "The items currently in the cargo hold.", 17 | "items": { 18 | "$ref": "./ShipCargoItem.json" 19 | } 20 | } 21 | }, 22 | "required": ["capacity", "units", "inventory"], 23 | "description": "Ship cargo details." 24 | } 25 | -------------------------------------------------------------------------------- /models/ShipCargoItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The type of cargo item and the number of units.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./TradeSymbol.json" 7 | }, 8 | "name": { 9 | "type": "string", 10 | "description": "The name of the cargo item type." 11 | }, 12 | "description": { 13 | "type": "string", 14 | "description": "The description of the cargo item type." 15 | }, 16 | "units": { 17 | "type": "integer", 18 | "description": "The number of units of the cargo item.", 19 | "minimum": 1 20 | } 21 | }, 22 | "required": ["symbol", "name", "description", "units"] 23 | } 24 | -------------------------------------------------------------------------------- /models/ShipComponentCondition.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "number", 3 | "format": "double", 4 | "description": "The repairable condition of a component. A value of 0 indicates the component needs significant repairs, while a value of 1 indicates the component is in near perfect condition. As the condition of a component is repaired, the overall integrity of the component decreases.", 5 | "minimum": 0, 6 | "maximum": 1 7 | } 8 | -------------------------------------------------------------------------------- /models/ShipComponentIntegrity.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "number", 3 | "format": "double", 4 | "description": "The overall integrity of the component, which determines the performance of the component. A value of 0 indicates that the component is almost completely degraded, while a value of 1 indicates that the component is in near perfect condition. The integrity of the component is non-repairable, and represents permanent wear over time.", 5 | "minimum": 0, 6 | "maximum": 1 7 | } 8 | -------------------------------------------------------------------------------- /models/ShipComponentQuality.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "number", 3 | "format": "integer", 4 | "description": "The overall quality of the component, which determines the quality of the component. High quality components return more ships parts and ship plating when a ship is scrapped. But also require more of these parts to repair. This is transparent to the player, as the parts are bought from/sold to the marketplace." 5 | } 6 | -------------------------------------------------------------------------------- /models/ShipConditionEvent.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "An event that represents damage or wear to a ship's reactor, frame, or engine, reducing the condition of the ship.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": [ 8 | "REACTOR_OVERLOAD", 9 | "ENERGY_SPIKE_FROM_MINERAL", 10 | "SOLAR_FLARE_INTERFERENCE", 11 | "COOLANT_LEAK", 12 | "POWER_DISTRIBUTION_FLUCTUATION", 13 | "MAGNETIC_FIELD_DISRUPTION", 14 | "HULL_MICROMETEORITE_STRIKES", 15 | "STRUCTURAL_STRESS_FRACTURES", 16 | "CORROSIVE_MINERAL_CONTAMINATION", 17 | "THERMAL_EXPANSION_MISMATCH", 18 | "VIBRATION_DAMAGE_FROM_DRILLING", 19 | "ELECTROMAGNETIC_FIELD_INTERFERENCE", 20 | "IMPACT_WITH_EXTRACTED_DEBRIS", 21 | "FUEL_EFFICIENCY_DEGRADATION", 22 | "COOLANT_SYSTEM_AGEING", 23 | "DUST_MICROABRASIONS", 24 | "THRUSTER_NOZZLE_WEAR", 25 | "EXHAUST_PORT_CLOGGING", 26 | "BEARING_LUBRICATION_FADE", 27 | "SENSOR_CALIBRATION_DRIFT", 28 | "HULL_MICROMETEORITE_DAMAGE", 29 | "SPACE_DEBRIS_COLLISION", 30 | "THERMAL_STRESS", 31 | "VIBRATION_OVERLOAD", 32 | "PRESSURE_DIFFERENTIAL_STRESS", 33 | "ELECTROMAGNETIC_SURGE_EFFECTS", 34 | "ATMOSPHERIC_ENTRY_HEAT" 35 | ] 36 | }, 37 | "component": { 38 | "type": "string", 39 | "enum": ["FRAME", "REACTOR", "ENGINE"] 40 | }, 41 | "name": { 42 | "type": "string", 43 | "description": "The name of the event." 44 | }, 45 | "description": { 46 | "type": "string", 47 | "description": "A description of the event." 48 | } 49 | }, 50 | "required": ["symbol", "component", "name", "description"] 51 | } 52 | -------------------------------------------------------------------------------- /models/ShipCrew.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The ship's crew service and maintain the ship's systems and equipment.", 4 | "properties": { 5 | "current": { 6 | "type": "integer", 7 | "description": "The current number of crew members on the ship." 8 | }, 9 | "required": { 10 | "type": "integer", 11 | "description": "The minimum number of crew members required to maintain the ship." 12 | }, 13 | "capacity": { 14 | "type": "integer", 15 | "description": "The maximum number of crew members the ship can support." 16 | }, 17 | "rotation": { 18 | "type": "string", 19 | "description": "The rotation of crew shifts. A stricter shift improves the ship's performance. A more relaxed shift improves the crew's morale.", 20 | "enum": ["STRICT", "RELAXED"], 21 | "default": "STRICT" 22 | }, 23 | "morale": { 24 | "type": "integer", 25 | "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.", 26 | "minimum": 0, 27 | "maximum": 100 28 | }, 29 | "wages": { 30 | "type": "integer", 31 | "description": "The amount of credits per crew member paid per hour. Wages are paid when a ship docks at a civilized waypoint.", 32 | "minimum": 0 33 | } 34 | }, 35 | "required": ["current", "required", "capacity", "rotation", "morale", "wages"] 36 | } 37 | -------------------------------------------------------------------------------- /models/ShipEngine.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The engine determines how quickly a ship travels between waypoints.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": ["ENGINE_IMPULSE_DRIVE_I", "ENGINE_ION_DRIVE_I", "ENGINE_ION_DRIVE_II", "ENGINE_HYPER_DRIVE_I"], 8 | "description": "The symbol of the engine." 9 | }, 10 | "name": { 11 | "type": "string", 12 | "description": "The name of the engine." 13 | }, 14 | "description": { 15 | "type": "string", 16 | "description": "The description of the engine." 17 | }, 18 | "condition": { 19 | "$ref": "./ShipComponentCondition.json" 20 | }, 21 | "integrity": { 22 | "$ref": "./ShipComponentIntegrity.json" 23 | }, 24 | "speed": { 25 | "type": "integer", 26 | "minimum": 1, 27 | "description": "The speed stat of this engine. The higher the speed, the faster a ship can travel from one point to another. Reduces the time of arrival when navigating the ship." 28 | }, 29 | "requirements": { 30 | "$ref": "./ShipRequirements.json" 31 | }, 32 | "quality": { 33 | "$ref": "./ShipComponentQuality.json" 34 | } 35 | }, 36 | "required": ["symbol", "name", "condition", "integrity", "description", "speed", "requirements", "quality"] 37 | } 38 | -------------------------------------------------------------------------------- /models/ShipFrame.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "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.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": [ 8 | "FRAME_PROBE", 9 | "FRAME_DRONE", 10 | "FRAME_INTERCEPTOR", 11 | "FRAME_RACER", 12 | "FRAME_FIGHTER", 13 | "FRAME_FRIGATE", 14 | "FRAME_SHUTTLE", 15 | "FRAME_EXPLORER", 16 | "FRAME_MINER", 17 | "FRAME_LIGHT_FREIGHTER", 18 | "FRAME_HEAVY_FREIGHTER", 19 | "FRAME_TRANSPORT", 20 | "FRAME_DESTROYER", 21 | "FRAME_CRUISER", 22 | "FRAME_CARRIER", 23 | "FRAME_BULK_FREIGHTER" 24 | ], 25 | "description": "Symbol of the frame." 26 | }, 27 | "name": { 28 | "type": "string", 29 | "description": "Name of the frame." 30 | }, 31 | "description": { 32 | "type": "string", 33 | "description": "Description of the frame." 34 | }, 35 | "condition": { 36 | "$ref": "./ShipComponentCondition.json" 37 | }, 38 | "integrity": { 39 | "$ref": "./ShipComponentIntegrity.json" 40 | }, 41 | "moduleSlots": { 42 | "type": "integer", 43 | "minimum": 0, 44 | "description": "The amount of slots that can be dedicated to modules installed in the ship. Each installed module take up a number of slots, and once there are no more slots, no new modules can be installed." 45 | }, 46 | "mountingPoints": { 47 | "type": "integer", 48 | "minimum": 0, 49 | "description": "The amount of slots that can be dedicated to mounts installed in the ship. Each installed mount takes up a number of points, and once there are no more points remaining, no new mounts can be installed." 50 | }, 51 | "fuelCapacity": { 52 | "type": "integer", 53 | "minimum": 0, 54 | "description": "The maximum amount of fuel that can be stored in this ship. When refueling, the ship will be refueled to this amount." 55 | }, 56 | "requirements": { 57 | "$ref": "./ShipRequirements.json" 58 | }, 59 | "quality": { 60 | "$ref": "./ShipComponentQuality.json" 61 | } 62 | }, 63 | "required": [ 64 | "symbol", 65 | "name", 66 | "condition", 67 | "integrity", 68 | "description", 69 | "moduleSlots", 70 | "mountingPoints", 71 | "fuelCapacity", 72 | "requirements", 73 | "quality" 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /models/ShipFuel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "Details of the ship's fuel tanks including how much fuel was consumed during the last transit or action.", 4 | "properties": { 5 | "current": { 6 | "type": "integer", 7 | "description": "The current amount of fuel in the ship's tanks.", 8 | "minimum": 0 9 | }, 10 | "capacity": { 11 | "type": "integer", 12 | "description": "The maximum amount of fuel the ship's tanks can hold.", 13 | "minimum": 0 14 | }, 15 | "consumed": { 16 | "type": "object", 17 | "description": "An object that only shows up when an action has consumed fuel in the process. Shows the fuel consumption data.", 18 | "properties": { 19 | "amount": { 20 | "type": "integer", 21 | "description": "The amount of fuel consumed by the most recent transit or action.", 22 | "minimum": 0 23 | }, 24 | "timestamp": { 25 | "type": "string", 26 | "format": "date-time", 27 | "description": "The time at which the fuel was consumed." 28 | } 29 | }, 30 | "required": ["amount", "timestamp"] 31 | } 32 | }, 33 | "required": ["current", "capacity"] 34 | } 35 | -------------------------------------------------------------------------------- /models/ShipModificationTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "waypointSymbol": { 5 | "type": "string", 6 | "description": "The symbol of the waypoint where the transaction took place." 7 | }, 8 | "shipSymbol": { 9 | "type": "string", 10 | "description": "The symbol of the ship that made the transaction." 11 | }, 12 | "tradeSymbol": { 13 | "type": "string", 14 | "description": "The symbol of the trade good." 15 | }, 16 | "totalPrice": { 17 | "type": "integer", 18 | "description": "The total price of the transaction.", 19 | "minimum": 0 20 | }, 21 | "timestamp": { 22 | "type": "string", 23 | "format": "date-time", 24 | "description": "The timestamp of the transaction." 25 | } 26 | }, 27 | "required": ["waypointSymbol", "shipSymbol", "tradeSymbol", "totalPrice", "timestamp"], 28 | "description": "Result of a transaction for a ship modification, such as installing a mount or a module." 29 | } 30 | -------------------------------------------------------------------------------- /models/ShipModule.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "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.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": [ 8 | "MODULE_MINERAL_PROCESSOR_I", 9 | "MODULE_GAS_PROCESSOR_I", 10 | "MODULE_CARGO_HOLD_I", 11 | "MODULE_CARGO_HOLD_II", 12 | "MODULE_CARGO_HOLD_III", 13 | "MODULE_CREW_QUARTERS_I", 14 | "MODULE_ENVOY_QUARTERS_I", 15 | "MODULE_PASSENGER_CABIN_I", 16 | "MODULE_MICRO_REFINERY_I", 17 | "MODULE_ORE_REFINERY_I", 18 | "MODULE_FUEL_REFINERY_I", 19 | "MODULE_SCIENCE_LAB_I", 20 | "MODULE_JUMP_DRIVE_I", 21 | "MODULE_JUMP_DRIVE_II", 22 | "MODULE_JUMP_DRIVE_III", 23 | "MODULE_WARP_DRIVE_I", 24 | "MODULE_WARP_DRIVE_II", 25 | "MODULE_WARP_DRIVE_III", 26 | "MODULE_SHIELD_GENERATOR_I", 27 | "MODULE_SHIELD_GENERATOR_II" 28 | ], 29 | "description": "The symbol of the module." 30 | }, 31 | "capacity": { 32 | "type": "integer", 33 | "minimum": 0, 34 | "description": "Modules that provide capacity, such as cargo hold or crew quarters will show this value to denote how much of a bonus the module grants." 35 | }, 36 | "range": { 37 | "type": "integer", 38 | "minimum": 0, 39 | "description": "Modules that have a range will such as a sensor array show this value to denote how far can the module reach with its capabilities." 40 | }, 41 | "name": { 42 | "type": "string", 43 | "description": "Name of this module." 44 | }, 45 | "description": { 46 | "type": "string", 47 | "description": "Description of this module." 48 | }, 49 | "requirements": { 50 | "$ref": "./ShipRequirements.json" 51 | } 52 | }, 53 | "required": ["symbol", "name", "description", "requirements"] 54 | } 55 | -------------------------------------------------------------------------------- /models/ShipMount.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A mount is installed on the exterier of a ship.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": [ 8 | "MOUNT_GAS_SIPHON_I", 9 | "MOUNT_GAS_SIPHON_II", 10 | "MOUNT_GAS_SIPHON_III", 11 | "MOUNT_SURVEYOR_I", 12 | "MOUNT_SURVEYOR_II", 13 | "MOUNT_SURVEYOR_III", 14 | "MOUNT_SENSOR_ARRAY_I", 15 | "MOUNT_SENSOR_ARRAY_II", 16 | "MOUNT_SENSOR_ARRAY_III", 17 | "MOUNT_MINING_LASER_I", 18 | "MOUNT_MINING_LASER_II", 19 | "MOUNT_MINING_LASER_III", 20 | "MOUNT_LASER_CANNON_I", 21 | "MOUNT_MISSILE_LAUNCHER_I", 22 | "MOUNT_TURRET_I" 23 | ], 24 | "description": "Symbo of this mount." 25 | }, 26 | "name": { 27 | "type": "string", 28 | "description": "Name of this mount." 29 | }, 30 | "description": { 31 | "type": "string", 32 | "description": "Description of this mount." 33 | }, 34 | "strength": { 35 | "type": "integer", 36 | "minimum": 0, 37 | "description": "Mounts that have this value, such as mining lasers, denote how powerful this mount's capabilities are." 38 | }, 39 | "deposits": { 40 | "type": "array", 41 | "description": "Mounts that have this value denote what goods can be produced from using the mount.", 42 | "items": { 43 | "type": "string", 44 | "enum": [ 45 | "QUARTZ_SAND", 46 | "SILICON_CRYSTALS", 47 | "PRECIOUS_STONES", 48 | "ICE_WATER", 49 | "AMMONIA_ICE", 50 | "IRON_ORE", 51 | "COPPER_ORE", 52 | "SILVER_ORE", 53 | "ALUMINUM_ORE", 54 | "GOLD_ORE", 55 | "PLATINUM_ORE", 56 | "DIAMONDS", 57 | "URANITE_ORE", 58 | "MERITIUM_ORE" 59 | ] 60 | } 61 | }, 62 | "requirements": { 63 | "$ref": "./ShipRequirements.json" 64 | } 65 | }, 66 | "required": ["symbol", "name", "requirements"] 67 | } 68 | -------------------------------------------------------------------------------- /models/ShipNav.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The navigation information of the ship.", 4 | "properties": { 5 | "systemSymbol": { 6 | "$ref": "./SystemSymbol.json" 7 | }, 8 | "waypointSymbol": { 9 | "$ref": "./WaypointSymbol.json" 10 | }, 11 | "route": { 12 | "$ref": "./ShipNavRoute.json" 13 | }, 14 | "status": { 15 | "$ref": "./ShipNavStatus.json" 16 | }, 17 | "flightMode": { 18 | "$ref": "./ShipNavFlightMode.json" 19 | } 20 | }, 21 | "required": ["systemSymbol", "waypointSymbol", "route", "status", "flightMode"] 22 | } 23 | -------------------------------------------------------------------------------- /models/ShipNavFlightMode.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The ship's set speed when traveling between waypoints or systems.", 4 | "enum": ["DRIFT", "STEALTH", "CRUISE", "BURN"], 5 | "default": "CRUISE" 6 | } 7 | -------------------------------------------------------------------------------- /models/ShipNavRoute.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The routing information for the ship's most recent transit or current location.", 4 | "properties": { 5 | "destination": { 6 | "$ref": "./ShipNavRouteWaypoint.json" 7 | }, 8 | "origin": { 9 | "$ref": "./ShipNavRouteWaypoint.json" 10 | }, 11 | "departureTime": { 12 | "type": "string", 13 | "format": "date-time", 14 | "description": "The date time of the ship's departure." 15 | }, 16 | "arrival": { 17 | "type": "string", 18 | "format": "date-time", 19 | "description": "The date time of the ship's arrival. If the ship is in-transit, this is the expected time of arrival." 20 | } 21 | }, 22 | "required": ["destination", "departure", "origin", "departureTime", "arrival"] 23 | } 24 | -------------------------------------------------------------------------------- /models/ShipNavRouteWaypoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The destination or departure of a ships nav route.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "The symbol of the waypoint." 9 | }, 10 | "type": { 11 | "$ref": "./WaypointType.json" 12 | }, 13 | "systemSymbol": { 14 | "$ref": "./SystemSymbol.json" 15 | }, 16 | "x": { 17 | "type": "integer", 18 | "description": "Position in the universe in the x axis." 19 | }, 20 | "y": { 21 | "type": "integer", 22 | "description": "Position in the universe in the y axis." 23 | } 24 | }, 25 | "required": ["symbol", "type", "systemSymbol", "x", "y"] 26 | } 27 | -------------------------------------------------------------------------------- /models/ShipNavRouteWaypointDeprecated.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "deprecated": true, 4 | "description": "Deprecated. Use origin instead.", 5 | "properties": { 6 | "symbol": { 7 | "type": "string", 8 | "minLength": 1, 9 | "description": "The symbol of the waypoint." 10 | }, 11 | "type": { 12 | "$ref": "./WaypointType.json" 13 | }, 14 | "systemSymbol": { 15 | "$ref": "./SystemSymbol.json" 16 | }, 17 | "x": { 18 | "type": "integer", 19 | "description": "Position in the universe in the x axis." 20 | }, 21 | "y": { 22 | "type": "integer", 23 | "description": "Position in the universe in the y axis." 24 | } 25 | }, 26 | "required": ["symbol", "type", "systemSymbol", "x", "y"] 27 | } 28 | -------------------------------------------------------------------------------- /models/ShipNavStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The current status of the ship", 4 | "enum": ["IN_TRANSIT", "IN_ORBIT", "DOCKED"] 5 | } 6 | -------------------------------------------------------------------------------- /models/ShipReactor.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The reactor of the ship. The reactor is responsible for powering the ship's systems and weapons.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "enum": [ 8 | "REACTOR_SOLAR_I", 9 | "REACTOR_FUSION_I", 10 | "REACTOR_FISSION_I", 11 | "REACTOR_CHEMICAL_I", 12 | "REACTOR_ANTIMATTER_I" 13 | ], 14 | "description": "Symbol of the reactor." 15 | }, 16 | "name": { 17 | "type": "string", 18 | "description": "Name of the reactor." 19 | }, 20 | "description": { 21 | "type": "string", 22 | "description": "Description of the reactor." 23 | }, 24 | "condition": { 25 | "$ref": "./ShipComponentCondition.json" 26 | }, 27 | "integrity": { 28 | "$ref": "./ShipComponentIntegrity.json" 29 | }, 30 | "powerOutput": { 31 | "type": "integer", 32 | "minimum": 1, 33 | "description": "The amount of power provided by this reactor. The more power a reactor provides to the ship, the lower the cooldown it gets when using a module or mount that taxes the ship's power." 34 | }, 35 | "requirements": { 36 | "$ref": "./ShipRequirements.json" 37 | }, 38 | "quality": { 39 | "$ref": "./ShipComponentQuality.json" 40 | } 41 | }, 42 | "required": ["symbol", "name", "condition", "integrity", "description", "powerOutput", "requirements", "quality"] 43 | } 44 | -------------------------------------------------------------------------------- /models/ShipRegistration.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The public registration information of the ship", 4 | "properties": { 5 | "name": { 6 | "type": "string", 7 | "description": "The agent's registered name of the ship", 8 | "minLength": 1 9 | }, 10 | "factionSymbol": { 11 | "type": "string", 12 | "description": "The symbol of the faction the ship is registered with", 13 | "minLength": 1 14 | }, 15 | "role": { 16 | "$ref": "./ShipRole.json" 17 | } 18 | }, 19 | "required": ["name", "factionSymbol", "role"] 20 | } 21 | -------------------------------------------------------------------------------- /models/ShipRequirements.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The requirements for installation on a ship", 4 | "properties": { 5 | "power": { 6 | "type": "integer", 7 | "description": "The amount of power required from the reactor." 8 | }, 9 | "crew": { 10 | "type": "integer", 11 | "description": "The number of crew required for operation." 12 | }, 13 | "slots": { 14 | "type": "integer", 15 | "description": "The number of module slots required for installation." 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /models/ShipRole.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The registered role of the ship", 4 | "enum": [ 5 | "FABRICATOR", 6 | "HARVESTER", 7 | "HAULER", 8 | "INTERCEPTOR", 9 | "EXCAVATOR", 10 | "TRANSPORT", 11 | "REPAIR", 12 | "SURVEYOR", 13 | "COMMAND", 14 | "CARRIER", 15 | "PATROL", 16 | "SATELLITE", 17 | "EXPLORER", 18 | "REFINERY" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /models/ShipType.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Type of ship", 3 | "type": "string", 4 | "enum": [ 5 | "SHIP_PROBE", 6 | "SHIP_MINING_DRONE", 7 | "SHIP_SIPHON_DRONE", 8 | "SHIP_INTERCEPTOR", 9 | "SHIP_LIGHT_HAULER", 10 | "SHIP_COMMAND_FRIGATE", 11 | "SHIP_EXPLORER", 12 | "SHIP_HEAVY_FREIGHTER", 13 | "SHIP_LIGHT_SHUTTLE", 14 | "SHIP_ORE_HOUND", 15 | "SHIP_REFINING_FREIGHTER", 16 | "SHIP_SURVEYOR", 17 | "SHIP_BULK_FREIGHTER" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /models/Shipyard.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Shipyard details.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The symbol of the shipyard. The symbol is the same as the waypoint where the shipyard is located.", 8 | "minLength": 1 9 | }, 10 | "shipTypes": { 11 | "type": "array", 12 | "description": "The list of ship types available for purchase at this shipyard.", 13 | "items": { 14 | "type": "object", 15 | "properties": { 16 | "type": { 17 | "$ref": "./ShipType.json" 18 | } 19 | }, 20 | "required": ["type"] 21 | } 22 | }, 23 | "transactions": { 24 | "type": "array", 25 | "description": "The list of recent transactions at this shipyard.", 26 | "items": { 27 | "$ref": "./ShipyardTransaction.json" 28 | } 29 | }, 30 | "ships": { 31 | "type": "array", 32 | "description": "The ships that are currently available for purchase at the shipyard.", 33 | "items": { 34 | "$ref": "./ShipyardShip.json" 35 | } 36 | }, 37 | "modificationsFee": { 38 | "type": "integer", 39 | "description": "The fee to modify a ship at this shipyard. This includes installing or removing modules and mounts on a ship. In the case of mounts, the fee is a flat rate per mount. In the case of modules, the fee is per slot the module occupies." 40 | } 41 | }, 42 | "required": ["symbol", "shipTypes", "modificationsFee"] 43 | } 44 | -------------------------------------------------------------------------------- /models/ShipyardShip.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "", 3 | "type": "object", 4 | "properties": { 5 | "type": { 6 | "$ref": "./ShipType.json" 7 | }, 8 | "name": { 9 | "type": "string" 10 | }, 11 | "description": { 12 | "type": "string" 13 | }, 14 | "supply": { 15 | "$ref": "./SupplyLevel.json" 16 | }, 17 | "activity": { 18 | "$ref": "./ActivityLevel.json" 19 | }, 20 | "purchasePrice": { 21 | "type": "integer" 22 | }, 23 | "frame": { 24 | "$ref": "./ShipFrame.json" 25 | }, 26 | "reactor": { 27 | "$ref": "./ShipReactor.json" 28 | }, 29 | "engine": { 30 | "$ref": "./ShipEngine.json" 31 | }, 32 | "modules": { 33 | "type": "array", 34 | "items": { 35 | "$ref": "./ShipModule.json" 36 | } 37 | }, 38 | "mounts": { 39 | "type": "array", 40 | "items": { 41 | "$ref": "./ShipMount.json" 42 | } 43 | }, 44 | "crew": { 45 | "type": "object", 46 | "properties": { 47 | "required": { 48 | "type": "integer" 49 | }, 50 | "capacity": { 51 | "type": "integer" 52 | } 53 | }, 54 | "required": ["required", "capacity"] 55 | } 56 | }, 57 | "required": [ 58 | "type", 59 | "symbol", 60 | "name", 61 | "description", 62 | "supply", 63 | "purchasePrice", 64 | "frame", 65 | "reactor", 66 | "engine", 67 | "modules", 68 | "mounts", 69 | "crew" 70 | ] 71 | } 72 | -------------------------------------------------------------------------------- /models/ShipyardTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "Results of a transaction with a shipyard.", 4 | "properties": { 5 | "waypointSymbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "shipSymbol": { 9 | "type": "string", 10 | "deprecated": true, 11 | "description": "The symbol of the ship type (e.g. SHIP_MINING_DRONE) that was the subject of the transaction. Contrary to what the name implies, this is NOT the symbol of the ship that was purchased." 12 | }, 13 | "shipType": { 14 | "type": "string", 15 | "description": "The symbol of the ship type (e.g. SHIP_MINING_DRONE) that was the subject of the transaction." 16 | }, 17 | "price": { 18 | "type": "integer", 19 | "description": "The price of the transaction.", 20 | "minimum": 0 21 | }, 22 | "agentSymbol": { 23 | "type": "string", 24 | "description": "The symbol of the agent that made the transaction." 25 | }, 26 | "timestamp": { 27 | "type": "string", 28 | "format": "date-time", 29 | "description": "The timestamp of the transaction." 30 | } 31 | }, 32 | "required": ["waypointSymbol", "shipSymbol", "shipType", "price", "agentSymbol", "timestamp"] 33 | } 34 | -------------------------------------------------------------------------------- /models/Siphon.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Siphon details.", 3 | "type": "object", 4 | "properties": { 5 | "shipSymbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "Symbol of the ship that executed the siphon." 9 | }, 10 | "yield": { 11 | "$ref": "./SiphonYield.json" 12 | } 13 | }, 14 | "required": ["shipSymbol", "yield"] 15 | } 16 | -------------------------------------------------------------------------------- /models/SiphonYield.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A yield from the siphon operation.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./TradeSymbol.json" 7 | }, 8 | "units": { 9 | "type": "integer", 10 | "description": "The number of units siphoned that were placed into the ship's cargo hold." 11 | } 12 | }, 13 | "required": ["symbol", "units"] 14 | } 15 | -------------------------------------------------------------------------------- /models/SupplyLevel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The supply level of a trade good.", 4 | "enum": ["SCARCE", "LIMITED", "MODERATE", "HIGH", "ABUNDANT"] 5 | } 6 | -------------------------------------------------------------------------------- /models/Survey.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A resource survey of a waypoint, detailing a specific extraction location and the types of resources that can be found there.", 3 | "type": "object", 4 | "properties": { 5 | "signature": { 6 | "type": "string", 7 | "description": "A unique signature for the location of this survey. This signature is verified when attempting an extraction using this survey.", 8 | "minLength": 1 9 | }, 10 | "symbol": { 11 | "type": "string", 12 | "description": "The symbol of the waypoint that this survey is for.", 13 | "minLength": 1 14 | }, 15 | "deposits": { 16 | "type": "array", 17 | "description": "A list of deposits that can be found at this location. A ship will extract one of these deposits when using this survey in an extraction request. If multiple deposits of the same type are present, the chance of extracting that deposit is increased.", 18 | "items": { 19 | "$ref": "./SurveyDeposit.json" 20 | } 21 | }, 22 | "expiration": { 23 | "type": "string", 24 | "format": "date-time", 25 | "description": "The date and time when the survey expires. After this date and time, the survey will no longer be available for extraction." 26 | }, 27 | "size": { 28 | "type": "string", 29 | "description": "The size of the deposit. This value indicates how much can be extracted from the survey before it is exhausted.", 30 | "enum": ["SMALL", "MODERATE", "LARGE"] 31 | } 32 | }, 33 | "required": ["signature", "symbol", "deposits", "expiration", "size"] 34 | } 35 | -------------------------------------------------------------------------------- /models/SurveyDeposit.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A surveyed deposit of a mineral or resource available for extraction.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "description": "The symbol of the deposit." 8 | } 9 | }, 10 | "required": ["symbol"] 11 | } 12 | -------------------------------------------------------------------------------- /models/System.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "System details.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "The symbol of the system." 9 | }, 10 | "sectorSymbol": { 11 | "type": "string", 12 | "minLength": 1, 13 | "description": "The symbol of the sector." 14 | }, 15 | "constellation": { 16 | "type": "string", 17 | "description": "The constellation that the system is part of." 18 | }, 19 | "name": { 20 | "type": "string", 21 | "description": "The name of the system." 22 | }, 23 | "type": { 24 | "$ref": "./SystemType.json" 25 | }, 26 | "x": { 27 | "type": "integer", 28 | "description": "Relative position of the system in the sector in the x axis." 29 | }, 30 | "y": { 31 | "type": "integer", 32 | "description": "Relative position of the system in the sector in the y axis." 33 | }, 34 | "waypoints": { 35 | "type": "array", 36 | "description": "Waypoints in this system.", 37 | "items": { 38 | "$ref": "./SystemWaypoint.json" 39 | } 40 | }, 41 | "factions": { 42 | "type": "array", 43 | "description": "Factions that control this system.", 44 | "items": { 45 | "$ref": "./SystemFaction.json" 46 | } 47 | } 48 | }, 49 | "required": ["symbol", "sectorSymbol", "type", "x", "y", "waypoints", "factions"] 50 | } 51 | -------------------------------------------------------------------------------- /models/SystemFaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "$ref": "./FactionSymbol.json" 6 | } 7 | }, 8 | "required": ["symbol"] 9 | } 10 | -------------------------------------------------------------------------------- /models/SystemSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The symbol of the system.", 4 | "minLength": 1, 5 | "x-faker": { 6 | "fake": ["X1-{{random.alphaNumeric(5)}}"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /models/SystemType.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The type of system.", 4 | "enum": [ 5 | "NEUTRON_STAR", 6 | "RED_STAR", 7 | "ORANGE_STAR", 8 | "BLUE_STAR", 9 | "YOUNG_STAR", 10 | "WHITE_DWARF", 11 | "BLACK_HOLE", 12 | "HYPERGIANT", 13 | "NEBULA", 14 | "UNSTABLE" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /models/SystemWaypoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "Waypoint details.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "type": { 9 | "$ref": "./WaypointType.json" 10 | }, 11 | "x": { 12 | "type": "integer", 13 | "description": "Relative position of the waypoint on the system's x axis. This is not an absolute position in the universe." 14 | }, 15 | "y": { 16 | "type": "integer", 17 | "description": "Relative position of the waypoint on the system's y axis. This is not an absolute position in the universe." 18 | }, 19 | "orbitals": { 20 | "type": "array", 21 | "description": "Waypoints that orbit this waypoint.", 22 | "items": { 23 | "$ref": "./WaypointOrbital.json" 24 | } 25 | }, 26 | "orbits": { 27 | "type": "string", 28 | "minLength": 1, 29 | "description": "The symbol of the parent waypoint, if this waypoint is in orbit around another waypoint. Otherwise this value is undefined." 30 | } 31 | }, 32 | "required": ["symbol", "type", "x", "y", "orbitals"] 33 | } 34 | -------------------------------------------------------------------------------- /models/TradeGood.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "A good that can be traded for other goods or currency.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./TradeSymbol.json" 7 | }, 8 | "name": { 9 | "type": "string", 10 | "description": "The name of the good." 11 | }, 12 | "description": { 13 | "type": "string", 14 | "description": "The description of the good." 15 | } 16 | }, 17 | "required": ["symbol", "name", "description"] 18 | } 19 | -------------------------------------------------------------------------------- /models/TradeSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "enum": [ 4 | "PRECIOUS_STONES", 5 | "QUARTZ_SAND", 6 | "SILICON_CRYSTALS", 7 | "AMMONIA_ICE", 8 | "LIQUID_HYDROGEN", 9 | "LIQUID_NITROGEN", 10 | "ICE_WATER", 11 | "EXOTIC_MATTER", 12 | "ADVANCED_CIRCUITRY", 13 | "GRAVITON_EMITTERS", 14 | "IRON", 15 | "IRON_ORE", 16 | "COPPER", 17 | "COPPER_ORE", 18 | "ALUMINUM", 19 | "ALUMINUM_ORE", 20 | "SILVER", 21 | "SILVER_ORE", 22 | "GOLD", 23 | "GOLD_ORE", 24 | "PLATINUM", 25 | "PLATINUM_ORE", 26 | "DIAMONDS", 27 | "URANITE", 28 | "URANITE_ORE", 29 | "MERITIUM", 30 | "MERITIUM_ORE", 31 | "HYDROCARBON", 32 | "ANTIMATTER", 33 | "FAB_MATS", 34 | "FERTILIZERS", 35 | "FABRICS", 36 | "FOOD", 37 | "JEWELRY", 38 | "MACHINERY", 39 | "FIREARMS", 40 | "ASSAULT_RIFLES", 41 | "MILITARY_EQUIPMENT", 42 | "EXPLOSIVES", 43 | "LAB_INSTRUMENTS", 44 | "AMMUNITION", 45 | "ELECTRONICS", 46 | "SHIP_PLATING", 47 | "SHIP_PARTS", 48 | "EQUIPMENT", 49 | "FUEL", 50 | "MEDICINE", 51 | "DRUGS", 52 | "CLOTHING", 53 | "MICROPROCESSORS", 54 | "PLASTICS", 55 | "POLYNUCLEOTIDES", 56 | "BIOCOMPOSITES", 57 | "QUANTUM_STABILIZERS", 58 | "NANOBOTS", 59 | "AI_MAINFRAMES", 60 | "QUANTUM_DRIVES", 61 | "ROBOTIC_DRONES", 62 | "CYBER_IMPLANTS", 63 | "GENE_THERAPEUTICS", 64 | "NEURAL_CHIPS", 65 | "MOOD_REGULATORS", 66 | "VIRAL_AGENTS", 67 | "MICRO_FUSION_GENERATORS", 68 | "SUPERGRAINS", 69 | "LASER_RIFLES", 70 | "HOLOGRAPHICS", 71 | "SHIP_SALVAGE", 72 | "RELIC_TECH", 73 | "NOVEL_LIFEFORMS", 74 | "BOTANICAL_SPECIMENS", 75 | "CULTURAL_ARTIFACTS", 76 | "FRAME_PROBE", 77 | "FRAME_DRONE", 78 | "FRAME_INTERCEPTOR", 79 | "FRAME_RACER", 80 | "FRAME_FIGHTER", 81 | "FRAME_FRIGATE", 82 | "FRAME_SHUTTLE", 83 | "FRAME_EXPLORER", 84 | "FRAME_MINER", 85 | "FRAME_LIGHT_FREIGHTER", 86 | "FRAME_HEAVY_FREIGHTER", 87 | "FRAME_TRANSPORT", 88 | "FRAME_DESTROYER", 89 | "FRAME_CRUISER", 90 | "FRAME_CARRIER", 91 | "FRAME_BULK_FREIGHTER", 92 | "REACTOR_SOLAR_I", 93 | "REACTOR_FUSION_I", 94 | "REACTOR_FISSION_I", 95 | "REACTOR_CHEMICAL_I", 96 | "REACTOR_ANTIMATTER_I", 97 | "ENGINE_IMPULSE_DRIVE_I", 98 | "ENGINE_ION_DRIVE_I", 99 | "ENGINE_ION_DRIVE_II", 100 | "ENGINE_HYPER_DRIVE_I", 101 | "MODULE_MINERAL_PROCESSOR_I", 102 | "MODULE_GAS_PROCESSOR_I", 103 | "MODULE_CARGO_HOLD_I", 104 | "MODULE_CARGO_HOLD_II", 105 | "MODULE_CARGO_HOLD_III", 106 | "MODULE_CREW_QUARTERS_I", 107 | "MODULE_ENVOY_QUARTERS_I", 108 | "MODULE_PASSENGER_CABIN_I", 109 | "MODULE_MICRO_REFINERY_I", 110 | "MODULE_SCIENCE_LAB_I", 111 | "MODULE_JUMP_DRIVE_I", 112 | "MODULE_JUMP_DRIVE_II", 113 | "MODULE_JUMP_DRIVE_III", 114 | "MODULE_WARP_DRIVE_I", 115 | "MODULE_WARP_DRIVE_II", 116 | "MODULE_WARP_DRIVE_III", 117 | "MODULE_SHIELD_GENERATOR_I", 118 | "MODULE_SHIELD_GENERATOR_II", 119 | "MODULE_ORE_REFINERY_I", 120 | "MODULE_FUEL_REFINERY_I", 121 | "MOUNT_GAS_SIPHON_I", 122 | "MOUNT_GAS_SIPHON_II", 123 | "MOUNT_GAS_SIPHON_III", 124 | "MOUNT_SURVEYOR_I", 125 | "MOUNT_SURVEYOR_II", 126 | "MOUNT_SURVEYOR_III", 127 | "MOUNT_SENSOR_ARRAY_I", 128 | "MOUNT_SENSOR_ARRAY_II", 129 | "MOUNT_SENSOR_ARRAY_III", 130 | "MOUNT_MINING_LASER_I", 131 | "MOUNT_MINING_LASER_II", 132 | "MOUNT_MINING_LASER_III", 133 | "MOUNT_LASER_CANNON_I", 134 | "MOUNT_MISSILE_LAUNCHER_I", 135 | "MOUNT_TURRET_I", 136 | "SHIP_PROBE", 137 | "SHIP_MINING_DRONE", 138 | "SHIP_SIPHON_DRONE", 139 | "SHIP_INTERCEPTOR", 140 | "SHIP_LIGHT_HAULER", 141 | "SHIP_COMMAND_FRIGATE", 142 | "SHIP_EXPLORER", 143 | "SHIP_HEAVY_FREIGHTER", 144 | "SHIP_LIGHT_SHUTTLE", 145 | "SHIP_ORE_HOUND", 146 | "SHIP_REFINING_FREIGHTER", 147 | "SHIP_SURVEYOR", 148 | "SHIP_BULK_FREIGHTER" 149 | ], 150 | "description": "The good's symbol." 151 | } 152 | -------------------------------------------------------------------------------- /models/Waypoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A waypoint is a location that ships can travel to such as a Planet, Moon or Space Station.", 3 | "type": "object", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./WaypointSymbol.json" 7 | }, 8 | "type": { 9 | "$ref": "./WaypointType.json" 10 | }, 11 | "systemSymbol": { 12 | "$ref": "./SystemSymbol.json" 13 | }, 14 | "x": { 15 | "type": "integer", 16 | "description": "Relative position of the waypoint on the system's x axis. This is not an absolute position in the universe." 17 | }, 18 | "y": { 19 | "type": "integer", 20 | "description": "Relative position of the waypoint on the system's y axis. This is not an absolute position in the universe." 21 | }, 22 | "orbitals": { 23 | "type": "array", 24 | "description": "Waypoints that orbit this waypoint.", 25 | "items": { 26 | "$ref": "./WaypointOrbital.json" 27 | } 28 | }, 29 | "orbits": { 30 | "type": "string", 31 | "minLength": 1, 32 | "description": "The symbol of the parent waypoint, if this waypoint is in orbit around another waypoint. Otherwise this value is undefined." 33 | }, 34 | "faction": { 35 | "$ref": "./WaypointFaction.json" 36 | }, 37 | "traits": { 38 | "type": "array", 39 | "description": "The traits of the waypoint.", 40 | "items": { 41 | "$ref": "./WaypointTrait.json" 42 | } 43 | }, 44 | "modifiers": { 45 | "type": "array", 46 | "description": "The modifiers of the waypoint.", 47 | "items": { 48 | "$ref": "./WaypointModifier.json" 49 | } 50 | }, 51 | "chart": { 52 | "$ref": "./Chart.json" 53 | }, 54 | "isUnderConstruction": { 55 | "type": "boolean", 56 | "description": "True if the waypoint is under construction." 57 | } 58 | }, 59 | "required": ["symbol", "type", "systemSymbol", "x", "y", "orbitals", "traits", "isUnderConstruction"] 60 | } 61 | -------------------------------------------------------------------------------- /models/WaypointFaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "The faction that controls the waypoint.", 4 | "properties": { 5 | "symbol": { 6 | "$ref": "./FactionSymbol.json" 7 | } 8 | }, 9 | "required": ["symbol"] 10 | } 11 | -------------------------------------------------------------------------------- /models/WaypointModifier.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "$ref": "./WaypointModifierSymbol.json" 6 | }, 7 | "name": { 8 | "type": "string", 9 | "description": "The name of the trait." 10 | }, 11 | "description": { 12 | "type": "string", 13 | "description": "A description of the trait." 14 | } 15 | }, 16 | "required": ["symbol", "name", "description"] 17 | } 18 | -------------------------------------------------------------------------------- /models/WaypointModifierSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The unique identifier of the modifier.", 4 | "enum": ["STRIPPED", "UNSTABLE", "RADIATION_LEAK", "CRITICAL_LIMIT", "CIVIL_UNREST"] 5 | } 6 | -------------------------------------------------------------------------------- /models/WaypointOrbital.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "description": "An orbital is another waypoint that orbits a parent waypoint.", 4 | "properties": { 5 | "symbol": { 6 | "type": "string", 7 | "minLength": 1, 8 | "description": "The symbol of the orbiting waypoint." 9 | } 10 | }, 11 | "required": ["symbol"] 12 | } 13 | -------------------------------------------------------------------------------- /models/WaypointSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The symbol of the waypoint.", 4 | "minLength": 1, 5 | "x-faker": { 6 | "fake": ["X1-{{random.alphaNumeric(5)}}-{{random.alphaNumeric(5)}}"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /models/WaypointTrait.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "symbol": { 5 | "$ref": "./WaypointTraitSymbol.json" 6 | }, 7 | "name": { 8 | "type": "string", 9 | "description": "The name of the trait." 10 | }, 11 | "description": { 12 | "type": "string", 13 | "description": "A description of the trait." 14 | } 15 | }, 16 | "required": ["symbol", "name", "description"] 17 | } 18 | -------------------------------------------------------------------------------- /models/WaypointTraitSymbol.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The unique identifier of the trait.", 4 | "enum": [ 5 | "UNCHARTED", 6 | "UNDER_CONSTRUCTION", 7 | "MARKETPLACE", 8 | "SHIPYARD", 9 | "OUTPOST", 10 | "SCATTERED_SETTLEMENTS", 11 | "SPRAWLING_CITIES", 12 | "MEGA_STRUCTURES", 13 | "PIRATE_BASE", 14 | "OVERCROWDED", 15 | "HIGH_TECH", 16 | "CORRUPT", 17 | "BUREAUCRATIC", 18 | "TRADING_HUB", 19 | "INDUSTRIAL", 20 | "BLACK_MARKET", 21 | "RESEARCH_FACILITY", 22 | "MILITARY_BASE", 23 | "SURVEILLANCE_OUTPOST", 24 | "EXPLORATION_OUTPOST", 25 | "MINERAL_DEPOSITS", 26 | "COMMON_METAL_DEPOSITS", 27 | "PRECIOUS_METAL_DEPOSITS", 28 | "RARE_METAL_DEPOSITS", 29 | "METHANE_POOLS", 30 | "ICE_CRYSTALS", 31 | "EXPLOSIVE_GASES", 32 | "STRONG_MAGNETOSPHERE", 33 | "VIBRANT_AURORAS", 34 | "SALT_FLATS", 35 | "CANYONS", 36 | "PERPETUAL_DAYLIGHT", 37 | "PERPETUAL_OVERCAST", 38 | "DRY_SEABEDS", 39 | "MAGMA_SEAS", 40 | "SUPERVOLCANOES", 41 | "ASH_CLOUDS", 42 | "VAST_RUINS", 43 | "MUTATED_FLORA", 44 | "TERRAFORMED", 45 | "EXTREME_TEMPERATURES", 46 | "EXTREME_PRESSURE", 47 | "DIVERSE_LIFE", 48 | "SCARCE_LIFE", 49 | "FOSSILS", 50 | "WEAK_GRAVITY", 51 | "STRONG_GRAVITY", 52 | "CRUSHING_GRAVITY", 53 | "TOXIC_ATMOSPHERE", 54 | "CORROSIVE_ATMOSPHERE", 55 | "BREATHABLE_ATMOSPHERE", 56 | "THIN_ATMOSPHERE", 57 | "JOVIAN", 58 | "ROCKY", 59 | "VOLCANIC", 60 | "FROZEN", 61 | "SWAMP", 62 | "BARREN", 63 | "TEMPERATE", 64 | "JUNGLE", 65 | "OCEAN", 66 | "RADIOACTIVE", 67 | "MICRO_GRAVITY_ANOMALIES", 68 | "DEBRIS_CLUSTER", 69 | "DEEP_CRATERS", 70 | "SHALLOW_CRATERS", 71 | "UNSTABLE_COMPOSITION", 72 | "HOLLOWED_INTERIOR", 73 | "STRIPPED" 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /models/WaypointType.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "description": "The type of waypoint.", 4 | "enum": [ 5 | "PLANET", 6 | "GAS_GIANT", 7 | "MOON", 8 | "ORBITAL_STATION", 9 | "JUMP_GATE", 10 | "ASTEROID_FIELD", 11 | "ASTEROID", 12 | "ENGINEERED_ASTEROID", 13 | "ASTEROID_BASE", 14 | "NEBULA", 15 | "DEBRIS_FIELD", 16 | "GRAVITY_WELL", 17 | "ARTIFICIAL_GRAVITY_WELL", 18 | "FUEL_STATION" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /redocly.yaml: -------------------------------------------------------------------------------- 1 | # See https://redocly.com/docs/cli/configuration/ 2 | 3 | apis: 4 | # Update the apiName with your actual API name, and the version with your actual API version. 5 | SpaceTraders@2.1.0: 6 | # Update the path to your OpenAPI root file 7 | root: ./reference/SpaceTraders.json 8 | 9 | lint: 10 | extends: 11 | - recommended 12 | 13 | features.openapi: 14 | generateCodeSamples: 15 | languages: 16 | - lang: curl 17 | - lang: Node.js 18 | - lang: Python 19 | --------------------------------------------------------------------------------