gleam-spacetraders-sdk/spacetraders.openapi.json

7223 lines
No EOL
317 KiB
JSON

{
"openapi": "3.0.1",
"info": {
"title": "SpaceTraders API",
"version": "v2.3.0",
"description": "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.\n\nThe API is documented using [OpenAPI](https://github.com/SpaceTradersAPI/api-docs). You can send your first request right here in your browser to check the status of the game server.\n\n```json http\n{\n \"method\": \"GET\",\n \"url\": \"https://api.spacetraders.io/v2\",\n}\n```\n\nUnlike 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.\n\nWe have a [Discord channel](https://discord.com/invite/jh6zurdWk5) where you can share your projects, ask questions, and get help from other players.\n\n\n",
"contact": {
"email": "joel@spacetraders.io",
"name": "Joel Brubaker"
},
"license": {
"name": "No Permission",
"url": "https://choosealicense.com/no-permission/"
}
},
"components": {
"callbacks": {},
"links": {},
"securitySchemes": {
"AgentToken": {
"type": "http",
"scheme": "bearer",
"description": "When you register a new agent you will be granted a private bearer token which grants authorization to use the API during a specific reset.",
"bearerFormat": "JWT"
},
"AccountToken": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "When you create an account you will be able to generate a private bearer token which grants authorization to create agents."
}
},
"schemas": {
"Faction": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/FactionSymbol"
},
"name": {
"type": "string",
"minLength": 1,
"description": "Name of the faction."
},
"description": {
"type": "string",
"minLength": 1,
"description": "Description of the faction."
},
"headquarters": {
"type": "string",
"minLength": 1,
"description": "The waypoint in which the faction's HQ is located in."
},
"traits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FactionTrait"
},
"description": "List of traits that define this faction."
},
"isRecruiting": {
"type": "boolean",
"description": "Whether or not the faction is currently recruiting new agents."
}
},
"required": [
"symbol",
"name",
"description",
"traits",
"isRecruiting"
],
"description": "Faction details."
},
"FactionSymbol": {
"type": "string",
"enum": [
"COSMIC",
"VOID",
"GALACTIC",
"QUANTUM",
"DOMINION",
"ASTRO",
"CORSAIRS",
"OBSIDIAN",
"AEGIS",
"UNITED",
"SOLITARY",
"COBALT",
"OMEGA",
"ECHO",
"LORDS",
"CULT",
"ANCIENTS",
"SHADOW",
"ETHEREAL"
],
"description": "The symbol of the faction."
},
"FactionTrait": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/FactionTraitSymbol"
},
"name": {
"type": "string",
"description": "The name of the trait."
},
"description": {
"type": "string",
"description": "A description of the trait."
}
},
"required": [
"symbol",
"name",
"description"
]
},
"FactionTraitSymbol": {
"type": "string",
"enum": [
"BUREAUCRATIC",
"SECRETIVE",
"CAPITALISTIC",
"INDUSTRIOUS",
"PEACEFUL",
"DISTRUSTFUL",
"WELCOMING",
"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"
],
"description": "The unique identifier of the trait."
},
"Meta": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"description": "Shows the total amount of items of this kind that exist."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "A page denotes an amount of items, offset from the first item. Each page holds an amount of items equal to the `limit`."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"description": "The amount of items in each page. Limits how many items can be fetched at once."
}
},
"required": [
"total",
"page",
"limit"
],
"description": "Meta details for pagination.",
"x-examples": {
"example-1": {
"limit": 20,
"page": 1,
"total": 6
}
}
},
"PublicAgent": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Symbol of the agent.",
"maxLength": 14,
"minLength": 3
},
"headquarters": {
"type": "string",
"description": "The headquarters of the agent.",
"minLength": 1
},
"credits": {
"type": "integer",
"description": "The number of credits the agent has available. Credits can be negative if funds have been overdrawn.",
"format": "int64"
},
"startingFaction": {
"type": "string",
"description": "The faction the agent started with.",
"minLength": 1
},
"shipCount": {
"type": "integer",
"description": "How many ships are owned by the agent."
}
},
"required": [
"symbol",
"headquarters",
"credits",
"startingFaction",
"shipCount"
],
"description": "Public agent details."
},
"System": {
"type": "object",
"properties": {
"constellation": {
"type": "string",
"description": "The constellation that the system is part of."
},
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the system."
},
"sectorSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the sector."
},
"type": {
"$ref": "#/components/schemas/SystemType"
},
"x": {
"type": "integer",
"description": "Relative position of the system in the sector in the x axis."
},
"y": {
"type": "integer",
"description": "Relative position of the system in the sector in the y axis."
},
"waypoints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SystemWaypoint"
},
"description": "Waypoints in this system."
},
"factions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SystemFaction"
},
"description": "Factions that control this system."
},
"name": {
"type": "string",
"description": "The name of the system."
}
},
"required": [
"symbol",
"sectorSymbol",
"type",
"x",
"y",
"waypoints",
"factions"
],
"description": "System details."
},
"SystemType": {
"type": "string",
"enum": [
"NEUTRON_STAR",
"RED_STAR",
"ORANGE_STAR",
"BLUE_STAR",
"YOUNG_STAR",
"WHITE_DWARF",
"BLACK_HOLE",
"HYPERGIANT",
"NEBULA",
"UNSTABLE"
],
"description": "The type of system."
},
"SystemWaypoint": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"type": {
"$ref": "#/components/schemas/WaypointType"
},
"x": {
"type": "integer",
"description": "Relative position of the waypoint on the system's x axis. This is not an absolute position in the universe."
},
"y": {
"type": "integer",
"description": "Relative position of the waypoint on the system's y axis. This is not an absolute position in the universe."
},
"orbitals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointOrbital"
},
"description": "Waypoints that orbit this waypoint."
},
"orbits": {
"type": "string",
"minLength": 1,
"description": "The symbol of the parent waypoint, if this waypoint is in orbit around another waypoint. Otherwise this value is undefined."
}
},
"required": [
"symbol",
"type",
"x",
"y",
"orbitals"
],
"description": "Waypoint details."
},
"WaypointSymbol": {
"type": "string",
"description": "The symbol of the waypoint.",
"minLength": 1,
"x-faker": {
"fake": [
"X1-{{random.alphaNumeric(4)}}-{{random.alphaNumeric(4)}}"
]
}
},
"WaypointType": {
"type": "string",
"enum": [
"PLANET",
"GAS_GIANT",
"MOON",
"ORBITAL_STATION",
"JUMP_GATE",
"ASTEROID_FIELD",
"ASTEROID",
"ENGINEERED_ASTEROID",
"ASTEROID_BASE",
"NEBULA",
"DEBRIS_FIELD",
"GRAVITY_WELL",
"ARTIFICIAL_GRAVITY_WELL",
"FUEL_STATION"
],
"description": "The type of waypoint."
},
"WaypointOrbital": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the orbiting waypoint."
}
},
"required": [
"symbol"
],
"description": "An orbital is another waypoint that orbits a parent waypoint."
},
"SystemFaction": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/FactionSymbol"
}
},
"required": [
"symbol"
]
},
"Waypoint": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"type": {
"$ref": "#/components/schemas/WaypointType"
},
"systemSymbol": {
"$ref": "#/components/schemas/SystemSymbol"
},
"x": {
"type": "integer",
"description": "Relative position of the waypoint on the system's x axis. This is not an absolute position in the universe."
},
"y": {
"type": "integer",
"description": "Relative position of the waypoint on the system's y axis. This is not an absolute position in the universe."
},
"orbitals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointOrbital"
},
"description": "Waypoints that orbit this waypoint."
},
"orbits": {
"type": "string",
"minLength": 1,
"description": "The symbol of the parent waypoint, if this waypoint is in orbit around another waypoint. Otherwise this value is undefined."
},
"faction": {
"$ref": "#/components/schemas/WaypointFaction"
},
"traits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointTrait"
},
"description": "The traits of the waypoint."
},
"modifiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointModifier"
},
"description": "The modifiers of the waypoint."
},
"chart": {
"$ref": "#/components/schemas/Chart"
},
"isUnderConstruction": {
"type": "boolean",
"description": "True if the waypoint is under construction."
}
},
"required": [
"symbol",
"type",
"systemSymbol",
"x",
"y",
"orbitals",
"traits",
"isUnderConstruction"
],
"description": "A waypoint is a location that ships can travel to such as a Planet, Moon or Space Station."
},
"SystemSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the system.",
"x-faker": {
"fake": [
"X1-{{random.alphaNumeric(4)}}"
]
}
},
"WaypointFaction": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/FactionSymbol"
}
},
"required": [
"symbol"
],
"description": "The faction that controls the waypoint."
},
"WaypointTrait": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointTraitSymbol"
},
"name": {
"type": "string",
"description": "The name of the trait."
},
"description": {
"type": "string",
"description": "A description of the trait."
}
},
"required": [
"symbol",
"name",
"description"
]
},
"WaypointTraitSymbol": {
"type": "string",
"enum": [
"UNCHARTED",
"UNDER_CONSTRUCTION",
"MARKETPLACE",
"SHIPYARD",
"OUTPOST",
"SCATTERED_SETTLEMENTS",
"SPRAWLING_CITIES",
"MEGA_STRUCTURES",
"PIRATE_BASE",
"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",
"THIN_ATMOSPHERE",
"JOVIAN",
"ROCKY",
"VOLCANIC",
"FROZEN",
"SWAMP",
"BARREN",
"TEMPERATE",
"JUNGLE",
"OCEAN",
"RADIOACTIVE",
"MICRO_GRAVITY_ANOMALIES",
"DEBRIS_CLUSTER",
"DEEP_CRATERS",
"SHALLOW_CRATERS",
"UNSTABLE_COMPOSITION",
"HOLLOWED_INTERIOR",
"STRIPPED"
],
"description": "The unique identifier of the trait."
},
"WaypointModifier": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointModifierSymbol"
},
"name": {
"type": "string",
"description": "The name of the trait."
},
"description": {
"type": "string",
"description": "A description of the trait."
}
},
"required": [
"symbol",
"name",
"description"
]
},
"WaypointModifierSymbol": {
"type": "string",
"enum": [
"STRIPPED",
"UNSTABLE",
"RADIATION_LEAK",
"CRITICAL_LIMIT",
"CIVIL_UNREST"
],
"title": "Waypoint Modifier Symbol",
"description": "The unique identifier of the modifier."
},
"Chart": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"submittedBy": {
"type": "string",
"description": "The agent that submitted the chart for this waypoint."
},
"submittedOn": {
"type": "string",
"format": "date-time",
"description": "The time the chart for this waypoint was submitted."
}
},
"required": [
"waypointSymbol",
"submittedBy",
"submittedOn"
],
"description": "The chart of a system or waypoint, which makes the location visible to other agents."
},
"Construction": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the waypoint."
},
"materials": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConstructionMaterial"
},
"description": "The materials required to construct the waypoint."
},
"isComplete": {
"type": "boolean",
"description": "Whether the waypoint has been constructed."
}
},
"required": [
"symbol",
"materials",
"isComplete"
],
"description": "The construction details of a waypoint."
},
"ConstructionMaterial": {
"type": "object",
"properties": {
"tradeSymbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"required": {
"type": "integer",
"description": "The number of units required."
},
"fulfilled": {
"type": "integer",
"description": "The number of units fulfilled toward the required amount."
}
},
"required": [
"tradeSymbol",
"required",
"fulfilled"
],
"description": "The details of the required construction materials for a given waypoint under construction."
},
"TradeSymbol": {
"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",
"FAB_MATS",
"FERTILIZERS",
"FABRICS",
"FOOD",
"JEWELRY",
"MACHINERY",
"FIREARMS",
"ASSAULT_RIFLES",
"MILITARY_EQUIPMENT",
"EXPLOSIVES",
"LAB_INSTRUMENTS",
"AMMUNITION",
"ELECTRONICS",
"SHIP_PLATING",
"SHIP_PARTS",
"EQUIPMENT",
"FUEL",
"MEDICINE",
"DRUGS",
"CLOTHING",
"MICROPROCESSORS",
"PLASTICS",
"POLYNUCLEOTIDES",
"BIOCOMPOSITES",
"QUANTUM_STABILIZERS",
"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",
"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",
"FRAME_BULK_FREIGHTER",
"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_GAS_PROCESSOR_I",
"MODULE_CARGO_HOLD_I",
"MODULE_CARGO_HOLD_II",
"MODULE_CARGO_HOLD_III",
"MODULE_CREW_QUARTERS_I",
"MODULE_ENVOY_QUARTERS_I",
"MODULE_PASSENGER_CABIN_I",
"MODULE_MICRO_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",
"MODULE_ORE_REFINERY_I",
"MODULE_FUEL_REFINERY_I",
"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",
"SHIP_PROBE",
"SHIP_MINING_DRONE",
"SHIP_SIPHON_DRONE",
"SHIP_INTERCEPTOR",
"SHIP_LIGHT_HAULER",
"SHIP_COMMAND_FRIGATE",
"SHIP_EXPLORER",
"SHIP_HEAVY_FREIGHTER",
"SHIP_LIGHT_SHUTTLE",
"SHIP_ORE_HOUND",
"SHIP_REFINING_FREIGHTER",
"SHIP_SURVEYOR",
"SHIP_BULK_FREIGHTER"
],
"description": "The good's symbol."
},
"ShipCargo": {
"type": "object",
"properties": {
"capacity": {
"type": "integer",
"minimum": 0,
"description": "The max number of items that can be stored in the cargo hold."
},
"units": {
"type": "integer",
"minimum": 0,
"description": "The number of items currently stored in the cargo hold."
},
"inventory": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipCargoItem"
},
"description": "The items currently in the cargo hold."
}
},
"required": [
"capacity",
"units",
"inventory"
],
"description": "Ship cargo details."
},
"ShipCargoItem": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"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"
],
"description": "The type of cargo item and the number of units."
},
"Market": {
"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",
"items": {
"$ref": "#/components/schemas/TradeGood"
},
"description": "The list of goods that are exported from this market."
},
"imports": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TradeGood"
},
"description": "The list of goods that are sought as imports in this market."
},
"exchange": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TradeGood"
},
"description": "The list of goods that are bought and sold between agents at this market."
},
"transactions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MarketTransaction"
},
"description": "The list of recent transactions at this market. Visible only when a ship is present at the market."
},
"tradeGoods": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MarketTradeGood"
},
"description": "The list of goods that are traded at this market. Visible only when a ship is present at the market."
}
},
"required": [
"symbol",
"exports",
"imports",
"exchange"
],
"description": "Market details."
},
"TradeGood": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"name": {
"type": "string",
"description": "The name of the good."
},
"description": {
"type": "string",
"description": "The description of the good."
}
},
"required": [
"symbol",
"name",
"description"
],
"description": "A good that can be traded for other goods or currency."
},
"MarketTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"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",
"enum": [
"PURCHASE",
"SELL"
],
"description": "The type of transaction."
},
"units": {
"type": "integer",
"minimum": 0,
"description": "The number of units of the transaction."
},
"pricePerUnit": {
"type": "integer",
"minimum": 0,
"description": "The price per unit of the transaction."
},
"totalPrice": {
"type": "integer",
"minimum": 0,
"description": "The total price of the transaction."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp of the transaction."
}
},
"required": [
"waypointSymbol",
"shipSymbol",
"tradeSymbol",
"type",
"units",
"pricePerUnit",
"totalPrice",
"timestamp"
],
"description": "Result of a transaction with a market."
},
"MarketTradeGood": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"type": {
"type": "string",
"enum": [
"EXPORT",
"IMPORT",
"EXCHANGE"
],
"description": "The type of trade good (export, import, or exchange)."
},
"tradeVolume": {
"type": "integer",
"minimum": 1,
"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."
},
"supply": {
"$ref": "#/components/schemas/SupplyLevel"
},
"activity": {
"$ref": "#/components/schemas/ActivityLevel"
},
"purchasePrice": {
"type": "integer",
"minimum": 0,
"description": "The price at which this good can be purchased from the market."
},
"sellPrice": {
"type": "integer",
"minimum": 0,
"description": "The price at which this good can be sold to the market."
}
},
"required": [
"symbol",
"type",
"tradeVolume",
"supply",
"purchasePrice",
"sellPrice"
]
},
"SupplyLevel": {
"type": "string",
"enum": [
"SCARCE",
"LIMITED",
"MODERATE",
"HIGH",
"ABUNDANT"
],
"description": "The supply level of a trade good."
},
"ActivityLevel": {
"type": "string",
"enum": [
"WEAK",
"GROWING",
"STRONG",
"RESTRICTED"
],
"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.",
"x-enumDescriptions": {
"GROWING": "Represents increasing activity in production or consumption, suggesting a developing market.",
"RESTRICTED": "Reflects a bottleneck in production or consumption, possibly due to a lack of supply or demand in related goods.",
"STRONG": "Signifies high levels of production or consumption. Indicates a healthy and active market with high demand or supply.",
"WEAK": "Indicates very low production or consumption activity. This may suggest a surplus in supply or a lack of demand."
}
},
"JumpGate": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"connections": {
"type": "array",
"items": {
"type": "string",
"description": "The symbol of the waypoint that has a corresponding gate."
},
"description": "All the gates that are connected to this waypoint."
}
},
"required": [
"symbol",
"connections"
],
"description": "Details of a jump gate waypoint."
},
"Shipyard": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the shipyard. The symbol is the same as the waypoint where the shipyard is located."
},
"shipTypes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/ShipType"
}
},
"required": [
"type"
]
},
"description": "The list of ship types available for purchase at this shipyard."
},
"transactions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipyardTransaction"
},
"description": "The list of recent transactions at this shipyard."
},
"ships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipyardShip"
},
"description": "The ships that are currently available for purchase at the shipyard."
},
"modificationsFee": {
"type": "integer",
"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."
}
},
"required": [
"symbol",
"shipTypes",
"modificationsFee"
],
"description": "Shipyard details."
},
"ShipType": {
"type": "string",
"enum": [
"SHIP_PROBE",
"SHIP_MINING_DRONE",
"SHIP_SIPHON_DRONE",
"SHIP_INTERCEPTOR",
"SHIP_LIGHT_HAULER",
"SHIP_COMMAND_FRIGATE",
"SHIP_EXPLORER",
"SHIP_HEAVY_FREIGHTER",
"SHIP_LIGHT_SHUTTLE",
"SHIP_ORE_HOUND",
"SHIP_REFINING_FREIGHTER",
"SHIP_SURVEYOR",
"SHIP_BULK_FREIGHTER"
],
"description": "Type of ship"
},
"ShipyardTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"shipSymbol": {
"type": "string",
"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.",
"deprecated": true
},
"shipType": {
"type": "string",
"description": "The symbol of the ship type (e.g. SHIP_MINING_DRONE) that was the subject of the transaction."
},
"price": {
"type": "integer",
"minimum": 0,
"description": "The price of the transaction."
},
"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": [
"waypointSymbol",
"shipSymbol",
"shipType",
"price",
"agentSymbol",
"timestamp"
],
"description": "Results of a transaction with a shipyard."
},
"ShipyardShip": {
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/ShipType"
},
"name": {
"type": "string",
"description": "Name of the ship."
},
"description": {
"type": "string",
"description": "Description of the ship."
},
"activity": {
"$ref": "#/components/schemas/ActivityLevel"
},
"supply": {
"$ref": "#/components/schemas/SupplyLevel"
},
"purchasePrice": {
"type": "integer",
"description": "The purchase price of the ship."
},
"frame": {
"$ref": "#/components/schemas/ShipFrame"
},
"reactor": {
"$ref": "#/components/schemas/ShipReactor"
},
"engine": {
"$ref": "#/components/schemas/ShipEngine"
},
"modules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipModule"
},
"description": "Modules installed in this ship."
},
"mounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipMount"
},
"description": "Mounts installed in this ship."
},
"crew": {
"type": "object",
"properties": {
"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."
}
},
"required": [
"required",
"capacity"
]
}
},
"required": [
"type",
"name",
"description",
"supply",
"purchasePrice",
"frame",
"reactor",
"engine",
"modules",
"mounts",
"crew"
],
"description": "Ship details available at a shipyard."
},
"ShipFrame": {
"type": "object",
"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",
"FRAME_BULK_FREIGHTER"
],
"description": "Symbol of the frame."
},
"name": {
"type": "string",
"description": "Name of the frame."
},
"condition": {
"$ref": "#/components/schemas/ShipComponentCondition"
},
"integrity": {
"$ref": "#/components/schemas/ShipComponentIntegrity"
},
"description": {
"type": "string",
"description": "Description of the frame."
},
"moduleSlots": {
"type": "integer",
"minimum": 0,
"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."
},
"mountingPoints": {
"type": "integer",
"minimum": 0,
"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."
},
"fuelCapacity": {
"type": "integer",
"minimum": 0,
"description": "The maximum amount of fuel that can be stored in this ship. When refueling, the ship will be refueled to this amount."
},
"requirements": {
"$ref": "#/components/schemas/ShipRequirements"
},
"quality": {
"$ref": "#/components/schemas/ShipComponentQuality"
}
},
"required": [
"symbol",
"name",
"condition",
"integrity",
"description",
"moduleSlots",
"mountingPoints",
"fuelCapacity",
"requirements",
"quality"
],
"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."
},
"ShipComponentCondition": {
"type": "number",
"minimum": 0,
"maximum": 1,
"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.",
"format": "double"
},
"ShipComponentIntegrity": {
"type": "number",
"minimum": 0,
"maximum": 1,
"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.",
"format": "double"
},
"ShipRequirements": {
"type": "object",
"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."
}
},
"description": "The requirements for installation on a ship"
},
"ShipComponentQuality": {
"type": "number",
"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.",
"format": "integer"
},
"ShipReactor": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"enum": [
"REACTOR_SOLAR_I",
"REACTOR_FUSION_I",
"REACTOR_FISSION_I",
"REACTOR_CHEMICAL_I",
"REACTOR_ANTIMATTER_I"
],
"description": "Symbol of the reactor."
},
"name": {
"type": "string",
"description": "Name of the reactor."
},
"condition": {
"$ref": "#/components/schemas/ShipComponentCondition"
},
"integrity": {
"$ref": "#/components/schemas/ShipComponentIntegrity"
},
"description": {
"type": "string",
"description": "Description of the reactor."
},
"powerOutput": {
"type": "integer",
"minimum": 1,
"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."
},
"requirements": {
"$ref": "#/components/schemas/ShipRequirements"
},
"quality": {
"$ref": "#/components/schemas/ShipComponentQuality"
}
},
"required": [
"symbol",
"name",
"condition",
"integrity",
"description",
"powerOutput",
"requirements",
"quality"
],
"description": "The reactor of the ship. The reactor is responsible for powering the ship's systems and weapons."
},
"ShipEngine": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"enum": [
"ENGINE_IMPULSE_DRIVE_I",
"ENGINE_ION_DRIVE_I",
"ENGINE_ION_DRIVE_II",
"ENGINE_HYPER_DRIVE_I"
],
"description": "The symbol of the engine."
},
"name": {
"type": "string",
"description": "The name of the engine."
},
"condition": {
"$ref": "#/components/schemas/ShipComponentCondition"
},
"integrity": {
"$ref": "#/components/schemas/ShipComponentIntegrity"
},
"description": {
"type": "string",
"description": "The description of the engine."
},
"speed": {
"type": "integer",
"minimum": 1,
"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."
},
"requirements": {
"$ref": "#/components/schemas/ShipRequirements"
},
"quality": {
"$ref": "#/components/schemas/ShipComponentQuality"
}
},
"required": [
"symbol",
"name",
"condition",
"integrity",
"description",
"speed",
"requirements",
"quality"
],
"description": "The engine determines how quickly a ship travels between waypoints."
},
"ShipModule": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"enum": [
"MODULE_MINERAL_PROCESSOR_I",
"MODULE_GAS_PROCESSOR_I",
"MODULE_CARGO_HOLD_I",
"MODULE_CARGO_HOLD_II",
"MODULE_CARGO_HOLD_III",
"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"
],
"description": "The symbol of the module."
},
"name": {
"type": "string",
"description": "Name of this module."
},
"description": {
"type": "string",
"description": "Description of this module."
},
"capacity": {
"type": "integer",
"minimum": 0,
"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."
},
"range": {
"type": "integer",
"minimum": 0,
"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."
},
"requirements": {
"$ref": "#/components/schemas/ShipRequirements"
}
},
"required": [
"symbol",
"name",
"description",
"requirements"
],
"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."
},
"ShipMount": {
"type": "object",
"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"
],
"description": "Symbol of this mount."
},
"name": {
"type": "string",
"description": "Name of this mount."
},
"description": {
"type": "string",
"description": "Description of this mount."
},
"strength": {
"type": "integer",
"minimum": 0,
"description": "Mounts that have this value, such as mining lasers, denote how powerful this mount's capabilities are."
},
"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"
]
},
"description": "Mounts that have this value denote what goods can be produced from using the mount."
},
"requirements": {
"$ref": "#/components/schemas/ShipRequirements"
}
},
"required": [
"symbol",
"name",
"description",
"requirements"
],
"description": "A mount is installed on the exterier of a ship."
},
"Contract": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the contract."
},
"factionSymbol": {
"type": "string",
"description": "The symbol of the faction that this contract is for.",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"PROCUREMENT",
"TRANSPORT",
"SHUTTLE"
],
"description": "Type of contract."
},
"terms": {
"$ref": "#/components/schemas/ContractTerms"
},
"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": "Deprecated in favor of deadlineToAccept",
"deprecated": true
},
"deadlineToAccept": {
"type": "string",
"format": "date-time",
"description": "The time at which the contract is no longer available to be accepted"
}
},
"required": [
"id",
"factionSymbol",
"type",
"terms",
"accepted",
"fulfilled",
"expiration"
],
"description": "Contract details."
},
"ContractTerms": {
"type": "object",
"properties": {
"deadline": {
"type": "string",
"format": "date-time",
"description": "The deadline for the contract."
},
"payment": {
"$ref": "#/components/schemas/ContractPayment"
},
"deliver": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContractDeliverGood"
},
"description": "The cargo that needs to be delivered to fulfill the contract."
}
},
"required": [
"deadline",
"payment"
],
"description": "The terms to fulfill the contract."
},
"ContractPayment": {
"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"
],
"description": "Payments for the contract."
},
"ContractDeliverGood": {
"type": "object",
"properties": {
"tradeSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the trade good to deliver."
},
"destinationSymbol": {
"type": "string",
"minLength": 1,
"description": "The destination where goods need to be delivered."
},
"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"
],
"description": "The details of a delivery contract. Includes the type of good, units needed, and the destination."
},
"Agent": {
"type": "object",
"properties": {
"accountId": {
"type": "string",
"description": "Account ID that is tied to this agent. Only included on your own agent.",
"minLength": 1
},
"symbol": {
"type": "string",
"description": "Symbol of the agent.",
"maxLength": 14,
"minLength": 3
},
"headquarters": {
"type": "string",
"description": "The headquarters of the agent.",
"minLength": 1
},
"credits": {
"type": "integer",
"description": "The number of credits the agent has available. Credits can be negative if funds have been overdrawn.",
"format": "int64"
},
"startingFaction": {
"type": "string",
"description": "The faction the agent started with.",
"minLength": 1
},
"shipCount": {
"type": "integer",
"description": "How many ships are owned by the agent."
}
},
"required": [
"accountId",
"symbol",
"headquarters",
"credits",
"startingFaction",
"shipCount"
],
"description": "Agent details."
},
"AgentEvent": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"message": {
"type": "string"
},
"data": {},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"type",
"message",
"createdAt"
],
"description": "Agent event details."
},
"Ship": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The globally unique identifier of the ship in the following format: `[AGENT_SYMBOL]-[HEX_ID]`"
},
"registration": {
"$ref": "#/components/schemas/ShipRegistration"
},
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"crew": {
"$ref": "#/components/schemas/ShipCrew"
},
"frame": {
"$ref": "#/components/schemas/ShipFrame"
},
"reactor": {
"$ref": "#/components/schemas/ShipReactor"
},
"engine": {
"$ref": "#/components/schemas/ShipEngine"
},
"modules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipModule"
},
"description": "Modules installed in this ship."
},
"mounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipMount"
},
"description": "Mounts installed in this ship."
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"fuel": {
"$ref": "#/components/schemas/ShipFuel"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
}
},
"required": [
"symbol",
"registration",
"nav",
"crew",
"frame",
"reactor",
"engine",
"modules",
"mounts",
"cargo",
"fuel",
"cooldown"
],
"description": "Ship details."
},
"ShipRegistration": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The agent's registered name of the ship"
},
"factionSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the faction the ship is registered with"
},
"role": {
"$ref": "#/components/schemas/ShipRole"
}
},
"required": [
"name",
"factionSymbol",
"role"
],
"description": "The public registration information of the ship"
},
"ShipRole": {
"type": "string",
"enum": [
"FABRICATOR",
"HARVESTER",
"HAULER",
"INTERCEPTOR",
"EXCAVATOR",
"TRANSPORT",
"REPAIR",
"SURVEYOR",
"COMMAND",
"CARRIER",
"PATROL",
"SATELLITE",
"EXPLORER",
"REFINERY"
],
"description": "The registered role of the ship"
},
"ShipNav": {
"type": "object",
"properties": {
"systemSymbol": {
"$ref": "#/components/schemas/SystemSymbol"
},
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"route": {
"$ref": "#/components/schemas/ShipNavRoute"
},
"status": {
"$ref": "#/components/schemas/ShipNavStatus"
},
"flightMode": {
"$ref": "#/components/schemas/ShipNavFlightMode"
}
},
"required": [
"systemSymbol",
"waypointSymbol",
"route",
"status",
"flightMode"
],
"description": "The navigation information of the ship."
},
"ShipNavRoute": {
"type": "object",
"properties": {
"destination": {
"$ref": "#/components/schemas/ShipNavRouteWaypoint"
},
"origin": {
"$ref": "#/components/schemas/ShipNavRouteWaypoint"
},
"departureTime": {
"type": "string",
"format": "date-time",
"description": "The date time of the ship's departure."
},
"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",
"origin",
"departureTime",
"arrival"
],
"description": "The routing information for the ship's most recent transit or current location."
},
"ShipNavRouteWaypoint": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the waypoint."
},
"type": {
"$ref": "#/components/schemas/WaypointType"
},
"systemSymbol": {
"$ref": "#/components/schemas/SystemSymbol"
},
"x": {
"type": "integer",
"description": "Position in the universe in the x axis."
},
"y": {
"type": "integer",
"description": "Position in the universe in the y axis."
}
},
"required": [
"symbol",
"type",
"systemSymbol",
"x",
"y"
],
"description": "The destination or departure of a ships nav route."
},
"ShipNavStatus": {
"type": "string",
"enum": [
"IN_TRANSIT",
"IN_ORBIT",
"DOCKED"
],
"description": "The current status of the ship"
},
"ShipNavFlightMode": {
"type": "string",
"enum": [
"DRIFT",
"STEALTH",
"CRUISE",
"BURN"
],
"default": "CRUISE",
"description": "The ship's set speed when traveling between waypoints or systems."
},
"ShipCrew": {
"type": "object",
"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",
"enum": [
"STRICT",
"RELAXED"
],
"default": "STRICT",
"description": "The rotation of crew shifts. A stricter shift improves the ship's performance. A more relaxed shift improves the crew's morale."
},
"morale": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"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."
},
"wages": {
"type": "integer",
"minimum": 0,
"description": "The amount of credits per crew member paid per hour. Wages are paid when a ship docks at a civilized waypoint."
}
},
"required": [
"current",
"required",
"capacity",
"rotation",
"morale",
"wages"
],
"description": "The ship's crew service and maintain the ship's systems and equipment."
},
"ShipFuel": {
"type": "object",
"properties": {
"current": {
"type": "integer",
"minimum": 0,
"description": "The current amount of fuel in the ship's tanks."
},
"capacity": {
"type": "integer",
"minimum": 0,
"description": "The maximum amount of fuel the ship's tanks can hold."
},
"consumed": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"minimum": 0,
"description": "The amount of fuel consumed by the most recent transit or action."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The time at which the fuel was consumed."
}
},
"required": [
"amount",
"timestamp"
],
"description": "An object that only shows up when an action has consumed fuel in the process. Shows the fuel consumption data."
}
},
"required": [
"current",
"capacity"
],
"description": "Details of the ship's fuel tanks including how much fuel was consumed during the last transit or action."
},
"Cooldown": {
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the ship that is on cooldown"
},
"totalSeconds": {
"type": "integer",
"minimum": 0,
"description": "The total duration of the cooldown in seconds"
},
"remainingSeconds": {
"type": "integer",
"minimum": 0,
"description": "The remaining duration of the cooldown in seconds"
},
"expiration": {
"type": "string",
"format": "date-time",
"description": "The date and time when the cooldown expires in ISO 8601 format"
}
},
"required": [
"shipSymbol",
"totalSeconds",
"remainingSeconds"
],
"description": "A cooldown is a period of time in which a ship cannot perform certain actions."
},
"ChartTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship."
},
"totalPrice": {
"type": "integer",
"minimum": 0,
"description": "The total price of the transaction."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp of the transaction."
}
},
"required": [
"waypointSymbol",
"shipSymbol",
"totalPrice",
"timestamp"
],
"description": "Result of a chart transaction."
},
"Extraction": {
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"minLength": 1,
"description": "Symbol of the ship that executed the extraction."
},
"yield": {
"$ref": "#/components/schemas/ExtractionYield"
}
},
"required": [
"shipSymbol",
"yield"
],
"description": "Extraction details."
},
"ExtractionYield": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"description": "The number of units extracted that were placed into the ship's cargo hold."
}
},
"required": [
"symbol",
"units"
],
"description": "A yield from the extraction operation."
},
"ShipConditionEvent": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"enum": [
"REACTOR_OVERLOAD",
"ENERGY_SPIKE_FROM_MINERAL",
"SOLAR_FLARE_INTERFERENCE",
"COOLANT_LEAK",
"POWER_DISTRIBUTION_FLUCTUATION",
"MAGNETIC_FIELD_DISRUPTION",
"HULL_MICROMETEORITE_STRIKES",
"STRUCTURAL_STRESS_FRACTURES",
"CORROSIVE_MINERAL_CONTAMINATION",
"THERMAL_EXPANSION_MISMATCH",
"VIBRATION_DAMAGE_FROM_DRILLING",
"ELECTROMAGNETIC_FIELD_INTERFERENCE",
"IMPACT_WITH_EXTRACTED_DEBRIS",
"FUEL_EFFICIENCY_DEGRADATION",
"COOLANT_SYSTEM_AGEING",
"DUST_MICROABRASIONS",
"THRUSTER_NOZZLE_WEAR",
"EXHAUST_PORT_CLOGGING",
"BEARING_LUBRICATION_FADE",
"SENSOR_CALIBRATION_DRIFT",
"HULL_MICROMETEORITE_DAMAGE",
"SPACE_DEBRIS_COLLISION",
"THERMAL_STRESS",
"VIBRATION_OVERLOAD",
"PRESSURE_DIFFERENTIAL_STRESS",
"ELECTROMAGNETIC_SURGE_EFFECTS",
"ATMOSPHERIC_ENTRY_HEAT"
],
"description": "The symbol of the event that occurred."
},
"component": {
"type": "string",
"enum": [
"FRAME",
"REACTOR",
"ENGINE"
]
},
"name": {
"type": "string",
"description": "The name of the event."
},
"description": {
"type": "string",
"description": "A description of the event."
}
},
"required": [
"symbol",
"component",
"name",
"description"
],
"description": "An event that represents damage or wear to a ship's reactor, frame, or engine, reducing the condition of the ship."
},
"Survey": {
"type": "object",
"properties": {
"signature": {
"type": "string",
"minLength": 1,
"description": "A unique signature for the location of this survey. This signature is verified when attempting an extraction using this survey."
},
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the waypoint that this survey is for."
},
"deposits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SurveyDeposit"
},
"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."
},
"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."
},
"size": {
"$ref": "#/components/schemas/SurveySize"
}
},
"required": [
"signature",
"symbol",
"deposits",
"expiration",
"size"
],
"description": "A resource survey of a waypoint, detailing a specific extraction location and the types of resources that can be found there."
},
"SurveyDeposit": {
"type": "object",
"properties": {
"symbol": {
"description": "The symbol of the deposit.",
"allOf": [
{
"$ref": "#/components/schemas/TradeSymbol"
}
]
}
},
"required": [
"symbol"
],
"description": "A surveyed deposit of a mineral or resource available for extraction."
},
"SurveySize": {
"type": "string",
"enum": [
"SMALL",
"MODERATE",
"LARGE"
],
"description": "The size of the deposit. This value indicates how much can be extracted from the survey before it is exhausted."
},
"ScannedSystem": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "Symbol of the system."
},
"sectorSymbol": {
"type": "string",
"minLength": 1,
"description": "Symbol of the system's sector."
},
"type": {
"$ref": "#/components/schemas/SystemType"
},
"x": {
"type": "integer",
"description": "Position in the universe in the x axis."
},
"y": {
"type": "integer",
"description": "Position in the universe in the y axis."
},
"distance": {
"type": "integer",
"description": "The system's distance from the scanning ship."
}
},
"required": [
"symbol",
"sectorSymbol",
"type",
"x",
"y",
"distance"
],
"description": "Details of a system was that scanned."
},
"ScannedWaypoint": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"type": {
"$ref": "#/components/schemas/WaypointType"
},
"systemSymbol": {
"$ref": "#/components/schemas/SystemSymbol"
},
"x": {
"type": "integer",
"description": "Position in the universe in the x axis."
},
"y": {
"type": "integer",
"description": "Position in the universe in the y axis."
},
"orbitals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointOrbital"
},
"description": "List of waypoints that orbit this waypoint."
},
"faction": {
"$ref": "#/components/schemas/WaypointFaction"
},
"traits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointTrait"
},
"description": "The traits of the waypoint."
},
"chart": {
"$ref": "#/components/schemas/Chart"
}
},
"required": [
"symbol",
"type",
"systemSymbol",
"x",
"y",
"orbitals",
"traits"
],
"description": "A waypoint that was scanned by a ship."
},
"ScannedShip": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The globally unique identifier of the ship."
},
"registration": {
"$ref": "#/components/schemas/ShipRegistration"
},
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"frame": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the frame."
}
},
"required": [
"symbol"
],
"description": "The frame of the ship."
},
"reactor": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the reactor."
}
},
"required": [
"symbol"
],
"description": "The reactor of the ship."
},
"engine": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the engine."
}
},
"required": [
"symbol"
],
"description": "The engine of the ship."
},
"mounts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The symbol of the mount."
}
},
"required": [
"symbol"
]
},
"description": "List of mounts installed in the ship."
}
},
"required": [
"symbol",
"registration",
"nav",
"engine"
],
"description": "The ship that was scanned. Details include information about the ship that could be detected by the scanner."
},
"ScrapTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship."
},
"totalPrice": {
"type": "integer",
"minimum": 0,
"description": "The total price of the transaction."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp of the transaction."
}
},
"required": [
"waypointSymbol",
"shipSymbol",
"totalPrice",
"timestamp"
],
"description": "Result of a scrap transaction."
},
"RepairTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"$ref": "#/components/schemas/WaypointSymbol"
},
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship."
},
"totalPrice": {
"type": "integer",
"minimum": 0,
"description": "The total price of the transaction."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp of the transaction."
}
},
"required": [
"waypointSymbol",
"shipSymbol",
"totalPrice",
"timestamp"
],
"description": "Result of a repair transaction."
},
"Siphon": {
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"minLength": 1,
"description": "Symbol of the ship that executed the siphon."
},
"yield": {
"$ref": "#/components/schemas/SiphonYield"
}
},
"required": [
"shipSymbol",
"yield"
],
"description": "Siphon details."
},
"SiphonYield": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"description": "The number of units siphoned that were placed into the ship's cargo hold."
}
},
"required": [
"symbol",
"units"
],
"description": "A yield from the siphon operation."
},
"ShipModificationTransaction": {
"type": "object",
"properties": {
"waypointSymbol": {
"type": "string",
"description": "The symbol of the waypoint where the transaction took place."
},
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship that made the transaction."
},
"tradeSymbol": {
"type": "string",
"description": "The symbol of the trade good."
},
"totalPrice": {
"type": "integer",
"minimum": 0,
"description": "The total price of the transaction."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp of the transaction."
}
},
"required": [
"waypointSymbol",
"shipSymbol",
"tradeSymbol",
"totalPrice",
"timestamp"
],
"description": "Result of a transaction for a ship modification, such as installing a mount or a module."
}
}
},
"paths": {
"/factions": {
"get": {
"operationId": "get-factions",
"summary": "List factions",
"tags": [
"Factions"
],
"description": "Return a paginated list of all the factions in the game.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched factions.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Faction"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully fetched factions."
}
}
}
}
}
}
},
"/factions/{factionSymbol}": {
"get": {
"operationId": "get-faction",
"summary": "Faction details",
"tags": [
"Factions"
],
"description": "View the details of a faction.",
"parameters": [
{
"schema": {
"type": "string",
"example": "COSMIC"
},
"in": "path",
"name": "factionSymbol",
"required": true,
"description": "The faction symbol"
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Faction"
}
},
"required": [
"data"
]
}
}
}
}
}
}
},
"/agents": {
"get": {
"operationId": "get-agents",
"summary": "List all public agent details.",
"tags": [
"Agents"
],
"description": "List all public agent details.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched agents details.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicAgent"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully fetched agents details."
}
}
}
}
}
}
},
"/agents/{agentSymbol}": {
"get": {
"operationId": "get-agent",
"summary": "Get public details for a specific agent.",
"tags": [
"Agents"
],
"description": "Get public details for a specific agent.",
"parameters": [
{
"schema": {
"type": "string",
"example": "FEBA66"
},
"in": "path",
"name": "agentSymbol",
"required": true,
"description": "The agent symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/PublicAgent"
}
},
"required": [
"data"
]
}
}
}
}
}
}
},
"/market/supply-chain": {
"get": {
"operationId": "get-supply-chain",
"summary": "Describes trade relationships",
"tags": [
"Data"
],
"description": "Describes which import and exports map to each other.",
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully retrieved the supply chain information",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"exportToImportMap": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"exportToImportMap"
]
}
},
"required": [
"data"
],
"description": "Successfully retrieved the supply chain information"
}
}
}
}
}
}
},
"/": {
"get": {
"operationId": "get-status",
"summary": "Server status",
"tags": [
"Global"
],
"description": "Return the status of the game server.\nThis also includes a few global elements, such as announcements, server reset dates and leaderboards.",
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Fetched status successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The current status of the game server."
},
"version": {
"type": "string",
"description": "The current version of the API."
},
"resetDate": {
"type": "string",
"description": "The date when the game server was last reset."
},
"description": {
"type": "string"
},
"stats": {
"type": "object",
"properties": {
"accounts": {
"type": "integer",
"description": "Total number of accounts registered on the game server."
},
"agents": {
"type": "integer",
"description": "Number of registered agents in the game."
},
"ships": {
"type": "integer",
"description": "Total number of ships in the game."
},
"systems": {
"type": "integer",
"description": "Total number of systems in the game."
},
"waypoints": {
"type": "integer",
"description": "Total number of waypoints in the game."
}
},
"required": [
"agents",
"ships",
"systems",
"waypoints"
]
},
"health": {
"type": "object",
"properties": {
"lastMarketUpdate": {
"type": "string",
"description": "The date/time when the market was last updated."
}
}
},
"leaderboards": {
"type": "object",
"properties": {
"mostCredits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"agentSymbol": {
"type": "string",
"description": "Symbol of the agent."
},
"credits": {
"type": "integer",
"description": "Amount of credits.",
"format": "int64"
}
},
"required": [
"agentSymbol",
"credits"
]
},
"description": "Top agents with the most credits."
},
"mostSubmittedCharts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"agentSymbol": {
"type": "string",
"description": "Symbol of the agent."
},
"chartCount": {
"type": "integer",
"description": "Amount of charts done by the agent."
}
},
"required": [
"agentSymbol",
"chartCount"
]
},
"description": "Top agents with the most charted submitted."
}
},
"required": [
"mostCredits",
"mostSubmittedCharts"
]
},
"serverResets": {
"type": "object",
"properties": {
"next": {
"type": "string",
"description": "The date and time when the game server will reset."
},
"frequency": {
"type": "string",
"description": "How often we intend to reset the game server."
}
},
"required": [
"next",
"frequency"
]
},
"announcements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"title",
"body"
]
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
},
"required": [
"name",
"url"
]
}
}
},
"required": [
"status",
"version",
"resetDate",
"description",
"stats",
"health",
"leaderboards",
"serverResets",
"announcements",
"links"
],
"description": "Fetched status successfully."
}
}
}
}
}
}
},
"/error-codes": {
"get": {
"operationId": "get-error-codes",
"summary": "Error code list",
"tags": [
"Global"
],
"description": "Return a list of all possible error codes thrown by the game server.",
"security": [
{}
],
"responses": {
"200": {
"description": "Fetched error codes successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errorCodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
]
}
}
},
"required": [
"errorCodes"
],
"description": "Fetched error codes successfully."
}
}
}
}
}
}
},
"/systems": {
"get": {
"operationId": "get-systems",
"summary": "List Systems",
"tags": [
"Systems"
],
"description": "Return a paginated list of all systems.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully listed systems.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/System"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully listed systems."
}
}
}
}
}
}
},
"/systems/{systemSymbol}": {
"get": {
"operationId": "get-system",
"summary": "Get System",
"tags": [
"Systems"
],
"description": "Get the details of a system. Requires the system to have been visited or charted.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched the system.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/System"
}
},
"required": [
"data"
],
"description": "Successfully fetched the system."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints": {
"get": {
"operationId": "get-system-waypoints",
"summary": "List Waypoints in System",
"tags": [
"Systems"
],
"description": "Return a paginated list of all of the waypoints for a given system.\n\nIf a waypoint is uncharted, it will return the `Uncharted` trait instead of its actual traits.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
},
{
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/WaypointType"
}
]
},
"in": "query",
"name": "type",
"description": "Filter waypoints by type."
},
{
"schema": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointTraitSymbol"
}
},
{
"$ref": "#/components/schemas/WaypointTraitSymbol"
}
]
},
"in": "query",
"name": "traits",
"description": "Filter waypoints by one or more traits."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully listed waypoints.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Waypoint"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully listed waypoints."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}": {
"get": {
"operationId": "get-waypoint",
"summary": "Get Waypoint",
"tags": [
"Systems"
],
"description": "View the details of a waypoint.\n\nIf the waypoint is uncharted, it will return the 'Uncharted' trait instead of its actual traits.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched waypoint details.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Waypoint"
}
},
"required": [
"data"
],
"description": "Successfully fetched waypoint details."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/construction": {
"get": {
"operationId": "get-construction",
"summary": "Get Construction Site",
"tags": [
"Systems"
],
"description": "Get construction details for a waypoint. Requires a waypoint with a property of `isUnderConstruction` to be true.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched construction site.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Construction"
}
},
"required": [
"data"
],
"description": "Successfully fetched construction site."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/construction/supply": {
"post": {
"operationId": "supply-construction",
"summary": "Supply Construction Site",
"tags": [
"Systems"
],
"description": "Supply a construction site with the specified good. Requires a waypoint with a property of `isUnderConstruction` to be true.\n\nThe good must be in your ship's cargo. The good will be removed from your ship's cargo and added to the construction site's materials.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship supplying construction materials.",
"example": "DODO-1"
},
"tradeSymbol": {
"allOf": [
{
"$ref": "#/components/schemas/TradeSymbol"
}
],
"description": "The symbol of the good to supply.",
"example": "IRON_ORE"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "Amount of units to supply.",
"example": 10
}
},
"required": [
"shipSymbol",
"tradeSymbol",
"units"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully supplied construction site.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"construction": {
"$ref": "#/components/schemas/Construction"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
}
},
"required": [
"construction",
"cargo"
]
}
},
"required": [
"data"
],
"description": "Successfully supplied construction site."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/market": {
"get": {
"operationId": "get-market",
"summary": "Get Market",
"tags": [
"Systems"
],
"description": "Retrieve imports, exports and exchange data from a marketplace. Requires a waypoint that has the `Marketplace` trait to use.\n\nSend a ship to the waypoint to access trade good prices and recent transactions. Refer to the [Market Overview page](https://docs.spacetraders.io/game-concepts/markets) to gain better a understanding of the market in the game.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched the market.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Market"
}
},
"required": [
"data"
],
"description": "Successfully fetched the market."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/jump-gate": {
"get": {
"operationId": "get-jump-gate",
"summary": "Get Jump Gate",
"tags": [
"Systems"
],
"description": "Get jump gate details for a waypoint. Requires a waypoint of type `JUMP_GATE` to use.\n\nWaypoints connected to this jump gate can be found by querying the waypoints in the system.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Jump gate details retrieved successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/JumpGate"
}
},
"required": [
"data"
],
"description": "Jump gate details retrieved successfully."
}
}
}
}
}
}
},
"/systems/{systemSymbol}/waypoints/{waypointSymbol}/shipyard": {
"get": {
"operationId": "get-shipyard",
"summary": "Get Shipyard",
"tags": [
"Systems"
],
"description": "Get the shipyard for a waypoint. Requires a waypoint that has the `Shipyard` trait to use. Send a ship to the waypoint to access data on ships that are currently available for purchase and recent transactions.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "systemSymbol",
"required": true,
"description": "The system symbol"
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "waypointSymbol",
"required": true,
"description": "The waypoint symbol"
}
],
"security": [
{},
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched the shipyard.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Shipyard"
}
},
"required": [
"data"
],
"description": "Successfully fetched the shipyard."
}
}
}
}
}
}
},
"/my/socket.io": {
"get": {
"operationId": "websocket-departure-events",
"summary": "Subscribe to events",
"tags": [
"Data"
],
"description": "Subscribe to departure events for a system.\n\n ## WebSocket Events\n\n The following events are available:\n\n - `systems.{systemSymbol}.departure`: A ship has departed from the system.\n\n ## Subscribe using a message with the following format:\n\n ```json\n {\n \"action\": \"subscribe\",\n \"systemSymbol\": \"{systemSymbol}\"\n }\n ```\n\n ## Unsubscribe using a message with the following format:\n\n ```json\n {\n \"action\": \"unsubscribe\",\n \"systemSymbol\": \"{systemSymbol}\"\n }\n ```",
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Default Response"
}
}
}
},
"/my/contracts": {
"get": {
"operationId": "get-contracts",
"summary": "List Contracts",
"tags": [
"Contracts"
],
"description": "Return a paginated list of all your contracts.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully listed contracts.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Contract"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully listed contracts."
}
}
}
}
}
}
},
"/my/contracts/{contractId}": {
"get": {
"operationId": "get-contract",
"summary": "Get Contract",
"tags": [
"Contracts"
],
"description": "Get the details of a specific contract.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "contractId",
"required": true,
"description": "The contract ID to accept."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched contract.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Contract"
}
},
"required": [
"data"
],
"description": "Successfully fetched contract."
}
}
}
}
}
}
},
"/my/contracts/{contractId}/accept": {
"post": {
"operationId": "accept-contract",
"summary": "Accept Contract",
"tags": [
"Contracts"
],
"description": "Accept a contract by ID. \n\nYou can only accept contracts that were offered to you, were not accepted yet, and whose deadlines has not passed yet.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "contractId",
"required": true,
"description": "The contract ID to accept."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully accepted contract.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"contract": {
"$ref": "#/components/schemas/Contract"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"contract",
"agent"
]
}
},
"required": [
"data"
],
"description": "Successfully accepted contract."
}
}
}
}
}
}
},
"/my/contracts/{contractId}/fulfill": {
"post": {
"operationId": "fulfill-contract",
"summary": "Fulfill Contract",
"tags": [
"Contracts"
],
"description": "Fulfill a contract. Can only be used on contracts that have all of their delivery terms fulfilled.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "contractId",
"required": true,
"description": "The ID of the contract to fulfill."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fulfilled a contract.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"contract": {
"$ref": "#/components/schemas/Contract"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"contract",
"agent"
]
}
},
"required": [
"data"
],
"description": "Successfully fulfilled a contract."
}
}
}
}
}
}
},
"/my/contracts/{contractId}/deliver": {
"post": {
"operationId": "deliver-contract",
"summary": "Deliver Cargo to Contract",
"tags": [
"Contracts"
],
"description": "Deliver cargo to a contract.\n\nIn order to use this API, a ship must be at the delivery location (denoted in the delivery terms as `destinationSymbol` of a contract) and must have a number of units of a good required by this contract in its cargo.\n\nCargo that was delivered will be removed from the ship's cargo.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"shipSymbol": {
"type": "string",
"description": "Symbol of a ship located in the destination to deliver a contract and that has a good to deliver in its cargo."
},
"tradeSymbol": {
"type": "string",
"description": "The symbol of the good to deliver.",
"example": "IRON_ORE"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "Amount of units to deliver.",
"example": 10
}
},
"required": [
"shipSymbol",
"tradeSymbol",
"units"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "contractId",
"required": true,
"description": "The ID of the contract."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully delivered cargo to contract.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"contract": {
"$ref": "#/components/schemas/Contract"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
}
},
"required": [
"contract",
"cargo"
]
}
},
"required": [
"data"
],
"description": "Successfully delivered cargo to contract."
}
}
}
}
}
}
},
"/my/factions": {
"get": {
"operationId": "get-my-factions",
"summary": "Get My Factions",
"tags": [
"Factions"
],
"description": "Retrieve factions with which the agent has reputation.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"reputation": {
"type": "integer"
}
},
"required": [
"symbol",
"reputation"
]
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
]
}
}
}
}
}
}
},
"/my/agent": {
"get": {
"operationId": "get-my-agent",
"summary": "Get Agent",
"tags": [
"Agents"
],
"description": "Fetch your agent's details.",
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched agent details.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"data"
],
"description": "Successfully fetched agent details."
}
}
}
}
}
}
},
"/my/agent/events": {
"get": {
"operationId": "get-my-agent-events",
"summary": "Get Agent Events",
"tags": [
"Agents"
],
"description": "Get recent events for your agent.",
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AgentEvent"
}
}
},
"required": [
"data"
]
}
}
}
}
}
}
},
"/my/ships": {
"get": {
"operationId": "get-my-ships",
"summary": "List Ships",
"tags": [
"Fleet"
],
"description": "Return a paginated list of all of ships under your agent's ownership.",
"parameters": [
{
"schema": {
"type": "integer",
"minimum": 1,
"default": 1,
"example": 1
},
"in": "query",
"name": "page",
"description": "What entry offset to request"
},
{
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"example": 10
},
"in": "query",
"name": "limit",
"description": "How many entries to return per page"
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully listed ships.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ship"
}
},
"meta": {
"$ref": "#/components/schemas/Meta"
}
},
"required": [
"data",
"meta"
],
"description": "Successfully listed ships."
}
}
}
}
}
},
"post": {
"operationId": "purchase-ship",
"summary": "Purchase Ship",
"tags": [
"Fleet"
],
"description": "Purchase a ship from a Shipyard. In order to use this function, a ship under your agent's ownership must be in a waypoint that has the `Shipyard` trait, and the Shipyard must sell the type of the desired ship.\n\nShipyards typically offer ship types, which are predefined templates of ships that have dedicated roles. A template comes with a preset of an engine, a reactor, and a frame. It may also include a few modules and mounts.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"shipType": {
"$ref": "#/components/schemas/ShipType"
},
"waypointSymbol": {
"type": "string",
"description": "The symbol of the waypoint you want to purchase the ship at."
}
},
"required": [
"shipType",
"waypointSymbol"
]
}
}
},
"required": true
},
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Purchased ship successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"ship": {
"$ref": "#/components/schemas/Ship"
},
"agent": {
"$ref": "#/components/schemas/Agent"
},
"transaction": {
"$ref": "#/components/schemas/ShipyardTransaction"
}
},
"required": [
"ship",
"agent",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Purchased ship successfully."
}
}
}
}
}
}
},
"/my/account": {
"get": {
"operationId": "get-my-account",
"summary": "Get Account",
"tags": [
"Accounts"
],
"description": "Fetch your account details.",
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"account": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string",
"nullable": true
},
"token": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"email",
"createdAt"
]
}
},
"required": [
"account"
]
}
},
"required": [
"data"
]
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}": {
"get": {
"operationId": "get-my-ship",
"summary": "Get Ship",
"tags": [
"Fleet"
],
"description": "Retrieve the details of a ship under your agent's ownership.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Ship"
}
},
"required": [
"data"
],
"description": "Successfully fetched ship."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/chart": {
"post": {
"operationId": "create-chart",
"summary": "Create Chart",
"tags": [
"Fleet"
],
"description": "Command a ship to chart the waypoint at its current location.\n\nMost waypoints in the universe are uncharted by default. These waypoints have their traits hidden until they have been charted by a ship.\n\nCharting a waypoint will record your agent as the one who created the chart, and all other agents would also be able to see the waypoint's traits. Charting a waypoint gives you a one time reward of credits based on the rarity of the waypoint's traits.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully charted waypoint.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"chart": {
"$ref": "#/components/schemas/Chart"
},
"waypoint": {
"$ref": "#/components/schemas/Waypoint"
},
"transaction": {
"$ref": "#/components/schemas/ChartTransaction"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"chart",
"waypoint",
"transaction",
"agent"
]
}
},
"required": [
"data"
],
"description": "Successfully charted waypoint."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/negotiate/contract": {
"post": {
"operationId": "negotiate-contract",
"summary": "Negotiate Contract",
"tags": [
"Fleet",
"Contracts"
],
"description": "Negotiate a new contract with the HQ.\n\nIn order to negotiate a new contract, an agent must not have ongoing or offered contracts over the allowed maximum amount. Currently the maximum contracts an agent can have at a time is 1.\n\nOnce a contract is negotiated, it is added to the list of contracts offered to the agent, which the agent can then accept. \n\nThe ship must be present at any waypoint with a faction present to negotiate a contract with that faction.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully negotiated a new contract.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"contract": {
"$ref": "#/components/schemas/Contract"
}
},
"required": [
"contract"
]
}
},
"required": [
"data"
],
"description": "Successfully negotiated a new contract.",
"title": "Negotiate Contract 201 Response"
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/cooldown": {
"get": {
"operationId": "get-ship-cooldown",
"summary": "Get Ship Cooldown",
"tags": [
"Fleet"
],
"description": "Retrieve the details of your ship's reactor cooldown. Some actions such as activating your jump drive, scanning, or extracting resources taxes your reactor and results in a cooldown.\n\nYour ship cannot perform additional actions until your cooldown has expired. The duration of your cooldown is relative to the power consumption of the related modules or mounts for the action taken.\n\nResponse returns a 204 status code (no-content) when the ship has no cooldown.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched ship's cooldown.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Cooldown"
}
},
"required": [
"data"
],
"description": "Successfully fetched ship's cooldown."
}
}
}
},
"204": {
"description": "No cooldown.",
"content": {
"application/json": {
"schema": {
"description": "No cooldown."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/dock": {
"post": {
"operationId": "dock-ship",
"summary": "Dock Ship",
"tags": [
"Fleet"
],
"description": "Attempt to dock your ship at its current location. Docking will only succeed if your ship is capable of docking at the time of the request.\n\nDocked ships can access elements in their current location, such as the market or a shipyard, but cannot do actions that require the ship to be above surface such as navigating or extracting.\n\nThe endpoint is idempotent - successive calls will succeed even if the ship is already docked.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "The ship has successfully docked at its current location.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
}
},
"required": [
"nav"
]
}
},
"required": [
"data"
],
"title": "Dock Ship 200 Response",
"description": "The ship has successfully docked at its current location."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/extract": {
"post": {
"operationId": "extract-resources",
"summary": "Extract Resources",
"tags": [
"Fleet"
],
"description": "Extract resources from a waypoint that can be extracted, such as asteroid fields, into your ship. Send an optional survey as the payload to target specific yields.\n\nThe ship must be in orbit to be able to extract and must have mining equipments installed that can extract goods, such as the `Gas Siphon` mount for gas-based goods or `Mining Laser` mount for ore-based goods.\n\nThe survey property is now deprecated. See the `extract/survey` endpoint for more details.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully extracted resources.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"extraction": {
"$ref": "#/components/schemas/Extraction"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"modifiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointModifier"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"extraction",
"cooldown",
"cargo",
"events"
]
}
},
"required": [
"data"
],
"description": "Successfully extracted resources."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/extract/survey": {
"post": {
"operationId": "extract-resources-with-survey",
"summary": "Extract Resources with Survey",
"tags": [
"Fleet"
],
"description": "Use a survey when extracting resources from a waypoint. This endpoint requires a survey as the payload, which allows your ship to extract specific yields.\n\nSend the full survey object as the payload which will be validated according to the signature. If the signature is invalid, or any properties of the survey are changed, the request will fail.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Survey"
}
}
}
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully extracted resources.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"extraction": {
"$ref": "#/components/schemas/Extraction"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"modifiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WaypointModifier"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"extraction",
"cooldown",
"cargo",
"events"
]
}
},
"required": [
"data"
],
"description": "Successfully extracted resources."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/jettison": {
"post": {
"operationId": "jettison",
"summary": "Jettison Cargo",
"tags": [
"Fleet"
],
"description": "Jettison cargo from your ship's cargo hold.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "Amount of units to jettison of this good."
}
},
"required": [
"symbol",
"units"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Jettison successful.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
}
},
"required": [
"cargo"
]
}
},
"required": [
"data"
],
"description": "Jettison successful."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/jump": {
"post": {
"operationId": "jump-ship",
"summary": "Jump Ship",
"tags": [
"Fleet"
],
"description": "Jump your ship instantly to a target connected waypoint. The ship must be in orbit to execute a jump.\n\nA unit of antimatter is purchased and consumed from the market when jumping. The price of antimatter is determined by the market and is subject to change. A ship can only jump to connected waypoints",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"waypointSymbol": {
"type": "string",
"description": "The symbol of the waypoint to jump to. The destination must be a connected waypoint."
}
},
"required": [
"waypointSymbol"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Jump successful.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"transaction": {
"$ref": "#/components/schemas/MarketTransaction"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"nav",
"cooldown",
"transaction",
"agent"
]
}
},
"required": [
"data"
],
"description": "Jump successful."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/scan/systems": {
"post": {
"operationId": "create-ship-system-scan",
"summary": "Scan Systems",
"tags": [
"Fleet"
],
"description": "Scan for nearby systems, retrieving information on the systems' distance from the ship and their waypoints. Requires a ship to have the `Sensor Array` mount installed to use.\n\nThe ship will enter a cooldown after using this function, during which it cannot execute certain actions.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully scanned for nearby systems.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"systems": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScannedSystem"
},
"description": "List of scanned systems."
}
},
"required": [
"cooldown",
"systems"
]
}
},
"required": [
"data"
],
"description": "Successfully scanned for nearby systems."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/scan/waypoints": {
"post": {
"operationId": "create-ship-waypoint-scan",
"summary": "Scan Waypoints",
"tags": [
"Fleet"
],
"description": "Scan for nearby waypoints, retrieving detailed information on each waypoint in range. Scanning uncharted waypoints will allow you to ignore their uncharted state and will list the waypoints' traits.\n\nRequires a ship to have the `Sensor Array` mount installed to use.\n\nThe ship will enter a cooldown after using this function, during which it cannot execute certain actions.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully scanned for nearby waypoints.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"waypoints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScannedWaypoint"
},
"description": "List of scanned waypoints."
}
},
"required": [
"cooldown",
"waypoints"
]
}
},
"required": [
"data"
],
"description": "Successfully scanned for nearby waypoints."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/scan/ships": {
"post": {
"operationId": "create-ship-ship-scan",
"summary": "Scan Ships",
"tags": [
"Fleet"
],
"description": "Scan for nearby ships, retrieving information for all ships in range.\n\nRequires a ship to have the `Sensor Array` mount installed to use.\n\nThe ship will enter a cooldown after using this function, during which it cannot execute certain actions.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully scanned for nearby ships.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"ships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScannedShip"
},
"description": "List of scanned ships."
}
},
"required": [
"cooldown",
"ships"
]
}
},
"required": [
"data"
],
"description": "Successfully scanned for nearby ships."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/scrap": {
"post": {
"operationId": "scrap-ship",
"summary": "Scrap Ship",
"tags": [
"Fleet"
],
"description": "Scrap a ship, removing it from the game and receiving a portion of the ship's value back in credits. The ship must be docked in a waypoint that has the `Shipyard` trait to be scrapped.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Ship scrapped successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"transaction": {
"$ref": "#/components/schemas/ScrapTransaction"
}
},
"required": [
"agent",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Ship scrapped successfully."
}
}
}
}
}
},
"get": {
"operationId": "get-scrap-ship",
"summary": "Get Scrap Ship",
"tags": [
"Fleet"
],
"description": "Get the value of scrapping a ship. Requires the ship to be docked at a waypoint that has the `Shipyard` trait.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully retrieved the amount of value that will be returned when scrapping a ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"transaction": {
"$ref": "#/components/schemas/ScrapTransaction"
}
},
"required": [
"transaction"
]
}
},
"required": [
"data"
],
"description": "Successfully retrieved the amount of value that will be returned when scrapping a ship."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/navigate": {
"post": {
"operationId": "navigate-ship",
"summary": "Navigate Ship",
"tags": [
"Fleet"
],
"description": "Navigate to a target destination. The ship must be in orbit to use this function. The destination waypoint must be within the same system as the ship's current location. Navigating will consume the necessary fuel from the ship's manifest based on the distance to the target waypoint.\n\nThe returned response will detail the route information including the expected time of arrival. Most ship actions are unavailable until the ship has arrived at it's destination.\n\nTo travel between systems, see the ship's Warp or Jump actions.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"waypointSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the waypoint to navigate/warp to."
}
},
"required": [
"waypointSymbol"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "The successful transit information including the route details and changes to ship fuel. The route includes the expected time of arrival.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"fuel": {
"$ref": "#/components/schemas/ShipFuel"
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"nav",
"fuel",
"events"
]
}
},
"required": [
"data"
],
"description": "The successful transit information including the route details and changes to ship fuel. The route includes the expected time of arrival."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/warp": {
"post": {
"operationId": "warp-ship",
"summary": "Warp Ship",
"tags": [
"Fleet"
],
"description": "Warp your ship to a target destination in another system. The ship must be in orbit to use this function and must have the `Warp Drive` module installed. Warping will consume the necessary fuel from the ship's manifest.\n\nThe returned response will detail the route information including the expected time of arrival. Most ship actions are unavailable until the ship has arrived at its destination.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"waypointSymbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the waypoint to navigate/warp to."
}
},
"required": [
"waypointSymbol"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "The successful transit information including the route details and changes to ship fuel. The route includes the expected time of arrival.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"fuel": {
"$ref": "#/components/schemas/ShipFuel"
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"nav",
"fuel",
"events"
]
}
},
"required": [
"data"
],
"description": "The successful transit information including the route details and changes to ship fuel. The route includes the expected time of arrival."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/orbit": {
"post": {
"operationId": "orbit-ship",
"summary": "Orbit Ship",
"tags": [
"Fleet"
],
"description": "Attempt to move your ship into orbit at its current location. The request will only succeed if your ship is capable of moving into orbit at the time of the request.\n\nOrbiting ships are able to do actions that require the ship to be above surface such as navigating or extracting, but cannot access elements in their current waypoint, such as the market or a shipyard.\n\nThe endpoint is idempotent - successive calls will succeed even if the ship is already in orbit.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "The ship has successfully moved into orbit at its current location.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
}
},
"required": [
"nav"
]
}
},
"required": [
"data"
],
"title": "Orbit Ship 200 Response",
"description": "The ship has successfully moved into orbit at its current location."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/purchase": {
"post": {
"operationId": "purchase-cargo",
"summary": "Purchase Cargo",
"tags": [
"Fleet"
],
"description": "Purchase cargo from a market.\n\nThe ship must be docked in a waypoint that has `Marketplace` trait, and the market must be selling a good to be able to purchase it.\n\nThe maximum amount of units of a good that can be purchased in each transaction are denoted by the `tradeVolume` value of the good, which can be viewed by using the Get Market action.\n\nPurchased goods are added to the ship's cargo hold.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "The number of units of the good to purchase."
}
},
"required": [
"symbol",
"units"
],
"title": "Purchase Cargo Request"
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Purchased goods successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/MarketTransaction"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"cargo",
"transaction",
"agent"
]
}
},
"required": [
"data"
],
"title": "Purchase Cargo 201 Response",
"description": "Purchased goods successfully."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/refine": {
"post": {
"operationId": "ship-refine",
"summary": "Ship Refine",
"tags": [
"Fleet"
],
"description": "Attempt to refine the raw materials on your ship. The request will only succeed if your ship is capable of refining at the time of the request. In order to be able to refine, a ship must have goods that can be refined and have installed a `Refinery` module that can refine it.\n\nWhen refining, 100 basic goods will be converted into 10 processed goods.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"produce": {
"type": "string",
"enum": [
"IRON",
"COPPER",
"SILVER",
"GOLD",
"ALUMINUM",
"PLATINUM",
"URANITE",
"MERITIUM",
"FUEL"
],
"description": "The type of good to produce out of the refining process."
}
},
"required": [
"produce"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "The ship has successfully refined goods.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"produced": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tradeSymbol": {
"description": "Symbol of the good.",
"allOf": [
{
"$ref": "#/components/schemas/TradeSymbol"
}
]
},
"units": {
"type": "integer",
"description": "Amount of units of the good."
}
},
"required": [
"tradeSymbol",
"units"
]
},
"description": "Goods that were produced by this refining process."
},
"consumed": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tradeSymbol": {
"description": "Symbol of the good.",
"allOf": [
{
"$ref": "#/components/schemas/TradeSymbol"
}
]
},
"units": {
"type": "integer",
"description": "Amount of units of the good."
}
},
"required": [
"tradeSymbol",
"units"
]
},
"description": "Goods that were consumed during this refining process."
}
},
"required": [
"cargo",
"cooldown",
"produced",
"consumed"
]
}
},
"required": [
"data"
],
"title": "Ship Refine 201 Response",
"description": "The ship has successfully refined goods."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/refuel": {
"post": {
"operationId": "refuel-ship",
"summary": "Refuel Ship",
"tags": [
"Fleet"
],
"description": "Refuel your ship by buying fuel from the local market.\n\nRequires the ship to be docked in a waypoint that has the `Marketplace` trait, and the market must be selling fuel in order to refuel.\n\nEach fuel bought from the market replenishes 100 units in your ship's fuel.\n\nShips will always be refuel to their frame's maximum fuel capacity when using this action.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"units": {
"type": "integer",
"minimum": 1,
"description": "The amount of fuel to fill in the ship's tanks. When not specified, the ship will be refueled to its maximum fuel capacity. If the amount specified is greater than the ship's remaining capacity, the ship will only be refueled to its maximum fuel capacity. The amount specified is not in market units but in ship fuel units.",
"example": 100
},
"fromCargo": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"description": "Wether to use the FUEL thats in your cargo or not.",
"example": false
}
}
}
},
"text/plain": {
"schema": {
"type": "string"
}
}
}
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Refueled successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"fuel": {
"$ref": "#/components/schemas/ShipFuel"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/MarketTransaction"
}
},
"required": [
"agent",
"fuel",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Refueled successfully."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/repair": {
"post": {
"operationId": "repair-ship",
"summary": "Repair Ship",
"tags": [
"Fleet"
],
"description": "Repair a ship, restoring the ship to maximum condition. The ship must be docked at a waypoint that has the `Shipyard` trait in order to use this function. To preview the cost of repairing the ship, use the Get action.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Ship repaired successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"ship": {
"$ref": "#/components/schemas/Ship"
},
"transaction": {
"$ref": "#/components/schemas/RepairTransaction"
}
},
"required": [
"agent",
"ship",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Ship repaired successfully."
}
}
}
}
}
},
"get": {
"operationId": "get-repair-ship",
"summary": "Get Repair Ship",
"tags": [
"Fleet"
],
"description": "Get the cost of repairing a ship. Requires the ship to be docked at a waypoint that has the `Shipyard` trait.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully retrieved the cost of repairing a ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"transaction": {
"$ref": "#/components/schemas/RepairTransaction"
}
},
"required": [
"transaction"
]
}
},
"required": [
"data"
],
"description": "Successfully retrieved the cost of repairing a ship."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/sell": {
"post": {
"operationId": "sell-cargo",
"summary": "Sell Cargo",
"tags": [
"Fleet"
],
"description": "Sell cargo in your ship to a market that trades this cargo. The ship must be docked in a waypoint that has the `Marketplace` trait in order to use this function.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "Amounts of units to sell of the selected good.",
"example": 100
}
},
"required": [
"symbol",
"units"
],
"title": "SellCargoRequest"
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Cargo was successfully sold.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/MarketTransaction"
},
"agent": {
"$ref": "#/components/schemas/Agent"
}
},
"required": [
"cargo",
"transaction",
"agent"
]
}
},
"required": [
"data"
],
"title": "Sell Cargo 201 Response",
"description": "Cargo was successfully sold."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/siphon": {
"post": {
"operationId": "siphon-resources",
"summary": "Siphon Resources",
"tags": [
"Fleet"
],
"description": "Siphon gases or other resources from gas giants.\n\nThe ship must be in orbit to be able to siphon and must have siphon mounts and a gas processor installed.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Siphon successful.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"siphon": {
"$ref": "#/components/schemas/Siphon"
},
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"siphon",
"cooldown",
"cargo",
"events"
]
}
},
"required": [
"data"
],
"description": "Siphon successful."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/survey": {
"post": {
"operationId": "create-survey",
"summary": "Create Survey",
"tags": [
"Fleet"
],
"description": "Create surveys on a waypoint that can be extracted such as asteroid fields. A survey focuses on specific types of deposits from the extracted location. When ships extract using this survey, they are guaranteed to procure a high amount of one of the goods in the survey.\n\nIn order to use a survey, send the entire survey details in the body of the extract request.\n\nEach survey may have multiple deposits, and if a symbol shows up more than once, that indicates a higher chance of extracting that resource.\n\nYour ship will enter a cooldown after surveying in which it is unable to perform certain actions. Surveys will eventually expire after a period of time or will be exhausted after being extracted several times based on the survey's size. Multiple ships can use the same survey for extraction.\n\nA ship must have the `Surveyor` mount installed in order to use this function.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Surveys has been created.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cooldown": {
"$ref": "#/components/schemas/Cooldown"
},
"surveys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Survey"
},
"description": "Surveys created by this action."
}
},
"required": [
"cooldown",
"surveys"
]
}
},
"required": [
"data"
],
"description": "Surveys has been created."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/transfer": {
"post": {
"operationId": "transfer-cargo",
"summary": "Transfer Cargo",
"tags": [
"Fleet"
],
"description": "Transfer cargo between ships.\n\nThe receiving ship must be in the same waypoint as the transferring ship, and it must able to hold the additional cargo after the transfer is complete. Both ships also must be in the same state, either both are docked or both are orbiting.\n\nThe response body's cargo shows the cargo of the transferring ship after the transfer is complete.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tradeSymbol": {
"$ref": "#/components/schemas/TradeSymbol"
},
"units": {
"type": "integer",
"minimum": 1,
"description": "Amount of units to transfer."
},
"shipSymbol": {
"type": "string",
"description": "The symbol of the ship to transfer to."
}
},
"required": [
"tradeSymbol",
"units",
"shipSymbol"
],
"title": "Transfer Cargo Request"
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Cargo transferred successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"targetCargo": {
"$ref": "#/components/schemas/ShipCargo"
}
},
"required": [
"cargo",
"targetCargo"
]
}
},
"required": [
"data"
],
"title": "Transfer Cargo 200 Response",
"description": "Cargo transferred successfully."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/cargo": {
"get": {
"operationId": "get-my-ship-cargo",
"summary": "Get Ship Cargo",
"tags": [
"Fleet"
],
"description": "Retrieve the cargo of a ship under your agent's ownership.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully fetched ship's cargo.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/ShipCargo"
}
},
"required": [
"data"
],
"description": "Successfully fetched ship's cargo."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/modules": {
"get": {
"operationId": "get-ship-modules",
"summary": "Get Ship Modules",
"tags": [
"Fleet"
],
"description": "Get the modules installed on a ship.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully retrieved ship modules.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipModule"
}
}
},
"required": [
"data"
],
"description": "Successfully retrieved ship modules."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/modules/install": {
"post": {
"operationId": "install-ship-module",
"summary": "Install Ship Module",
"tags": [
"Fleet"
],
"description": "Install a module on a ship. The module must be in your cargo.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the module to install."
}
},
"required": [
"symbol"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully installed the module on the ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"modules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipModule"
}
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/ShipModificationTransaction"
}
},
"required": [
"agent",
"modules",
"cargo",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Successfully installed the module on the ship."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/modules/remove": {
"post": {
"operationId": "remove-ship-module",
"summary": "Remove Ship Module",
"tags": [
"Fleet"
],
"description": "Remove a module from a ship. The module will be placed in cargo.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the module to remove."
}
},
"required": [
"symbol"
]
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully removed the module from the ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"modules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipModule"
}
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/ShipModificationTransaction"
}
},
"required": [
"agent",
"modules",
"cargo",
"transaction"
]
}
},
"required": [
"data"
],
"description": "Successfully removed the module from the ship."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/mounts": {
"get": {
"operationId": "get-mounts",
"summary": "Get Mounts",
"tags": [
"Fleet"
],
"description": "Get the mounts installed on a ship.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Successfully retrieved ship mounts.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipMount"
}
}
},
"required": [
"data"
],
"title": "Get Mounts 200 Response",
"description": "Successfully retrieved ship mounts."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/mounts/install": {
"post": {
"operationId": "install-mount",
"summary": "Install Mount",
"tags": [
"Fleet"
],
"description": "Install a mount on a ship.\n\nIn order to install a mount, the ship must be docked and located in a waypoint that has a `Shipyard` trait. The ship also must have the mount to install in its cargo hold.\n\nAn installation fee will be deduced by the Shipyard for installing the mount on the ship.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the mount to install."
}
},
"required": [
"symbol"
],
"title": "Install Mount Request"
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully installed the mount.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"mounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipMount"
},
"description": "List of installed mounts after the installation of the new mount."
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/ShipModificationTransaction"
}
},
"required": [
"agent",
"mounts",
"cargo",
"transaction"
]
}
},
"required": [
"data"
],
"title": "Install Mount 201 Response",
"description": "Successfully installed the mount."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/mounts/remove": {
"post": {
"operationId": "remove-mount",
"summary": "Remove Mount",
"tags": [
"Fleet"
],
"description": "Remove a mount from a ship.\n\nThe ship must be docked in a waypoint that has the `Shipyard` trait, and must have the desired mount that it wish to remove installed.\n\nA removal fee will be deduced from the agent by the Shipyard.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"description": "The symbol of the mount to remove."
}
},
"required": [
"symbol"
],
"title": "Remove Mount Request"
}
}
},
"required": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"201": {
"description": "Successfully removed the mount.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/components/schemas/Agent"
},
"mounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipMount"
},
"description": "List of installed mounts after the removal of the selected mount."
},
"cargo": {
"$ref": "#/components/schemas/ShipCargo"
},
"transaction": {
"$ref": "#/components/schemas/ShipModificationTransaction"
}
},
"required": [
"agent",
"mounts",
"cargo",
"transaction"
]
}
},
"required": [
"data"
],
"title": "Remove Mount 201 Response",
"description": "Successfully removed the mount."
}
}
}
}
}
}
},
"/my/ships/{shipSymbol}/nav": {
"get": {
"operationId": "get-ship-nav",
"summary": "Get Ship Nav",
"tags": [
"Fleet"
],
"description": "Get the current nav status of a ship.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "The current nav status of the ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/ShipNav"
}
},
"required": [
"data"
],
"description": "The current nav status of the ship."
}
}
}
}
}
},
"patch": {
"operationId": "patch-ship-nav",
"summary": "Patch Ship Nav",
"tags": [
"Fleet"
],
"description": "Update the nav configuration of a ship.\n\nCurrently only supports configuring the Flight Mode of the ship, which affects its speed and fuel consumption.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"flightMode": {
"$ref": "#/components/schemas/ShipNavFlightMode"
}
}
}
}
}
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "shipSymbol",
"required": true,
"description": "The symbol of the ship."
}
],
"security": [
{
"AgentToken": []
}
],
"responses": {
"200": {
"description": "Success response for updating the nav configuration of a ship.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"nav": {
"$ref": "#/components/schemas/ShipNav"
},
"fuel": {
"$ref": "#/components/schemas/ShipFuel"
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShipConditionEvent"
}
}
},
"required": [
"nav",
"fuel",
"events"
]
}
},
"required": [
"data"
],
"description": "Success response for updating the nav configuration of a ship."
}
}
}
}
}
}
},
"/register": {
"post": {
"operationId": "register",
"summary": "Register New Agent",
"tags": [
"Accounts"
],
"description": "Creates a new agent and ties it to an account. \nThe agent symbol must consist of a 3-14 character string, and will be used to represent your agent. This symbol will prefix the symbol of every ship you own. Agent symbols will be cast to all uppercase characters.\n\nThis new agent will be tied to a starting faction of your choice, which determines your starting location, and will be granted an authorization token, a contract with their starting faction, a command ship that can fly across space with advanced capabilities, a small probe ship that can be used for reconnaissance, and 175,000 credits.\n\n> #### Keep your token safe and secure\n>\n> Keep careful track of where you store your token. You can generate a new token from our account dashboard, but if someone else gains access to your token they will be able to use it to make API requests on your behalf until the end of the reset.\n\nIf you are new to SpaceTraders, It is recommended to register with the COSMIC faction, a faction that is well connected to the rest of the universe. After registering, you should try our interactive [quickstart guide](https://docs.spacetraders.io/quickstart/new-game) which will walk you through a few basic API requests in just a few minutes.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"pattern": "^[a-zA-Z0-9-_]+$",
"minLength": 3,
"maxLength": 14,
"description": "Your desired agent symbol. This will be a unique name used to represent your agent, and will be the prefix for your ships.",
"example": "BADGER"
},
"faction": {
"$ref": "#/components/schemas/FactionSymbol"
}
},
"required": [
"symbol",
"faction"
]
}
}
},
"required": true
},
"security": [
{
"AccountToken": []
}
],
"responses": {
"201": {
"description": "Successfully registered.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "A Bearer token for accessing secured API endpoints."
},
"agent": {
"$ref": "#/components/schemas/Agent"
},
"faction": {
"$ref": "#/components/schemas/Faction"
},
"contract": {
"$ref": "#/components/schemas/Contract"
},
"ships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ship"
}
}
},
"required": [
"token",
"agent",
"faction",
"contract",
"ships"
]
}
},
"required": [
"data"
],
"description": "Successfully registered."
}
}
}
}
}
}
}
},
"servers": [
{
"description": "v2",
"url": "https://api.spacetraders.io/v2"
}
],
"security": [
{
"AgentToken": [],
"AccountToken": []
}
],
"tags": [
{
"description": "The accounts endpoints contain actions that relate to your spacetraders account.",
"name": "Accounts"
},
{
"description": "The agents endpoints contain actions that relate to agents. Both your own and other agents.",
"name": "Agents"
},
{
"description": "The contracts endpoints contain actions that relate to contracts. Contracts are agreements between agents and factions to perform certain services in exchange for a reward.",
"name": "Contracts"
},
{
"description": "The factions endpoints contain actions that relate to factions. Factions are organizations or sentient beings that are actively competing for control of the universe.",
"name": "Factions"
},
{
"description": "The fleet endpoints contain actions that relate to the fleet of ships owned by agents, and the actions those ships can perform.",
"name": "Fleet"
},
{
"description": "The systems endpoints contain actions that relate to systems and waypoints. Systems are the individual stars in the universe, and waypoints are the locations within a system.",
"name": "Systems"
},
{
"name": "Data",
"description": "The data endpoints contain actions that relate to the data that is stored in the game. This is all the data that doesn't change over the course of a reset (but might change between resets)."
},
{
"description": "The global endpoints contain actions that relate to the game server itself. This includes announcements, leaderboards, and server resets. It also includes endpoints that don't fit into the other categories.",
"name": "Global"
}
]
}