openapi: 3.0.0 info: title: 'Star Citizen Wiki API' description: "The community-maintained Star Citizen data API powering [starcitizen.tools](https://starcitizen.tools) and [Star Citizen Wiki](https://star-citizen.wiki).\n\n## Getting Started\n\n- **Base URL:** `https://api.star-citizen.wiki`\n- **Format:** JSON\n- **Auth:** Most endpoints are public and require no authentication. Some endpoints (e.g. similar image search) require a Sanctum bearer token.\n- **Game Versions:** Game data endpoints are version-scoped. Omit the `version` parameter to use the current default version. See `GET /api/game-versions` for available versions.\n- **Pagination:** List endpoints return paginated results using `page[number]` and `page[size]` (max 200). Responses include `links` and `meta` pagination metadata.\n- **Sorting:** Use `sort` with field names. Prefix with `-` for descending (e.g. `-name`).\n- **Filtering:** Use `filter[field]=value` syntax. See each endpoint's filter parameters and the corresponding `/filters` endpoints for valid values.\n- **Rate Limits:** Search endpoints are rate-limited to 60 requests/minute per IP. Image search endpoints are limited to 10 requests/minute.\n\n## OpenAPI Specification\n\n- YAML: `GET /api/openapi`\n- Interactive docs: [docs.star-citizen.wiki](https://docs.star-citizen.wiki)\n\n## Attribution\n\nThis API is maintained by the Star Citizen Wiki community. Data is sourced from game files, RSI website, and community contributions.\n" contact: email: foxftw@star-citizen.wiki license: name: 'MIT (code only)' url: 'https://opensource.org/licenses/MIT' version: 3.0.0 servers: - url: 'https://api.star-citizen.wiki' description: 'Production API' paths: /api/blueprints: get: tags: - Blueprints summary: 'List Game Blueprints' description: 'Returns paginated crafting blueprints, including ingredients, crafted items, and dismantle returns. Results are scoped to the requested or default game version.' operationId: listBlueprints parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: craft_time_seconds, ingredient_count, unlocking_missions_count.' schema: type: string example: '-craft_time_seconds' - name: 'filter[query]' in: query description: 'Search blueprints by crafted item name. Example: `Shotgun`' schema: type: string - name: 'filter[output.uuid]' in: query description: 'Filter by crafted item UUID (see GET /api/items). Example: `02d4cd2e-fa98-4086-aee1-6b2dfce8ea27`' schema: type: string format: uuid - name: 'filter[output.name]' in: query description: 'Filter by crafted item name. Example: `P4-AR Magazine (40 cap)`' schema: type: string - name: 'filter[output.class]' in: query description: 'Filter by crafted item class. Example: `ksar_smg_energy_01_gold01`' schema: type: string - name: 'filter[output.type]' in: query description: 'Filter by crafted item type (see GET /api/blueprints/filters for valid values). Example: `WeaponPersonal`' schema: type: string - name: 'filter[default]' in: query description: 'Filter by default availability (true/false). Example: `true`' schema: type: boolean - name: 'filter[ingredient]' in: query description: 'Matches ingredient resource type by name, key, or UUID before filtering blueprints. Example: `Aluminum`' schema: type: string - name: 'filter[ingredient.uuid]' in: query description: 'Filter by ingredient commodity UUID. Accepts comma-separated values (see GET /api/commodities). Example: `fde0cd65-8827-4b23-804d-cc8845dfa7ac`' schema: type: string format: uuid - name: 'filter[resource.uuid]' in: query description: 'Filter by resource commodity UUID, matching ingredients and dismantle returns. Accepts comma-separated values (see GET /api/commodities). Example: `fde0cd65-8827-4b23-804d-cc8845dfa7ac`' schema: type: string format: uuid responses: '200': description: 'List of blueprints' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/blueprint' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object '/api/blueprints/{blueprint}': get: tags: - Blueprints summary: 'Get Game Blueprint Detail' description: 'Returns full detail for a single crafting blueprint, including ingredients, crafted item, dismantle returns, and associated missions. Scoped to the requested or default game version.' operationId: getBlueprint parameters: - name: blueprint in: path required: true schema: description: 'Blueprint UUID' type: string example: 280f47b7-8434-410c-b854-380768fdccec - $ref: '#/components/parameters/version' responses: '200': description: 'Blueprint detail' content: application/json: schema: properties: data: { $ref: '#/components/schemas/blueprint' } type: object '404': description: 'Blueprint not found for the requested game version' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/blueprints/filters: get: tags: - Blueprints summary: 'Get Blueprint Filter Options' description: 'Returns available filter facets for blueprints (crafted item types, ingredient and resource UUIDs), optionally scoped to the requested or default game version.' operationId: listBlueprintFilters parameters: - $ref: '#/components/parameters/version' responses: '200': description: 'Filter facets for blueprints' content: application/json: schema: properties: filters: { properties: { output.type: { description: 'Crafted item types (e.g. WeaponPersonal, Char_Armor_Torso, WeaponAttachment)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, ingredient.uuid: { description: 'Ingredient commodity UUIDs with names and counts', type: array, items: { $ref: '#/components/schemas/filter_value' } }, resource.uuid: { description: 'Combined ingredient and dismantle return resource UUIDs with names and counts', type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/commodities: get: tags: - Commodities summary: 'List Game Commodities' description: 'Returns paginated game commodities with location data and resource metadata, optionally filtered to only those consumed by blueprints. Results include refined version info and starmap location data scoped to the requested or default game version.' operationId: listCommodities parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: key, name, rarity, density, instability, resistance, signature.' schema: type: string example: '-rarity' - name: 'filter[used]' in: query description: 'When true, only commodities used by blueprint ingredients in the requested or default game version are returned. Example: `true`' schema: type: boolean - name: 'filter[system]' in: query description: 'Star system where the commodity can be found (see GET /api/commodities/filters for valid values). Example: `Stanton System`' schema: type: string - name: 'filter[type]' in: query description: 'Location type name (see GET /api/commodities/filters for valid values). Example: `Planet`' schema: type: string - name: 'filter[rarity]' in: query description: 'Commodity tier/rarity level, lowercase (see GET /api/commodities/filters for valid values). Example: `epic`' schema: type: string - name: 'filter[kind]' in: query description: 'Resource kind (see GET /api/commodities/filters for valid values). Example: `mineable`' schema: type: string - name: 'filter[group]' in: query description: 'Commodity group name. Comma-separated for multiple. Example: `ProcessedGoods,Food`' schema: type: string - name: 'filter[refined_version]' in: query description: 'Refined version name (see GET /api/commodities/filters for valid values). Example: `Agricium`' schema: type: string - name: 'filter[location]' in: query description: 'Partial match on starmap location name. Example: `ArcCorp`' schema: type: string - name: 'filter[query]' in: query description: 'Search commodities by name or key. Example: `Agricium`' schema: type: string - name: 'filter[ship]' in: query description: 'When true, only show commodities mineable by ships. Example: `true`' schema: type: boolean - name: 'filter[ground_vehicle]' in: query description: 'When true, only show commodities mineable by ground vehicles. Example: `true`' schema: type: boolean - name: 'filter[fps]' in: query description: 'When true, only show commodities mineable on foot (FPS). Example: `true`' schema: type: boolean - name: 'filter[harvestable]' in: query description: 'When true, only show commodities collectible from harvestable or plant deposits. Example: `true`' schema: type: boolean - name: 'filter[salvage]' in: query description: 'When true, only show commodities obtainable through salvage. Example: `false`' schema: type: boolean - name: 'filter[mineable]' in: query description: 'When true, only show mineable commodities; when false, only show non-mineable. Example: `true`' schema: type: boolean responses: '200': description: 'List of commodities' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/commodity_link' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object examples: commodities_by_location: summary: 'Commodities filtered by location' value: { data: [{ uuid: 00000000-0000-0000-0000-000000000000, name: Agricium, slug: agricium }], links: { first: 'https://api.star-citizen.wiki/api/commodities?page[number]=1', last: null, prev: null, next: null }, meta: { current_page: 1, per_page: 30, total: 1 } } '/api/commodities/{commodity}': get: tags: - Commodities summary: 'Show Game Commodity' description: 'Returns full details for a single game commodity including detailed location entries with starmap data, resource composition, areas, clustering data, and raw/refined version info. Results are scoped to the requested or default game version. Optionally include related blueprints and items.' operationId: getCommodity parameters: - name: commodity in: path required: true schema: description: 'Commodity UUID or slug' type: string example: agricium - $ref: '#/components/parameters/version' - name: include in: query description: 'Comma-separated relationships to include. Available: blueprints (crafting blueprints that use this commodity), items (items that produce or require this commodity).' schema: type: string example: 'blueprints,items' responses: '200': description: 'Commodity details' content: application/json: schema: properties: data: { $ref: '#/components/schemas/commodity_show' } type: object examples: commodity_detail: summary: 'Commodity detail response' value: { data: { uuid: 00000000-0000-0000-0000-000000000000, name: Agricium, slug: agricium } } '404': description: 'Commodity not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/commodities/filters: get: tags: - Commodities summary: 'Game Commodity Filters' description: 'Returns all available filter values for game commodities, scoped to the requested or default game version. Filter values can be combined; providing a system filter will narrow the location facet to that system only.' operationId: listCommodityFilters parameters: - $ref: '#/components/parameters/version' - name: 'filter[used]' in: query description: 'When true, filter facets to only commodities used by blueprint ingredients. Example: `true`' schema: type: boolean - name: 'filter[system]' in: query description: 'Star system where the commodity can be found. Example: `Stanton System`' schema: type: string - name: 'filter[type]' in: query description: 'Location type name. Example: `Planet`' schema: type: string - name: 'filter[rarity]' in: query description: 'Commodity tier/rarity level, lowercase. Example: `epic`' schema: type: string - name: 'filter[kind]' in: query description: 'Resource kind. Example: `mineable`' schema: type: string - name: 'filter[group]' in: query description: 'Commodity group name. Comma-separated for multiple. Example: `ProcessedGoods,Food`' schema: type: string - name: 'filter[refined_version]' in: query description: 'Refined version name. Example: `Agricium`' schema: type: string - name: 'filter[location]' in: query description: 'Partial match on starmap location name. Example: `ArcCorp`' schema: type: string - name: 'filter[query]' in: query description: 'Search commodities by name or key. Example: `Agricium`' schema: type: string - name: 'filter[ship]' in: query description: 'When true, only show commodities mineable by ships. Example: `true`' schema: type: boolean - name: 'filter[ground_vehicle]' in: query description: 'When true, only show commodities mineable by ground vehicles. Example: `true`' schema: type: boolean - name: 'filter[fps]' in: query description: 'When true, only show commodities mineable on foot (FPS). Example: `true`' schema: type: boolean - name: 'filter[harvestable]' in: query description: 'When true, only show commodities collectible from harvestable or plant deposits. Example: `true`' schema: type: boolean - name: 'filter[salvage]' in: query description: 'When true, only show commodities obtainable through salvage. Example: `false`' schema: type: boolean - name: 'filter[mineable]' in: query description: 'When true, only show mineable commodities; when false, only show non-mineable. Example: `true`' schema: type: boolean responses: '200': description: 'Available filters for game commodities.' content: application/json: schema: properties: filters: { properties: { system: { description: 'Star systems where commodities can be found', type: array, items: { $ref: '#/components/schemas/filter_value' } }, type: { description: 'Location type names', type: array, items: { $ref: '#/components/schemas/filter_value' } }, rarity: { description: 'Commodity tier/rarity levels', type: array, items: { $ref: '#/components/schemas/filter_value' } }, kind: { description: 'Resource kinds', type: array, items: { $ref: '#/components/schemas/filter_value' } }, refined_version: { description: 'Refined version names', type: array, items: { $ref: '#/components/schemas/filter_value' } }, group: { description: 'Commodity groups', type: array, items: { $ref: '#/components/schemas/filter_value' } }, location: { description: 'Starmap locations grouped by system', type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/factions: get: tags: - Factions summary: 'List Factions' description: 'Returns paginated factions sorted by name by default. Factions hidden from the Delphi app are excluded.' operationId: listFactions parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[faction_type]' in: query description: 'Category of faction. Example: `Lawful`' schema: type: string - name: 'filter[has_reputation]' in: query description: 'When true, only factions with a reputation system are returned. Example: `true`' schema: type: boolean - name: 'filter[lawful]' in: query description: 'When true, only lawful factions are returned. Example: `true`' schema: type: boolean - name: 'filter[is_npc]' in: query description: 'When true, only NPC-controlled factions are returned. Example: `false`' schema: type: boolean - name: 'filter[hide_in_delphi_app]' in: query description: 'When true, only factions hidden from the Delphi app are returned. Note: the index endpoint excludes hidden factions by default. Example: `false`' schema: type: boolean - name: 'filter[query]' in: query description: 'Search factions by name or description. Example: `ArcCorp`' schema: type: string - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: name, faction_type.' schema: type: string example: '-name' responses: '200': description: 'List of factions' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/faction_index' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object '/api/factions/{faction}': get: tags: - Factions summary: 'Get Faction Detail' description: 'Returns full details for a single faction, including reputation ladder with standings when the faction has a reputation system. Factions hidden from the Delphi app are excluded.' operationId: getFaction parameters: - name: faction in: path required: true schema: description: 'Faction UUID.' type: string format: uuid example: 4e429470-4d4e-4c2b-a4ac-4de42ada16e0 responses: '200': description: 'Faction detail' content: application/json: schema: properties: data: { $ref: '#/components/schemas/faction' } type: object '404': description: 'Faction not found' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/game-versions: get: tags: - 'Game Versions' summary: 'List Game Versions' description: 'Returns paginated game versions sorted by release date (newest first by default). Useful for discovering available game versions for version-scoped API queries.' operationId: listGameVersions parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[code]' in: query description: 'Filter by exact version code. Example: `4.8.0-LIVE.11825000`' schema: type: string - name: 'filter[channel]' in: query description: 'Filter by release channel (live, ptu, eptu), lowercase. Example: `live`' schema: type: string - name: 'filter[is_default]' in: query description: 'Filter by default status. Example: `1`' schema: type: integer - name: sort in: query description: 'Sort by field. Prefix with - for descending. Supported: code, channel, released_at.' schema: type: string example: '-released_at' responses: '200': description: 'Paginated list of Game Versions' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_version' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object /api/game-versions/default: get: tags: - 'Game Versions' summary: 'Get Default Game Version' description: 'Returns the current default game version. This is the version used by default in version-scoped API queries (see the version query parameter on other endpoints).' operationId: getDefaultGameVersion responses: '200': description: 'The default game version' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_version' } type: object examples: default_game_version: summary: 'Current default version' value: { data: { code: 4.8.0-LIVE.11825000, channel: live, is_default: true } } '404': description: 'No default version found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/game-versions/{identifier}': get: tags: - 'Game Versions' summary: 'Get Game Version' description: 'Retrieve a specific game version by its code (case-insensitive). Game versions are used to scope version-aware data endpoints via the `version` query parameter.' operationId: getGameVersion parameters: - name: identifier in: path description: 'Game version code (case-insensitive).' required: true schema: type: string example: 4.8.0-LIVE.11825000 responses: '200': description: 'A game version' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_version' } type: object '404': description: 'Game version not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/weapons: get: tags: - Items summary: 'In-Game Weapons Overview' description: 'Alias for /api/items scoped to FPS weapons (WeaponPersonal type). Results are scoped to the requested or default game version. Returns weapon items with manufacturer, game version, and description data.' operationId: listWeapons parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Klaus & Werner`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on item class name. Example: `behr_sniper_ballistic_01`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Arrow`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Arrow`' schema: type: string - name: 'filter[size]' in: query description: 'Exact item size (0-12). Example: `3`' schema: type: number - name: 'filter[grade]' in: query description: 'Exact item grade (1-7, mapped to A-G). Example: `1`' schema: type: number - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Weapons' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/weapon-attachments: get: tags: - Items summary: 'In-Game Weapon Attachments Overview' description: 'Alias for /api/items scoped to weapon attachments (WeaponAttachment type, excluding magazines and missiles). Results are scoped to the requested or default game version. Returns attachment items with manufacturer, game version, and description data.' operationId: listWeaponAttachments parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `ArmaMod`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Quell Suppressor2`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Quell Suppressor2`' schema: type: string - name: 'filter[size]' in: query description: 'Exact item size (0-12). Example: `1`' schema: type: number - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Weapon Attachments' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/clothes: get: tags: - Items summary: 'In-Game Clothes Overview' description: 'Alias for /api/items scoped to clothing (FPS.Clothing.* classification). Results are scoped to the requested or default game version. Returns clothing items with manufacturer, game version, and description data.' operationId: listClothes parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Fiore`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Jacket`' schema: type: string - name: 'filter[classification]' in: query description: 'Partial match on item classification (dot-notation, e.g. FPS.Clothing). (see GET /api/items/filters for valid values). Example: `FPS.Clothing.Torso`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Jacket`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Clothes' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/armor: get: tags: - Items summary: 'In-Game Armor Overview' description: 'Alias for /api/items scoped to armor (FPS.Armor.* classification). Results are scoped to the requested or default game version. Returns armor items with manufacturer, game version, and description data.' operationId: listArmor parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Clark Defense Systems`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Core`' schema: type: string - name: 'filter[classification]' in: query description: 'Partial match on item classification (dot-notation, e.g. FPS.Armor). (see GET /api/items/filters for valid values). Example: `FPS.Armor.Torso`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Core`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Armor' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/food: get: tags: - Items summary: 'In-Game Food Overview' description: 'Alias for /api/items scoped to food and drink (Food, Bottle, Drink types). Results are scoped to the requested or default game version. Returns consumable items with manufacturer, game version, and description data.' operationId: listFood parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Consumable`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Burger`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Burger`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Food Items' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/vehicle-weapons: get: tags: - Items summary: 'In-Game Vehicle Weapons Overview' description: 'Alias for /api/items scoped to vehicle weapons (WeaponGun type). Results are scoped to the requested or default game version. Returns ship weapon items with manufacturer, game version, and description data.' operationId: listVehicleWeapons parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `KnightBridge Arms`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Cannon`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Cannon`' schema: type: string - name: 'filter[size]' in: query description: 'Exact item size (0-12). Example: `3`' schema: type: number - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Vehicle Weapons' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/vehicle-items: get: tags: - Items summary: 'In-Game Vehicle Items Overview' description: 'Alias for /api/items scoped to vehicle components (coolers, shields, power plants, quantum drives, thrusters, etc.). Results are scoped to the requested or default game version. Returns component items with manufacturer, game version, and description data.' operationId: listVehicleItems parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Aegis Dynamics`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Shield`' schema: type: string - name: 'filter[type]' in: query description: 'Exact match on item type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Cooler`' schema: type: string - name: 'filter[sub_type]' in: query description: 'Exact match on item sub-type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Default`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `Shield`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'List of Vehicle Items' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/items: get: tags: - Items summary: 'In-Game Item Overview' description: 'Returns paginated in-game items for the requested category and game version. Always includes manufacturer, game version, and description data. Crafting blueprints are loaded automatically. Supports filtering by type, classification, manufacturer, size, grade, and more. Available includes: shops, variants, related_items, blueprints, vehicles, shops.items. Supports 150+ JSON field sorts. (see GET /api/items/filters for valid filter values)' operationId: listItems parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supports 250+ JSON fields. Examples: name, -grade, weapon.damage.alpha_total, -shield_controller.face_type. Use comma for multiple: grade,-name' schema: type: string example: '-weapon.damage.alpha_total' - name: 'filter[variants]' in: query description: 'When false, excludes variant items (base_id IS NOT NULL) and returns only base items. When true or omitted, returns all items including variants.' schema: type: boolean - name: 'filter[category]' in: query description: 'Item category to scope results. Accepts: weapons, weapon-attachments, clothes, armor, food, medical, mining-modifiers, fps-items, vehicle-weapons, vehicle-items, vehicle-flair-items, vehicle-components. Example: `weapons`' schema: type: string - name: 'filter[type]' in: query description: 'Exact match on item type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `WeaponPersonal`' schema: type: string - name: 'filter[sub_type]' in: query description: 'Exact match on item sub-type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Barrel`' schema: type: string - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `KnightBridge Arms`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Same as filter[manufacturer]. Accepts comma-separated values for OR matching. Example: `Anvil Aerospace`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on item class name. Example: `Controller_Comms`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Arrow`' schema: type: string - name: 'filter[query]' in: query description: 'Search items by name or class name. Example: `helmet`' schema: type: string - name: 'filter[classification]' in: query description: 'Partial match on item classification (dot-notation, e.g. FPS.Armor). (see GET /api/items/filters for valid values). Example: `FPS.Armor.Torso`' schema: type: string - name: 'filter[size]' in: query description: 'Exact item size (0-12). Example: `3`' schema: type: number - name: 'filter[grade]' in: query description: 'Exact item grade (1-7, mapped to A-G). Example: `3`' schema: type: number - name: 'filter[class]' in: query description: 'Exact match on item class. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Military`' schema: type: string - name: 'filter[rarity]' in: query description: 'Item rarity. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Rare`' schema: type: string - name: 'filter[event_source]' in: query description: 'Event or reward source label. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `IAE`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean - name: 'filter[tags]' in: query description: 'Filter by stdItem.RequiredTags array values. Use when a port has required_tags - matches items whose RequiredTags contain ALL specified values. Accepts comma-separated tags for AND matching. Example: `MISC_Fury_Miru`' schema: type: string - name: 'filter[port_tags]' in: query description: "Filter items by RequiredTags compatibility with a port's tags. Accepts comma-separated port tag values. Returns items where any of their RequiredTags appear in the provided tags, OR items with no RequiredTags but whose Tags overlap with the provided tags (e.g. older paint system). Items with no RequiredTags and no overlapping Tags are excluded. Pass the port_tags value from a vehicle hardpoint port. Example: `flight_ready,Ship_Dock_Refuel`" schema: type: string - name: 'filter[vehicle]' in: query description: "Scope items to a specific vehicle. Accepts one or more vehicle identity tags (from the vehicle's port_tags field). Returns: (1) universal items with no RequiredTags and not bespoke, (2) bespoke items whose RequiredTags match any provided tag, (3) bespoke items whose bespoke_vehicle_tags match any provided tag. Use on vehicle pages to show only items equippable on that vehicle. Example: `AEGS_Avenger_Base`" schema: type: string responses: '200': description: 'List of Items' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object examples: item_search_page: summary: 'Search items by text' value: { data: [{ uuid: 00000000-0000-0000-0000-000000000000, name: 'Flight Helmet', slug: flight-helmet }], links: { first: 'https://api.star-citizen.wiki/api/items?page[number]=1', last: null, prev: null, next: null }, meta: { current_page: 1, per_page: 30, total: 1 } } '/api/weapons/{identifier}': get: tags: - Items summary: 'In-Game Weapon Detail' description: 'Retrieve a specific FPS weapon by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to weapons. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getWeapon parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: 'Scourge Railgun' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Weapon' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Weapon not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/weapon-attachments/{identifier}': get: tags: - Items summary: 'In-Game Weapon Attachment Detail' description: 'Retrieve a specific weapon attachment by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to weapon attachments. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getWeaponAttachment parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: 'Quell Suppressor2' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Weapon Attachment' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Weapon attachment not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/clothes/{identifier}': get: tags: - Items summary: 'In-Game Clothing Detail' description: 'Retrieve a specific clothing item by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to clothing. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getClothingItem parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: 'Burgundy Paisley Bandana' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Clothing Item' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Clothing item not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/armor/{identifier}': get: tags: - Items summary: 'In-Game Armor Detail' description: 'Retrieve a specific armor item by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to armor. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getArmor parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: 'Ace Interceptor Helmet' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'An Armor Item' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Armor item not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/food/{identifier}': get: tags: - Items summary: 'In-Game Food Detail' description: 'Retrieve a specific food or drink item by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to food. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getFood parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: Whamburger - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Food Item' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Food item not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/vehicle-weapons/{identifier}': get: tags: - Items summary: 'In-Game Vehicle Weapon Detail' description: 'Retrieve a specific vehicle weapon by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to vehicle weapons. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getVehicleWeapon parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: 'Predator Scattergun' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Vehicle Weapon' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Vehicle weapon not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/vehicle-items/{identifier}': get: tags: - Items summary: 'In-Game Vehicle Item Detail' description: 'Retrieve a specific vehicle component by name or UUID. Results are scoped to the requested or default game version. Alias for /api/items/{identifier} scoped to vehicle items. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items.' operationId: getVehicleItem parameters: - name: identifier in: path required: true schema: description: 'Item name or UUID' type: string example: Frost-Star - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Vehicle Item' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Vehicle item not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/items/{identifier}': get: tags: - Items summary: 'In-Game Item Detail' description: 'Retrieve a specific item by UUID, slug, name, or class name (case-insensitive). Results are scoped to the requested or default game version. Always includes manufacturer, game version, description data, entity tags, commodities, and variant group data. Supports includes: shops, variants, related_items, blueprints, vehicles, shops.items. Items with a matching vehicle record automatically redirect to GET /api/vehicles/{uuid}.' operationId: getItem parameters: - $ref: '#/components/parameters/locale' - name: include in: query description: 'Comma-separated relationships to include. Available: blueprints (full crafting blueprint data including ingredients, missions, tiers), variants (item variants), related_items (related items from variant groups and sets), vehicles (vehicles this item is installed on), shops (shop availability data), shops.items (shop items).' schema: type: string example: blueprints - $ref: '#/components/parameters/version' - name: identifier in: path required: true schema: description: 'Item name, slug, class name, or UUID' type: string example: 'Scourge Railgun' responses: '200': description: 'An Item' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_item' } type: object '404': description: 'Item not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/items/search: post: tags: - Items - Search summary: 'In-Game Item Search (Deprecated)' description: 'Deprecated. Use GET /api/items?filter[name]={value} for name search. Note: OR search across name/uuid/type is no longer supported. This endpoint will be removed in a future version.' operationId: searchItemsDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/sort' - name: 'filter[variants]' in: query description: 'When false, excludes variant items and returns only base items. When true or omitted, returns all items.' schema: type: boolean - name: 'filter[category]' in: query description: 'Item category to scope results. Accepts: weapons, weapon-attachments, clothes, armor, food, medical, mining-modifiers, fps-items, vehicle-weapons, vehicle-items, vehicle-flair-items, vehicle-components. Example: `weapons`' schema: type: string - name: 'filter[type]' in: query description: 'Exact match on item type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `WeaponPersonal`' schema: type: string - name: 'filter[sub_type]' in: query description: 'Exact match on item sub-type. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Barrel`' schema: type: string - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `KnightBridge Arms`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Same as filter[manufacturer]. Accepts comma-separated values for OR matching. Example: `Anvil Aerospace`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on item class name. Example: `MGA_Assault`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on item display name. Example: `Arrow`' schema: type: string - name: 'filter[classification]' in: query description: 'Partial match on item classification (dot-notation, e.g. FPS.Armor). (see GET /api/items/filters for valid values). Example: `FPS.Armor.Torso`' schema: type: string - name: 'filter[size]' in: query description: 'Exact item size (0-12). Example: `3`' schema: type: number - name: 'filter[grade]' in: query description: 'Exact item grade (1-7, mapped to A-G). Example: `3`' schema: type: number - name: 'filter[class]' in: query description: 'Exact match on item class. Accepts comma-separated values for OR matching. (see GET /api/items/filters for valid values). Example: `Military`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean requestBody: description: 'Item Name or (sub)type' required: true content: application/json: schema: type: object example: '{"query": "Arrow"}' responses: '200': description: 'A List of matching Items' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_item' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object deprecated: true /api/items/filters: get: tags: - Items summary: 'In-Game Item Filters' description: 'Returns available filter facet values for in-game items, grouped by field with occurrence counts. Applying other filters narrows the facet results. Use these values as filter[*] parameters on GET /api/items. Scoped to the default item category unless filter[category] is specified.' operationId: listItemFilters parameters: - $ref: '#/components/parameters/version' - name: 'filter[variants]' in: query description: 'When false, facets are computed excluding variant items. When true or omitted, all items are included.' schema: type: boolean - name: 'filter[category]' in: query description: 'Item category to scope facets. Accepts: weapons, weapon-attachments, clothes, armor, food, medical, mining-modifiers, fps-items, vehicle-weapons, vehicle-items, vehicle-flair-items, vehicle-components. Example: `weapons`' schema: type: string - name: 'filter[type]' in: query description: 'Narrow facets to items matching this type. Example: `WeaponPersonal`' schema: type: string - name: 'filter[sub_type]' in: query description: 'Narrow facets to items matching this sub-type. Example: `Barrel`' schema: type: string - name: 'filter[manufacturer]' in: query description: 'Narrow facets to items from this manufacturer. Example: `KnightBridge Arms`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Same as filter[manufacturer]. Example: `Anvil Aerospace`' schema: type: string - name: 'filter[class_name]' in: query description: 'Narrow facets to items with matching class name. Example: `MGA_Assault`' schema: type: string - name: 'filter[name]' in: query description: 'Narrow facets to items with matching name. Example: `Arrow`' schema: type: string - name: 'filter[query]' in: query description: 'Narrow facets to items matching name or class name. Example: `Arrow`' schema: type: string - name: 'filter[classification]' in: query description: 'Narrow facets to items with matching classification. Example: `FPS.Armor.Torso`' schema: type: string - name: 'filter[size]' in: query description: 'Narrow facets to items with this size. Example: `3`' schema: type: number - name: 'filter[grade]' in: query description: 'Narrow facets to items with this grade. Example: `3`' schema: type: number - name: 'filter[class]' in: query description: 'Narrow facets to items with this class. Example: `Military`' schema: type: string - name: 'filter[rarity]' in: query description: 'Narrow facets to items with this rarity. Example: `Rare`' schema: type: string - name: 'filter[event_source]' in: query description: 'Narrow facets to items with this event or reward source. Example: `IAE`' schema: type: string - name: 'filter[include_irrelevant]' in: query description: 'When set to true, includes items flagged as not player-relevant (test, placeholder, dev items). Default shows only relevant items.' schema: type: boolean responses: '200': description: 'Available filter facets for in-game items, grouped by field with counts.' content: application/json: schema: properties: filters: { properties: { type: { description: 'Item types (e.g. WeaponPersonal, Cooler, Shield)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, sub_type: { description: 'Item sub-types (e.g. Barrel, Default, Optic)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, classification: { description: 'Item classifications (e.g. FPS.Armor.Torso, Ship.Cooler)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, size: { description: 'Item sizes (0-12)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, grade: { description: 'Item grades (1-7, mapped A-G)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, class: { description: 'Item classes (Civilian, Competition, Industrial, Military, Stealth)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, manufacturer: { description: 'Manufacturer names', type: array, items: { $ref: '#/components/schemas/filter_value' } }, rarity: { description: 'Item rarity levels (Common, Uncommon, Rare, Epic, Legendary)', type: array, items: { $ref: '#/components/schemas/filter_value' } }, event_source: { description: 'Event or reward source labels (count-less values)', type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/manufacturers: get: tags: - Manufacturers summary: 'In-Game Manufacturers Overview' description: 'Returns paginated manufacturers grouped by name with optional pagination.' operationId: listManufacturers parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[name]' in: query description: 'Partial match on manufacturer name' schema: type: string responses: '200': description: 'List of Manufacturers' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/manufacturer_link' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object '/api/manufacturers/{manufacturer}': get: tags: - Manufacturers summary: 'In-Game Manufacturer Detail' description: 'Retrieve a manufacturer by name, UUID, or code together with its products.' operationId: getManufacturer parameters: - name: manufacturer in: path required: true schema: description: 'Manufacturer name, uuid, or code' type: string example: 'Anvil Aerospace' responses: '200': description: 'A Manufacturer and its products' content: application/json: schema: properties: data: { $ref: '#/components/schemas/manufacturer' } type: object '404': description: 'Manufacturer not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/manufacturers/search: post: tags: - Manufacturers - Search summary: 'In-Game Manufacturer Search (Deprecated)' description: 'Deprecated. Use GET /api/manufacturers?filter[name]={value} for name search. This endpoint will be removed in a future version.' operationId: searchManufacturersDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' requestBody: description: 'Manufacturer name, uuid, or code' required: true content: application/json: schema: type: object example: '{"query": "Anvil"}' responses: '200': description: 'A List of matching Manufacturers' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/manufacturer_link' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object deprecated: true /api/missions: get: tags: - Missions summary: 'List Game Missions' description: 'Returns paginated missions for the requested or default game version. Results are grouped by mission variant key by default. Grouping is automatically disabled when filters are active unless filter[grouped]=true is set explicitly. Includes mission, game version, faction, and blueprint relationships.' operationId: listMissions parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: title, mission_giver, rank_index, reward_min, reward_max, time_to_complete_minutes, max_players_per_instance, reputation_amount.' schema: type: string example: title - name: 'filter[mission_giver]' in: query description: 'Exact match on the mission giver NPC name. Example: `Citizens for Prosperity`' schema: type: string - name: 'filter[faction]' in: query description: 'Filter by faction name. Accepts comma-separated values. Example: `Headhunters`' schema: type: string - name: 'filter[star_system]' in: query description: 'Filter by star system name. Example: `Stanton`' schema: type: string - name: 'filter[illegal]' in: query description: 'Filter for missions marked as illegal. Example: `true`' schema: type: boolean - name: 'filter[shareable]' in: query description: 'Filter for shareable missions. Example: `true`' schema: type: boolean - name: 'filter[once_only]' in: query description: 'Filter for one-time-only missions. Example: `true`' schema: type: boolean - name: 'filter[available_in_prison]' in: query description: 'Filter for missions available while in prison. Example: `true`' schema: type: boolean - name: 'filter[has_combat]' in: query description: 'Filter for missions involving combat encounters. Example: `true`' schema: type: boolean - name: 'filter[has_defend_objective]' in: query description: 'Filter for missions with a defend objective. Example: `true`' schema: type: boolean - name: 'filter[rank_index]' in: query description: 'Filter by mission difficulty rank. Example: `1`' schema: type: integer - name: 'filter[has_prerequisites]' in: query description: 'Filter for missions that have prerequisite requirements. Example: `true`' schema: type: boolean - name: 'filter[min_enemies]' in: query description: 'Minimum enemy count threshold. Example: `3`' schema: type: integer - name: 'filter[max_enemies]' in: query description: 'Maximum enemy count threshold. Example: `10`' schema: type: integer - name: 'filter[reward_min]' in: query description: 'Minimum reward in aUEC. Example: `5000`' schema: type: integer - name: 'filter[reward_max]' in: query description: 'Maximum reward in aUEC. Example: `50000`' schema: type: integer - name: 'filter[title]' in: query description: 'Partial match on mission title. Example: `Delivery`' schema: type: string - name: 'filter[description]' in: query description: 'Partial match on mission description. Example: `combat`' schema: type: string - name: 'filter[query]' in: query description: 'Search across title, description, and debug name. Example: `delivery`' schema: type: string - name: 'filter[reward_scope]' in: query description: 'Mission category scope. Example: `Bounty Hunter`' schema: type: string - name: 'filter[has_blueprints]' in: query description: 'Filter for missions that reward blueprints. Example: `true`' schema: type: boolean - name: 'filter[reputation_scope]' in: query description: 'Reputation reward scope from ReputationGained data. Example: `FactionReputation`' schema: type: string - name: 'filter[blueprint_name]' in: query description: 'Filter by crafted item name from mission blueprint rewards. Example: `Arclight Pistol`' schema: type: string - name: 'filter[location]' in: query description: 'Filter by starmap location UUID. Example: `2bf56608-62ea-4d1a-9e9b-38377004dc1b`' schema: type: string - name: 'filter[grouped]' in: query description: 'Control mission variant grouping. Defaults to true (grouped) when no filters are active, false (ungrouped) when filters are active. Set explicitly to true to keep grouping with filters, or false to always ungroup.' schema: type: boolean responses: '200': description: 'List of missions' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/mission_index' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object examples: delivery_mission_page: summary: 'Search missions by query' value: { data: [{ uuid: 00000000-0000-0000-0000-000000000000, title: 'Delivery Contract', slug: delivery-contract }], links: { first: 'https://api.star-citizen.wiki/api/missions?page[number]=1', last: null, prev: null, next: null }, meta: { current_page: 1, per_page: 30, total: 1 } } '/api/missions/{mission}': get: tags: - Missions summary: 'Get Mission Detail' description: 'Returns full details for a single mission, including chain relationships and associated items. Results are scoped to the requested or default game version.' operationId: getMission parameters: - name: mission in: path required: true schema: description: 'Mission slug or UUID' type: string example: finishing-the-job-4 - $ref: '#/components/parameters/version' responses: '200': description: 'Mission detail' content: application/json: schema: properties: data: { $ref: '#/components/schemas/mission' } type: object '404': description: 'Mission not found' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/missions/filters: get: tags: - Missions summary: 'Get Mission Filter Options' description: 'Returns available filter facets for missions, scoped to the requested or default game version.' operationId: listMissionFilters parameters: - $ref: '#/components/parameters/version' - name: 'filter[include_unreleased]' in: query description: 'Include unreleased and work-in-progress missions' schema: type: boolean - name: 'filter[mission_giver]' in: query description: 'Exact match on the mission giver NPC name. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[faction]' in: query description: 'Filter by faction name. Accepts comma-separated values. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[star_system]' in: query description: 'Filter by star system name. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[illegal]' in: query description: 'Filter for missions marked as illegal' schema: type: boolean - name: 'filter[shareable]' in: query description: 'Filter for shareable missions' schema: type: boolean - name: 'filter[once_only]' in: query description: 'Filter for one-time-only missions' schema: type: boolean - name: 'filter[available_in_prison]' in: query description: 'Filter for missions available while in prison' schema: type: boolean - name: 'filter[has_combat]' in: query description: 'Filter for missions involving combat encounters' schema: type: boolean - name: 'filter[has_defend_objective]' in: query description: 'Filter for missions with a defend objective' schema: type: boolean - name: 'filter[rank_index]' in: query description: 'Filter by mission difficulty rank' schema: type: integer - name: 'filter[has_prerequisites]' in: query description: 'Filter for missions that have prerequisite requirements' schema: type: boolean - name: 'filter[min_enemies]' in: query description: 'Minimum enemy count threshold' schema: type: integer - name: 'filter[max_enemies]' in: query description: 'Maximum enemy count threshold' schema: type: integer - name: 'filter[reward_min]' in: query description: 'Minimum reward in aUEC' schema: type: integer - name: 'filter[reward_max]' in: query description: 'Maximum reward in aUEC' schema: type: integer - name: 'filter[title]' in: query description: 'Partial match on mission title' schema: type: string - name: 'filter[description]' in: query description: 'Partial match on mission description' schema: type: string - name: 'filter[query]' in: query description: 'Search across title, description, and debug name' schema: type: string - name: 'filter[reward_scope]' in: query description: 'Mission category scope. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[has_blueprints]' in: query description: 'Filter for missions that reward blueprints' schema: type: boolean - name: 'filter[blueprint_name]' in: query description: 'Filter by crafted item name from mission blueprint rewards. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[reputation_scope]' in: query description: 'Reputation reward scope from ReputationGained data. (see GET /api/missions/filters for valid values)' schema: type: string - name: 'filter[location]' in: query description: 'Filter by starmap location UUID' schema: type: string responses: '200': description: 'Filter facets for missions' content: application/json: schema: properties: filters: { properties: { mission_giver: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, star_system: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, faction: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, has_combat: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, has_defend_objective: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, rank_index: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, illegal: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, shareable: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, has_prerequisites: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, reward_scope: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, has_blueprints: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, reputation_scope: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, blueprint_name: { type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/locations: get: tags: - Starmap summary: 'Game Starmap Locations Overview' description: 'Returns paginated versioned starmap locations with optional filters. Results are scoped to the requested or default game version. Each location includes amenities, hierarchy entity tags, parent and star relations, child count, mission count, and resource availability.' operationId: listLocations parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: name, type_name, size, child_count.' schema: type: string example: '-size,name' - name: 'filter[name]' in: query description: 'Partial match on location name.' schema: type: string example: Aberdeen - name: 'filter[query]' in: query description: 'Search locations by name.' schema: type: string example: ArcCorp - name: 'filter[type_name]' in: query description: 'Exact match on location type name (see GET /api/locations/filters for valid values).' schema: type: string example: Planet - name: 'filter[type_classification]' in: query description: 'Location type classification from JSON data (see GET /api/locations/filters for valid values).' schema: type: string example: Outpost - name: 'filter[respawn_location_type]' in: query description: 'Respawn location type classification (see GET /api/locations/filters for valid values).' schema: type: string example: Hospital - name: 'filter[jurisdiction_name]' in: query description: 'Governing jurisdiction name (see GET /api/locations/filters for valid values).' schema: type: string example: UEE - name: 'filter[affiliation_name]' in: query description: 'Faction or organization affiliation display name (see GET /api/locations/filters for valid values).' schema: type: string example: 'Private Security' - name: 'filter[is_scannable]' in: query description: 'When true, only show scannable locations; when false, only show non-scannable.' schema: type: boolean example: true - name: 'filter[block_travel]' in: query description: 'When true, only show locations where travel is blocked; when false, only show locations where travel is allowed.' schema: type: boolean example: false - name: 'filter[amenity]' in: query description: 'Filter by amenity name, display name, or UUID. Accepts comma-separated values (see GET /api/locations/filters for valid values).' schema: type: string example: 'Commodity Trading' - name: 'filter[tag]' in: query description: 'Filter by hierarchy entity tag name or UUID. Accepts comma-separated values.' schema: type: string example: HUR_L1 - name: 'filter[parent_name]' in: query description: 'Partial match on parent location name.' schema: type: string example: ArcCorp - name: 'filter[parent_uuid]' in: query description: 'Exact match on parent location UUID.' schema: type: string format: uuid example: f8f07f5b-1c0e-47c9-aa50-46963065bf18 - name: 'filter[system]' in: query description: 'Partial match on star system name (see GET /api/locations/filters for valid values).' schema: type: string example: 'Stanton System' - name: 'filter[has_resources]' in: query description: 'When true, only locations with harvestable resources; when false, only locations without.' schema: type: boolean example: true - name: 'filter[resource]' in: query description: 'Filter by harvestable commodity name or UUID. Accepts comma-separated values (see GET /api/commodities for valid values).' schema: type: string example: Agricium - name: 'filter[hide_minor_locations]' in: query description: 'When true, exclude minor locations that are only shown when their parent is selected.' schema: type: boolean example: true responses: '200': description: 'List of starmap locations' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_starmap_location' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object '/api/locations/{identifier}': get: tags: - Starmap summary: 'Game Starmap Location Detail' description: 'Retrieve a versioned starmap location by slug or UUID. Results are scoped to the requested or default game version. Use the `include` parameter to load additional relations: `children` (child locations with amenities and tags), `resources` (harvestable resource placements with commodity data), `missions` (available missions with faction data).' operationId: getLocation parameters: - name: identifier in: path required: true schema: description: 'Starmap location slug or UUID' type: string example: aberdeen - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A starmap location' content: application/json: schema: properties: data: { $ref: '#/components/schemas/game_starmap_location' } type: object '404': description: 'No starmap location with specified identifier found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/locations/filters: get: tags: - Starmap summary: 'Game Starmap Location Filters' description: 'Return all available filter facet values for versioned starmap locations. Applies any provided filter parameters to scope the facet counts. Returns facets for: type_name, type_classification, respawn_location_type, jurisdiction_name, affiliation_name, system, parent_name, amenity, and resource.' operationId: listLocationFilters parameters: - $ref: '#/components/parameters/version' - name: 'filter[name]' in: query description: 'Partial match on location name.' schema: type: string example: Aberdeen - name: 'filter[query]' in: query description: 'Search locations by name.' schema: type: string example: ArcCorp - name: 'filter[type_name]' in: query description: 'Exact match on location type name (see response for valid values).' schema: type: string example: Planet - name: 'filter[type_classification]' in: query description: 'Location type classification from JSON data (see response for valid values).' schema: type: string example: Outpost - name: 'filter[respawn_location_type]' in: query description: 'Respawn location type classification (see response for valid values).' schema: type: string example: Hospital - name: 'filter[jurisdiction_name]' in: query description: 'Governing jurisdiction name (see response for valid values).' schema: type: string example: UEE - name: 'filter[affiliation_name]' in: query description: 'Faction or organization affiliation display name (see response for valid values).' schema: type: string example: 'Private Security' - name: 'filter[is_scannable]' in: query description: 'When true, only show scannable locations; when false, only show non-scannable.' schema: type: boolean example: true - name: 'filter[block_travel]' in: query description: 'When true, only show locations where travel is blocked; when false, only show locations where travel is allowed.' schema: type: boolean example: false - name: 'filter[amenity]' in: query description: 'Filter by amenity name, display name, or UUID. Accepts comma-separated values (see response for valid values).' schema: type: string example: 'Commodity Trading' - name: 'filter[tag]' in: query description: 'Filter by hierarchy entity tag name or UUID. Accepts comma-separated values.' schema: type: string example: HUR_L1 - name: 'filter[parent_name]' in: query description: 'Partial match on parent location name.' schema: type: string example: ArcCorp - name: 'filter[parent_uuid]' in: query description: 'Exact match on parent location UUID.' schema: type: string format: uuid example: f8f07f5b-1c0e-47c9-aa50-46963065bf18 - name: 'filter[system]' in: query description: 'Partial match on star system name (see response for valid values).' schema: type: string example: 'Stanton System' - name: 'filter[has_resources]' in: query description: 'When true, only locations with harvestable resources; when false, only locations without.' schema: type: boolean example: true - name: 'filter[resource]' in: query description: 'Filter by harvestable commodity name or UUID. Accepts comma-separated values (see GET /api/commodities for valid values).' schema: type: string example: Agricium - name: 'filter[hide_minor_locations]' in: query description: 'When true, exclude minor locations that are only shown when their parent is selected.' schema: type: boolean example: true responses: '200': description: 'Available filters for starmap locations.' content: application/json: schema: properties: filters: { properties: { type_name: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, type_classification: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, respawn_location_type: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, jurisdiction_name: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, affiliation_name: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, system: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, parent_name: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, amenity: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, resource: { type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/locations/positions: get: tags: - Starmap summary: 'Starmap Entity Positions' description: 'Starmap entity world positions.' operationId: listLocationPositions parameters: - name: 'filter[type]' in: query description: 'Exact match on entity type (Planet, Moon, Star, Manmade, Asteroid, Anomaly, JumpPoint, etc.)' schema: type: string example: Planet - name: 'filter[system]' in: query description: 'Exact match on system name (stanton, pyro, nyx)' schema: type: string example: stanton responses: '200': description: 'Entity positions and jump point connections' content: application/json: schema: properties: data: { type: array, items: { properties: { uuid: { type: string, format: uuid }, name: { type: string }, type: { type: string }, system: { type: string }, parent_uuid: { type: string, format: uuid, nullable: true }, x: { type: number, format: float }, 'y': { type: number, format: float }, z: { type: number, format: float } }, type: object } } connections: { type: array, items: { properties: { entry_uuid: { type: string, format: uuid }, exit_uuid: { type: string, format: uuid }, entry_system: { type: string }, exit_system: { type: string }, fuel_cost: { description: 'Fuel cost in SCU', type: number }, size_class: { type: string, enum: [small, large, unknown] } }, type: object } } type: object /api/search: get: tags: - Search summary: 'Unified Search Across All Game Data' description: 'Search across items, vehicles, starmap locations, commodities, blueprints, and missions simultaneously. Returns results grouped by type, limited to 5 results per group.' operationId: searchGameData parameters: - name: 'filter[query]' in: query description: 'Search query (minimum 2 characters). Searches names, class names, and other identifiers.' required: true schema: type: string minLength: 2 example: Carrack examples: ship_search: summary: 'Search for a ship' value: carrack item_search: summary: 'Search for an item' value: arrow - $ref: '#/components/parameters/version' responses: '200': description: 'Grouped search results' content: application/json: schema: properties: data: { type: array, items: { properties: { type: { type: string, example: items }, label: { type: string, example: Items }, results: { type: array, items: { properties: { name: { type: string, example: Arrow }, class_name: { type: string, example: AEGS_Arrow, nullable: true }, classification: { type: string, example: fighter, nullable: true }, classification_label: { type: string, example: Fighter, nullable: true }, item_type_label: { type: string, example: Weapon, nullable: true }, extra_label: { type: string, example: Fighter, nullable: true }, web_url: { type: string, example: 'https://example.com/vehicles/arrow' }, api_url: { type: string, example: 'https://example.com/api/vehicles/arrow' } }, type: object } } }, type: object } } type: object examples: ship_search_results: summary: 'Grouped results for a ship search' value: { data: [{ type: vehicles, label: Vehicles, results: [{ name: Carrack, class_name: ANVL_Carrack, classification: null, classification_label: null, item_type_label: null, extra_label: Exploration, web_url: 'https://star-citizen.wiki/vehicles/carrack', api_url: 'https://api.star-citizen.wiki/api/vehicles/carrack' }] }] } '422': description: 'Validation error - filter[query] is required and must be at least 3 characters' content: application/json: schema: $ref: '#/components/schemas/validation_error_response' '429': description: 'Rate limit exceeded. Search endpoints are limited to 60 requests per minute per IP.' content: application/json: schema: $ref: '#/components/schemas/rate_limit_error_response' '/api/search/{query}': get: tags: - Search summary: 'Resolve Search Query' description: 'Resolve a search query to the best-matching entity and redirect to its API URL, preserving query parameters such as locale, include, and version. Useful for quick lookups where you know the exact name.' operationId: resolveSearchQuery parameters: - name: query in: path description: 'Entity name, class name, or UUID to resolve.' required: true schema: type: string example: Carrack - $ref: '#/components/parameters/version' responses: '302': description: "Redirect to the matched entity's API URL." '404': description: 'No matching entity found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/ground-vehicles: get: tags: - Vehicles summary: 'In-Game Ground Vehicles Overview' description: 'Alias for /api/vehicles scoped to ground vehicles (is_vehicle=true, is_gravlev=false, is_spaceship=false). Returns paginated in-game ground vehicles for the requested game version. Default includes: vehicle, gameVersion, manufacturer, shipMatrixVehicle.loaner, shipMatrixVehicle.skus.' operationId: listGroundVehicles parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Examples: name, -size, manufacturer.name, cargo_capacity, -speed.scm, shield.face_type. Use comma for multiple: size,-cargo_capacity' schema: type: string example: '-cargo_capacity' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/vehicles/filters for valid values). Example: `Tumbril Land Systems`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Alias for filter[manufacturer]. Example: `Anvil Aerospace`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on vehicle class name. Example: `TMBL_Nova`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on vehicle display name. Example: `Nova`' schema: type: string - name: 'filter[query]' in: query description: 'Search vehicles by name or class name. Example: `Nova`' schema: type: string - name: 'filter[size]' in: query description: 'Exact match on vehicle size (1-6). Example: `3`' schema: type: integer - name: 'filter[size_class]' in: query description: 'Alias for filter[size]. Example: `3`' schema: type: integer - name: 'filter[career]' in: query description: 'Partial match on vehicle career. (see GET /api/vehicles/filters for valid values). Example: `Ground`' schema: type: string - name: 'filter[role]' in: query description: 'Partial match on vehicle role. (see GET /api/vehicles/filters for valid values). Example: `Combat`' schema: type: string - name: 'filter[is_vehicle]' in: query description: 'Filter to ground vehicles only.' schema: type: boolean - name: 'filter[is_gravlev]' in: query description: 'Filter to gravlev vehicles only.' schema: type: boolean - name: 'filter[is_spaceship]' in: query description: 'Filter to spaceships only.' schema: type: boolean - name: 'filter[mass_total]' in: query description: 'Numeric filter on total mass (kg). Supports range operators. Example: `1521`' schema: type: number - name: 'filter[cargo_capacity]' in: query description: 'Numeric filter on cargo capacity (SCU). Supports range operators. Example: `1`' schema: type: number - name: 'filter[vehicle_inventory]' in: query description: 'Numeric filter on vehicle inventory/stowage capacity. Supports range operators. Example: `0.13`' schema: type: number - name: 'filter[crew.min]' in: query description: 'Numeric filter on minimum crew count. Supports range operators. Example: `2`' schema: type: integer - name: 'filter[health]' in: query description: 'Numeric filter on vehicle health points. Supports range operators. Example: `4250`' schema: type: number - name: 'filter[shield.hp]' in: query description: 'Numeric filter on total shield hit points. Supports range operators. Example: `720`' schema: type: number - name: 'filter[shield.face_type]' in: query description: 'Shield face type. (see GET /api/vehicles/filters for valid values). Example: `Bubble`' schema: type: string - name: 'filter[speed.scm]' in: query description: 'Numeric filter on SCM speed. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `200`' schema: type: number - name: 'filter[speed.max]' in: query description: 'Numeric filter on maximum speed. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `1000`' schema: type: number - name: 'filter[armor.health]' in: query description: 'Numeric filter on armor health points. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `50000`' schema: type: number - name: 'filter[cross section.length]' in: query description: 'Numeric filter on cross-section length (X axis). Supports range operators. Example: `100`' schema: type: number - name: 'filter[cross section.width]' in: query description: 'Numeric filter on cross-section width (Y axis). Supports range operators. Example: `50`' schema: type: number - name: 'filter[cross section.height]' in: query description: 'Numeric filter on cross-section height (Z axis). Supports range operators. Example: `30`' schema: type: number - name: 'filter[signature.ir_quantum]' in: query description: 'Numeric filter on infrared quantum signature emission. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `100`' schema: type: number - name: 'filter[signature.ir_shields]' in: query description: 'Numeric filter on infrared shield signature emission. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `100`' schema: type: number - name: 'filter[signature.em_quantum]' in: query description: 'Numeric filter on electromagnetic quantum signature emission. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `100`' schema: type: number - name: 'filter[signature.em_shields]' in: query description: 'Numeric filter on electromagnetic shield signature emission. Supports range operators. Spaceship-only field; returns empty for ground vehicles. Example: `100`' schema: type: number responses: '200': description: 'List of Ground Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/gravlev-vehicles: get: tags: - Vehicles summary: 'In-Game Gravlev Vehicles Overview' description: 'Alias for /api/vehicles scoped to gravlev vehicles (is_gravlev=true). Returns paginated in-game gravlev vehicles for the requested game version. Default includes: vehicle, gameVersion, manufacturer, shipMatrixVehicle.loaner, shipMatrixVehicle.skus.' operationId: listGravlevVehicles parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Examples: name, -size, manufacturer.name, cargo_capacity, -speed.scm, shield.face_type. Use comma for multiple: size,-cargo_capacity' schema: type: string example: '-cargo_capacity' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/vehicles/filters for valid values). Example: `Drake Interplanetary`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Alias for filter[manufacturer]. Example: `Origin Jumpworks`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on vehicle class name. Example: `Dragonfly`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on vehicle display name. Example: `Dragonfly`' schema: type: string - name: 'filter[query]' in: query description: 'Search vehicles by name or class name. Example: `Dragonfly`' schema: type: string - name: 'filter[size]' in: query description: 'Exact match on vehicle size (1-6). Example: `1`' schema: type: integer - name: 'filter[size_class]' in: query description: 'Alias for filter[size]. Example: `1`' schema: type: integer - name: 'filter[career]' in: query description: 'Partial match on vehicle career. (see GET /api/vehicles/filters for valid values). Example: `Exploration`' schema: type: string - name: 'filter[role]' in: query description: 'Partial match on vehicle role. (see GET /api/vehicles/filters for valid values). Example: `Racing`' schema: type: string - name: 'filter[is_vehicle]' in: query description: 'Filter to ground vehicles only.' schema: type: boolean - name: 'filter[is_gravlev]' in: query description: 'Filter to gravlev vehicles only.' schema: type: boolean - name: 'filter[is_spaceship]' in: query description: 'Filter to spaceships only.' schema: type: boolean - name: 'filter[mass_total]' in: query description: 'Numeric filter on total mass (kg). Supports range operators. Example: `2435`' schema: type: number - name: 'filter[cargo_capacity]' in: query description: 'Numeric filter on cargo capacity (SCU). Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `0`' schema: type: number - name: 'filter[vehicle_inventory]' in: query description: 'Numeric filter on vehicle inventory/stowage capacity. Supports range operators. Example: `0.39`' schema: type: number - name: 'filter[crew.min]' in: query description: 'Numeric filter on minimum crew count. Supports range operators. Example: `1`' schema: type: integer - name: 'filter[health]' in: query description: 'Numeric filter on vehicle health points. Supports range operators. Example: `1550`' schema: type: number - name: 'filter[shield.hp]' in: query description: 'Numeric filter on total shield hit points. Supports range operators. Example: `720`' schema: type: number - name: 'filter[shield.face_type]' in: query description: 'Shield face type. (see GET /api/vehicles/filters for valid values). Example: `Bubble`' schema: type: string - name: 'filter[speed.scm]' in: query description: 'Numeric filter on SCM speed. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `200`' schema: type: number - name: 'filter[speed.max]' in: query description: 'Numeric filter on maximum speed. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `1000`' schema: type: number - name: 'filter[armor.health]' in: query description: 'Numeric filter on armor health points. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `50000`' schema: type: number - name: 'filter[cross section.length]' in: query description: 'Numeric filter on cross-section length (X axis). Supports range operators. Example: `0.39`' schema: type: number - name: 'filter[cross section.width]' in: query description: 'Numeric filter on cross-section width (Y axis). Supports range operators. Example: `50`' schema: type: number - name: 'filter[cross section.height]' in: query description: 'Numeric filter on cross-section height (Z axis). Supports range operators. Example: `30`' schema: type: number - name: 'filter[signature.ir_quantum]' in: query description: 'Numeric filter on infrared quantum signature emission. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `100`' schema: type: number - name: 'filter[signature.ir_shields]' in: query description: 'Numeric filter on infrared shield signature emission. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `100`' schema: type: number - name: 'filter[signature.em_quantum]' in: query description: 'Numeric filter on electromagnetic quantum signature emission. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `100`' schema: type: number - name: 'filter[signature.em_shields]' in: query description: 'Numeric filter on electromagnetic shield signature emission. Supports range operators. Spaceship-only field; returns empty for gravlev vehicles. Example: `100`' schema: type: number responses: '200': description: 'List of Gravlev Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object /api/vehicles: get: tags: - Vehicles summary: 'In-Game Vehicles Overview' description: 'Returns paginated in-game vehicles for the requested game version. Default includes: vehicle, gameVersion, manufacturer, shipMatrixVehicle.loaner, shipMatrixVehicle.skus. Optional includes: shipMatrixVehicle, components, shipmatrixvehicle.components, hardpoints, ports.' operationId: listVehicles parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Examples: name, -size, manufacturer.name, cargo_capacity, -speed.scm, shield.face_type. Use comma for multiple: size,-cargo_capacity' schema: type: string example: '-cargo_capacity' - name: 'filter[manufacturer]' in: query description: 'Manufacturer name or code. Accepts comma-separated values for OR matching. (see GET /api/vehicles/filters for valid values). Example: `Aegis Dynamics`' schema: type: string - name: 'filter[manufacturer.name]' in: query description: 'Alias for filter[manufacturer]. Example: `Anvil Aerospace`' schema: type: string - name: 'filter[class_name]' in: query description: 'Partial match on vehicle class name. Example: `TMBL_Nova`' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on vehicle display name. Example: `Nova`' schema: type: string - name: 'filter[query]' in: query description: 'Search vehicles by name or class name. Example: `Carrack`' schema: type: string - name: 'filter[size]' in: query description: 'Exact match on vehicle size (1-6). Example: `3`' schema: type: integer - name: 'filter[size_class]' in: query description: 'Alias for filter[size]. Example: `3`' schema: type: integer - name: 'filter[career]' in: query description: 'Partial match on vehicle career. (see GET /api/vehicles/filters for valid values). Example: `Exploration`' schema: type: string - name: 'filter[role]' in: query description: 'Partial match on vehicle role. (see GET /api/vehicles/filters for valid values). Example: `Racing`' schema: type: string - name: 'filter[is_vehicle]' in: query description: 'Filter to ground vehicles only.' schema: type: boolean - name: 'filter[is_gravlev]' in: query description: 'Filter to gravlev vehicles only.' schema: type: boolean - name: 'filter[is_spaceship]' in: query description: 'Filter to spaceships only.' schema: type: boolean - name: 'filter[mass_total]' in: query description: 'Numeric filter on total mass (kg). Supports range operators. Example: `1521`' schema: type: number - name: 'filter[cargo_capacity]' in: query description: 'Numeric filter on cargo capacity (SCU). Supports range operators. Example: `1`' schema: type: number - name: 'filter[vehicle_inventory]' in: query description: 'Numeric filter on vehicle inventory/stowage capacity. Supports range operators. Example: `0.13`' schema: type: number - name: 'filter[crew.min]' in: query description: 'Numeric filter on minimum crew count. Supports range operators. Example: `2`' schema: type: integer - name: 'filter[health]' in: query description: 'Numeric filter on vehicle health points. Supports range operators. Example: `1550`' schema: type: number - name: 'filter[shield.hp]' in: query description: 'Numeric filter on total shield hit points. Supports range operators. Example: `720`' schema: type: number - name: 'filter[shield.face_type]' in: query description: 'Shield face type. (see GET /api/vehicles/filters for valid values). Example: `Bubble`' schema: type: string - name: 'filter[speed.scm]' in: query description: 'Numeric filter on SCM speed. Supports range operators. Example: `220`' schema: type: number - name: 'filter[speed.max]' in: query description: 'Numeric filter on maximum speed. Supports range operators. Example: `1150`' schema: type: number - name: 'filter[armor.health]' in: query description: 'Numeric filter on armor health points. Supports range operators. Example: `10890`' schema: type: number - name: 'filter[cross section.length]' in: query description: 'Numeric filter on cross-section length (X axis). Supports range operators. Example: `100`' schema: type: number - name: 'filter[cross section.width]' in: query description: 'Numeric filter on cross-section width (Y axis). Supports range operators. Example: `50`' schema: type: number - name: 'filter[cross section.height]' in: query description: 'Numeric filter on cross-section height (Z axis). Supports range operators. Example: `30`' schema: type: number - name: 'filter[signature.ir_quantum]' in: query description: 'Numeric filter on infrared quantum signature emission. Supports range operators. Example: `10882`' schema: type: number - name: 'filter[signature.ir_shields]' in: query description: 'Numeric filter on infrared shield signature emission. Supports range operators. Example: `10267`' schema: type: number - name: 'filter[signature.em_quantum]' in: query description: 'Numeric filter on electromagnetic quantum signature emission. Supports range operators. Example: `53959`' schema: type: number - name: 'filter[signature.em_shields]' in: query description: 'Numeric filter on electromagnetic shield signature emission. Supports range operators. Example: `17643`' schema: type: number responses: '200': description: 'List of Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object examples: vehicle_search_page: summary: 'Search vehicles by name' value: { data: [{ uuid: 00000000-0000-0000-0000-000000000000, name: Carrack, slug: carrack }], links: { first: 'https://api.star-citizen.wiki/api/vehicles?page[number]=1', last: null, prev: null, next: null }, meta: { current_page: 1, per_page: 30, total: 1 } } '/api/ground-vehicles/{identifier}': get: tags: - Vehicles summary: 'In-Game Ground Vehicle Detail' description: 'Alias for /api/vehicles/{identifier} scoped to ground vehicles. Results are scoped to the requested or default game version.' operationId: getGroundVehicle parameters: - name: identifier in: path required: true schema: description: 'Vehicle name, class_name, or UUID' type: string example: tmbl-nova - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Ground Vehicle' content: application/json: schema: properties: data: { oneOf: [{ $ref: '#/components/schemas/game_vehicle' }, { $ref: '#/components/schemas/ship_matrix_vehicle' }] } type: object '404': description: 'Vehicle not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/gravlev-vehicles/{identifier}': get: tags: - Vehicles summary: 'In-Game Gravlev Vehicle Detail' description: 'Alias for /api/vehicles/{identifier} scoped to gravlev vehicles. Results are scoped to the requested or default game version.' operationId: getGravlevVehicle parameters: - name: identifier in: path required: true schema: description: 'Vehicle name, class_name, or UUID' type: string example: drak-dragonfly - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Gravlev Vehicle' content: application/json: schema: properties: data: { oneOf: [{ $ref: '#/components/schemas/game_vehicle' }, { $ref: '#/components/schemas/ship_matrix_vehicle' }] } type: object '404': description: 'Vehicle not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/vehicles/{identifier}': get: tags: - Vehicles summary: 'In-Game Vehicle Detail' description: 'Retrieve a vehicle by name, class name, or UUID. Results are scoped to the requested or default game version. Loads manufacturer, gameVersion, shipMatrixVehicle (with foci, productionStatus, productionNote, type, size, loaner, skus, manufacturer, components), and port loadout items.' operationId: getVehicle parameters: - name: identifier in: path required: true schema: description: 'Vehicle name, class_name, or UUID' type: string example: Carrack - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/version' responses: '200': description: 'A Vehicle' content: application/json: schema: properties: data: { oneOf: [{ $ref: '#/components/schemas/game_vehicle' }, { $ref: '#/components/schemas/ship_matrix_vehicle' }] } type: object '404': description: 'Vehicle not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/ground-vehicles/search: post: tags: - Vehicles - Search summary: 'In-Game Ground Vehicle Search (Deprecated)' description: 'Deprecated. Use GET /api/ground-vehicles?filter[name]={value} for name search. Scoped to ground vehicles. This endpoint will be removed in a future version.' operationId: searchGroundVehiclesDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' requestBody: description: 'Vehicle name, class_name, or UUID' required: true content: application/json: schema: type: object example: '{"query": "Nova"}' responses: '200': description: 'List of matching Ground Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object deprecated: true /api/gravlev-vehicles/search: post: tags: - Vehicles - Search summary: 'In-Game Gravlev Vehicle Search (Deprecated)' description: 'Deprecated. Use GET /api/gravlev-vehicles?filter[name]={value} for name search. Scoped to gravlev vehicles. This endpoint will be removed in a future version.' operationId: searchGravlevVehiclesDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' requestBody: description: 'Vehicle name, class_name, or UUID' required: true content: application/json: schema: type: object example: '{"query": "Dragonfly"}' responses: '200': description: 'List of matching Gravlev Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object deprecated: true /api/vehicles/search: post: tags: - Vehicles - Search summary: 'In-Game Vehicle Search (Deprecated)' description: 'Deprecated. Use GET /api/vehicles?filter[name]={value} for name search. This endpoint will be removed in a future version.' operationId: searchVehiclesDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/sort' - name: 'filter[manufacturer]' in: query schema: type: string - name: 'filter[manufacturer.name]' in: query schema: type: string - name: 'filter[class_name]' in: query schema: type: string - name: 'filter[name]' in: query schema: type: string - name: 'filter[query]' in: query description: 'Search vehicles by name or class name.' schema: type: string - name: 'filter[size]' in: query schema: type: integer - name: 'filter[size_class]' in: query schema: type: integer - name: 'filter[career]' in: query schema: type: string - name: 'filter[role]' in: query schema: type: string - name: 'filter[is_vehicle]' in: query schema: type: boolean - name: 'filter[is_gravlev]' in: query schema: type: boolean - name: 'filter[is_spaceship]' in: query schema: type: boolean - name: 'filter[is_power_suit]' in: query schema: type: boolean - name: 'filter[mass_total]' in: query schema: type: number - name: 'filter[cargo_capacity]' in: query schema: type: number - name: 'filter[vehicle_inventory]' in: query schema: type: number - name: 'filter[crew.min]' in: query schema: type: integer - name: 'filter[health]' in: query schema: type: number - name: 'filter[shield.hp]' in: query schema: type: number - name: 'filter[shield.face_type]' in: query schema: type: string - name: 'filter[speed.scm]' in: query schema: type: number - name: 'filter[speed.max]' in: query schema: type: number - name: 'filter[armor.health]' in: query schema: type: number - name: 'filter[cross_section.length]' in: query schema: type: number - name: 'filter[cross_section.width]' in: query schema: type: number - name: 'filter[cross_section.height]' in: query schema: type: number - name: 'filter[signature.ir_quantum]' in: query schema: type: number - name: 'filter[signature.ir_shields]' in: query schema: type: number - name: 'filter[signature.em_quantum]' in: query schema: type: number - name: 'filter[signature.em_shields]' in: query schema: type: number requestBody: description: 'Vehicle name, class_name, career, or UUID' required: true content: application/json: schema: type: object example: '{"query": "Avenger"}' responses: '200': description: 'A List of matching Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/game_vehicle' } } links: { $ref: '#/components/schemas/pagination_links' } meta: { $ref: '#/components/schemas/pagination_meta' } type: object deprecated: true /api/vehicles/filters: get: tags: - Vehicles summary: 'In-Game Vehicle Filters' description: 'Return all available filter values for in-game vehicles.' operationId: listVehicleFilters parameters: - $ref: '#/components/parameters/version' responses: '200': description: 'Available filters for in-game vehicles.' content: application/json: schema: properties: filters: { properties: { manufacturer: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, is_vehicle: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, is_gravlev: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, is_spaceship: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, size: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, role: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, career: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, shield.face_type: { type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object '/api/game-versions/{version}/changelog': get: tags: - 'Game Versions' summary: 'Get Version Changelog' description: 'Returns the changelog summary between the specified version and its predecessor.' operationId: getVersionChangelog parameters: - name: version in: path description: 'Version code' required: true schema: type: string example: 4.7.0-LIVE.11518367 responses: '200': description: 'Version changelog summary' content: application/json: schema: properties: data: { $ref: '#/components/schemas/version_changelog' } type: object '404': description: 'Version not found or no previous version' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '/api/game-versions/{version}/changelog/changes': get: tags: - 'Game Versions' summary: 'Get Version Changelog Changes' description: 'Returns paginated diff entries for a version changelog. Filter by entity_type and change_type.' operationId: listVersionChangelogChanges parameters: - name: version in: path description: 'Version code' required: true schema: type: string example: 4.7.0-LIVE.11518367 - name: 'filter[entity_type]' in: query description: 'Filter by entity type (item, vehicle)' schema: type: string example: item - name: 'filter[change_type]' in: query description: 'Filter by change type (added, removed, modified)' schema: type: string example: modified - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' responses: '200': description: 'Paginated list of changes' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/version_diff_entry' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object '404': description: 'Version not found or no previous version' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/openapi: get: tags: - Meta summary: 'OpenAPI Specification' description: 'Returns the OpenAPI 3.0 specification as YAML. This spec describes all documented API endpoints, parameters, request bodies, and response schemas.' operationId: getOpenApiSpec responses: '200': description: 'OpenAPI specification in YAML format' content: application/yaml: schema: type: string format: binary /api/comm-links: get: tags: - Comm-Links summary: 'Comm-Links Overview' description: 'Returns paginated comm-links ordered by descending ID by default. Supports filtering by channel, category, series, title, content, and publication date. Results can be sorted by id, title, images_count, links_count, channel, category, series, and created_at. Use the include parameter to embed images or links.' operationId: listCommLinks parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/comm_link_includes' - name: 'filter[id]' in: query description: 'Exact match on the Comm-Link CIG ID' schema: type: integer example: 12663 - name: 'filter[title]' in: query description: 'Partial match on the Comm-Link title' schema: type: string example: 'This Week in Star Citizen' - name: 'filter[content]' in: query description: 'Full-text search within English Comm-Link translations' schema: type: string example: 'star citizen' - name: 'filter[channel]' in: query description: 'Exact match on channel name (see GET /api/comm-links/filters for valid values)' schema: type: string example: Engineering - name: 'filter[series]' in: query description: 'Exact match on series name (see GET /api/comm-links/filters for valid values)' schema: type: string example: 'Around the Verse' - name: 'filter[category]' in: query description: 'Exact match on category name (see GET /api/comm-links/filters for valid values)' schema: type: string example: General - name: 'filter[created_at]' in: query description: 'Filter by publication year (YYYY) or exact date (YYYY-MM-DD)' schema: type: string example: '2025' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: id, title, images_count, links_count, channel, category, series, created_at.' schema: type: string example: '-id' responses: '200': description: 'Paginated list of Comm-Links' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object /api/comm-links/filters: get: tags: - Comm-Links summary: 'Comm-Link Filters' description: 'Returns available category, channel, and series filter values for Comm-Links, with occurrence counts. Providing additional filter parameters will narrow the facets accordingly.' operationId: listCommLinkFilters parameters: - name: 'filter[id]' in: query description: 'Exact match on the Comm-Link CIG ID' schema: type: integer example: 12663 - name: 'filter[title]' in: query description: 'Partial match on the Comm-Link title' schema: type: string example: 'This Week in Star Citizen' - name: 'filter[content]' in: query description: 'Full-text search within English Comm-Link translations' schema: type: string example: 'star citizen' - name: 'filter[channel]' in: query description: 'Exact match on channel name' schema: type: string example: Engineering - name: 'filter[series]' in: query description: 'Exact match on series name' schema: type: string example: 'Around the Verse' - name: 'filter[category]' in: query description: 'Exact match on category name' schema: type: string example: General - name: 'filter[created_at]' in: query description: 'Filter by publication year (YYYY) or exact date (YYYY-MM-DD)' schema: type: string example: '2025' responses: '200': description: 'Available filters for Comm-Links.' content: application/json: schema: properties: filters: { properties: { category: { description: 'Category names such as General, Community, Lore, Development', type: array, items: { $ref: '#/components/schemas/filter_value' } }, channel: { description: 'Channel names such as Engineering, Transmission, Featured post', type: array, items: { $ref: '#/components/schemas/filter_value' } }, series: { description: 'Series names such as Around the Verse, 10 For the Chairman', type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object '/api/comm-links/{id}': get: tags: - Comm-Links summary: 'Comm-Link Detail' description: 'Retrieve a single Comm-Link by its CIG ID. Images with hash and metadata are always included. The response contains prev_id and next_id metadata for sequential navigation between Comm-Links.' operationId: getCommLink parameters: - $ref: '#/components/parameters/comm_link_includes' - name: id in: path required: true schema: description: 'Comm-Link CIG ID, starting from 12663' type: integer format: int64 minimum: 12663 example: 12663 responses: '200': description: 'A singular Comm-Link' content: application/json: schema: properties: data: { $ref: '#/components/schemas/comm_link' } type: object '404': description: 'No Comm-Link with specified ID found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/comm-links/search: post: tags: - Comm-Links summary: 'Comm-Link Search (Deprecated)' description: 'Deprecated. Use GET /api/comm-links?filter[title]={value} for title search. This endpoint will be removed in a future version.' operationId: searchCommLinksDeprecated parameters: - $ref: '#/components/parameters/locale' - $ref: '#/components/parameters/comm_link_includes' - name: 'filter[channel]' in: query description: 'Exact match on channel name (see GET /api/comm-links/filters for valid values)' schema: type: string example: Engineering - name: 'filter[series]' in: query description: 'Exact match on series name (see GET /api/comm-links/filters for valid values)' schema: type: string example: 'Around the Verse' - name: 'filter[category]' in: query description: 'Exact match on category name (see GET /api/comm-links/filters for valid values)' schema: type: string example: General requestBody: description: 'At least one of keyword or query is required.' required: true content: application/json: schema: properties: keyword: description: 'Search term for partial title match (min 3 characters)' type: string maxLength: 255 minLength: 3 example: 'Banu Merchantman' query: description: 'Search term for partial title match or numeric CIG ID (min 1 character)' type: string maxLength: 255 minLength: 1 example: 'This Week in Star Citizen' type: object example: '{"query": "Banu Merchantman"}' responses: '200': description: 'Search results for Comm-Links' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object '422': description: 'Validation error. At least one of keyword or query is required.' content: application/json: schema: $ref: '#/components/schemas/validation_error_response' deprecated: true /api/comm-links/reverse-image-link-search: post: tags: - Comm-Links - Search summary: 'Comm-Link Reverse Image Link Search' description: 'Return comm-links that reference the same RSI-hosted image URL.' operationId: reverseImageLinkSearch requestBody: description: 'URL to an image hosted on (media.)robertsspaceindustries.com' required: true content: application/json: schema: required: - url properties: url: description: 'Full URL to an image hosted on robertsspaceindustries.com or media.robertsspaceindustries.com' type: string format: uri example: 'https://robertsspaceindustries.com/i/cc75a45005a236c6e015dfc2782a2f55ed1e84a2/ADdPNihJzmPbNuTnFsH1DqUeqBRpXdSXVVtgJTyDDgscGKrzJuoFjResiiucPBBDeyrBscqRyZz4qxNsSbWvqUwdG/alien-week-2022-front.webp' type: object example: '{"url": "https://robertsspaceindustries.com/i/cc75a45005a236c6e015dfc2782a2f55ed1e84a2/ADdPNihJzmPbNuTnFsH1DqUeqBRpXdSXVVtgJTyDDgscGKrzJuoFjResiiucPBBDeyrBscqRyZz4qxNsSbWvqUwdG/alien-week-2022-front.webp"}' responses: '200': description: 'List of Comm-Links that use that image' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link' } } type: object '404': description: 'No Comm-Link found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '422': description: 'Validation error. The url field is required and must be a valid URL on robertsspaceindustries.com.' content: application/json: schema: $ref: '#/components/schemas/validation_error_response' '429': description: 'Rate limit exceeded. Reverse image search is limited to 10 requests per minute.' content: application/json: schema: $ref: '#/components/schemas/rate_limit_error_response' /api/comm-links/reverse-image-search: post: tags: - Comm-Links - Search summary: 'Comm-Link Reverse Image Search' description: 'Search comm-links by uploading an image and specifying a similarity threshold. Requires the GD PHP extension.' operationId: reverseImageSearch requestBody: required: true content: multipart/form-data: schema: required: - image properties: image: description: 'The image to reverse-search (max 5 MB)' type: string format: binary similarity: description: 'Similarity threshold percentage (1-100). Defaults to 75.' type: integer maximum: 100 minimum: 1 example: 80 type: object responses: '200': description: 'List of similar images with associated Comm-Links' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link_image' } } type: object '404': description: 'No Comm-Link found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '422': description: 'Validation error. The image field is required and must be a valid image file (max 5 MB).' content: application/json: schema: $ref: '#/components/schemas/validation_error_response' '501': description: 'The required GD PHP extension is not loaded on the server.' '429': description: 'Rate limit exceeded. Reverse image search is limited to 10 requests per minute.' content: application/json: schema: $ref: '#/components/schemas/rate_limit_error_response' '/api/comm-link-images/{image}/similar': get: tags: - Comm-Links - Search summary: 'Comm-Link Reverse Image Similar Search' description: 'Find Comm-Link images similar to an existing RSI-hosted image.' operationId: findSimilarImages parameters: - name: image in: path description: 'Internal database ID of the image' required: true schema: type: integer example: 44216 - name: similarity in: query description: 'Similarity threshold percentage (1-100). Defaults to 50.' required: false schema: type: integer maximum: 100 minimum: 1 example: 80 responses: '200': description: 'List of similar Comm-Link images' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link_image' } } type: object '401': description: 'Unauthenticated. Bearer token is required for similar image search.' content: application/json: schema: $ref: '#/components/schemas/unauthenticated_error_response' '404': description: 'Comm-Link image not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' '429': description: 'Rate limit exceeded. Similar image search is limited to 10 requests per minute.' content: application/json: schema: $ref: '#/components/schemas/rate_limit_error_response' security: - sanctum: [] /api/comm-link-images: get: tags: - Comm-Links - Images summary: 'Comm-Link Images' description: 'List available comm-link images with pagination. Each image includes its associated Comm-Links (with channel, category, series), tags, duplicates, and base image when available.' operationId: listCommLinkImages parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[tags]' in: query description: 'Partial match on tag name. WARNING: Images have no tags currently.' schema: type: string example: concept responses: '200': description: 'Paginated list of Comm-Link Images' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link_image' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object '/api/comm-link-images/{image}': get: tags: - Comm-Links - Images summary: 'Comm-Link Image Detail' description: 'Retrieve a single comm-link image with its associated Comm-Links (with channel, category, series), tags, duplicates, and base image when available.' operationId: getCommLinkImage parameters: - name: image in: path description: 'Internal database ID of the image' required: true schema: type: integer example: 44216 responses: '200': description: 'A singular Comm-Link Image' content: application/json: schema: properties: data: { $ref: '#/components/schemas/comm_link_image' } type: object '404': description: 'Comm-Link image not found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/comm-link-images/random: get: tags: - Comm-Links - Images summary: 'Comm-Link Images Random' description: 'Retrieve random comm-link images (minimum 250 KB), optionally filtered by tag name. Only images without a base image are included.' operationId: getRandomCommLinkImage parameters: - name: limit in: query description: 'Number of random images to return' schema: type: integer maximum: 100 example: 5 - name: 'filter[tags]' in: query description: 'Partial match on tag name' schema: type: string example: concept responses: '200': description: 'Retrieve a random Comm-Link Image. Limit parameter sets the number of random images' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link_image' } } type: object /api/comm-link-images/search: post: tags: - Comm-Links - Images - Search summary: 'Comm-Link Image Search by filename' description: 'Search comm-link images by filename with optional tag filtering. Only images without a base image and with non-zero file size are returned.' operationId: searchCommLinkImages parameters: - name: 'filter[tags]' in: query description: 'Partial match on tag name' schema: type: string example: concept requestBody: required: true content: application/json: schema: required: - query properties: query: description: 'Search term matched against image filenames (partial match)' type: string maxLength: 255 minLength: 1 example: Starshipbridge type: object example: '{"query": "Starshipbridge"}' responses: '200': description: 'Search for a Comm-Link Image by its filename.' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/comm_link_image' } } type: object '422': description: 'Validation error. The query field is required and must be a string between 1 and 255 characters.' content: application/json: schema: $ref: '#/components/schemas/validation_error_response' /api/galactapedia: get: tags: - Galactapedia summary: 'Galactapedia Overview' description: 'Returns paginated Galactapedia articles ordered by descending ID by default. Each article includes its templates, categories, and tags. Supports filtering by category, tag, template, title, and creation date. Results can be sorted by title, categories_count, tags_count, and related_articles_count.' operationId: listGalactapediaArticles parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[category]' in: query description: 'Exact match on category name (see GET /api/galactapedia/filters for valid values)' schema: type: string example: Animals - name: 'filter[tag]' in: query description: 'Exact match on tag name (see GET /api/galactapedia/filters for valid values)' schema: type: string example: 100i - name: 'filter[template]' in: query description: 'Exact match on template name (see GET /api/galactapedia/filters for valid values)' schema: type: string example: Civilization - name: 'filter[title]' in: query description: 'Partial match on the article title' schema: type: string example: Messer - name: 'filter[created_at]' in: query description: 'Filter by creation year (YYYY), year-month (YYYY-MM), or exact date (YYYY-MM-DD)' schema: type: string example: '2025' - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: title, categories_count, tags_count, related_articles_count.' schema: type: string example: '-id' responses: '200': description: 'Paginated list of Galactapedia Articles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/galactapedia_article' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object /api/galactapedia/filters: get: tags: - Galactapedia summary: 'Galactapedia Filters' description: 'Returns available category, tag, and template filter values for Galactapedia articles, with occurrence counts. Providing additional filter parameters will narrow the facets accordingly.' operationId: listGalactapediaFilters parameters: - name: 'filter[category]' in: query description: 'Exact match on category name' schema: type: string example: Animals - name: 'filter[tag]' in: query description: 'Exact match on tag name' schema: type: string example: 100i - name: 'filter[template]' in: query description: 'Exact match on template name' schema: type: string example: Civilization - name: 'filter[title]' in: query description: 'Partial match on the article title' schema: type: string example: Messer - name: 'filter[created_at]' in: query description: 'Filter by creation year (YYYY), year-month (YYYY-MM), or exact date (YYYY-MM-DD)' schema: type: string example: '2025' responses: '200': description: 'Available filters for Galactapedia.' content: application/json: schema: properties: filters: { properties: { category: { description: 'Category names such as Animals, Archaeology, Art, Banu, Civilizations', type: array, items: { $ref: '#/components/schemas/filter_value' } }, tag: { description: 'Tag names such as vehicle models, locations, and lore terms', type: array, items: { $ref: '#/components/schemas/filter_value' } }, template: { description: 'Template types such as Civilization, Company, Event', type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object '/api/galactapedia/{id}': get: tags: - Galactapedia summary: 'Galactapedia Article' description: 'Retrieve a Galactapedia article by ID with available includes and translations.' operationId: getGalactapediaArticle parameters: - $ref: '#/components/parameters/locale' - name: id in: path required: true schema: description: 'Galactapedia Article CIG ID' type: string example: VyvYAGKxAz - name: include in: query explode: false allowReserved: true schema: description: 'Available Galactapedia includes' type: array items: type: string enum: - categories - properties - tags - related responses: '200': description: 'A singular Article' content: application/json: schema: properties: data: { $ref: '#/components/schemas/galactapedia_article' } type: object '404': description: 'No Article with specified ID found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/galactapedia/search: post: tags: - Galactapedia - Search summary: 'Galactapedia Article Search (Deprecated)' description: 'Deprecated. Use GET /api/galactapedia?filter[title]={value} for title search. This endpoint will be removed in a future version.' operationId: searchGalactapediaDeprecated requestBody: description: 'Article (partial) title, template or slug' required: true content: application/json: schema: type: object example: '{"query": "Banu"}' responses: '200': description: 'List of articles matching the query' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/galactapedia_article' } } type: object deprecated: true /api/celestial-objects: get: tags: - Starmap summary: 'Starmap Celestial Objects Overview' description: 'Returns paginated celestial objects with optional relationships.' operationId: listCelestialObjects parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[starsystem]' in: query schema: type: string - name: 'filter[name]' in: query description: 'Partial match on celestial object name' schema: type: string - name: 'filter[designation]' in: query schema: type: string - name: 'filter[type]' in: query schema: type: string - name: sort in: query schema: type: string - name: include in: query description: 'Include additional relationships (affiliation, starsystem, jumppoints).' explode: false allowReserved: true schema: type: string responses: '200': description: 'Paginated list of Celestial Objects' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/celestial_object' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object '/api/celestial-objects/{code}': get: tags: - Starmap summary: 'Celestial Object Detail' description: 'Retrieve a celestial object by code, optionally including relations.' operationId: getCelestialObject parameters: - name: code in: path required: true schema: description: 'Celestial Object code (e.g., NYX.JUMPPOINTS.BREMEN)' type: string - name: include in: query description: 'Include additional relationships (affiliation, starsystem, jumppoints).' explode: false allowReserved: true schema: type: string responses: '200': description: 'A Celestial Object' content: application/json: schema: properties: data: { $ref: '#/components/schemas/celestial_object' } type: object '404': description: 'No Celestial Object with specified code found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/celestial-objects/search: post: tags: - Starmap - Search summary: 'Celestial Object Search (Deprecated)' description: 'Deprecated. Use GET /api/celestial-objects?filter[name]={value} for name search. This endpoint will be removed in a future version.' operationId: searchCelestialObjectsDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' requestBody: description: 'Partial celestial object code or name to search for' required: true content: application/json: schema: properties: query: type: string type: object example: '{"query": "Pleiades"}' responses: '200': description: 'List of matching Celestial Objects' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/celestial_object' } } type: object deprecated: true /api/starsystems: get: tags: - Starmap summary: 'Starmap Starsystems Overview' description: 'Returns paginated starsystems, optionally including related resources.' operationId: listStarsystems parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[affiliation]' in: query schema: type: string - name: 'filter[code]' in: query schema: type: string - name: 'filter[name]' in: query schema: type: string - name: 'filter[status]' in: query schema: type: string - name: 'filter[type]' in: query schema: type: string - name: 'filter[size]' in: query schema: type: number - name: sort in: query schema: type: string - name: include in: query description: 'Include additional relationships (affiliation, celestialObjects, jumppoints).' explode: false allowReserved: true schema: type: string responses: '200': description: 'Paginated list of Starsystems' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/starsystem' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object '/api/starsystems/{code}': get: tags: - Starmap summary: 'Starsystem Detail' description: 'Retrieve a starsystem by code or identifier, with optional includes.' operationId: getStarsystem parameters: - name: code in: path required: true schema: description: 'Starsystem code or identifier (e.g. SOL)' type: string - name: include in: query description: 'Include additional relationships (affiliation, celestialObjects, jumppoints).' explode: false allowReserved: true schema: type: string responses: '200': description: 'A Starsystem' content: application/json: schema: properties: data: { $ref: '#/components/schemas/starsystem' } type: object '404': description: 'No Starsystem with specified code found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/starsystems/search: post: tags: - Starmap - Search summary: 'Starsystem Search (Deprecated)' description: 'Deprecated. Use GET /api/starsystems?filter[name]={value} for name search. This endpoint will be removed in a future version.' operationId: searchStarsystemsDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' requestBody: description: 'Partial starsystem code or name to search for' required: true content: application/json: schema: properties: query: type: string type: object example: '{"query": "Sol"}' responses: '200': description: 'List of matching Starsystems' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/starsystem' } } type: object deprecated: true /api/starsystems/filters: get: tags: - Starmap summary: 'Starsystem Filters' description: 'Return all available filter values for starsystems.' operationId: listStarsystemFilters responses: '200': description: 'Available filters for starsystems.' content: application/json: schema: properties: filters: { properties: { affiliation: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, status: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, type: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, size: { type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object /api/stats/latest: get: tags: - Stats summary: 'Latest Crowdfunding Statistics' description: 'Get the most recent Star Citizen crowdfunding statistics snapshot, including funds raised (USD), fan count, and fleet size.' operationId: getLatestStats responses: '200': description: 'Latest statistics' content: application/json: schema: properties: data: { $ref: '#/components/schemas/stat' } type: object '404': description: 'No statistics found.' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/stats: get: tags: - Stats summary: 'Paginated Historical Statistics' description: 'Get paginated historical Star Citizen crowdfunding statistics, ordered by most recent first. Supports page-based pagination.' operationId: listStats parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' responses: '200': description: 'Paginated list of stats' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/stat' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object /api/shipmatrix/vehicles: get: tags: - 'Ship Matrix' - Vehicles summary: 'Ship Matrix Vehicles Overview' description: 'Returns paginated Ship Matrix vehicles with optional filters. SKU variants and loaner vehicles are included by default.' operationId: listShipMatrixVehicles parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[manufacturer]' in: query description: 'Exact match on manufacturer name (see GET /api/shipmatrix/vehicles/filters for valid values)' schema: type: string example: 'Anvil Aerospace' - name: 'filter[size]' in: query description: 'Exact match on size slug (see GET /api/shipmatrix/vehicles/filters for valid values)' schema: type: string example: medium - name: 'filter[type]' in: query description: 'Filter by vehicle type slug' schema: type: string - name: 'filter[focus]' in: query description: 'Filter by vehicle focus slug (comma-separated for multiple)' schema: type: string - name: 'filter[production_status]' in: query description: 'Filter by production status slug' schema: type: string - name: 'filter[name]' in: query description: 'Partial match on vehicle name' schema: type: string example: Avenger - name: sort in: query description: 'Sort field. Prefix with "-" for descending. Supported: id, chassis_id, name, msrp, updated_at, length, width, height, cargo_capacity, min_crew, max_crew, manufacturer, focus, type, size' schema: type: string example: '-name' responses: '200': description: 'Paginated list of Ship Matrix Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/ship_matrix_vehicle' } } links: { allOf: [{ $ref: '#/components/schemas/pagination_links' }] } meta: { allOf: [{ $ref: '#/components/schemas/pagination_meta' }] } type: object /api/shipmatrix/vehicles/filters: get: tags: - 'Ship Matrix' - Vehicles summary: 'Ship Matrix Vehicle Filters' description: 'Return all available filter values for Ship Matrix vehicles. Supports cross-filtering: pass filter parameters to get filtered facet counts.' operationId: listShipMatrixFilters responses: '200': description: 'Available filters for Ship Matrix vehicles.' content: application/json: schema: properties: filters: { properties: { manufacturer: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, size: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, type: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, focus: { type: array, items: { $ref: '#/components/schemas/filter_value' } }, production_status: { type: array, items: { $ref: '#/components/schemas/filter_value' } } }, type: object } type: object '/api/shipmatrix/vehicles/{slug}': get: tags: - 'Ship Matrix' - Vehicles summary: 'Ship Matrix Vehicle Detail' description: 'Retrieve a Ship Matrix vehicle by slug. Use the "include" query parameter to load additional relationships: components, loaner, skus.' operationId: getShipMatrixVehicle parameters: - name: slug in: path required: true schema: description: 'Vehicle slug' type: string - name: include in: query description: 'Include additional relationships (components, loaner, skus)' schema: type: string responses: '200': description: 'A Ship Matrix Vehicle' content: application/json: schema: properties: data: { $ref: '#/components/schemas/ship_matrix_vehicle' } type: object '404': description: 'Vehicle not found' content: application/json: schema: $ref: '#/components/schemas/not_found_error_response' /api/shipmatrix/vehicles/search: post: tags: - 'Ship Matrix' - Vehicles - Search summary: 'Ship Matrix Vehicle Search (Deprecated)' description: 'Deprecated. Use GET /api/shipmatrix/vehicles?filter[name]={value} for name search. This endpoint will be removed in a future version.' operationId: searchShipMatrixVehiclesDeprecated parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/page_number' - $ref: '#/components/parameters/page_size' - name: 'filter[manufacturer]' in: query description: 'Exact match on manufacturer name (see GET /api/shipmatrix/vehicles/filters for valid values)' schema: type: string example: 'Anvil Aerospace' - name: 'filter[size]' in: query description: 'Exact match on size slug (see GET /api/shipmatrix/vehicles/filters for valid values)' schema: type: string example: medium - name: 'filter[type]' in: query description: 'Filter by vehicle type slug' schema: type: string - name: 'filter[focus]' in: query description: 'Filter by vehicle focus slug (comma-separated for multiple)' schema: type: string - name: 'filter[production_status]' in: query description: 'Filter by production status slug' schema: type: string requestBody: description: 'Vehicle name to search for' required: true content: application/json: schema: type: object example: '{"query": "Avenger"}' responses: '200': description: 'List of matching Ship Matrix Vehicles' content: application/json: schema: properties: data: { type: array, items: { $ref: '#/components/schemas/ship_matrix_vehicle' } } type: object deprecated: true /api/user: get: tags: - Auth summary: 'Get Authenticated User' description: 'Returns the currently authenticated user. Requires a valid Sanctum bearer token.' operationId: getAuthenticatedUser responses: '200': description: 'The authenticated user' content: application/json: schema: properties: id: { type: integer, example: 1 } name: { type: string, example: 'John Doe' } email: { type: string, format: email, example: john@example.com } email_verified_at: { type: string, format: date-time, nullable: true } is_admin: { type: boolean, example: false } language_id: { type: integer, example: 1, nullable: true } created_at: { type: string, format: date-time, nullable: true } updated_at: { type: string, format: date-time, nullable: true } type: object '401': description: Unauthenticated. content: application/json: schema: $ref: '#/components/schemas/unauthenticated_error_response' security: - sanctum: [] components: schemas: filter_value: title: 'Filter Value' description: 'A value available for filtering with a human label and optional result count.' properties: value: nullable: true oneOf: - type: string - type: integer - type: boolean label: type: string count: description: 'Result count when supplied by the facet.' type: integer nullable: true type: object blueprint_output: title: 'Blueprint Output' description: 'Crafted output metadata for a blueprint.' properties: uuid: description: 'UUID of the crafted item' type: string format: uuid nullable: true name: description: 'Display name of the crafted item' type: string nullable: true class: description: 'Internal class identifier of the crafted item' type: string nullable: true type: description: 'Type category of the crafted item (e.g. WeaponPersonal, Char_Armor_Torso)' type: string nullable: true type_label: description: 'Human-readable label for the type' type: string nullable: true sub_type: description: 'Sub-type classification of the crafted item' type: string nullable: true subtype: description: 'Deprecated: Use sub_type.' type: string nullable: true deprecated: true grade: description: 'Grade or quality tier of the crafted item' type: string nullable: true item_web_url: description: 'Web URL for the crafted item detail page' type: string format: uri nullable: true type: object blueprint_modifier_quality_range: title: 'Blueprint Modifier Quality Range' properties: min: description: 'Minimum quality value' type: number format: float nullable: true max: description: 'Maximum quality value' type: number format: float nullable: true type: object blueprint_modifier_range: title: 'Blueprint Modifier Range' properties: at_min_quality: description: 'Modifier value at minimum quality' type: number format: float nullable: true at_max_quality: description: 'Modifier value at maximum quality' type: number format: float nullable: true type: object blueprint_modifier: title: 'Blueprint Modifier' description: 'Modifier interpolation metadata used for blueprint quality effects.' properties: property_key: description: 'Internal key identifying the modifier property' type: string property_uuid: description: 'UUID of the property definition, if available' type: string format: uuid nullable: true label: description: 'Human-readable label for the modifier' type: string better_when: description: 'Indicates whether a higher or lower value is desirable' type: string enum: - higher - lower - neutral nullable: true quality_range: $ref: '#/components/schemas/blueprint_modifier_quality_range' modifier_range: $ref: '#/components/schemas/blueprint_modifier_range' value_range_type: description: 'Interpolation type for the modifier value range. When present, value_segments should be used for interpolation instead of the simple quality_range/modifier_range pair.' type: string enum: - linear nullable: true value_segments: description: 'Multi-step interpolation segments. Each segment defines its own quality range and modifier start/end values. When present, use these for interpolation instead of quality_range/modifier_range.' type: array items: properties: quality_min: description: 'Start quality for this segment' type: integer quality_max: description: 'End quality for this segment' type: integer modifier_at_start: description: 'Modifier value at quality_min' type: number format: float modifier_at_end: description: 'Modifier value at quality_max' type: number format: float type: object nullable: true type: object blueprint_summary_property: title: 'Blueprint Summary Property' description: 'Aggregated modifier property shown in blueprint output summaries.' properties: property_key: description: 'Internal key identifying the property' type: string property_uuid: description: 'UUID of the property definition, if available' type: string format: uuid nullable: true label: description: 'Human-readable label for the property' type: string better_when: description: 'Indicates whether a higher or lower value is desirable' type: string enum: - higher - lower - neutral nullable: true type: object blueprint_requirement_child: title: 'Blueprint Requirement Child' description: 'Normalized blueprint requirement child entry. Children can represent groups, resources, or discrete items.' properties: key: description: 'Internal key of the requirement child' type: string nullable: true kind: description: 'Type of requirement entry' type: string enum: - group - resource - item nullable: true uuid: description: 'UUID of the required resource type or item' type: string format: uuid nullable: true name: description: 'Display name of the required resource or item' type: string nullable: true required_count: description: 'Number of this child required within its group' type: integer nullable: true quantity: description: 'Discrete item count required' type: number format: float nullable: true quantity_scu: description: 'Quantity in Standard Cargo Units (for resources)' type: number format: float nullable: true min_quality: description: 'Minimum quality tier required' type: integer nullable: true modifiers: description: 'Quality-dependent modifier effects for this child' type: array items: $ref: '#/components/schemas/blueprint_modifier' children: description: 'Nested children when kind is group' type: array items: $ref: '#/components/schemas/blueprint_requirement_child' nullable: true type: object blueprint_requirement_group: title: 'Blueprint Requirement Group' description: 'Normalized requirement group derived from the first blueprint tier.' properties: key: description: 'Internal key of the requirement group' type: string nullable: true name: description: 'Display name of the requirement group' type: string nullable: true kind: description: 'Always "group"' type: string enum: - group required_count: description: 'Number of children that must be fulfilled within this group' type: integer nullable: true modifiers: description: 'Quality-dependent modifier effects applied at the group level' type: array items: $ref: '#/components/schemas/blueprint_modifier' children: description: 'Individual resources or items within this group' type: array items: $ref: '#/components/schemas/blueprint_requirement_child' type: object blueprint_requirement_node: title: 'Blueprint Requirement Node' description: 'Raw recursive requirement node returned under tiers[].requirements.' properties: kind: description: 'Node type in the requirement tree' type: string enum: - root - group - resource - item nullable: true key: description: 'Internal key of the requirement node' type: string nullable: true name: description: 'Display name of the requirement node' type: string nullable: true uuid: description: 'UUID of the required resource type or item' type: string format: uuid nullable: true required_count: description: 'Number of children that must be fulfilled' type: integer nullable: true quantity: description: 'Discrete item count required' type: number format: float nullable: true quantity_scu: description: 'Quantity in Standard Cargo Units (for resources)' type: number format: float nullable: true min_quality: description: 'Minimum quality tier required' type: integer nullable: true modifiers: description: 'Quality-dependent modifier effects' type: array items: $ref: '#/components/schemas/blueprint_modifier' nullable: true children: description: 'Nested child nodes in the requirement tree' type: array items: $ref: '#/components/schemas/blueprint_requirement_node' nullable: true type: object blueprint_tier: title: 'Blueprint Tier' description: 'Raw blueprint tier as imported from the source payload.' properties: tier_index: description: 'Zero-based index of this crafting tier' type: integer nullable: true craft_time_seconds: description: 'Crafting duration in seconds for this tier' type: integer nullable: true requirements: oneOf: - $ref: '#/components/schemas/blueprint_requirement_node' nullable: true description: 'Recursive requirement tree for this tier' type: object blueprint_ingredient: title: 'Blueprint Ingredient' description: 'Condensed ingredient summary used by blueprint list and detail responses.' properties: name: description: 'Display name of the ingredient' type: string nullable: true kind: description: 'Ingredient kind' type: string enum: - resource - item nullable: true resource_type_uuid: description: 'UUID of the ingredient resource type (see GET /api/commodities)' type: string format: uuid nullable: true item_uuid: description: 'UUID of the ingredient item (see GET /api/items)' type: string format: uuid nullable: true quantity_scu: description: 'Quantity in Standard Cargo Units (for resources)' type: number format: float nullable: true quantity: description: 'Discrete count (for items)' type: number format: float nullable: true link: description: 'API URL for the ingredient' type: string format: uri nullable: true web_url: description: 'Web URL for the ingredient detail page' type: string format: uri nullable: true type: object blueprint_dismantle_return_summary: title: 'Blueprint Dismantle Return Summary' description: 'Lightweight dismantle return entry used by blueprint list responses.' properties: name: description: 'Display name of the returned resource' type: string nullable: true resource_type_uuid: description: 'UUID of the returned resource type (see GET /api/commodities)' type: string format: uuid nullable: true quantity_scu: description: 'Quantity returned in Standard Cargo Units' type: number format: float nullable: true link: description: 'API URL for the returned resource' type: string format: uri nullable: true web_url: description: 'Web URL for the returned resource detail page' type: string format: uri nullable: true type: object blueprint_dismantle: title: 'Blueprint Dismantle' description: 'Dismantle metadata for a blueprint. Only included on blueprint detail responses.' properties: time_seconds: description: 'Dismantle duration in seconds' type: integer nullable: true time_label: description: 'Human-readable dismantle duration' type: string nullable: true efficiency: description: 'Dismantle efficiency ratio' type: number format: float nullable: true type: object blueprint_unlocking_mission: title: 'Blueprint Unlocking Mission' description: 'A mission that can unlock this blueprint as a reward.' properties: title: description: 'Formatted mission title' type: string nullable: true debug_name: description: 'Internal debug name of the mission' type: string nullable: true reward_scope: description: 'Scope of the blueprint reward' type: string nullable: true chance: description: 'Drop chance as a decimal (e.g. 0.5 for 50%)' type: number format: float nullable: true web_url: description: 'Web URL for the mission detail page' type: string format: uri nullable: true type: object blueprint_unlocking_missions_grouped_entry: title: 'Blueprint Unlocking Missions Grouped Entry' description: 'A grouped mission entry within unlocking_missions_grouped.' properties: title: description: 'Mission title' type: string reward_scope: description: 'Scope of the blueprint reward' type: string nullable: true count: description: 'Number of occurrences of this mission' type: integer web_url: description: 'Web URL for the mission detail page' type: string format: uri nullable: true type: object blueprint_unlocking_missions_grouped: title: 'Blueprint Unlocking Missions Grouped' description: 'Grouped unlocking missions by drop chance. Only included on blueprint detail responses.' properties: label: description: 'Human-readable chance label (e.g. Guaranteed, 50% chance)' type: string chance: description: 'Drop chance as a decimal' type: number format: float nullable: true missions: description: 'Missions in this chance group' type: array items: $ref: '#/components/schemas/blueprint_unlocking_missions_grouped_entry' type: object blueprint_aspect_input: title: 'Blueprint Aspect Input' description: 'Input resource or item for a blueprint aspect.' properties: kind: description: 'Input kind' type: string uuid: description: 'UUID of the input resource or item' type: string format: uuid nullable: true name: description: 'Display name of the input' type: string quantity: description: 'Discrete count (for items)' type: number format: float nullable: true quantity_scu: description: 'Quantity in Standard Cargo Units (for resources)' type: number format: float nullable: true min_quality: description: 'Minimum quality tier' type: integer web_url: description: 'Web URL for the input detail page' type: string format: uri nullable: true type: object blueprint_aspect_selection_group: title: 'Blueprint Aspect Selection Group' description: 'Selection group metadata when multiple aspect options are available.' properties: key: description: 'Internal key of the selection group' type: string name: description: 'Display name of the selection group' type: string required_count: description: 'Number of options that must be selected' type: integer option_count: description: 'Total number of available options' type: integer type: object blueprint_aspect: title: 'Blueprint Aspect' description: 'A single interactive aspect with quality-dependent modifiers.' properties: key: description: 'Internal key of the aspect' type: string name: description: 'Display name of the aspect' type: string required_count: description: 'Required count from parent group' type: integer nullable: true selection_group: oneOf: - $ref: '#/components/schemas/blueprint_aspect_selection_group' nullable: true input: $ref: '#/components/schemas/blueprint_aspect_input' modifiers: description: 'Quality-dependent modifier effects' type: array items: $ref: '#/components/schemas/blueprint_modifier' initial_quality: description: 'Default quality slider position' type: integer slider_min: description: 'Minimum quality slider value' type: integer slider_max: description: 'Maximum quality slider value' type: integer has_modifiers: description: 'Whether this aspect has any modifiers' type: boolean has_dynamic_modifiers: description: 'Whether modifiers change with quality' type: boolean is_selected: description: 'Whether this aspect is selected by default' type: boolean type: object blueprint_aspect_group: title: 'Blueprint Aspect Group' description: 'A group of related aspects, potentially a choice group.' properties: key: description: 'Internal key of the aspect group' type: string name: description: 'Display name of the aspect group' type: string display_name: description: 'User-facing display name, null if generic' type: string nullable: true required_count: description: 'Number of aspects that must be selected' type: integer option_count: description: 'Total number of aspect options' type: integer is_choice_group: description: 'Whether this is a choice group (required < options)' type: boolean selected_count: description: 'Number of aspects selected by default' type: integer aspect_indexes: description: 'Indexes into the aspects array for this group' type: array items: type: integer type: object blueprint_aspects: title: 'Blueprint Aspects' description: 'Interactive aspect tree for blueprint quality simulation. Only included on blueprint detail responses.' properties: aspects: description: 'Flat list of all aspects' type: array items: $ref: '#/components/schemas/blueprint_aspect' aspect_groups: description: 'Groups of related aspects' type: array items: $ref: '#/components/schemas/blueprint_aspect_group' has_interactive_aspects: description: 'Whether any aspect has dynamic quality modifiers' type: boolean type: object blueprint: title: Blueprint properties: uuid: description: 'Unique blueprint identifier' type: string format: uuid key: description: 'Internal blueprint key (e.g. BP_CRAFT_behr_pistol_ballistic_01)' type: string category_uuid: description: 'UUID of the blueprint category' type: string format: uuid output_item_uuid: description: 'UUID of the item this blueprint crafts' type: string format: uuid output_name: description: 'Display name of the crafted item' type: string nullable: true output_class: description: 'Internal class identifier of the crafted item' type: string nullable: true craft_time_seconds: description: 'Crafting duration in seconds' type: integer nullable: true craft_time_label: description: 'Human-readable crafting duration' type: string nullable: true is_available_by_default: description: 'Whether this blueprint is available without unlocking' type: boolean game_version: description: 'Game version code this data applies to' type: string nullable: true ingredient_count: description: 'Total number of distinct ingredients across all requirement groups' type: integer unlocking_missions_count: description: 'Number of missions that can unlock this blueprint' type: integer ingredients: description: 'Ingredients required to craft the item' type: array items: $ref: '#/components/schemas/blueprint_ingredient' dismantle_returns: description: 'Resources returned when dismantling the crafted item' type: array items: $ref: '#/components/schemas/blueprint_dismantle_return_summary' output: $ref: '#/components/schemas/blueprint_output' dismantle: $ref: '#/components/schemas/blueprint_dismantle' requirement_groups: description: 'Only included on blueprint detail responses.' type: array items: $ref: '#/components/schemas/blueprint_requirement_group' summary_properties: description: 'Only included on blueprint detail responses.' type: array items: $ref: '#/components/schemas/blueprint_summary_property' unlocking_missions: description: 'Only included on blueprint detail responses.' type: array items: $ref: '#/components/schemas/blueprint_unlocking_mission' unlocking_missions_grouped: description: 'Only included on blueprint detail responses.' type: array items: $ref: '#/components/schemas/blueprint_unlocking_missions_grouped' aspects: $ref: '#/components/schemas/blueprint_aspects' tiers: description: 'Only included on blueprint detail responses.' type: array items: $ref: '#/components/schemas/blueprint_tier' link: description: 'API URL for this blueprint' type: string format: uri web_url: description: 'Web URL for the blueprint detail page' type: string format: uri output_item_web_url: description: 'Web URL for the crafted item detail page' type: string format: uri nullable: true type: object commodity_index_location_entry: title: 'Commodity Index Location Entry' description: 'A grouped mining entry within a location, summarizing a specific resource group.' properties: group_name: description: 'Internal group name identifying the mining method or category (e.g. "SpaceShip_Mineables", "Harvestables").' type: string resource_kind: description: 'Kind of resource if resolvable from the group (e.g. "Mineable", "Harvestable").' type: string nullable: true quality_min: description: 'Minimum quality value across entries in this group.' type: integer nullable: true quality_max: description: 'Maximum quality value across entries in this group.' type: integer nullable: true entry_count: description: 'Number of individual resource entries in this group.' type: integer type: object commodity_index_location: title: 'Commodity Index Location' description: 'A named location where a commodity can be found, with grouped entries by mining method.' properties: name: description: 'Canonical location name.' type: string display_name: description: 'Formatted display name including designation prefix (e.g. "CRU-L1: Green Circle").' type: string system: description: 'Star system name this location belongs to.' type: string nullable: true type: description: 'Location type classification (e.g. "Moon", "Planet", "Outpost").' type: string nullable: true parent_name: description: 'Name of the parent celestial body or location.' type: string nullable: true parent_type: description: 'Type of the parent location.' type: string nullable: true uuid: description: 'UUID of the starmap location entity.' type: string format: uuid nullable: true link: description: 'API link to the full location details.' type: string format: uri nullable: true entries: description: 'Resource entries grouped by mining method.' type: array items: $ref: '#/components/schemas/commodity_index_location_entry' type: object commodity_link: title: 'Commodity Link' description: 'Game commodity summary used in list responses.' properties: uuid: description: 'Unique commodity identifier.' type: string format: uuid key: description: 'Internal commodity key (e.g. "Quartz").' type: string name: description: 'Display name of the commodity.' type: string display_name: description: 'Name with leaf commodity group in parentheses, e.g. "WiDoW (Vice)".' type: string slug: description: 'URL-friendly slug for the commodity.' type: string description: description: 'In-game lore description.' type: string nullable: true tier: description: 'Refinement tier (e.g. "Raw", "Refined").' type: string nullable: true refined_version: description: 'The refined counterpart of this raw commodity, if applicable.' properties: name: description: 'Name of the refined commodity.' type: string uuid: description: 'UUID of the refined commodity.' type: string format: uuid web_url: description: 'Frontend URL for the refined commodity page.' type: string format: uri link: description: 'API link to the refined commodity details.' type: string format: uri type: object nullable: true density_g_per_cc: description: 'Density in grams per cubic centimeter.' type: number nullable: true instability: description: 'Instability rating affecting mining behavior.' type: number nullable: true resistance: description: 'Resistance rating affecting mining difficulty.' type: number nullable: true volatility: description: 'Volatility rating for this resource type.' type: number nullable: true x-since: 4.9.0 volatility_health_decay_per_second: description: 'Health decay per second associated with this resource type volatility.' type: number nullable: true x-since: 4.9.0 box_sizes_scu: description: 'Standard cargo box sizes in SCU that this commodity fits into.' type: array items: type: number validate_default_cargo_box: description: 'Whether the default cargo box validation applies.' type: boolean has_default_cargo_containers: description: 'Whether default cargo containers are available for this commodity.' type: boolean is_mineable: description: 'Whether this commodity can be obtained through mining or harvesting.' type: boolean has_ship_mineables: description: 'Whether ship mining deposits exist for this commodity.' type: boolean has_ground_vehicle_mineables: description: 'Whether ground vehicle mining deposits exist for this commodity.' type: boolean has_fps_mineables: description: 'Whether FPS mining deposits exist for this commodity.' type: boolean has_harvestables: description: 'Whether harvestable deposits exist for this commodity.' type: boolean has_salvage: description: 'Whether salvage deposits exist for this commodity.' type: boolean signature: description: 'Electromagnetic signature strength, used for scanner detection.' type: integer nullable: true kind: description: 'Resource kind classification (e.g. "Mineable", "Harvestable").' type: string nullable: true commodity_groups: description: 'Ordered commodity groups from root to leaf (e.g. ["ProcessedGoods", "Vice"]).' type: array items: type: string nullable: true methods: description: 'Available extraction methods (e.g. ["Ship", "Ground Vehicle", "FPS"]).' type: array items: type: string systems: description: 'Star systems where this commodity can be found.' type: array items: type: string locations: description: 'Named locations where this commodity appears.' type: array items: $ref: '#/components/schemas/commodity_index_location' link: description: "API link to this commodity's full details." type: string format: uri web_url: description: "Frontend URL for this commodity's page." type: string format: uri images: description: 'Images from external sources for this commodity.' type: array items: properties: source: description: 'Image source identifier' type: string thumbnail_url: type: string nullable: true thumbnail_width: type: integer nullable: true thumbnail_height: type: integer nullable: true original_url: type: string nullable: true original_width: type: integer nullable: true original_height: type: integer nullable: true type: object type: object commodity_deposit_group: title: 'Commodity Deposit Group' description: 'Deposit base with commodity grouping fields.' allOf: - $ref: '#/components/schemas/deposit_base' - properties: resource_uuid: description: 'UUID of the resource (commodity) this deposit yields.' type: string format: uuid nullable: true group_name: description: 'Internal group name for the mining category (e.g. "SpaceShip_Mineables").' type: string resource_kind: description: 'Resource extraction kind (e.g. "Mineable", "Harvestable").' type: string nullable: true type: object - $ref: '#/components/schemas/commodity_link' commodity_show_location: title: 'Commodity Show Location' description: 'Detailed location data for a commodity deposit, including quality range and probability information.' type: object allOf: - $ref: '#/components/schemas/commodity_link' - properties: name: description: 'Canonical location name.' type: string designation: description: 'Location designation code (e.g. "CRU-L1").' type: string nullable: true display_name: description: 'Formatted display name combining designation and name.' type: string system: description: 'Star system this location belongs to.' type: string nullable: true type: description: 'Location type classification (e.g. "Moon", "Planet", "Outpost").' type: string nullable: true parent_name: description: 'Name of the parent celestial body or location.' type: string nullable: true parent_type: description: 'Type of the parent location.' type: string nullable: true parent_uuid: description: 'UUID of the parent location entity.' type: string format: uuid nullable: true uuid: description: 'UUID of this starmap location entity.' type: string format: uuid nullable: true link: description: 'API link to the full location details.' type: string format: uri nullable: true group_probability: description: 'Raw probability of this commodity group occurring at this location (0-1).' type: number group_probability_percent: description: 'Group probability expressed as a percentage (0-100).' type: number relative_probability: description: 'Raw relative probability compared to other commodities at this location (0-1).' type: number relative_probability_percent: description: 'Relative probability expressed as a percentage (0-100).' type: number quality_min: description: 'Minimum quality across all deposit instances at this location.' type: integer nullable: true quality_max: description: 'Maximum quality across all deposit instances at this location.' type: integer nullable: true areas: description: 'Areas with global modifiers that boost spawn rates at this location.' type: array items: $ref: '#/components/schemas/area_boost' nullable: true resources: description: 'Individual deposit groups for this commodity at this location.' type: array items: $ref: '#/components/schemas/commodity_deposit_group' type: object commodity_version_entry: title: 'Commodity Version Entry' description: 'A raw or refined version of the commodity with navigation links.' type: object allOf: - $ref: '#/components/schemas/commodity_link' - properties: name: description: 'Display name of the versioned commodity.' type: string uuid: description: 'UUID of the versioned commodity.' type: string format: uuid web_url: description: 'Frontend URL for the versioned commodity page.' type: string format: uri link: description: 'API link to the versioned commodity details.' type: string format: uri type: object commodity_system_group: title: 'Commodity System Group' description: 'Locations grouped by star system for organized display.' type: object allOf: - $ref: '#/components/schemas/commodity_link' - properties: name: description: 'Star system name.' type: string locations: description: 'All commodity deposit locations within this system.' type: array items: $ref: '#/components/schemas/commodity_show_location' type: object commodity_show: title: 'Commodity Show' description: 'Full game commodity detail used in show responses.' type: object allOf: - $ref: '#/components/schemas/commodity_link' - properties: uuid: description: 'Unique commodity identifier.' type: string format: uuid key: description: 'Internal commodity key (e.g. "Quartz").' type: string name: description: 'Display name of the commodity.' type: string display_name: description: 'Name with leaf commodity group in parentheses, e.g. "WiDoW (Vice)".' type: string slug: description: 'URL-friendly slug for the commodity.' type: string description: description: 'In-game lore description.' type: string nullable: true tier: description: 'Refinement tier (e.g. "Raw", "Refined").' type: string nullable: true refined_version: description: 'The refined counterpart of this raw commodity, if applicable.' properties: name: description: 'Name of the refined commodity.' type: string uuid: description: 'UUID of the refined commodity.' type: string format: uuid web_url: description: 'Frontend URL for the refined commodity page.' type: string format: uri link: description: 'API link to the refined commodity details.' type: string format: uri type: object nullable: true density_g_per_cc: description: 'Density in grams per cubic centimeter.' type: number nullable: true instability: description: 'Instability rating affecting mining behavior.' type: number nullable: true resistance: description: 'Resistance rating affecting mining difficulty.' type: number nullable: true volatility: description: 'Volatility rating for this resource type.' type: number nullable: true x-since: 4.9.0 volatility_health_decay_per_second: description: 'Health decay per second associated with this resource type volatility.' type: number nullable: true x-since: 4.9.0 box_sizes_scu: description: 'Standard cargo box sizes in SCU that this commodity fits into.' type: array items: type: number validate_default_cargo_box: description: 'Whether the default cargo box validation applies.' type: boolean has_default_cargo_containers: description: 'Whether default cargo containers are available for this commodity.' type: boolean is_mineable: description: 'Whether this commodity can be obtained through mining or harvesting.' type: boolean has_ship_mineables: description: 'Whether ship mining deposits exist for this commodity.' type: boolean has_ground_vehicle_mineables: description: 'Whether ground vehicle mining deposits exist for this commodity.' type: boolean has_fps_mineables: description: 'Whether FPS mining deposits exist for this commodity.' type: boolean has_harvestables: description: 'Whether harvestable deposits exist for this commodity.' type: boolean has_salvage: description: 'Whether salvage deposits exist for this commodity.' type: boolean signature: description: 'Electromagnetic signature strength, used for scanner detection.' type: integer nullable: true kind: description: 'Resource kind classification (e.g. "Mineable", "Harvestable").' type: string nullable: true commodity_groups: description: 'Ordered commodity groups from root to leaf (e.g. ["ProcessedGoods", "Vice"]).' type: array items: type: string nullable: true methods: description: 'Available extraction methods (e.g. ["Ship", "Ground Vehicle", "FPS"]).' type: array items: type: string systems: description: 'Star systems where this commodity can be found.' type: array items: type: string locations: description: 'Flat list of all locations with deposit details.' type: array items: $ref: '#/components/schemas/commodity_show_location' systems_grouped: description: 'Locations organized by star system for hierarchical display.' type: array items: $ref: '#/components/schemas/commodity_system_group' raw_versions: description: 'Raw (unrefined) versions of this commodity, if this is a refined commodity.' type: array items: $ref: '#/components/schemas/commodity_version_entry' nullable: true blueprints: description: 'Crafting blueprints that use or produce this commodity.' type: array items: properties: key: { description: 'Unique blueprint key identifier.', type: string } output_name: { description: 'Name of the item produced by this blueprint.', type: string } output_item_uuid: { description: 'UUID of the output item entity.', type: string, format: uuid, nullable: true } craft_time_label: { description: 'Human-readable crafting duration (e.g. "5m 30s").', type: string } web_url: { description: 'Frontend URL for the blueprint page.', type: string, format: uri } link: { description: 'API link to the blueprint details.', type: string, format: uri } type: object nullable: true items: description: 'Physical items associated with this commodity in the game.' type: array items: properties: name: { description: 'Item display name.', type: string } uuid: { description: 'UUID of the item entity.', type: string, format: uuid, nullable: true } type: { description: 'Item type classification.', type: string, nullable: true } type_label: { description: 'Human-readable label for the item type.', type: string, nullable: true } sub_type: { description: 'Item sub-type classification.', type: string, nullable: true } sub_type_label: { description: 'Human-readable label for the item sub-type.', type: string, nullable: true } size: { description: 'Item size grade.', type: integer, nullable: true } web_url: { description: 'Frontend URL for the item page.', type: string, format: uri, nullable: true } link: { description: 'API link to the item details.', type: string, format: uri, nullable: true } type: object nullable: true link: description: "API link to this commodity's full details." type: string format: uri web_url: description: "Frontend URL for this commodity's page." type: string format: uri uex_prices: description: 'Commodity prices from UEX Corp API.' properties: purchase: description: 'Purchase prices from UEX Corp.' type: array items: { $ref: '#/components/schemas/uex_price' } type: object nullable: true type: object area_exception: title: 'Area Exception' description: 'An area-specific modifier that overrides the default deposit probability for a specific resource.' properties: name: description: 'Name of the area where the exception applies.' type: string nullable: true modifier: description: 'Probability multiplier applied within this area (e.g. 2.0 = double chance).' type: number type: object area_boost: title: 'Area Boost' description: 'An area with a global modifier that boosts deposit spawn rates above the baseline.' properties: name: description: 'Name of the boosted area.' type: string nullable: true global_modifier: description: 'Global probability multiplier for this area (values above 1 indicate a boost).' type: number nullable: true type: object clustering_param: title: 'Clustering Param' description: 'A single clustering variation with its own size, proximity, and probability settings.' properties: min_size: description: 'Minimum cluster size.' type: number nullable: true max_size: description: 'Maximum cluster size.' type: number nullable: true min_proximity: description: 'Minimum distance between deposit instances in the cluster.' type: number nullable: true max_proximity: description: 'Maximum distance between deposit instances in the cluster.' type: number nullable: true relative_probability: description: 'Relative probability weight for this clustering variation.' type: number nullable: true type: object clustering: title: Clustering description: 'Defines how deposits are grouped into clusters, including size, proximity, and probability parameters.' properties: key: description: 'Internal clustering configuration key.' type: string nullable: true min_size: description: 'Minimum number of deposits in a cluster.' type: number nullable: true max_size: description: 'Maximum number of deposits in a cluster.' type: number nullable: true min_proximity: description: 'Minimum distance between clustered deposits.' type: number nullable: true max_proximity: description: 'Maximum distance between clustered deposits.' type: number nullable: true probability: description: 'Raw probability of clustering occurring (0-1).' type: number nullable: true probability_percent: description: 'Clustering probability expressed as a percentage (0-100).' type: number nullable: true params: description: 'List of clustering variations with individual probability weights.' type: array items: $ref: '#/components/schemas/clustering_param' type: object material_entry: title: 'Material Entry' description: 'A single material (commodity) found within a deposit, including quality range and probability data.' properties: key: description: 'Unique material key identifier.' type: string nullable: true name: description: 'Display name of the material.' type: string nullable: true uuid: description: 'UUID of the commodity this material represents.' type: string format: uuid nullable: true is_current: description: 'Whether this material is the primary commodity being viewed.' type: boolean quality_min: description: 'Minimum quality value of this material in the deposit.' type: integer nullable: true quality_max: description: 'Maximum quality value of this material in the deposit.' type: integer nullable: true quality_mean: description: 'Average quality value of this material.' type: integer nullable: true quality_stddev: description: 'Standard deviation of the quality distribution.' type: integer nullable: true min_percentage: description: 'Minimum composition percentage of this material (0-100).' type: number max_percentage: description: 'Maximum composition percentage of this material (0-100).' type: number instability: description: 'Instability rating of this material, affecting mining difficulty.' type: number nullable: true resistance: description: 'Resistance rating of this material, affecting mining difficulty.' type: number nullable: true group_probability: description: 'Raw probability of this material occurring in the deposit group (0-1).' type: number group_probability_percent: description: 'Group probability expressed as a percentage (0-100).' type: number relative_probability: description: 'Raw relative probability compared to other materials in the deposit (0-1).' type: number relative_probability_percent: description: 'Relative probability expressed as a percentage (0-100).' type: number quality_quantized_values: description: "The discrete set of quantized quality values a player can actually receive, filtered by the material's quality range. Each value corresponds to one reachable quantization band." type: array items: type: integer example: - 521 - 664 - 710 - 874 - 907 - 970 - 1000 nullable: true quality_quantization: description: 'All possible quantized quality values for this material from the source data. Use quality_quantized_values for the filtered set reachable on this specific deposit.' type: array items: type: integer example: - 348 - 523 - 686 - 717 - 861 - 916 - 975 - 1000 nullable: true type: object harvestable_setup: title: 'Harvestable Setup' description: 'Respawn and despawn timing configuration for harvestable deposit instances.' properties: respawn_seconds: description: 'Time in seconds before a harvested instance respawns.' type: integer nullable: true respawn_formatted: description: 'Human-readable respawn duration (e.g. "5m 30s").' type: string nullable: true despawn_seconds: description: 'Time in seconds before an uncollected instance despawns.' type: integer nullable: true despawn_formatted: description: 'Human-readable despawn duration (e.g. "10m").' type: string nullable: true relative_probability: description: 'Raw relative spawn probability for this harvestable (0-1).' type: number nullable: true relative_probability_percent: description: 'Relative spawn probability expressed as a percentage (0-100).' type: number nullable: true respawn_multiplier: description: 'Multiplier applied to the base respawn time.' type: number nullable: true additional_wait_seconds: description: 'Extra wait time in seconds added when nearby players are present.' type: integer nullable: true additional_wait_formatted: description: 'Human-readable additional wait duration (e.g. "2m").' type: string nullable: true type: object deposit_base: title: 'Deposit Base' description: 'Base schema for a mineable or harvestable deposit, shared across commodity and starmap resources.' properties: key: description: 'Unique deposit key identifier.' type: string label: description: 'Human-readable deposit name derived from the key.' type: string signature: description: 'Electromagnetic signature strength of the deposit.' type: integer nullable: true area_exceptions: description: 'Area-specific probability modifiers that override the default for this deposit.' type: array items: $ref: '#/components/schemas/area_exception' nullable: true clustering: oneOf: - $ref: '#/components/schemas/clustering' nullable: true description: 'Clustering configuration for deposit groupings, if applicable.' harvestable_setup: oneOf: - $ref: '#/components/schemas/harvestable_setup' nullable: true description: 'Respawn and despawn timing data for harvestable deposits.' provider_names: description: 'List of unique provider names that generate this deposit.' type: array items: type: string materials: description: 'List of materials (commodities) found in this deposit with their quality and probability data.' type: array items: $ref: '#/components/schemas/material_entry' quality_min: description: 'Minimum quality across all instances of this deposit.' type: integer nullable: true quality_max: description: 'Maximum quality across all instances of this deposit.' type: integer nullable: true relative_probability_min: description: 'Lowest relative probability among deposit instances (0-1).' type: number nullable: true relative_probability_max: description: 'Highest relative probability among deposit instances (0-1).' type: number nullable: true relative_probability_min_percent: description: 'Lowest relative probability as a percentage (0-100).' type: number nullable: true relative_probability_max_percent: description: 'Highest relative probability as a percentage (0-100).' type: number nullable: true type: object faction_index: title: 'Faction Summary' description: 'Compact faction representation used in list endpoints.' properties: uuid: description: 'Unique faction identifier.' type: string format: uuid example: 4e429470-4d4e-4c2b-a4ac-4de42ada16e0 name: description: 'Display name of the faction.' type: string example: 'Aciedo Communications' faction_type: description: 'Category of the faction. One of: Lawful, Unlawful, LawEnforcement, PrivateSecurity.' type: string example: Lawful nullable: true lawful: description: 'Whether the faction is considered lawful.' type: boolean example: true nullable: true is_npc: description: 'Whether the faction is NPC-controlled.' type: boolean example: false has_reputation: description: 'Whether the faction tracks player reputation.' type: boolean example: true link: description: 'API URL for the full faction detail.' type: string format: uri type: object faction: title: Faction description: 'Full faction detail including reputation ladder when the faction has a reputation system.' type: object allOf: - $ref: '#/components/schemas/faction_index' - properties: uuid: description: 'Unique faction identifier.' type: string format: uuid example: 4e429470-4d4e-4c2b-a4ac-4de42ada16e0 name: description: 'Display name of the faction.' type: string example: 'Aciedo Communications' description: description: 'Lore description of the faction.' type: string nullable: true default_reaction: description: 'Default reaction towards the player. One of: Friendly, Hostile, Neutral.' type: string example: Neutral faction_type: description: 'Category of the faction. One of: Lawful, Unlawful, LawEnforcement, PrivateSecurity.' type: string example: Lawful able_to_arrest: description: 'Whether the faction can arrest players.' type: boolean example: false polices_lawful_trespass: description: 'Whether the faction enforces trespass violations against lawful characters.' type: boolean example: false polices_criminality: description: 'Whether the faction actively polices criminal activity.' type: boolean example: false no_legal_rights: description: 'Whether the faction operates without legal protections.' type: boolean example: false has_reputation: description: 'Whether the faction tracks player reputation.' type: boolean example: true headquarters: description: "Location of the faction's headquarters." type: string nullable: true founded: description: 'Founding date or era of the faction.' type: string nullable: true leadership: description: 'Current leadership of the faction.' type: string nullable: true area: description: 'Primary area of operations.' type: string nullable: true focus: description: 'Primary focus or industry of the faction.' type: string nullable: true lawful: description: 'Whether the faction is considered lawful.' type: boolean nullable: true sort_order_scope: description: 'Scope key used for sort ordering within reputation tiers.' type: string nullable: true is_npc: description: 'Whether the faction is NPC-controlled.' type: boolean example: false reputation_ladder: oneOf: - $ref: '#/components/schemas/faction_reputation_ladder' nullable: true description: 'Reputation ladder with standings. Requires ?include=reputationLadder.' link: description: 'API URL for this faction.' type: string format: uri type: object faction_reputation_ladder: title: 'Faction Reputation Ladder' description: 'Reputation ladder defining standings and thresholds for a faction.' type: object allOf: - $ref: '#/components/schemas/faction_index' - properties: scope_name: description: 'Internal scope name for the reputation system.' type: string example: FactionReputation display_name: description: 'Human-readable label for the reputation scope.' type: string example: Standing nullable: true reputation_ceiling: description: 'Maximum attainable reputation value.' type: integer example: 95250 initial_reputation: description: 'Starting reputation value for new players.' type: integer example: 0 standings: description: 'Ordered list of reputation tiers from highest to lowest.' type: array items: $ref: '#/components/schemas/faction_standing' type: object faction_standing: title: 'Faction Standing' description: "A single reputation tier within a faction's reputation ladder." type: object allOf: - $ref: '#/components/schemas/faction_index' - properties: uuid: description: 'Unique standing identifier.' type: string format: uuid example: bcd1f776-9a6e-4ffd-85c4-6df64f4cf2ed name: description: 'Internal standing name.' type: string example: Affinity_Good_100_Exalted display_name: description: 'Human-readable standing name.' type: string example: Exalted nullable: true min_reputation: description: 'Minimum reputation required for this standing.' type: integer example: 10000 drift_reputation: description: 'Reputation change applied per drift cycle.' type: integer example: 0 drift_time_hours: description: 'Hours between drift cycles.' type: integer example: 0 gated: description: 'Whether this standing is gated and cannot be reached through normal progression.' type: boolean example: false type: object game_version: title: 'Game Version' properties: code: type: string example: 4.7.0-LIVE.11518367 channel: type: string example: live released_at: type: string format: date-time example: '2024-12-15T10:00:00+00:00' is_default: type: boolean example: true type: object item_description_data: title: 'Item Description Data' description: 'Data found in the description of an item, e.g. "Carrying Capacity: 2kµSCU".' properties: name: description: 'The label of the description entry, e.g. "Carrying Capacity".' type: string value: description: 'The value of the description entry, e.g. "2kµSCU".' type: string type: description: 'Deprecated: Use "value" key.' type: string deprecated: true type: object item_dimension: title: 'Item Dimension' description: 'Dimensions of an item, sourced from InventoryOccupancy in the item definition.' properties: width: description: 'Deprecated: Use dimensions, cargo_dimension, or ui_dimension instead. Width in meters, either from UIDimensions or Dimensions.' type: number format: double example: 0.52 nullable: true deprecated: true x-suffix: ' m' height: description: 'Deprecated: Use dimensions, cargo_dimension, or ui_dimension instead. Height in meters, either from UIDimensions or Dimensions.' type: number format: double example: 0.18 nullable: true deprecated: true x-suffix: ' m' length: description: 'Deprecated: Use dimensions, cargo_dimension, or ui_dimension instead. Length in meters, either from UIDimensions or Dimensions.' type: number format: double example: 1.12 nullable: true deprecated: true x-suffix: ' m' volume: description: 'Cubic volume derived from the dimensions (SCU).' type: number format: double example: 0.11 nullable: true x-suffix: ' SCU' volume_converted: description: 'Converted volume value from game data (e.g. in µSCU).' type: number nullable: true volume_converted_unit: description: 'Unit of the converted volume (e.g. "µSCU", "SCU").' type: string nullable: true true_dimension: description: 'Deprecated: Use dimensions instead. True 3D model dimensions in meters. Only present when UI values differ from the true dimensions.' properties: width: type: number format: double nullable: true height: type: number format: double nullable: true length: type: number format: double nullable: true type: object nullable: true deprecated: true dimensions: oneOf: - $ref: '#/components/schemas/item_dimension_block' nullable: true description: 'True 3D model bounding box dimensions in meters (from InventoryOccupancy.Dimensions).' cargo_dimension: oneOf: - $ref: '#/components/schemas/item_dimension_block' nullable: true description: 'Cargo grid occupancy dimensions in meters (from InventoryOccupancy.CargoGrid).' ui_dimension: oneOf: - $ref: '#/components/schemas/item_dimension_block' nullable: true description: 'UI display dimensions shown in the in-game inventory in meters (from InventoryOccupancy.UIDimensions).' type: object item_dimension_block: title: 'Item Dimension Block' description: 'A dimension block with width, height, and length in meters.' properties: width: description: 'Width in meters.' type: number format: double example: 0.52 x-suffix: ' m' height: description: 'Height in meters.' type: number format: double example: 0.18 x-suffix: ' m' length: description: 'Length in meters.' type: number format: double example: 1.12 x-suffix: ' m' type: object item_distortion: title: 'Item Distortion' description: 'Distortion information from stdItem.Distortion.' properties: decay_rate: description: 'Rate at which distortion damage recovers per second. Higher values mean faster recovery.' type: number format: double nullable: true x-suffix: ' /s' decay_delay: description: 'Delay in seconds before distortion recovery begins after taking damage.' type: number format: double nullable: true x-suffix: ' s' max: description: 'Maximum distortion pool capacity, total distortion damage the item can absorb before shutting down.' type: number format: double nullable: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true overload_ratio: description: 'Deprecated: Does not exist in game data.' type: number format: double nullable: true deprecated: true warning_ratio: description: 'Ratio of max at which a distortion warning indicator triggers (e.g. 0.75 = warning at 75%).' type: number format: double nullable: true x-tabulator-formatter: pct recovery_ratio: description: 'Threshold below which distortion must fall before the item reactivates after overload. 0 = immediate recovery.' type: number format: double nullable: true x-tabulator-formatter: pct recovery_time: description: 'Deprecated: Does not exist in game data.' type: number format: double nullable: true deprecated: true power_ratio_at_max_distortion: description: 'Power output ratio at maximum distortion. Currently always 0 (reserved for future use).' type: number format: double nullable: true power_change_only_at_max_distortion: description: 'Whether power output only changes when distortion reaches maximum (1 = yes, 0 = gradual).' type: integer nullable: true shutdown_time: description: 'Computed duration in seconds the item remains shut down (Maximum / DecayRate + DecayDelay).' type: number format: double nullable: true x-suffix: ' s' type: object item_durability: title: 'Item Durability' description: 'Durability information of an item, generated from SHealthComponentParams (health, repairable, salvageable) and SDegradationParams (lifetime).' properties: health: description: 'Hit points of the item from SHealthComponentParams.' type: number format: double nullable: true x-suffix: ' HP' lifetime: description: 'Wear lifetime in hours from SDegradationParams.MaxLifetimeHours.' type: number format: double nullable: true x-suffix: ' h' max_lifetime: description: 'Deprecated: Use lifetime.' type: number format: double nullable: true deprecated: true repairable: description: 'Whether the item can be repaired.' type: boolean salvageable: description: 'Whether the item can be salvaged.' type: boolean resistance: description: 'Damage resistance multipliers per type (Physical, Energy, Distortion, Thermal, Biochemical, Stun). The multiplier scales incoming damage: 1.0 = full damage, <1.0 = reduced damage, 0 = immune, >1.0 = increased damage.' properties: physical: description: 'Physical damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' energy: description: 'Energy damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' distortion: description: 'Distortion damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' thermal: description: 'Thermal damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' biochemical: description: 'Biochemical damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' stun: description: 'Stun damage multiplier. Incoming damage is scaled by this value.' type: number format: double nullable: true x-suffix: ' ×' type: object nullable: true type: object item_emission: title: 'Item EM / IR Emission' description: 'EM and IR Emission calculated from Resource Network' properties: ir: description: 'Infrared (thermal) emission signature. Higher values make the item easier to detect.' type: number format: double nullable: true x-suffix: ' IR' em_min: description: 'Electromagnetic emission at idle/low power (Maximum * minConsumptionFraction * lowPowerRangeModifier).' type: number format: double nullable: true x-suffix: ' EM' em_max: description: 'Electromagnetic emission at full power from EMSignature.nominalSignature.' type: number format: double nullable: true x-suffix: ' EM' em_decay: description: 'Rate at which EM drops when the item powers down (typically 0.15).' type: number format: double nullable: true x-suffix: ' /s' em_per_segment: description: 'EM per power segment unit (PowerPlant only: Maximum / Generation.Power).' type: number format: double nullable: true x-suffix: ' EM/Seg' type: object item_heat_connection: title: 'Item Heat Connection' description: 'DEPRECATED: EntityComponentHeatConnection has been removed from game data' properties: temperature_to_ir: type: number format: double nullable: true ir_temperature_threshold: description: StartIRTemperature type: number format: double nullable: true x-suffix: ' °C' overpower_heat: type: number format: double nullable: true overclock_threshold_min: type: number format: double nullable: true overclock_threshold_max: type: number format: double nullable: true thermal_energy_base: type: number format: double nullable: true thermal_energy_draw: type: number format: double nullable: true thermal_conductivity: type: number format: double nullable: true specific_heat_capacity: type: number format: double nullable: true mass: type: number format: double nullable: true x-suffix: ' kg' surface_area: type: number format: double nullable: true x-suffix: ' m²' start_cooling_temperature: type: number format: double nullable: true x-suffix: ' °C' max_cooling_rate: type: number format: double nullable: true max_temperature: type: number format: double nullable: true x-suffix: ' °C' min_temperature: type: number format: double nullable: true x-suffix: ' °C' overheat_temperature: type: number format: double nullable: true x-suffix: ' °C' recovery_temperature: type: number format: double nullable: true x-suffix: ' °C' misfire_min_temperature: type: number format: double nullable: true x-suffix: ' °C' misfire_max_temperature: type: number format: double nullable: true x-suffix: ' °C' ir_emission: description: '(StartCoolingTemperature - StartIRTemperature) * TemperatureToIR' type: number format: double nullable: true type: object deprecated: true item_inventory: title: 'Item Inventory' description: 'Container (Inventory) of an item, resolved from SCItemInventoryContainerComponentParams' properties: uuid: description: 'Unique identifier of the referenced InventoryContainer.' type: string nullable: true width: description: 'Interior width in meters (interiorDimensions.x).' type: number format: double nullable: true x-suffix: ' m' height: description: 'Interior height in meters (interiorDimensions.z).' type: number format: double nullable: true x-suffix: ' m' length: description: 'Interior depth in meters (interiorDimensions.y).' type: number format: double nullable: true x-suffix: ' m' volume: description: 'Interior volume in cubic meters (width * height * length).' type: number format: double nullable: true x-suffix: ' m³' scu: description: 'Raw SCU capacity as set in game data.' type: number format: double example: 0.002 nullable: true x-suffix: ' SCU' scu_converted: description: 'SCU capacity converted to the unit specified in the unit field (e.g. µSCU, cSCU, or SCU).' type: number format: double nullable: true x-tabulator-formatter: volumeWithUnit x-formatter-params: unitField: inventory.unit unit: description: 'Unit label displayed in the UI, e.g. "µSCU" or "SCU".' type: string nullable: true micro_scu: description: 'Capacity in µSCU. Only present when unit exponent is 0 (standard SCU).' type: number format: double nullable: true x-suffix: ' µSCU' open: description: 'Whether this is an open container (e.g. a cargo grid).' type: boolean nullable: true external: description: 'Whether this container is externally accessible (e.g. a cargo pod).' type: boolean nullable: true closed: description: 'Whether this is a closed container (e.g. a locker or personal storage).' type: boolean nullable: true min_size: description: 'Minimum item dimensions accepted by this container in meters.' properties: x: description: 'Width in meters.' type: number nullable: true x-suffix: ' m' 'y': description: 'Depth in meters.' type: number nullable: true x-suffix: ' m' z: description: 'Height in meters.' type: number nullable: true x-suffix: ' m' type: object nullable: true max_size: description: 'Maximum item dimensions accepted by this container in meters.' properties: x: description: 'Width in meters.' type: number nullable: true x-suffix: ' m' 'y': description: 'Depth in meters.' type: number nullable: true x-suffix: ' m' z: description: 'Height in meters.' type: number nullable: true x-suffix: ' m' type: object nullable: true min_scu_box: description: 'Smallest standard SCU box whose dimensions satisfy the min item size. Powers of two: 0.125, 1, 2, 4, 8, 16, 32.' type: number example: 1 nullable: true x-suffix: ' SCU' max_scu_box: description: 'Largest standard SCU box that fits within the max item size and interior dimensions. Powers of two: 0.125, 1, 2, 4, 8, 16, 32.' type: number example: 8 nullable: true x-suffix: ' SCU' type: object item_link: title: 'Item Link' description: 'Link information to an Item' type: object allOf: - properties: uuid: description: 'Unique identifier of the item.' type: string name: description: 'Display name of the item.' type: string class_name: description: 'Internal class name of the item definition.' type: string example: 987_jacket_03_01_04 type: description: 'Item type identifier (e.g. Weapon, Armor, Clothing).' type: string type_label: description: 'Human-readable label for the item type.' type: string nullable: true sub_type: description: 'Item sub-type identifier.' type: string nullable: true sub_type_label: description: 'Human-readable label for the item sub-type.' type: string nullable: true classification: description: 'Dot-separated classification path (e.g. FPS.Clothing.Torso).' type: string example: FPS.Clothing.Torso nullable: true classification_label: description: 'Human-readable label for the item classification.' type: string nullable: true is_base_variant: description: 'Whether this item is the base variant.' type: boolean variant_name: description: 'Extracted variant name, e.g. "Executive Edition" or "Aqua".' type: string nullable: true manufacturer: $ref: '#/components/schemas/manufacturer_link' link: description: 'API URL for the full item resource.' type: string web_url: description: 'Web URL for the item detail page.' type: string nullable: true size: description: 'Item size (1-12 for vehicle items, smaller for FPS).' type: integer nullable: true base_variant: description: 'API URL of the base variant item. Only present for variant items.' type: string nullable: true variants: description: 'List of variant items sharing the same base item.' type: array items: $ref: '#/components/schemas/item_link' nullable: true type: object - $ref: '#/components/schemas/metadata' item_port: title: 'Item Port' properties: name: description: 'Internal port identifier (e.g. hardpoint_weapon_wing_right).' type: string display_name: description: 'Human-readable port name, resolved from localization key.' type: string nullable: true position: description: 'Derived position label (e.g. magazine_well, optics, underbarrel, barrel).' type: string nullable: true size: description: 'Maximum item size this port accepts (same as sizes.max).' type: integer nullable: true sizes: description: 'Size range of items this port accepts.' properties: min: description: 'Minimum item size.' type: integer nullable: true max: description: 'Maximum item size.' type: integer nullable: true type: object compatible_types: type: array items: $ref: '#/components/schemas/item_port_type' nullable: true types: description: 'Structured compatible type entries with type and sub-types.' type: array items: type: string nullable: true tags: description: 'Tags provided by this port to attached items (from PortTags attribute).' type: array items: type: string nullable: true required_tags: description: 'Tags an item must have to attach to this port (from RequiredPortTags, $ prefix stripped).' type: array items: type: string nullable: true flags: description: 'Port flags controlling behavior (e.g. editable, uneditable, invisible, select).' type: array items: type: string nullable: true editable: description: 'Whether the port can be modified in-game.' type: boolean nullable: true uneditable: description: 'Deprecated: Use editable (inverted value).' type: boolean nullable: true deprecated: true equipped_item_uuid: description: 'UUID of the equipped item' type: string nullable: true type: description: 'Port type derived from CompatibleTypes (e.g. WeaponGun, MissileLauncher).' type: string nullable: true sub_type: description: 'Port sub-type derived from CompatibleTypes.' type: string nullable: true port_tags: description: 'Tags provided by this port. Same as tags field, for vehicle port_tags compat.' type: array items: type: string nullable: true ports: description: 'Sub-ports from the equipped item.' type: array items: $ref: '#/components/schemas/item_port' nullable: true equipped_item: oneOf: - $ref: '#/components/schemas/game_port_item' nullable: true type: object item_port_type: title: 'Item Port Compatible Types' properties: type: description: 'Major item type this port accepts (e.g. WeaponGun, Paints, Seat).' type: string nullable: true sub_types: description: 'Sub-types within the major type that this port accepts (e.g. Small, Medium).' type: array items: type: string nullable: true type: object item_power_connection: title: 'Item Power Connection' description: 'DEPRECATED: EntityComponentPowerConnection has been removed from game data (4.7.0). Power data is available via ResourceNetwork.' properties: power_base: type: number format: double nullable: true power_draw: type: number format: double nullable: true throttleable: description: IsThrottleable type: boolean nullable: true overclockable: description: IsOverclockable type: boolean nullable: true overclock_threshold_min: type: number format: double nullable: true overclock_threshold_max: type: number format: double nullable: true overclock_performance: type: number format: double nullable: true overpower_performance: type: number format: double nullable: true power_to_em: type: number format: double nullable: true decay_rate_em: type: number format: double nullable: true em_min: description: 'PowerBase * PowerToEm. Use ResourceNetwork data instead.' type: number format: double nullable: true em_max: description: 'PowerDraw * PowerToEm. Use ResourceNetwork data instead.' type: number format: double nullable: true type: object deprecated: true game_item: title: Item description: 'An item in Star Citizen, based on EntityClassDefinition XML files.' properties: uuid: description: 'Unique identifier of the item.' type: string slug: description: 'URL-friendly slug for the item.' type: string nullable: true name: description: 'Display name of the item.' type: string class_name: description: 'Internal class name of the item definition.' type: string classification: description: 'Classification generated by ScDataDumper.' type: string example: FPS.Clothing.Torso classification_label: description: 'Human-readable label for the item classification' type: string nullable: true description: description: 'Item description text, or a translation object with localized strings.' nullable: true oneOf: - type: string - type: array items: $ref: '#/components/schemas/translation' size: description: 'Item size from AttachDef. Vehicle items range 1-12, FPS items are smaller.' type: integer example: 1 nullable: true mass: description: 'Physical mass in kilograms from SEntityRigidPhysicsControllerParams.' type: number format: double example: 1000 nullable: true x-suffix: ' kg' rarity: description: 'Item rarity from stdItem.Rarity. Only present when the item has rarity data.' type: string enum: - Common - Uncommon - Rare - Epic - Legendary example: Common nullable: true event_source: description: 'Event or reward source labels for limited/event items. Empty for regular items.' type: array items: type: string example: - IAE ammo_feed: oneOf: - $ref: '#/components/schemas/item_link' nullable: true description: 'Ammo feeder target for ammo-feeder backpacks. Resolves the magazine this item feeds to an item link. Only present for game data >= 4.9.0.' x-since: 4.9.0 is_base_variant: description: 'Whether this item is the base variant (has no parent variant).' type: boolean is_craftable: description: 'Whether this item can be crafted via blueprints.' type: boolean is_lootable: description: 'Whether this item can be generated as loot.' type: boolean blueprint: description: 'Crafting blueprints that produce this item. Only returned when the item is craftable. Use include=blueprints to get full blueprint data instead of links.' type: array items: oneOf: - $ref: '#/components/schemas/item_blueprint_link' - $ref: '#/components/schemas/blueprint' nullable: true grade: description: 'Only returned for Ship.* items (derived formatting for ship grades).' type: string nullable: true class: description: 'Only returned for Ship.* items.' type: string nullable: true description_data: description: 'Key/value pairs derived from the item description.' type: array items: $ref: '#/components/schemas/item_description_data' nullable: true manufacturer_description: description: 'Manufacturer name extracted from the description data entries.' type: string nullable: true manufacturer: oneOf: - $ref: '#/components/schemas/manufacturer_link' nullable: true type: description: 'Item type identifier (NOITEM_ prefix removed), e.g. Weapon, Armor, Clothing.' type: string nullable: true type_label: description: 'Human-readable label for the item type' type: string nullable: true type_web_url: description: 'Web URL for filtering items by type' type: string nullable: true sub_type: description: 'Item sub-type identifier, e.g. Small, Medium, Rocket.' type: string nullable: true sub_type_label: description: 'Human-readable label for the item sub-type' type: string nullable: true position: description: 'Only returned for WeaponAttachment items (non-placeholder). Maps sub_type to a display slot name.' type: string example: Optic nullable: true max_mounts: description: 'Only returned for turret-like items.' type: integer nullable: true max_missiles: description: 'Only returned for MissileLauncher turret-like items.' type: integer nullable: true max_bombs: description: 'Only returned for BombLauncher turret-like items.' type: integer nullable: true min_size: description: 'Only returned for turret-like items.' type: integer nullable: true max_size: description: 'Only returned for turret-like items.' type: integer nullable: true dimension: $ref: '#/components/schemas/item_dimension' inventory: oneOf: - $ref: '#/components/schemas/item_inventory' nullable: true tags: description: 'Item tags from AttachDef.' type: array items: type: string nullable: true required_tags: description: 'Required tags an item must match to attach.' type: array items: type: string nullable: true entity_tags: description: 'Entity tag UUIDs from the database relationship (empty array when not loaded).' type: array items: type: string nullable: true entity_tag_map: description: 'Entity tags from the database relationship (empty array when not loaded).' type: array items: properties: uuid: description: 'Unique identifier of the entity tag.' type: string name: description: 'Name of the entity tag.' type: string type: object nullable: true interactions: description: 'Generated from SInteractionPointParams' type: array items: type: string nullable: true ports: description: 'Item ports derived from stdItem.Ports.' type: array items: $ref: '#/components/schemas/item_port' nullable: true heat: oneOf: - $ref: '#/components/schemas/item_heat_connection' nullable: true temperature: oneOf: - $ref: '#/components/schemas/item_temperature' nullable: true power: oneOf: - $ref: '#/components/schemas/item_power_connection' nullable: true distortion: oneOf: - $ref: '#/components/schemas/item_distortion' nullable: true durability: oneOf: - $ref: '#/components/schemas/item_durability' nullable: true resource_container: oneOf: - $ref: '#/components/schemas/resource_container' nullable: true resource_network: oneOf: - $ref: '#/components/schemas/resource_network' nullable: true emission: oneOf: - $ref: '#/components/schemas/item_emission' nullable: true seat: oneOf: - $ref: '#/components/schemas/seat' nullable: true ammunition: oneOf: - $ref: '#/components/schemas/ammunition' nullable: true temperature_resistance: oneOf: - $ref: '#/components/schemas/temperature_resistance' nullable: true radiation_resistance: oneOf: - $ref: '#/components/schemas/radiation_resistance' nullable: true gforce_resistance: description: 'G-force tolerance modifier. Positive values increase tolerance, negative values reduce it. 0 = neutral.' type: number format: double example: 0.9 nullable: true armor: oneOf: - $ref: '#/components/schemas/vehicle_armor' nullable: true cooler: oneOf: - $ref: '#/components/schemas/cooler' nullable: true flight_controller: oneOf: - $ref: '#/components/schemas/flight_controller' nullable: true fuel_tank: oneOf: - $ref: '#/components/schemas/fuel_tank' nullable: true fuel_intake: oneOf: - $ref: '#/components/schemas/fuel_intake' nullable: true hacking_chip: oneOf: - $ref: '#/components/schemas/hacking_chip' nullable: true mining_laser: oneOf: - $ref: '#/components/schemas/mining_laser' nullable: true mining_module: oneOf: - $ref: '#/components/schemas/mining_module' nullable: true mining_modifier: oneOf: - $ref: '#/components/schemas/mining_modifier' nullable: true mining_gadget: oneOf: - $ref: '#/components/schemas/mining_module' nullable: true description: 'Mining gadget currently resolves using the mining_module schema.' quantum_drive: oneOf: - $ref: '#/components/schemas/quantum_drive' nullable: true quantum_interdiction_generator: oneOf: - $ref: '#/components/schemas/quantum_interdiction_generator' nullable: true self_destruct: oneOf: - $ref: '#/components/schemas/self_destruct' nullable: true shield: oneOf: - $ref: '#/components/schemas/shield' nullable: true shield_controller: oneOf: - $ref: '#/components/schemas/shield_controller' nullable: true jump_drive: oneOf: - $ref: '#/components/schemas/jump_drive' nullable: true thruster: oneOf: - $ref: '#/components/schemas/thruster' nullable: true power_plant: oneOf: - $ref: '#/components/schemas/power_plant' nullable: true radar: oneOf: - $ref: '#/components/schemas/radar' nullable: true cargo_grid: oneOf: - $ref: '#/components/schemas/item_inventory' nullable: true clothing: description: 'Note: FPS armor currently also populates this key due to resource logic. Prefer returning suit_armor instead.' nullable: true oneOf: - $ref: '#/components/schemas/clothing' - $ref: '#/components/schemas/suit_armor' suit_armor: oneOf: - $ref: '#/components/schemas/suit_armor' nullable: true description: 'FPS Armor' bomb: oneOf: - $ref: '#/components/schemas/bomb' nullable: true missile: oneOf: - $ref: '#/components/schemas/missile' nullable: true missile_rack: oneOf: - $ref: '#/components/schemas/missile_rack' nullable: true counter_measure: oneOf: - $ref: '#/components/schemas/counter_measure' nullable: true emp: oneOf: - $ref: '#/components/schemas/emp' nullable: true personal_weapon: oneOf: - $ref: '#/components/schemas/personal_weapon' nullable: true vehicle_weapon: oneOf: - $ref: '#/components/schemas/vehicle_weapon' nullable: true melee_weapon: oneOf: - $ref: '#/components/schemas/melee_weapon' nullable: true grenade: oneOf: - $ref: '#/components/schemas/grenade' nullable: true knife: oneOf: - $ref: '#/components/schemas/melee_weapon' nullable: true deprecated: true turret: oneOf: - $ref: '#/components/schemas/turret' nullable: true tractor_beam: oneOf: - $ref: '#/components/schemas/tractor_beam' nullable: true food: oneOf: - $ref: '#/components/schemas/food' nullable: true medical: oneOf: - $ref: '#/components/schemas/medicine' nullable: true weapon_rack: oneOf: - $ref: '#/components/schemas/weapon_rack' nullable: true weapon_modifier: oneOf: - $ref: '#/components/schemas/weapon_modifier' nullable: true iron_sight: oneOf: - $ref: '#/components/schemas/weapon_attachment_iron_sight' nullable: true laser_pointer: oneOf: - $ref: '#/components/schemas/weapon_attachment_laser_pointer' nullable: true flashlight: oneOf: - $ref: '#/components/schemas/weapon_attachment_flashlight' nullable: true magazine: oneOf: - $ref: '#/components/schemas/weapon_attachment_magazine' nullable: true compensator: oneOf: - $ref: '#/components/schemas/weapon_attachment_barrel_attachment' nullable: true flash_hider: oneOf: - $ref: '#/components/schemas/weapon_attachment_barrel_attachment' nullable: true base_variant: oneOf: - $ref: '#/components/schemas/item_link' nullable: true variants: type: array items: $ref: '#/components/schemas/item_link' nullable: true related_items: oneOf: - $ref: '#/components/schemas/item_related_items' nullable: true description: 'Only returned when `include=related_items` is requested.' shops: description: 'Deprecated: shop data is not available in the source files anymore.' type: array items: type: object nullable: true deprecated: true images: description: 'Images from external sources for this item.' type: array items: properties: source: description: 'Image source identifier' type: string example: starcitizen.tools thumbnail_url: description: 'URL of the thumbnail image.' type: string nullable: true thumbnail_width: description: 'Thumbnail width in pixels.' type: integer nullable: true thumbnail_height: description: 'Thumbnail height in pixels.' type: integer nullable: true original_url: description: 'URL of the original full-size image.' type: string nullable: true original_width: description: 'Original image width in pixels.' type: integer nullable: true original_height: description: 'Original image height in pixels.' type: integer nullable: true type: object nullable: true uex_prices: description: 'Item prices from UEX Corp API.' properties: purchase: description: 'Purchase prices from UEX Corp.' type: array items: $ref: '#/components/schemas/uex_price' type: object vehicles: description: 'Only returned when `include=vehicles` is requested. Vehicles that have this item installed.' type: array items: $ref: '#/components/schemas/vehicle_link' nullable: true web_url: description: 'Web URL for item detail page' type: string link: description: 'API URL for item detail endpoint' type: string updated_at: description: "Date/time this item's version-specific data was updated." type: string format: date-time version: description: 'Game version code' type: string example: 4.4.0-LIVE.12340123 type: object item_blueprint_link: title: 'Item Blueprint Link' properties: uuid: description: 'Unique identifier of the blueprint.' type: string format: uuid name: description: 'Display name of the blueprint.' type: string link: description: 'API URL for the blueprint detail endpoint.' type: string format: uri type: object item_related_link: title: 'Related Item Link' description: 'Link information for a related item with full classification' properties: uuid: description: 'Unique identifier of the related item.' type: string name: description: 'Display name of the related item.' type: string class_name: description: 'Internal class name of the related item.' type: string nullable: true type: description: 'Item type identifier.' type: string nullable: true type_label: description: 'Human-readable label for the item type' type: string nullable: true sub_type: description: 'Item sub-type identifier.' type: string nullable: true sub_type_label: description: 'Human-readable label for the item sub-type' type: string nullable: true classification: description: 'Dot-separated classification path.' type: string nullable: true classification_label: description: 'Human-readable label for the item classification' type: string nullable: true is_base_variant: description: 'Whether this related item is the base variant.' type: boolean variant_name: description: 'Variant name if this is a variant item.' type: string nullable: true manufacturer: description: 'Manufacturer information with link' properties: code: type: string nullable: true name: type: string nullable: true link: type: string type: object nullable: true version: description: 'Game version code.' type: string nullable: true link: description: 'API URL for the related item.' type: string web_url: description: 'Web URL for the related item.' type: string size: description: 'Item size.' type: integer nullable: true grade: description: 'Item grade.' type: integer nullable: true grade_label: description: 'Grade (A/B/C/D for Ship items)' type: string nullable: true class: description: 'Item class.' type: string nullable: true type: object item_related_link_ext: title: 'Related Item Link (Extended)' description: 'Related item link with classification (set items)' allOf: - $ref: '#/components/schemas/item_related_link' item_related_items: title: 'Related Items' description: 'Aggregated related information for base/variants and set items' properties: set_name: type: string nullable: true base_item: oneOf: - $ref: '#/components/schemas/item_related_link' nullable: true variant_items: type: array items: $ref: '#/components/schemas/item_related_link' nullable: true set_items: type: array items: $ref: '#/components/schemas/item_related_link_ext' nullable: true type: object item_temperature: title: 'Item Temperature' description: 'Temperature thresholds in Celsius, converted from the SEntityPhysicsControllerParams temperature system.' properties: unit: description: 'Temperature unit (always "C" for Celsius).' type: string nullable: true cooling_threshold: description: 'Temperature in Celsius at which active cooling begins.' type: number format: double nullable: true x-suffix: ' °C' ir_threshold: description: 'Temperature in Celsius above which IR emission becomes detectable.' type: number format: double nullable: true x-suffix: ' °C' overheat_threshold: description: 'Temperature in Celsius at which the overheat warning triggers (before full overheat).' type: number format: double nullable: true x-suffix: ' °C' overheat_temperature: description: 'Deprecated: Use overheat_threshold.' type: number format: double nullable: true deprecated: true max_temperature: description: 'Temperature in Celsius at which the item fully overheats and shuts down.' type: number format: double nullable: true x-suffix: ' °C' recovery_temperature: description: 'Temperature in Celsius the item must cool to before recovering from overheat.' type: number format: double nullable: true x-suffix: ' °C' type: object game_port_item: title: 'Equipped Port Item' description: 'Item equipped in a port, with basic item data, optional manufacturer, and conditional resource network and emission details.' type: object allOf: - $ref: '#/components/schemas/item_related_items' - properties: uuid: description: 'Unique identifier of the item.' type: string name: description: 'Display name of the item.' type: string class_name: description: 'Internal class name of the item definition.' type: string type: description: 'AttachDef@Type (NOITEM_ prefix removed)' type: string nullable: true type_label: description: 'Human-readable label for the item type' type: string nullable: true sub_type: description: AttachDef@SubType type: string nullable: true sub_type_label: description: 'Human-readable label for the item sub-type' type: string nullable: true classification: description: 'Dot-separated classification path (e.g. FPS.Clothing.Torso).' type: string example: FPS.Clothing.Torso nullable: true classification_label: description: 'Human-readable label for the item classification' type: string nullable: true is_base_variant: description: 'Whether this item is the base variant (has no parent variant).' type: boolean variant_name: description: 'Extracted variant name, e.g. "Executive Edition" or "Aqua"' type: string nullable: true link: description: 'API URL for item detail endpoint' type: string web_url: description: 'Web URL for item detail page' type: string nullable: true size: description: AttachDef@Size type: integer nullable: true mass: description: 'Generated from SEntityRigidPhysicsControllerParams' type: number format: double nullable: true x-suffix: ' kg' grade: description: 'Derived formatting for ship grades (A, B, C, D) or extracted from DescriptionData.Grade' type: string nullable: true class: description: 'From DescriptionData.Class if not set directly' type: string nullable: true manufacturer: oneOf: - $ref: '#/components/schemas/manufacturer_link' nullable: true description: 'Present when manufacturer is set' resource_network: oneOf: - $ref: '#/components/schemas/resource_network' nullable: true description: 'Present when stdItem.ResourceNetwork exists' emission: oneOf: - $ref: '#/components/schemas/item_emission' nullable: true description: 'Present when stdItem.ResourceNetwork exists; calculated emission values' version: description: 'Game version code' type: string example: 4.4.0-LIVE.12340123 type: object game_port_item_summary: title: 'Equipped Port Item Summary' description: 'Lightweight item summary derived from raw loadout JSON. No database queries are performed. Used on index routes where full item resolution is too expensive.' properties: uuid: description: 'Unique identifier of the equipped item.' type: string nullable: true name: description: 'Item name from loadout data.' type: string nullable: true class_name: description: 'SC class name of the item.' type: string nullable: true type: description: 'Item type (NOITEM_ prefix removed, before dot).' type: string nullable: true sub_type: description: 'Item sub-type (after dot).' type: string nullable: true size: description: 'Maximum port size as proxy for item size.' type: integer nullable: true grade: description: 'Grade from loadout data.' type: integer nullable: true manufacturer: description: 'Manufacturer name from loadout data.' properties: name: description: 'Manufacturer display name.' type: string nullable: true type: object nullable: true link: description: 'API URL for item detail endpoint.' type: string nullable: true web_url: description: 'Web URL for item detail page.' type: string nullable: true type: object resource_container: title: 'Resource Container' description: 'Container data for items that can hold resources (e.g. cargo or consumables).' properties: mass: description: 'Container mass in kilograms.' type: number format: double nullable: true x-suffix: ' kg' immutable: description: 'Whether the container contents cannot be changed.' type: boolean nullable: true default_fill_fraction: description: 'Initial fill fraction (0-1).' type: number format: double nullable: true x-tabulator-formatter: pct capacity: properties: value: description: 'Raw capacity value.' type: number format: double nullable: true unit: description: 'Unit abbreviation (e.g. "SCU").' type: string nullable: true unit_name: description: 'Full unit name (e.g. "Standard Cargo Units").' type: string nullable: true scu: description: 'Capacity converted to SCU.' type: number format: double nullable: true x-suffix: ' SCU' type: object nullable: true inclusive_resources: description: 'UUIDs of resources allowed in this container.' type: array items: type: string nullable: true default_composition: description: 'Default composition entries and weights.' type: array items: $ref: '#/components/schemas/resource_container_composition_entry' nullable: true type: object resource_container_composition_entry: title: 'Resource Container Composition Entry' properties: entry: description: 'UUID of the resource/commodity in this composition entry.' type: string nullable: true weight: description: 'Weight or proportion of this entry in the composition.' type: number format: double nullable: true commodity: oneOf: - $ref: '#/components/schemas/resource_container_commodity_link' nullable: true type: object resource_container_commodity_link: title: 'Commodity Link' description: 'Link to the commodity that this composition entry references.' properties: uuid: description: 'Unique identifier of the commodity.' type: string format: uuid name: description: 'Display name of the commodity.' type: string slug: description: 'URL-friendly slug for the commodity.' type: string nullable: true link: description: 'API URL for the commodity detail endpoint.' type: string nullable: true type: object resource_network_delta: title: 'Resource Network Delta' description: 'Single resource change entry applied when a network state is active.' properties: type: description: 'Delta type (Consumption, Generation, Conversion, Storage, NetworkReflection).' type: string example: Consumption nullable: true resource: description: 'Target resource affected (Power, Fuel, Coolant, QuantumFuel, Shield, LifeSupport).' type: string example: Power nullable: true rate: description: 'Rate applied per tick (game native units). Typical power draw ~2-5; fuel draw often 0.01.' type: number format: double example: 2.2 nullable: true minimum_fraction: description: 'Minimum fraction of the resource that must be available before the delta applies.' type: number format: double example: 0.25 nullable: true x-tabulator-formatter: pct generated_resource: description: 'Resource produced by conversion/storage deltas.' type: string example: Coolant nullable: true generated_rate: description: 'Rate of the generated resource.' type: number format: double example: 22 nullable: true discharge: description: 'Whether stored resource is discharged (0/1 flag).' type: number format: double example: 0 nullable: true no_over_generation: description: 'Prevents generating above capacity (0/1 flag).' type: number format: double example: 0 nullable: true binary_evaluation: description: 'Binary reflection value for NetworkReflection deltas.' type: number format: double example: 1 nullable: true composition: description: 'Optional composition entries describing how generated resource is assembled.' type: array items: properties: container_resource: description: 'UUID of the container resource.' type: string example: bcc8cde9-de58-4e6b-8ee9-37d4aaa507eb nullable: true ratio: description: 'Ratio of this resource in the composition.' type: number format: double example: 1 nullable: true type: object nullable: true type: object resource_network_state: title: 'Resource Network State' description: 'Named state in the resource network with its signature and deltas.' properties: name: description: 'State name (e.g. Online). Can be empty on some items.' type: string example: Online nullable: true signature: description: 'Electromagnetic/infrared signature while in this state.' properties: em: description: 'Electromagnetic signature value in this state.' type: number format: double example: 1490 nullable: true x-suffix: ' EM' ir: description: 'Infrared signature value in this state.' type: number format: double example: 7260 nullable: true x-suffix: ' IR' type: object nullable: true deltas: type: array items: $ref: '#/components/schemas/resource_network_delta' nullable: true power_ranges: description: 'Power range modifiers applied when this state is active.' type: array items: properties: start: description: 'Start value of the power range.' type: number format: double nullable: true modifier: description: 'Modifier applied within this power range.' type: number format: double nullable: true register_range: description: 'Whether this range should be registered.' type: boolean nullable: true type: object nullable: true type: object resource_network: title: 'Resource Network' description: 'Networked resource behaviour for an item, including power/fuel consumption, generation, and priority.' properties: is_networked: description: 'Whether the item participates in the ship/station resource network.' type: boolean example: true nullable: true is_relay: description: 'True when the item acts as a relay node.' type: boolean example: false nullable: true default_priority: description: 'Processing priority within the network (higher runs earlier). Commonly 50; fuel tanks use 100.' type: integer example: 50 nullable: true states: description: 'List of available network states and their resource deltas.' type: array items: $ref: '#/components/schemas/resource_network_state' nullable: true repair: description: 'Repair configuration for this networked item.' properties: max_repair_count: description: 'Maximum number of repairs allowed.' type: integer nullable: true time_to_repair: description: 'Time required to perform a repair (seconds).' type: number format: double nullable: true x-suffix: ' s' health_ratio: description: 'Health ratio threshold for repair eligibility.' type: number format: double nullable: true x-tabulator-formatter: pct type: object nullable: true usage: description: 'Resource usage configuration defining minimum and maximum consumption rates.' properties: power: description: 'Power usage range.' properties: min: description: 'Minimum power usage.' type: number format: double nullable: true x-suffix: ' pwr' max: description: 'Maximum power usage.' type: number format: double nullable: true x-suffix: ' pwr' minimum: description: 'Deprecated: Use min.' type: number format: double nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true type: object nullable: true coolant: description: 'Coolant usage range.' properties: min: description: 'Minimum coolant usage.' type: number format: double nullable: true max: description: 'Maximum coolant usage.' type: number format: double nullable: true minimum: description: 'Deprecated: Use min.' type: number format: double nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true type: object nullable: true type: object nullable: true generation: description: 'Resource generation configuration defining production rates.' properties: coolant: description: 'Coolant generation rate.' type: number format: double nullable: true power: description: 'Power generation rate.' type: number format: double nullable: true x-suffix: ' pwr' type: object nullable: true type: object ammunition_damage_falloff: title: 'Ammunition Damage Falloff (v2)' description: 'Legacy damage falloff entry grouped by type. Deprecated in favour of the damage_drop_* fields.' properties: Physical: type: number format: double nullable: true Energy: type: number format: double nullable: true Distortion: type: number format: double nullable: true Thermal: type: number format: double nullable: true Biochemical: type: number format: double nullable: true Stun: type: number format: double nullable: true type: object deprecated: true ammunition: title: Ammunition description: 'Projectile behaviour and damage data from Item.stdItem.Ammunition. Values are taken directly from game data without simulation or derived calculations.' properties: uuid: description: 'Unique identifier for this ammunition type.' type: string nullable: true speed: description: 'Projectile speed in m/s.' type: number format: double example: 600 nullable: true x-suffix: ' m/s' lifetime: description: 'Lifetime in seconds before the projectile despawns.' type: number format: double example: 2 nullable: true x-suffix: ' s' range: description: 'Effective range in meters (speed × lifetime when provided by the game).' type: number format: double example: 1200 nullable: true x-suffix: ' m' size: description: 'Projectile size used by the game for collision/damage logic.' type: integer example: 1 nullable: true capacity: description: 'Maximum ammo or charge stored in the weapon battery/magazine for this ammo definition.' type: integer example: 80 nullable: true initial_capacity: description: 'Starting ammo or charge loaded when the item spawns.' type: integer example: 80 nullable: true damage_falloff_level_1: description: 'Damage retention percentage at penetration level 1.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pct damage_falloff_level_2: description: 'Damage retention percentage at penetration level 2.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pct damage_falloff_level_3: description: 'Damage retention percentage at penetration level 3.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pct max_penetration_thickness: description: 'Maximum armor or material thickness (m) this round can pierce.' type: number format: double example: 0.5 nullable: true x-suffix: ' m' penetration: description: 'Penetration behaviour detailing distance and angle effectiveness.' properties: base_distance: description: 'Base penetration distance.' type: number format: double example: 60 nullable: true x-suffix: ' m' near_radius: description: 'Near radius for penetration falloff.' type: number format: double nullable: true x-suffix: ' m' far_radius: description: 'Far radius for penetration falloff.' type: number format: double nullable: true x-suffix: ' m' angle: description: 'Maximum impact angle (degrees) before ricochet/stop.' type: number format: double example: 14.6 nullable: true x-suffix: ' °' type: object nullable: true impact_damage: description: 'Deprecated: Use impact_damage_map instead. Direct hit damage per projectile, split by damage type. Zero values are omitted.' type: array items: $ref: '#/components/schemas/weapon_damage_entry' nullable: true deprecated: true detonation_damage: description: 'Deprecated: Use detonation_damage_map instead. Explosion damage applied on detonation-capable projectiles.' type: array items: $ref: '#/components/schemas/weapon_damage_entry' nullable: true deprecated: true impact_damage_map: description: 'Direct hit damage mapped by snake_case damage type keys. Replacement for impact_damage array.' properties: physical: description: 'Physical impact damage.' type: number format: double nullable: true energy: description: 'Energy impact damage.' type: number format: double nullable: true distortion: description: 'Distortion impact damage.' type: number format: double nullable: true thermal: description: 'Thermal impact damage.' type: number format: double nullable: true biochemical: description: 'Biochemical impact damage.' type: number format: double nullable: true stun: description: 'Stun impact damage.' type: number format: double nullable: true type: object nullable: true detonation_damage_map: description: 'Explosion damage mapped by snake_case damage type keys. Replacement for detonation_damage array.' properties: physical: description: 'Physical explosion damage.' type: number format: double nullable: true energy: description: 'Energy explosion damage.' type: number format: double nullable: true distortion: description: 'Distortion explosion damage.' type: number format: double nullable: true thermal: description: 'Thermal explosion damage.' type: number format: double nullable: true biochemical: description: 'Biochemical explosion damage.' type: number format: double nullable: true stun: description: 'Stun explosion damage.' type: number format: double nullable: true type: object nullable: true explosion_radius: description: 'Minimum and maximum explosion radius for detonation-capable projectiles.' properties: min: description: 'Minimum explosion radius (meters).' type: number format: double nullable: true x-suffix: ' m' max: description: 'Maximum explosion radius (meters).' type: number format: double nullable: true x-suffix: ' m' type: object nullable: true impulse_scale: description: 'Impulse multiplier applied on impact. Typically always 1.' type: number format: double example: 1 nullable: true bullet_type: description: 'Projectile type: 2 = ballistic, -1 = energy/laser.' type: integer example: -1 nullable: true damage_drop_min_distance: description: 'Damage values at the distance where falloff begins. Damage remains constant up to this point.' properties: physical: description: 'Physical damage at start of falloff.' type: number format: double example: 0 nullable: true energy: description: 'Energy damage at start of falloff.' type: number format: double example: 200 nullable: true distortion: description: 'Distortion damage at start of falloff.' type: number format: double example: 200 nullable: true thermal: description: 'Thermal damage at start of falloff.' type: number format: double example: 0 nullable: true biochemical: description: 'Biochemical damage at start of falloff.' type: number format: double example: 0 nullable: true stun: description: 'Stun damage at start of falloff.' type: number format: double example: 200 nullable: true total: description: 'Sum of all damage types.' type: number format: double example: 400 nullable: true type: object nullable: true damage_drop_per_meter: description: 'Damage reduction per meter after the min distance is exceeded.' properties: physical: description: 'Physical damage lost per meter.' type: number format: double example: 0 nullable: true energy: description: 'Energy damage lost per meter.' type: number format: double example: 0.01 nullable: true distortion: description: 'Distortion damage lost per meter.' type: number format: double example: 0.01 nullable: true thermal: description: 'Thermal damage lost per meter.' type: number format: double example: 0 nullable: true biochemical: description: 'Biochemical damage lost per meter.' type: number format: double example: 0 nullable: true stun: description: 'Stun damage lost per meter.' type: number format: double example: 0.01 nullable: true total: description: 'Sum of all damage drop rates.' type: number format: double example: 0.03 nullable: true type: object nullable: true damage_drop_min_damage: description: 'Floor damage values that the projectile never drops below regardless of distance.' properties: physical: description: 'Minimum physical damage floor.' type: number format: double example: 10 nullable: true energy: description: 'Minimum energy damage floor.' type: number format: double example: 10 nullable: true distortion: description: 'Minimum distortion damage floor.' type: number format: double example: 5 nullable: true thermal: description: 'Minimum thermal damage floor.' type: number format: double example: 0 nullable: true biochemical: description: 'Minimum biochemical damage floor.' type: number format: double example: 0 nullable: true stun: description: 'Minimum stun damage floor.' type: number format: double example: 6 nullable: true total: description: 'Sum of all minimum damage floors.' type: number format: double example: 31 nullable: true type: object nullable: true bullet_impulse_falloff: description: 'How impact force (impulse) diminishes with distance.' properties: min_distance: description: 'Distance in meters before impulse falloff begins.' type: number format: double example: 0 nullable: true x-suffix: ' m' drop_falloff: description: 'Impulse reduction rate per meter after min distance.' type: number format: double example: 0.005 nullable: true max_falloff: description: 'Maximum impulse reduction fraction (0-1).' type: number format: double example: 0.3 nullable: true x-tabulator-formatter: pct type: object nullable: true bullet_electron: description: 'Electron chain parameters for weapons that arc between targets.' properties: jump_range: description: 'Maximum range of each electron jump in meters.' type: number format: double example: 0 nullable: true x-suffix: ' m' maximum_jumps: description: 'Maximum number of chain jumps to additional targets.' type: integer example: 0 nullable: true residual_charge_multiplier: description: 'Damage multiplier for each subsequent jump.' type: number format: double example: 0 nullable: true type: object nullable: true conversion_rate: description: 'Cargo volume consumed per round in microSCU.' type: integer example: 129 nullable: true x-suffix: ' µSCU' damage_falloffs: description: 'Deprecated: Use damage_drop* data.' properties: min_distance: oneOf: - $ref: '#/components/schemas/ammunition_damage_falloff' nullable: true per_meter: oneOf: - $ref: '#/components/schemas/ammunition_damage_falloff' nullable: true min_damage: oneOf: - $ref: '#/components/schemas/ammunition_damage_falloff' nullable: true type: object nullable: true deprecated: true piercability: description: 'Deprecated: use damage_falloff_level_* and max_penetration_thickness when present.' type: object nullable: true deprecated: true type: object vehicle_armor: title: 'Vehicle Armor' description: 'Armor characteristics for ship and vehicle hull plating. Signal multipliers affect detectability (values < 1.0 reduce signature for stealth, > 1.0 increase signature). Damage multipliers determine resistance to damage types (lower values = more resistant).' properties: uuid: description: 'Armor item UUID.' type: string nullable: true health: description: 'Armor health points from Durability system.' type: number format: double nullable: true signal_infrared: description: 'Deprecated: Use signal_multiplier.infrared instead. Infrared signature multiplier. Lower values make the ship harder to detect via heat signature.' type: number format: double example: 1 nullable: true deprecated: true signal_electromagnetic: description: 'Deprecated: Use signal_multiplier.electromagnetic instead. Electromagnetic signature multiplier. Lower values provide better EM stealth.' type: number format: double example: 1 nullable: true deprecated: true signal_cross_section: description: 'Deprecated: Use signal_multiplier.cross_section instead. Radar cross-section multiplier. Affects radar detectability.' type: number format: double example: 1 nullable: true deprecated: true damage_physical: description: 'Deprecated: Use damage_multiplier.physical instead. Physical damage multiplier. Typically 0.62, providing 38% damage reduction.' type: number format: double example: 0.62 nullable: true deprecated: true damage_energy: description: 'Deprecated: Use damage_multiplier.energy instead. Energy weapon damage multiplier. Values around 1.0 are neutral.' type: number format: double example: 1 nullable: true deprecated: true damage_distortion: description: 'Deprecated: Use damage_multiplier.distortion instead. Distortion damage multiplier. Typically around 1.0.' type: number format: double example: 1 nullable: true deprecated: true damage_thermal: description: 'Deprecated: Use damage_multiplier.thermal instead. Thermal damage multiplier. Typically 1.0 (neutral, no resistance).' type: number format: double example: 1 nullable: true deprecated: true damage_biochemical: description: 'Deprecated: Use damage_multiplier.biochemical instead. Biochemical damage multiplier. Typically 1.0 (neutral, no resistance).' type: number format: double example: 1 nullable: true deprecated: true damage_stun: description: 'Deprecated: Use damage_multiplier.stun instead. Stun damage multiplier. Typically 0 (complete immunity to stun).' type: number format: double example: 0 nullable: true deprecated: true signal_multiplier: description: 'Grouped signal multipliers affecting detectability. Replacement for individual signal_* fields.' properties: cross_section: description: 'Radar cross-section multiplier.' type: number format: double nullable: true cross_section_change: description: 'Cross-section change from baseline (multiplier - 1). Negative values indicate reduction.' type: number format: double nullable: true infrared: description: 'Infrared signature multiplier. Lower values reduce heat detectability.' type: number format: double nullable: true infrared_change: description: 'Infrared change from baseline (multiplier - 1).' type: number format: double nullable: true electromagnetic: description: 'Electromagnetic signature multiplier. Lower values improve EM stealth.' type: number format: double nullable: true electromagnetic_change: description: 'EM change from baseline (multiplier - 1).' type: number format: double nullable: true type: object nullable: true damage_multiplier: description: 'Grouped damage multipliers determining armor resistance. Lower values = more resistant. Replacement for individual damage_* fields.' properties: physical: description: 'Physical damage multiplier. Typical value 0.62 (38% reduction).' type: number format: double nullable: true physical_change: description: 'Physical resistance change from neutral (multiplier - 1). Negative = more resistant.' type: number format: double nullable: true energy: description: 'Energy damage multiplier.' type: number format: double nullable: true energy_change: description: 'Energy resistance change from neutral.' type: number format: double nullable: true distortion: description: 'Distortion damage multiplier.' type: number format: double nullable: true distortion_change: description: 'Distortion resistance change from neutral.' type: number format: double nullable: true thermal: description: 'Thermal damage multiplier.' type: number format: double nullable: true thermal_change: description: 'Thermal resistance change from neutral.' type: number format: double nullable: true biochemical: description: 'Biochemical damage multiplier.' type: number format: double nullable: true biochemical_change: description: 'Biochemical resistance change from neutral.' type: number format: double nullable: true stun: description: 'Stun damage multiplier. 0 = complete immunity.' type: number format: double nullable: true stun_change: description: 'Stun resistance change from neutral.' type: number format: double nullable: true type: object nullable: true resistance_multiplier: description: 'Durability-based resistance multipliers from stdItem.Durability.Resistance system.' properties: physical: description: 'Physical resistance multiplier from Durability.' type: number format: double nullable: true physical_change: description: 'Physical resistance change from neutral (multiplier - 1).' type: number format: double nullable: true energy: description: 'Energy resistance multiplier from Durability.' type: number format: double nullable: true energy_change: description: 'Energy resistance change from neutral (multiplier - 1).' type: number format: double nullable: true distortion: description: 'Distortion resistance multiplier from Durability.' type: number format: double nullable: true distortion_change: description: 'Distortion resistance change from neutral (multiplier - 1).' type: number format: double nullable: true thermal: description: 'Thermal resistance multiplier from Durability.' type: number format: double nullable: true thermal_change: description: 'Thermal resistance change from neutral (multiplier - 1).' type: number format: double nullable: true biochemical: description: 'Biochemical resistance multiplier from Durability.' type: number format: double nullable: true biochemical_change: description: 'Biochemical resistance change from neutral (multiplier - 1).' type: number format: double nullable: true stun: description: 'Stun resistance multiplier from Durability.' type: number format: double nullable: true stun_change: description: 'Stun resistance change from neutral (multiplier - 1).' type: number format: double nullable: true type: object nullable: true deflection: description: 'Deflection values determining how well armor deflects incoming rounds by type.' properties: physical: description: 'Physical deflection value.' type: number format: double nullable: true energy: description: 'Energy deflection value.' type: number format: double nullable: true distortion: description: 'Distortion deflection value.' type: number format: double nullable: true thermal: description: 'Thermal deflection value.' type: number format: double nullable: true biochemical: description: 'Biochemical deflection value.' type: number format: double nullable: true stun: description: 'Stun deflection value.' type: number format: double nullable: true type: object nullable: true penetration_resistance: description: 'Penetration resistance values determining how well armor resists armor-piercing rounds.' properties: base: description: 'Base penetration resistance value.' type: number format: double nullable: true physical: description: 'Physical penetration resistance.' type: number format: double nullable: true energy: description: 'Energy penetration resistance.' type: number format: double nullable: true distortion: description: 'Distortion penetration resistance.' type: number format: double nullable: true thermal: description: 'Thermal penetration resistance.' type: number format: double nullable: true biochemical: description: 'Biochemical penetration resistance.' type: number format: double nullable: true stun: description: 'Stun penetration resistance.' type: number format: double nullable: true type: object nullable: true type: object bomb: title: Bomb description: 'Explosive bomb specifications including timing, blast radius, and damage characteristics. Bomb properties scale with size class (S3/S5/S10).' properties: arm_time: description: 'Time in seconds after release before the bomb is armed and can detonate. Scales with bomb size (0.5s for S3, 5.0s for S10).' type: number format: double example: 3 nullable: true x-suffix: ' s' ignite_time: description: 'Time in seconds between arming and detonation.' type: number format: double example: 0.2 nullable: true x-suffix: ' s' collision_delay_time: description: 'Delay in seconds before collision detection becomes active after release.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' explosion_safety_distance: description: 'Deprecated: Use explosion.safety_distance instead. Minimum safe distance in meters from the explosion. Typically 50m for all bomb sizes.' type: number format: double example: 50 nullable: true deprecated: true explosion_radius_min: description: 'Deprecated: Use explosion.radius_min instead. Minimum explosion radius in meters. Scales with bomb size (40m for S3, 100m for S5, 250m for S10).' type: number format: double example: 100 nullable: true deprecated: true explosion_radius_max: description: 'Deprecated: Use explosion.radius_max instead. Maximum explosion radius in meters. Typically equal to minimum radius for uniform blast.' type: number format: double example: 100 nullable: true deprecated: true maximum_drop_angle: description: 'Maximum angle in degrees from level flight at which the bomb can be deployed. Typically 90 degrees.' type: number format: double example: 90 nullable: true x-suffix: ' °' damage: description: 'Deprecated: use damage_total.' type: number format: double example: 46702 nullable: true deprecated: true damage_total: description: 'Total combined damage from all damage types. Scales dramatically with bomb size (27,000 for S3, 568,297 for S10).' type: number format: double example: 46702 nullable: true damages: description: 'Deprecated: use damage_map.' type: array items: $ref: '#/components/schemas/weapon_damage' nullable: true deprecated: true explosion: description: 'Grouped explosion parameters. Replacement for individual explosion_* fields.' properties: requires_launcher: description: 'Whether the bomb requires a launcher to deploy.' type: boolean nullable: true radius_min: description: 'Minimum explosion radius in meters. Replacement for explosion_radius_min.' type: number format: double nullable: true x-suffix: ' m' radius_max: description: 'Maximum explosion radius in meters. Replacement for explosion_radius_max.' type: number format: double nullable: true x-suffix: ' m' safety_distance: description: 'Minimum safe distance in meters from the explosion. Replacement for explosion_safety_distance.' type: number format: double nullable: true x-suffix: ' m' proximity: description: 'Proximity trigger distance for detonation.' type: number format: double nullable: true x-suffix: ' m' type: object nullable: true delays: description: 'Grouped timing parameters for bomb arming and detonation.' properties: arm_time: description: 'Time in seconds after release before the bomb is armed. Same as top-level arm_time.' type: number format: double nullable: true x-suffix: ' s' ignite_time: description: 'Time in seconds between arming and detonation. Same as top-level ignite_time.' type: number format: double nullable: true x-suffix: ' s' collision_delay_time: description: 'Delay before collision detection becomes active. Same as top-level collision_delay_time.' type: number format: double nullable: true x-suffix: ' s' type: object nullable: true damage_map: description: 'Damage values mapped by snake_case damage type keys. Replacement for damages array.' properties: physical: description: 'Physical damage value.' type: number format: double nullable: true energy: description: 'Energy damage value.' type: number format: double nullable: true distortion: description: 'Distortion damage value.' type: number format: double nullable: true thermal: description: 'Thermal damage value.' type: number format: double nullable: true biochemical: description: 'Biochemical damage value.' type: number format: double nullable: true stun: description: 'Stun damage value.' type: number format: double nullable: true type: object nullable: true type: object clothing: title: Clothing description: 'DEPRECATED: Use suit_armor instead. Wearable clothing like shirts, pants, gloves, etc., little to no damage reduction capabilities. Generated from SCItemClothingParams.' properties: clothing_type: description: 'Property is set if resource is of type "clothing". Superseded by type.' type: string nullable: true deprecated: true slot: description: 'Clothing slot derived from the item classification (e.g. Torso, Legs, Arms, Head).' type: string example: Torso nullable: true type: description: 'Clothing type, not actually set in the game data but derived from the item name.' type: string example: T-Shirt nullable: true resistances: description: 'Array of damage resistance entries for this clothing. Each entry includes damage type (physical, energy, distortion, thermal, biochemical, stun), damage multiplier (lower = more resistant), and damage threshold. Only damage types with defined multipliers are included.' type: array items: properties: type: description: 'Damage type (physical, energy, distortion, thermal, biochemical, stun).' type: string example: physical nullable: true multiplier: description: 'Damage multiplier for this resistance. Lower values mean more resistance.' type: number format: double example: 0.5 nullable: true threshold: description: 'Damage threshold value for this resistance type.' type: number format: double example: 10 nullable: true type: object nullable: true temp_resistance_min: description: 'Deprecated: Use temperature_resistance from root.' type: number format: double example: 2 nullable: true deprecated: true temp_resistance_max: description: 'Deprecated: Use temperature_resistance from root.' type: number format: double example: 10 nullable: true deprecated: true radiation_resistance: oneOf: - $ref: '#/components/schemas/radiation_resistance' nullable: true example: maximum_radiation_capacity: 0 radiation_dissipation_rate: 0 gforce_resistance: description: 'G-force tolerance modifier from root. Positive increases tolerance, negative reduces it.' type: number format: double example: -0.125 nullable: true type: object deprecated: true cooler: title: Cooler description: 'Ship cooler specifications including heat dissipation capacity, signature suppression factors, and coolant segment generation.' properties: cooling_rate: description: 'Maximum heat removal capacity (heat units per second). Higher numbers indicate stronger cooling performance. Size 1 military coolers like the Aegis Glacier are around 290,000 while heavy industrial units reach into the tens of millions.' type: number format: double example: 4080000 nullable: true suppression_ir_factor: description: 'Infrared signature multiplier applied while the cooler is operating. Values below 1.0 lower IR output; most production coolers use 0.1 (90% reduction).' type: number format: double example: 0.1 nullable: true suppression_heat_factor: description: 'Overall heat signature multiplier contributed by the cooler. Commonly 0.1, indicating a significant reduction in emitted heat.' type: number format: double example: 0.1 nullable: true coolant_segment_generation: description: 'Coolant segment generation rate from resource network. Use this for actual cooling segment generation.' type: number format: double example: 22 nullable: true type: object counter_measure: title: 'Counter Measure' description: 'Counter measure launcher ammo capacity values derived from stdItem.Ammunition or raw ammo container data.' properties: type: description: 'Counter measure type from WeaponDefensive.Type (e.g., Flare, Chaff, Noise).' type: string nullable: true signature: description: 'Signature values produced by the counter measure when deployed. These represent the false signature emitted to confuse tracking systems.' properties: infrared: description: 'Infrared signature end value emitted by the counter measure.' type: number format: double nullable: true cross_section: description: 'Radar cross-section signature end value emitted by the counter measure.' type: number format: double nullable: true electromagnetic: description: 'Electromagnetic signature end value emitted by the counter measure.' type: number format: double nullable: true decibel: description: 'Audio signature (decibel) end value emitted by the counter measure.' type: number format: double nullable: true x-suffix: ' dB' type: object nullable: true type: object emp: title: 'EMP Generator' description: 'Electromagnetic pulse generator stats pulled from Item.stdItem.Emp. Values scale with generator size (S1-S4) and determine how quickly the device charges, how hard it hits shields via distortion, and how far the blast reaches.' properties: distortion_damage: description: 'Peak distortion damage applied at the center of the blast. Observed values: 1000 (S1), 1800-2475 (S2-S3), 2750-3300 (S4 variants).' type: number format: double example: 1000 nullable: true emp_radius: description: 'Maximum effective distortion radius in meters. Current items range from 400m (S1) up to 1100m (large ship EMPs).' type: number format: double example: 400 nullable: true x-suffix: ' m' min_emp_radius: description: 'Inner radius (m) guaranteed to receive full EMP effect before falloff begins. Presently 150m-250m.' type: number format: double example: 150 nullable: true x-suffix: ' m' charge_duration: description: 'Seconds required to fully charge before firing. Current game data ranges 12-26 seconds across EMP sizes.' type: number format: double example: 12 nullable: true x-suffix: ' s' unleash_duration: description: 'Duration in seconds the pulse is actively released after charging completes. Values are either 0.75s (small) or 1.5s (large).' type: number format: double example: 0.75 nullable: true x-suffix: ' s' cooldown_duration: description: 'Cooldown in seconds before charging can restart. Current data spans 6-40 seconds depending on size and variant.' type: number format: double example: 6 nullable: true x-suffix: ' s' type: object flight_controller_boost_capacitor: title: 'Flight Controller Boost Capacitor' description: 'Afterburner (boost) capacitor configuration and regeneration settings.' properties: capacity: description: 'Total afterburner fuel pool. Combined with cost rates, determines total boost time available before depletion.' type: number format: double example: 20 nullable: true threshold_ratio: description: 'Minimum capacitor fraction required to engage afterburner (0-1).' type: number format: double example: 0.1 nullable: true x-tabulator-formatter: pct idle_cost: description: 'Capacitor drain per second while afterburner is armed but not thrusting.' type: number format: double example: 1 nullable: true linear_cost: description: 'Capacitor drain per second for linear afterburner thrust.' type: number format: double example: 0 nullable: true angular_cost: description: 'Capacitor drain per second for angular afterburner thrust.' type: number format: double example: 0 nullable: true regen_per_sec: description: 'Capacitor regeneration rate per second.' type: number format: double example: 0.75 nullable: true x-suffix: ' /s' regen_delay: description: 'Seconds of delay after disengaging before capacitor regen resumes.' type: number format: double example: 0.2 nullable: true x-suffix: ' s' regen_time: description: 'Seconds required to fully regenerate the capacitor from empty (if provided by data).' type: number format: double example: 10 nullable: true x-suffix: ' s' type: object flight_controller_boost_activation: title: 'Flight Controller Boost Activation' description: 'Afterburner (boost) activation timings.' properties: pre_delay_time: description: 'Seconds of delay before afterburner thrust begins once activated.' type: number format: double example: 0 nullable: true x-suffix: ' s' ramp_up_time: description: 'Seconds to reach full afterburner output.' type: number format: double example: 0.6 nullable: true x-suffix: ' s' ramp_down_time: description: 'Seconds to decay from afterburner to normal thrust.' type: number format: double example: 0.2 nullable: true x-suffix: ' s' type: object flight_controller_thruster_decay: title: 'Flight Controller Thruster Decay' description: 'Decay rates applied to acceleration.' properties: linear_accel: description: 'Decay rate applied to linear acceleration over time.' type: number format: double example: 6 nullable: true angular_accel: description: 'Decay rate applied to angular acceleration; higher values slow rotational response.' type: number format: double example: 12 nullable: true type: object flight_controller_multiplier: title: 'Flight Controller Multipliers' description: 'Flight model multipliers sourced from IFCS.' properties: torque_imbalance: description: 'Multiplier applied when torque imbalance is detected to stabilize rotation.' type: number format: double example: 0.3 nullable: true lift: description: 'Vertical thrust multiplier affecting VTOL and hover authority. Higher values increase upward thrust strength.' type: number format: double example: 7 nullable: true drag: description: 'Drag multiplier scaling atmospheric drag calculations.' type: number format: double example: 5 nullable: true scm_max_drag: description: 'Drag multiplier applied specifically while in SCM flight.' type: number format: double example: 4 nullable: true precision_landing: description: 'Multiplier applied to maneuvering inputs during precision landing to soften responses.' type: number format: double example: 0.7 nullable: true type: object flight_controller_signed_axis_multiplier: title: 'Flight Controller Signed Axis Multiplier' description: 'Positive/negative multipliers for a single axis.' properties: positive: description: 'Multiplier for positive thrust on this axis.' type: number format: double example: 1 nullable: true negative: description: 'Multiplier for negative thrust on this axis.' type: number format: double example: 1 nullable: true type: object flight_controller_boost_multiplier: title: 'Flight Controller Boost Multipliers' description: 'Afterburner (boost) multipliers applied to acceleration and angular rates.' properties: accel_x: $ref: '#/components/schemas/flight_controller_signed_axis_multiplier' accel_y: $ref: '#/components/schemas/flight_controller_signed_axis_multiplier' accel_z: $ref: '#/components/schemas/flight_controller_signed_axis_multiplier' pitch: description: 'Angular rate multiplier for pitch.' type: number format: double example: 1 nullable: true yaw: description: 'Angular rate multiplier for yaw.' type: number format: double example: 1 nullable: true roll: description: 'Angular rate multiplier for roll.' type: number format: double example: 1 nullable: true pitch_accel: description: 'Angular acceleration multiplier for pitch.' type: number format: double example: 1 nullable: true yaw_accel: description: 'Angular acceleration multiplier for yaw.' type: number format: double example: 1 nullable: true roll_accel: description: 'Angular acceleration multiplier for roll.' type: number format: double example: 1 nullable: true type: object flight_controller_precision_mode: title: 'Flight Controller Precision Mode' description: 'Precision mode speed caps and distance thresholds.' properties: max_speed_full_proximity_assist: description: 'Precision mode max speed (m/s) with full proximity assist enabled.' type: number format: double example: 10 nullable: true x-suffix: ' m/s' max_speed_zero_proximity_assist: description: 'Precision mode max speed (m/s) when proximity assist is disabled.' type: number format: double example: 30 nullable: true x-suffix: ' m/s' min_distance: description: 'Minimum distance in meters where precision landing assist calculations begin.' type: number format: double example: 5 nullable: true x-suffix: ' m' max_distance: description: 'Maximum distance in meters where precision landing assist calculations apply.' type: number format: double example: 50 nullable: true x-suffix: ' m' type: object flight_controller_recall_params: title: 'Flight Controller Recall Params' description: 'Automated ship recall approach parameters used by docking AI. Can be null if all values are null.' properties: hover_height_at_destination: description: 'Target hover height in meters when arriving at the recall destination.' type: number format: double example: 30 nullable: true x-suffix: ' m' forward_offset: description: 'Forward offset in meters from the destination point where the ship stages before final landing.' type: number format: double example: 20 nullable: true x-suffix: ' m' obstruction_detection_range: description: 'Range in meters to scan for obstacles while recalling.' type: number format: double example: 1.2 nullable: true x-suffix: ' m' default_platform_detection_range: description: 'Detection radius in meters to locate a viable landing platform.' type: number format: double example: 50 nullable: true x-suffix: ' m' minimum_recall_distance: description: 'Minimum distance in meters from the player before recall engages.' type: number format: double example: 400 nullable: true x-suffix: ' m' braking_distance_offset: description: 'Extra buffer distance in meters used to start braking during recall approach.' type: number format: double example: 30 nullable: true x-suffix: ' m' type: object flight_controller_collision_detection: title: 'Flight Controller Collision Detection' description: 'Collision warning thresholds calculated by IFCS. Can be null if all values are null.' properties: collision_warn_speed: description: 'Relative speed in m/s that triggers a collision warning.' type: number format: double example: 6 nullable: true x-suffix: ' m/s' collision_warn_time: description: 'Seconds until projected impact when general collision warning fires.' type: number format: double example: 4 nullable: true x-suffix: ' s' collision_danger_close_warn_time: description: 'Seconds until impact for the urgent/danger-close warning stage.' type: number format: double example: 2 nullable: true x-suffix: ' s' type: object flight_no_fuel_params: title: 'No-Fuel Flight Parameters' description: 'Flight parameters applied when the ship has no fuel. These modifiers scale down acceleration and velocity when fuel tanks are empty.' properties: linear_acceleration_modifier: description: 'Multiplier applied to linear acceleration when out of fuel.' type: number example: 0.1 nullable: true angular_acceleration_modifier: description: 'Multiplier applied to angular acceleration when out of fuel.' type: number example: 0.1 nullable: true angular_velocity_modifier: description: 'Multiplier applied to angular velocity when out of fuel.' type: number example: 0.1 nullable: true legacy_max_speed: description: 'Maximum speed in m/s when out of fuel (legacy mode).' type: number example: 20 nullable: true x-suffix: ' m/s' type: object flight_controller_gravlev: title: 'Flight Controller Gravlev' description: 'Gravlev-related flight controller settings.' properties: max_speed: description: 'Maximum gravlev hover speed.' type: number format: double example: 30 nullable: true x-suffix: ' m/s' turn_friction: description: 'Turning friction factor for gravlev.' type: number format: double example: 1 nullable: true air_controller_multiplier: description: 'Multiplier for air control when using gravlev.' type: number format: double example: 1 nullable: true anti_fall_multiplier: description: 'Multiplier used to counteract falling behaviour.' type: number format: double example: 1 nullable: true lateral_strafe_multiplier: description: 'Multiplier for lateral strafing while in gravlev mode.' type: number format: double example: 1 nullable: true type: object flight_controller: title: 'Flight Controller' description: 'IFCS (flight controller) performance data sourced from in-game item files.' properties: scm_speed: description: 'Space Combat Maneuvering (cruise) speed in meters per second.' type: number format: double example: 227 nullable: true x-suffix: ' m/s' boost_speed_forward: description: 'Forward boost speed cap in m/s.' type: number format: double example: 470 nullable: true x-suffix: ' m/s' boost_speed_backward: description: 'Reverse boost speed cap in m/s.' type: number format: double example: 240 nullable: true x-suffix: ' m/s' max_speed: description: 'Absolute flight envelope speed cap in m/s.' type: number format: double example: 1230 nullable: true x-suffix: ' m/s' pitch: description: 'Maximum pitch rate in degrees per second.' type: number format: double example: 59 nullable: true x-suffix: ' °/s' yaw: description: 'Maximum yaw rate in degrees per second.' type: number format: double example: 51 nullable: true x-suffix: ' °/s' roll: description: 'Maximum roll rate in degrees per second.' type: number format: double example: 137 nullable: true x-suffix: ' °/s' pitch_boosted: description: 'Derived boosted pitch rate (rounded): pitch * boost_multiplier.pitch (defaults to 1 if missing).' type: integer example: 59 nullable: false x-suffix: ' °/s' yaw_boosted: description: 'Derived boosted yaw rate (rounded): yaw * boost_multiplier.yaw (defaults to 1 if missing).' type: integer example: 51 nullable: false x-suffix: ' °/s' roll_boosted: description: 'Derived boosted roll rate (rounded): roll * boost_multiplier.roll (defaults to 1 if missing).' type: integer example: 137 nullable: false x-suffix: ' °/s' boost_capacitor: $ref: '#/components/schemas/flight_controller_boost_capacitor' boost_activation: $ref: '#/components/schemas/flight_controller_boost_activation' thruster_decay: $ref: '#/components/schemas/flight_controller_thruster_decay' multiplier: $ref: '#/components/schemas/flight_controller_multiplier' boost_multiplier: $ref: '#/components/schemas/flight_controller_boost_multiplier' precision_mode: $ref: '#/components/schemas/flight_controller_precision_mode' recall_params: oneOf: - $ref: '#/components/schemas/flight_controller_recall_params' nullable: true description: 'Ship recall approach parameters.' collision_detection: oneOf: - $ref: '#/components/schemas/flight_controller_collision_detection' nullable: true description: 'Collision warning thresholds.' gravlev: $ref: '#/components/schemas/flight_controller_gravlev' no_fuel_params: oneOf: - $ref: '#/components/schemas/flight_no_fuel_params' nullable: true description: 'Flight parameters when the ship has no fuel.' type: object food_nutrition: title: 'Food Nutrition' description: 'Dynamic map of nutrient name (snake_case) to total amount for the item.' type: object additionalProperties: type: number food_effect_durations: title: 'Food Effect Durations' description: 'Dynamic map of effect/buff type (snake_case) to duration in seconds.' type: object additionalProperties: type: number food_container: title: 'Food Container' description: 'Container metadata from stdItem.Food.Container.' properties: type: description: 'Container type identifier.' type: string nullable: true closed: description: 'Whether the container starts closed (if provided).' type: boolean nullable: true can_be_reclosed: description: 'Whether the container can be reclosed after opening.' type: boolean nullable: true discard_when_consumed: description: 'Whether the container is discarded when fully consumed.' type: boolean nullable: true type: object food_consumption: title: 'Food Consumption' description: 'Consumption settings from stdItem.Food.Consumption.' properties: volume: description: 'Consumption volume in microSCU.' type: number format: double example: 0.25 nullable: true x-suffix: ' µSCU' one_shot_consume: description: 'Whether the item is consumed in one action.' type: boolean nullable: true type: object food_resource_effects: title: 'Food Resource Effects' description: 'Consumable resource effects from stdItem.Food.ResourceEffects. Only present for game data >= 4.9.0.' properties: consumable_resource_type: description: 'The consumable resource type affected.' type: string nullable: true per_micro_scu: description: 'Effect amount per microSCU of consumable volume.' type: number format: double nullable: true x-suffix: ' µSCU' total: description: 'Total effect amount for the item volume.' type: number format: double nullable: true type: object x-since: 4.9.0 food_gas_effects: title: 'Food Gas Effects' description: 'Gas emission effects from stdItem.Food.GasEffects. Only present for game data >= 4.9.0.' properties: gas: description: 'The emitted gas type.' type: string nullable: true mass: description: 'Mass of the emitted gas.' type: number format: double nullable: true type: object x-since: 4.9.0 food: title: Food description: 'Consumable food or drink statistics sourced from stdItem.Food and description data.' properties: nutrition: $ref: '#/components/schemas/food_nutrition' buffs: $ref: '#/components/schemas/food_effect_durations' debuffs: $ref: '#/components/schemas/food_effect_durations' container: $ref: '#/components/schemas/food_container' consumption: $ref: '#/components/schemas/food_consumption' nutritional_density_rating: description: 'Nutritional density rating (NDR) from food data or description.' type: string nullable: true hydration_efficacy_index: description: 'Hydration efficacy index (HEI) from food data or description.' type: string nullable: true container_type: description: 'Deprecated. Use `container.type`.' type: string nullable: true deprecated: true one_shot_consume: description: 'Deprecated. Use `consumption.one_shot_consume`.' type: boolean nullable: true deprecated: true can_be_reclosed: description: 'Deprecated. Use `container.can_be_reclosed`.' type: boolean nullable: true deprecated: true discard_when_consumed: description: 'Deprecated. Use `container.discard_when_consumed`.' type: boolean nullable: true deprecated: true effects: description: 'List of effect strings (parsed from food data or description). Null when no effects are present.' type: array items: type: string nullable: true resource_effects: description: 'Consumable resource effects. Only present for game data >= 4.9.0; null otherwise.' type: array items: $ref: '#/components/schemas/food_resource_effects' nullable: true x-since: 4.9.0 gas_effects: description: 'Gas emission effects. Only present for game data >= 4.9.0; null otherwise.' type: array items: $ref: '#/components/schemas/food_gas_effects' nullable: true x-since: 4.9.0 type: object fuel_intake: title: 'Fuel Intake' description: 'Fuel intake flow rates sourced from stdItem.FuelIntake.' properties: fuel_push_rate: description: 'Fuel push rate into the fuel tanks. A value of 0 means no active push capability.' type: number format: double nullable: true minimum_rate: description: 'Minimum fuel collection rate.' type: number format: double nullable: true type: object fuel_tank: title: 'Fuel Tank' description: 'Fuel and quantum fuel tank characteristics.' properties: fill_rate: description: 'Maximum generation/refill rate in standard resource units per second.' type: number format: double example: 10 nullable: true drain_rate: description: 'Maximum consumption/usage rate in standard resource units per second.' type: number format: double example: 10 nullable: true capacity: description: 'Maximum fuel capacity in standard resource units.' type: number format: double example: 5000 nullable: true discharge_rate: description: 'Deprecated: No longer meaningful.' type: number format: double nullable: true deprecated: true type: object grenade_aoe: title: 'Grenade Area of Effect' description: 'Area of effect radii in meters.' properties: min: description: 'Minimum effective/lethal radius in meters.' type: number format: double example: 4 nullable: true x-suffix: ' m' max: description: 'Maximum effective/lethal radius in meters.' type: number format: double example: 5.5 nullable: true x-suffix: ' m' minimum: description: 'Deprecated: Use min.' type: number format: double example: 4 nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double example: 5.5 nullable: true deprecated: true type: object grenade: title: Grenade description: 'Hand-thrown grenade specs sourced from Item.stdItem.Grenade.' properties: damage_type: description: 'Damage type reported by the grenade payload.' type: string example: Physical nullable: true damage: description: 'Damage value used by the grenade payload.' type: number format: double example: 20 nullable: true aoe: $ref: '#/components/schemas/grenade_aoe' area_of_effect: description: 'Deprecated. Use `aoe.maximum`.' type: number format: double nullable: true deprecated: true type: object hacking_chip: title: 'Hacking Chip' description: 'Cryptokey / hacking chip stats pulled from in-game item definitions. Controls charge count, hack duration scaling, failure risk, and access gating tags applied during missions.' properties: max_charges: description: 'Number of uses before the chip depletes.' type: integer example: 3 nullable: true duration_multiplier: description: 'Multiplier applied to the base hack duration. Values below 1.0 speed the hack up; values above 1.0 slow it down. Example 0.5 halves the required time.' type: number format: double example: 0.5 nullable: true error_chance: description: 'Probability (0-1) that a hack attempt fails or produces an error. Higher values indicate more risk. Example 0.9 = 90% error chance.' type: number format: double example: 0.9 nullable: true x-tabulator-formatter: pct access_tag: description: 'Gameplay access tag required/assigned when the chip is used (e.g., MissionQuestItem to mark mission-only keys).' type: string example: MissionQuestItem nullable: true type: object jump_drive: title: 'Jump Drive' description: 'Jump drive alignment, tuning, and fuel efficiency stats sourced from SCItemJumpDriveParams.' properties: alignment_rate: description: 'Rate at which the drive aligns to a jump point. Higher values mean faster alignment.' type: number format: double nullable: true alignment_decay_rate: description: 'Rate at which alignment decays when not actively aligning.' type: number format: double nullable: true tuning_rate: description: 'Tuning speed. Higher values mean faster calibration.' type: number format: double nullable: true tuning_decay_rate: description: 'Rate at which tuning decays when not actively tuning.' type: number format: double nullable: true fuel_usage_efficiency_multiplier: description: 'Fuel efficiency multiplier. Higher values mean less fuel consumed per jump.' type: number format: double nullable: true type: object medicine: title: Medicine description: 'Medical consumable statistics sourced from stdItem.Medical, reusing the shared container/consumption/nutrition structure.' type: object allOf: - $ref: '#/components/schemas/food' - properties: nutrition: description: 'Dynamic map of nutrient name (snake_case) to total amount.' type: object additionalProperties: type: number debuffs: description: 'Dynamic map of debuff type (snake_case) to duration in seconds.' type: object additionalProperties: type: number container: description: 'Container metadata from stdItem.Medical.Container.' properties: type: description: 'Container type identifier.' type: string nullable: true closed: description: 'Whether the container starts closed (if provided).' type: boolean nullable: true can_be_reclosed: description: 'Whether the container can be reclosed after opening.' type: boolean nullable: true discard_when_consumed: description: 'Whether the container is discarded when fully consumed.' type: boolean nullable: true type: object consumption: description: 'Consumption settings from stdItem.Medical.Consumption.' properties: volume: description: 'Consumption volume in microSCU.' type: number format: double example: 0.25 nullable: true x-suffix: ' µSCU' one_shot_consume: description: 'Whether the item is consumed in one action.' type: boolean nullable: true type: object combat_buffs: description: 'Dynamic map of combat buff flags (derived from MedicalEffects.CombatBuffs). Keys are normalized (snake_case, without `_mask`). Values are boolean flags.' type: object additionalProperties: type: boolean impact_resistances: description: 'Dynamic map of impact resistance flags (derived from MedicalEffects.ImpactResistance). Keys are normalized (snake_case, without `impact_resistance_` or `_mask`). Values are boolean flags.' type: object additionalProperties: type: boolean resource_effects: description: 'Consumable resource effects (inherited from shared consumable data). Only present for game data >= 4.9.0; null otherwise.' type: array items: $ref: '#/components/schemas/food_resource_effects' nullable: true x-since: 4.9.0 gas_effects: description: 'Gas emission effects (inherited from shared consumable data). Only present for game data >= 4.9.0; null otherwise.' type: array items: $ref: '#/components/schemas/food_gas_effects' nullable: true x-since: 4.9.0 type: object melee_weapon_attack_damages: title: 'Melee Weapon Attack Damages' description: 'Damage breakdown for a melee attack mode.' properties: physical: description: 'Physical damage.' type: number format: double example: 30 nullable: true energy: description: 'Energy damage.' type: number format: double example: 0 nullable: true distortion: description: 'Distortion damage.' type: number format: double example: 0 nullable: true thermal: description: 'Thermal damage.' type: number format: double example: 0 nullable: true biochemical: description: 'Biochemical damage.' type: number format: double example: 0 nullable: true stun: description: 'Stun damage.' type: number format: double example: 0 nullable: true type: object melee_weapon_attack_mode: title: 'Melee Weapon Attack Mode' description: 'Single attack configuration as returned by the resource.' properties: category: description: 'Attack animation category (e.g., BladeSlash, BladeStab, SyringeStab).' type: string example: BladeSlash nullable: true damage: description: 'Total damage value (DamageTotal).' type: number format: double example: 30 nullable: true stun_recovery_modifier: description: 'Modifier applied to stun recovery time.' type: number format: double example: 0 nullable: true block_stun_reduction_modifier: description: 'Modifier reducing stun duration when blocking.' type: number format: double example: 0 nullable: true block_stun_stamina_modifier: description: 'Modifier applied to stamina cost of blocking a stun.' type: number format: double example: 0 nullable: true attack_impulse: description: 'Physical impulse applied to the target on hit.' type: number format: double example: 20 nullable: true ignore_body_part_impulse_scale: description: 'Whether impulse ignores body-part-specific scaling.' type: boolean example: false nullable: true force_knockdown: description: 'Knockdown behavior (e.g., None).' type: string example: None nullable: true damages: $ref: '#/components/schemas/melee_weapon_attack_damages' type: object melee_weapon: title: 'Melee Weapon' description: 'Melee weapon specification sourced from Item.stdItem.MeleeWeapon (or meleeWeapon).' properties: can_be_used_for_take_down: description: 'Whether this weapon can be used for takedown attacks.' type: boolean example: true nullable: true can_block: description: 'Whether the wielder can block incoming attacks.' type: boolean example: true nullable: true can_be_used_in_prone: description: 'Whether the weapon can be used while prone.' type: boolean example: false nullable: true can_dodge: description: 'Whether the wielder can dodge while equipped.' type: boolean example: true nullable: true stance_transition_melee_delay: description: 'Delay in seconds when transitioning to a melee stance.' type: number format: double example: 0.6 nullable: true x-suffix: ' s' melee_combat_config: description: 'UUID reference to the melee combat config record.' type: string example: da909c53-195a-4289-8466-ecb4c418f930 nullable: true attack_modes: description: 'Attack configurations as returned by the resource.' type: array items: $ref: '#/components/schemas/melee_weapon_attack_mode' nullable: true type: object mining_laser_power_band: title: 'Mining Laser Power Band' description: 'Minimum/maximum laser power values as provided by stdItem.MiningLaser.' properties: min: description: 'Minimum power transfer (MinPowerTransfer).' type: number format: double example: 420 nullable: true max: description: 'Maximum power transfer (PowerTransfer).' type: number format: double example: 2100 nullable: true minimum: description: 'Deprecated: Use min.' type: number format: double example: 420 nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double example: 2100 nullable: true deprecated: true type: object mining_laser_modifier: title: 'Mining Laser Modifier' description: 'Single modifier entry derived from the modifier block (only emitted when value is not null).' properties: name: description: 'Internal modifier key.' type: string example: optimal_charge_rate nullable: false display_name: description: 'Human-readable name derived from the key.' type: string example: 'Optimal Charge Rate' nullable: false value: description: 'Numeric modifier value (percentage points where applicable).' type: number format: double example: -40 nullable: false type: object mining_laser: title: 'Mining Laser' description: 'Mining laser specifications sourced from stdItem.MiningLaser. Includes power band, ranges, extraction throughput, throttle handling, modifiers, and module slots. Legacy v2 fields are still returned for backward compatibility (marked deprecated).' properties: laser_power: $ref: '#/components/schemas/mining_laser_power_band' modifiers: description: 'Deprecated: Use modifier_map. List of non-null gameplay modifiers derived from stdItem.MiningLaser.Modifiers.' type: array items: $ref: '#/components/schemas/mining_laser_modifier' deprecated: true module_slots: description: 'Number of mining module/consumable slots (ModuleSlots).' type: integer example: 2 nullable: true throttle_lerp_speed: description: 'How quickly the throttle responds to input changes.' type: number format: double example: 6.5 nullable: true throttle_minimum: description: 'Minimum throttle value when firing.' type: number format: double example: 0.1 nullable: true power_transfer: description: 'Deprecated. Use `laser_power.maximum`.' type: number format: double example: 2100 nullable: true deprecated: true mining_laser_power: description: 'Deprecated. Use `laser_power.minimum` and `laser_power.maximum` (this is a formatted string range).' type: string example: '420 - 2100' nullable: true deprecated: true modifier_map: description: 'Key-value map of mining laser modifier names to their numeric values.' type: object nullable: false additionalProperties: type: number extraction_laser_power: description: 'Deprecated. Prefer `extraction_throughput` when available (this value is taken from description text).' type: string example: '2775' nullable: true deprecated: true optimal_range: description: 'Optimal mining distance in meters (OptimalRange).' type: number format: double example: 45 nullable: true x-suffix: ' m' maximum_range: description: 'Maximum effective range in meters (MaximumRange).' type: number format: double example: 135 nullable: true x-suffix: ' m' extraction_throughput: description: 'Rate at which ore is extracted from the target.' type: number format: double example: 2775 nullable: true collection_point_radius: description: 'Radius of the mining beam at the collection point.' type: number format: double example: 0.1 nullable: true type: object mining_modifier_value: title: 'Mining Modifier Value' description: 'Modifier values are returned as-is from game data and may be numeric or string-encoded (for example with %).' oneOf: - type: number format: double - type: string mining_modifier_map: title: 'Mining Modifier Map' description: 'Map of modifier keys to values.' type: object additionalProperties: $ref: '#/components/schemas/mining_modifier_value' mining_modifier: title: 'Mining Modifiers & Mining Gadgets' description: 'Mining module/gadget specification sourced from stdItem.MiningModule. Includes type, charge/duration metadata, an optional power modifier, and a legacy modifier map.' properties: type: description: 'Modifier type (from MiningModule.Type).' type: string example: Active nullable: true item_type: description: 'Derived from classification: `Gadget` when classification is `Mining.Gadget`, otherwise `Module`.' type: string enum: - Gadget - Module example: Module nullable: true charges: description: 'Remaining charges (MiningModule.Charges). `null` when the source value is -1 (unlimited).' type: integer example: 3 nullable: true duration: description: 'Lifetime/duration in seconds (MiningModule.Lifetime).' type: number format: double example: 60 nullable: true x-suffix: ' s' power_modifier: description: 'Power modifier value from Modifiers.DamageMultiplierChange. Returned as-is from the source data.' example: 1.1 nullable: true oneOf: - type: number format: double - type: string modifier_map: $ref: '#/components/schemas/mining_modifier_map' type: object mining_module: title: 'Mining Module' description: 'Deprecated: Use mining_modifier instead.' properties: type: type: string example: 'Mining Module (Active)' nullable: true deprecated: true module_type: type: string example: Active nullable: true deprecated: true usage: description: 'Usability details sourced from Item.stdItem.MiningModule (charges/lifetime) and Item.stdItem.DescriptionData (uses/duration).' properties: charges: description: 'Total activations provided by the module.' type: integer example: 6 nullable: true deprecated: true lifetime_seconds: description: 'Lifetime in seconds a module remains effective once installed.' type: number format: double example: 60 nullable: true deprecated: true uses: description: 'Number of activations before a consumable expires. Observed range: 3-10.' type: integer example: 6 nullable: true deprecated: true duration_seconds: description: 'Active duration per use in seconds. Observed range: 15-60.' type: number format: double example: 30 nullable: true deprecated: true type: object nullable: true deprecated: true charges: description: 'Deprecated: use usage.charges.' type: integer example: 5 nullable: true deprecated: true lifetime_seconds: description: 'Deprecated: use usage.lifetime_seconds.' type: number format: double example: 3600 nullable: true deprecated: true uses: description: 'Deprecated: use usage.uses.' type: integer example: 5 nullable: true deprecated: true duration_seconds: description: 'Deprecated: use usage.duration_seconds.' type: number format: double example: 60 nullable: true deprecated: true modifiers: description: 'Gameplay-impacting modifiers applied while the module is active or installed.' properties: mining_laser_power_percent: description: 'Multiplicative change to mining laser power. 150 boosts power by 50%; 85 lowers by 15%.' type: number format: double example: 135 nullable: true deprecated: true extraction_laser_power_percent: description: 'Multiplier on extraction beam power. Lower values mean slower extraction but often reduce inert material.' type: number format: double example: 95 nullable: true deprecated: true optimal_charge_window_percent: description: 'Change to the size of the optimal (green) window. Positive widens, negative shrinks. Range seen: -10 to +40.' type: number format: double example: 40 nullable: true deprecated: true optimal_charge_rate_percent: description: 'Change to the ideal charge rate speed. Higher values speed charging; negatives slow it. Range seen: -20 to +60.' type: number format: double example: 60 nullable: true deprecated: true all_charge_rates_percent: description: 'Flat multiplier to all charge-rate bands when present. Range seen: +5 to +24.' type: number format: double example: 24 nullable: true deprecated: true inert_material_modifier_percent: description: 'Reduction to inert material collected. Positive values in data mean less inert material (e.g., 6, 24).' type: number format: double example: 24 nullable: true deprecated: true resistance_percent: description: 'Change to deposit resistance (hardness). Positive makes rock more resistant; negative softens. Range seen: -24.8 to +15.5.' type: number format: double example: -15 nullable: true deprecated: true instability_percent: description: 'Change to laser instability. Negative stabilizes, positive increases jitter. Range seen: -20 to +10.' type: number format: double example: -10 nullable: true deprecated: true shatter_damage_percent: description: 'Change to damage taken when the rock shatters. Negative reduces hazard; positive increases. Range seen: -30 to +40.' type: number format: double example: -30 nullable: true deprecated: true overcharge_rate_percent: description: 'Change to catastrophic/overcharge rate. Negative lowers risk, positive increases. Range seen: -80 to +60.' type: number format: double example: -60 nullable: true deprecated: true cluster_factor: description: 'Scaling applied to cluster-related calculations for fracture/extraction when present.' type: number format: double example: 1.35 nullable: true deprecated: true damage_multiplier: description: 'General damage multiplier used by modules. Observed range: 0.85-1.50.' type: number format: double example: 1.35 nullable: true deprecated: true type: object nullable: true deprecated: true type: object deprecated: true missile_rack: title: 'Missile Rack' description: 'Missile rack capacity derived from port configuration.' properties: missile_count: description: 'Number of missile slots on the rack, derived from port configuration.' type: integer nullable: true missile_size: description: 'Maximum missile size supported (from the first port MaxSize).' type: integer nullable: true type: object missile_flight: title: 'Missile Flight' description: 'Missile flight performance and phase timings.' properties: enable_lifetime: description: 'Whether the maximum lifetime limit is enforced.' type: boolean example: true nullable: true max_lifetime: description: 'Maximum flight time in seconds before missile self-destructs.' type: number format: double example: 15 nullable: true x-suffix: ' s' range: description: 'Maximum travel distance/range as provided by the source data.' type: number format: double example: 10000 nullable: true speed: description: 'Linear cruise velocity in meters per second.' type: number format: double example: 1372 nullable: true x-suffix: ' m/s' boost_speed: description: 'Initial boost phase velocity in meters per second.' type: number format: double example: 165 nullable: true x-suffix: ' m/s' intercept_speed: description: 'Intercept phase speed in meters per second.' type: number format: double example: 400 nullable: true x-suffix: ' m/s' terminal_speed: description: 'Terminal phase speed in meters per second.' type: number format: double example: 475 nullable: true x-suffix: ' m/s' boost_phase_duration: description: 'Duration of the boost phase in seconds.' type: number format: double example: 1.5 nullable: true x-suffix: ' s' terminal_phase_engagement_time: description: 'Seconds before impact when terminal phase activates.' type: number format: double example: 5 nullable: true x-suffix: ' s' terminal_phase_engagement_angle: description: 'Maximum engagement angle in degrees for terminal phase.' type: number format: double example: 35 nullable: true x-suffix: ' °' fuel_tank_size: description: 'Fuel capacity in arbitrary units.' type: number format: double example: 25000 nullable: true type: object missile_target_lock: title: 'Missile Target Lock' description: 'Target lock acquisition and countermeasure resilience parameters.' properties: signal_resilience_min: description: 'Minimum countermeasure resistance factor.' type: number format: double example: 1 nullable: true signal_resilience_max: description: 'Maximum countermeasure resistance factor.' type: number format: double example: 1.7 nullable: true range_max: description: 'Maximum lock acquisition range in meters.' type: number format: double example: 10000 nullable: true x-suffix: ' m' range_min: description: 'Minimum lock acquisition range in meters.' type: number format: double example: 1700 nullable: true x-suffix: ' m' angle: description: 'Maximum lock acquisition angle in degrees (cone of acquisition).' type: number format: double example: 60 nullable: true x-suffix: ' °' signal_amplifier: description: 'Signal amplification factor applied during lock acquisition.' type: number format: double example: 2.5 nullable: true increase_rate: description: 'Rate at which lock strength increases per second.' type: number format: double example: 1.6 nullable: true x-suffix: ' /s' allow_dumb_firing: description: 'Whether the missile can be manually fired without a target lock.' type: boolean example: true nullable: true type: object missile_explosion: title: 'Missile Explosion' description: 'Explosion/warhead behavior including cluster properties, radius, and proximity settings.' properties: is_cluster: description: 'Whether this missile splits into multiple submunitions during flight.' type: boolean example: false nullable: true cluster_size: description: 'Number of submunitions released when the missile splits (when applicable).' type: number example: 3 nullable: true requires_launcher: description: 'Whether the missile must be fired from a dedicated launcher/rack.' type: boolean example: true nullable: true allow_dumb_firing: description: 'Whether the missile can be fired without a lock.' type: boolean example: true nullable: true radius_min: description: 'Minimum explosion damage radius in meters.' type: number format: double example: 1 nullable: true x-suffix: ' m' radius_max: description: 'Maximum explosion damage radius in meters.' type: number format: double example: 2 nullable: true x-suffix: ' m' safety_distance: description: 'Minimum safe distance in meters from the explosion center.' type: number format: double example: 2 nullable: true x-suffix: ' m' proximity: description: 'Proximity fuse / projectile proximity value (as provided by source data).' type: number format: double example: 0 nullable: true type: object missile_delays: title: 'Missile Delays' description: 'Arming/ignition/collision and lock timing delays.' properties: arm_time: description: 'Time in seconds after launch before warhead arms.' type: number format: double example: 0.8 nullable: true x-suffix: ' s' ignite_time: description: 'Delay in seconds between launch and engine ignition.' type: number format: double example: 0.1 nullable: true x-suffix: ' s' collision_delay_time: description: 'Delay in seconds before collision detection is active after launch.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' lock_time: description: 'Time in seconds required to establish a target lock.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' type: object missile_damage_map: title: 'Missile Damage Map' description: 'Map of damage type to value. Only non-null damage types are included; null when no damage values are present.' type: object additionalProperties: type: number missile: title: Missile description: 'Missile specifications sourced from stdItem.Missile.' properties: cluster_size: description: 'Deprecated. Use `explosion.cluster_size`.' type: number example: 3 nullable: true deprecated: true signal_type: description: 'Type of tracking signal used for target acquisition.' type: string example: CrossSection nullable: true tracking_signal_min: description: 'Minimum target signal strength required for tracking.' type: number format: double example: 4 nullable: true lock_time: description: 'Deprecated. Use `delays.lock_time`.' type: number format: double example: 0.5 nullable: true deprecated: true lock_range_max: description: 'Deprecated. Use `target_lock.range_max`.' type: number format: double example: 10000 nullable: true deprecated: true lock_range_min: description: 'Deprecated. Use `target_lock.range_min`.' type: number format: double example: 1700 nullable: true deprecated: true lock_angle: description: 'Deprecated. Use `target_lock.angle`.' type: number format: double example: 60 nullable: true deprecated: true speed: description: 'Deprecated. Use `flight.speed`.' type: number format: double example: 1372 nullable: true deprecated: true fuel_tank_size: description: 'Deprecated. Use `flight.fuel_tank_size`.' type: number format: double example: 25000 nullable: true deprecated: true explosion_radius_min: description: 'Deprecated. Use `explosion.radius_min`.' type: number format: double example: 1 nullable: true deprecated: true explosion_radius_max: description: 'Deprecated. Use `explosion.radius_max`.' type: number format: double example: 2 nullable: true deprecated: true flight: $ref: '#/components/schemas/missile_flight' target_lock: $ref: '#/components/schemas/missile_target_lock' explosion: $ref: '#/components/schemas/missile_explosion' delays: $ref: '#/components/schemas/missile_delays' damage_total: description: 'Total combined damage from all damage types.' type: number format: double example: 1075 nullable: true damages: description: 'Deprecated. Use `damage_map`.' type: array items: $ref: '#/components/schemas/weapon_damage' nullable: true deprecated: true damage_map: oneOf: - $ref: '#/components/schemas/missile_damage_map' nullable: true description: 'Map of damage types to values (preferred representation).' type: object personal_weapon_mode: title: 'Personal Weapon Mode' description: 'Fire mode entries as returned by the game data mapping. Type-specific fields are only present when the mode type matches.' properties: mode: description: 'Mode name.' type: string example: Rapid nullable: true localised: description: 'Localized label.' type: string example: '[AUTO]' nullable: true type: description: 'Fire type.' type: string example: rapid nullable: true rpm: description: 'Rounds per minute.' type: number format: double example: 925 nullable: true ammo_per_shot: description: 'Ammo consumed per shot.' type: integer example: 1 nullable: true pellets_per_shot: description: 'Pellets per shot.' type: integer example: 12 nullable: true damage_per_second: description: 'Damage per second.' type: number format: double example: 0 nullable: true heat_per_shot: description: 'Heat generated per shot (projectile modes).' type: number format: double nullable: true wear_per_shot: description: 'Durability lost per shot (projectile modes).' type: number format: double nullable: true heat_per_second: description: 'Heat generated per second (beam / continuous-fire modes).' type: number format: double nullable: true wear_per_second: description: 'Durability lost per second (beam / continuous-fire modes).' type: number format: double nullable: true fire_during_spin_up: description: 'Whether the weapon fires during barrel spin-up (rapid mode).' type: boolean nullable: true shot_count: description: 'Number of shots per burst (burst mode).' type: integer nullable: true cooldown_time: description: 'Cooldown time between bursts in seconds (burst mode).' type: number format: double nullable: true x-suffix: ' s' sequence_mode: description: 'Sequence mode identifier (sequence mode).' type: string nullable: true charge_up_time: description: 'Beam spool-up time in seconds (beam mode).' type: number format: double nullable: true x-suffix: ' s' charge_down_time: description: 'Beam spool-down time in seconds (beam mode).' type: number format: double nullable: true x-suffix: ' s' full_damage_range: description: 'Range at which full damage is applied (beam mode).' type: number format: double nullable: true x-suffix: ' m' zero_damage_range: description: 'Range at which damage drops to zero (beam mode).' type: number format: double nullable: true x-suffix: ' m' hit_type: description: 'Beam hit registration type (beam mode).' type: string nullable: true hit_radius: description: 'Beam impact radius (beam / salvage mode).' type: number format: double nullable: true min_energy_draw: description: 'Minimum power draw (beam / salvage mode).' type: number format: double nullable: true max_energy_draw: description: 'Maximum power draw (beam / salvage mode).' type: number format: double nullable: true healing_mode: description: 'Healing mode identifier (healingbeam mode).' type: string nullable: true healing_per_second: description: 'SCU healed per second (healingbeam mode).' type: number format: double nullable: true ammo_per_mscu: description: 'Ammo consumed per medical SCU (healingbeam mode).' type: number format: double nullable: true medical_ammo_type: description: 'Medical ammo type tag (healingbeam mode).' type: string nullable: true external_healing: description: 'External healing mode (healingbeam mode).' type: string nullable: true toggle: description: 'Toggle mode flag (healingbeam mode).' type: boolean nullable: true max_distance: description: 'Maximum healing distance (healingbeam mode).' type: number format: double nullable: true x-suffix: ' m' max_sensor_distance: description: 'Maximum sensor range for target detection (healingbeam mode).' type: number format: double nullable: true auto_dosage_modifier: description: 'Auto-dosage BDL modifier (healingbeam mode).' type: number format: double nullable: true healing_break_time: description: 'Time before healing breaks in seconds (healingbeam mode).' type: number format: double nullable: true x-suffix: ' s' max_dose_for_auto_adjustment: description: 'Max dose for auto-adjustment (healingbeam mode).' type: number format: double nullable: true battery_drain_per_second: description: 'Battery drain per second (healingbeam mode).' type: number format: double nullable: true material_efficiency: description: 'Material recovery rate (salvage mode).' type: number format: double nullable: true max_health_repair_rate: description: 'Max hull repair rate (salvage mode).' type: number format: double nullable: true max_damage_map_repair_rate: description: 'Max damage-map repair rate (salvage mode).' type: number format: double nullable: true health_to_ammo_ratio: description: 'Health restored per ammo unit (salvage mode).' type: number format: double nullable: true ramp_up_time: description: 'Beam ramp-up time in seconds (salvage mode).' type: number format: double nullable: true x-suffix: ' s' ramp_down_time: description: 'Beam ramp-down time in seconds (salvage mode).' type: number format: double nullable: true x-suffix: ' s' max_vehicle_damage_ratio: description: 'Max vehicle damage ratio (salvage mode).' type: number format: double nullable: true repaired_material_ratio: description: 'Ratio of repaired material (salvage mode).' type: number format: double nullable: true salvage_can_fire_on_full: description: 'Can fire when target is at full health (salvage mode).' type: boolean nullable: true damage_threshold: description: 'Damage threshold for salvage operations (salvage mode).' type: number format: double nullable: true minimum_distance: description: 'Minimum mining distance (collectionbeam mode).' type: number format: double nullable: true x-suffix: ' m' maximum_distance: description: 'Maximum mining distance (collectionbeam mode).' type: number format: double nullable: true x-suffix: ' m' beam_radius: description: 'Collection beam radius (collectionbeam mode).' type: number format: double nullable: true collection_rate: description: 'Ore collection rate (collectionbeam mode).' type: number format: double nullable: true energy_draw: description: 'Power consumption (collectionbeam mode).' type: number format: double nullable: true mining_extractor_tag: description: 'Extractor classification tag (collectionbeam mode).' type: string nullable: true toggle_mode: description: 'Toggle mode flag (tractorbeam mode).' type: boolean nullable: true type: object personal_weapon_damage_vector: title: 'Personal Weapon Damage Vector' description: 'Damage values broken down by damage type.' properties: physical: description: 'Physical damage.' type: number format: double example: 11.5 nullable: true energy: description: 'Energy damage.' type: number format: double example: 0 nullable: true distortion: description: 'Distortion damage.' type: number format: double example: 0 nullable: true thermal: description: 'Thermal damage.' type: number format: double example: 0 nullable: true biochemical: description: 'Biochemical damage.' type: number format: double example: 0 nullable: true stun: description: 'Stun damage.' type: number format: double example: 0 nullable: true type: object personal_weapon_damage: title: 'Personal Weapon Damage' description: 'Weapon damage totals and per-type breakdowns from Weapon.Damage.' properties: dps_total: description: 'Total damage per second across all types.' type: number format: double example: 1150 nullable: true alpha_total: description: 'Total damage per shot across all types.' type: number format: double example: 11.5 nullable: true max: description: 'Maximum damage per magazine.' type: number format: double example: 575 nullable: true maximum: description: 'Deprecated: Use max.' type: number format: double example: 575 nullable: true deprecated: true dps: oneOf: - $ref: '#/components/schemas/personal_weapon_damage_vector' nullable: true alpha: oneOf: - $ref: '#/components/schemas/personal_weapon_damage_vector' nullable: true type: object personal_weapon_spread: title: 'Personal Weapon Spread' description: 'Spread configuration. Only present when spread data exists in the source.' properties: min: description: 'Minimum spread angle.' type: number format: double example: 0.1 nullable: true x-suffix: ' °' max: description: 'Maximum spread angle.' type: number format: double example: 1.2 nullable: true x-suffix: ' °' minimum: description: 'Deprecated: Use min.' type: number format: double example: 0.1 nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double example: 1.2 nullable: true deprecated: true first_attack: description: 'Spread added on the first shot.' type: number format: double example: 0.2 nullable: true x-suffix: ' °' per_attack: description: 'Spread added per subsequent shot.' type: number format: double example: 0.05 nullable: true x-suffix: ' °' decay: description: 'Rate at which spread recovers between shots.' type: number format: double example: 0.3 nullable: true type: object personal_weapon_charge: title: 'Personal Weapon Charge' description: 'Charge timings. Only present when charge data exists in the source.' properties: time: description: 'Time to reach full charge in seconds.' type: number format: double example: 1 nullable: true x-suffix: ' s' overcharge_time: description: 'Time window for overcharge in seconds.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' overcharged_time: description: 'Duration of overcharged state in seconds.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' cooldown_time: description: 'Cooldown after firing in seconds.' type: number format: double example: 1 nullable: true x-suffix: ' s' auto_fire: description: 'Auto-fire when fully charged.' type: boolean nullable: true require_full_charge: description: 'Must be fully charged before firing.' type: boolean nullable: true auto_charge: description: 'Auto-charges when held.' type: boolean nullable: true interpolate_bonus: description: 'Interpolates charge bonus linearly.' type: boolean nullable: true type: object personal_weapon_charge_modifier: title: 'Personal Weapon Charge Modifier' description: 'Charge modifiers. Only present when charge data exists in the source.' properties: damage: description: 'Damage multiplier at full charge.' type: number format: double example: 1 nullable: true fire_rate: description: 'Fire rate multiplier at full charge.' type: number format: double example: 1 nullable: true ammo_speed: description: 'Projectile speed multiplier at full charge.' type: number format: double example: 1 nullable: true fire_rate_override: description: 'Override fire rate at full charge.' type: number format: double nullable: true pellets_override: description: 'Override pellet count at full charge.' type: integer nullable: true burst_shots_override: description: 'Override burst shot count at full charge.' type: integer nullable: true heat_multiplier: description: 'Heat generation multiplier at full charge.' type: number format: double nullable: true type: object personal_weapon: title: 'Personal Weapon' description: 'FPS weapon specification sourced from Item.stdItem.Weapon and Item.stdItem.Ammunition for WeaponPersonal items. Legacy v2 fields are preserved and marked deprecated.' properties: class: description: 'Class as provided by DescriptionData.Class.' type: string example: Medium nullable: true type: description: 'Type as provided by DescriptionData.Item Type.' type: string example: Rifle nullable: true magazine_type: description: 'Deprecated: legacy field, currently returned as an empty string; do not use.' type: string nullable: true deprecated: true magazine_size: description: 'Deprecated: use `capacity`.' type: integer example: 50 nullable: true deprecated: true effective_range: description: 'Deprecated: use `range`.' type: number format: double example: 950 nullable: true deprecated: true capacity: description: 'Weapon magazine capacity.' type: integer example: 50 nullable: true range: description: 'Effective range in meters.' type: number format: double example: 950 nullable: true x-suffix: ' m' damage_per_shot: description: 'Deprecated: use `damage.alpha_total` (or per-type `damage.alpha.*`) instead.' type: number format: double example: 11.5 nullable: true deprecated: true pellets_per_shot: description: 'Pellets per shot.' type: integer example: 12 nullable: true rof: description: 'Deprecated: use `rpm`.' type: number format: double example: 925 nullable: true deprecated: true rpm: description: 'Rounds per minute for the first fire mode.' type: number format: double example: 925 nullable: true damages: description: 'Deprecated: legacy ammunition-derived entries. Prefer `damage` for weapon damage totals/breakdowns.' type: array items: $ref: '#/components/schemas/weapon_damage_entry' nullable: true deprecated: true modes: description: 'Fire modes returned from Weapon.Modes.' type: array items: $ref: '#/components/schemas/personal_weapon_mode' nullable: true fire_mode: description: 'Weapon fire mode.' type: string example: Auto nullable: true damage: $ref: '#/components/schemas/personal_weapon_damage' spread: oneOf: - $ref: '#/components/schemas/personal_weapon_spread' nullable: true ads_spread: oneOf: - $ref: '#/components/schemas/personal_weapon_spread' nullable: true charge: oneOf: - $ref: '#/components/schemas/personal_weapon_charge' nullable: true charge_modifier: oneOf: - $ref: '#/components/schemas/personal_weapon_charge_modifier' nullable: true ammunition: description: 'Deprecated: use the root-level ammunition resource (outside this specification payload) where available.' type: object nullable: true deprecated: true type: object weapon_damage_entry: title: 'Weapon Damage Entry' description: 'Legacy ammo-derived damage entry.' properties: type: description: 'Damage context.' type: string example: impact nullable: true name: description: 'Damage type name.' type: string example: physical nullable: true damage: description: 'Damage value.' type: number format: double example: 11.5 nullable: true type: object power_plant: title: 'Power Plant' description: 'Power plant specifications including power output and segment generation from resource network.' properties: power_output: description: 'Power draw value. Deprecated in favor of power_segment_generation for actual output measurement.' type: number format: double nullable: true power_segment_generation: description: 'Power segment generation rate from the resource network. This is the primary power output metric.' type: number format: double example: 1000 nullable: true type: object quantum_drive_jump_profile: title: 'Quantum Drive Jump Profile' description: 'Jump profile settings for quantum travel modes (StandardJump/SplineJump). Values mirror stdItem.QuantumDrive.[StandardJump|SplineJump] in game data.' properties: drive_speed: description: 'Max cruise velocity for the jump profile (m/s). Standard jumps range ~138,000,000-876,000,000; spline jumps ~400,000-500,000.' type: number format: double example: 218000000 nullable: true x-suffix: ' m/s' cooldown_time: description: 'Cooldown after exit in seconds; dataset ranges 0-92.07.' type: number format: double example: 41.4 nullable: true x-suffix: ' s' stage_one_accel_rate: description: 'Initial acceleration phase (m/s²). Standard ~1.75M; spline as low as 250.' type: number format: double example: 1750000 nullable: true x-suffix: ' m/s²' stage_two_accel_rate: description: 'Secondary acceleration phase (m/s²). Standard up to 11,000,000; spline around 50,000.' type: number format: double example: 11000000 nullable: true x-suffix: ' m/s²' engage_speed: description: 'Minimum ship speed to engage QT (m/s).' type: number format: double example: 1500 nullable: true x-suffix: ' m/s' interdiction_effect_time: description: 'Duration of interdiction effect (seconds).' type: number format: double example: 5 nullable: true x-suffix: ' s' calibration_rate: description: 'Calibration progress per second.' type: number format: double example: 1000 nullable: true x-suffix: ' /s' min_calibration_requirement: description: 'Minimum calibration distance gate.' type: number format: double example: 5000 nullable: true max_calibration_requirement: description: 'Maximum calibration distance gate.' type: number format: double example: 10000 nullable: true calibration_process_angle_limit: description: 'Angular tolerance during calibration (degrees).' type: number format: double example: 5 nullable: true x-suffix: ' °' calibration_warning_angle_limit: description: 'Warning threshold for calibration cone (degrees).' type: number format: double example: 8 nullable: true x-suffix: ' °' calibration_delay_in_seconds: description: 'Delay applied before calibration proceeds (seconds).' type: number format: double example: 1.5 nullable: true x-suffix: ' s' spool_up_time: description: 'Time to spool from idle to ready (seconds).' type: number format: double example: 6 nullable: true x-suffix: ' s' drive_speed_formatted: description: 'Drive speed formatted for display (e.g. "165 Mm/s", "400 km/s"). Null when drive_speed is null.' type: string example: '165 Mm/s' nullable: true stage_one_accel_rate_formatted: description: 'Stage one acceleration formatted for display (e.g. "5.0 Mm/s²"). Null when stage_one_accel_rate is null.' type: string example: '5 Mm/s²' nullable: true stage_two_accel_rate_formatted: description: 'Stage two acceleration formatted for display (e.g. "15 Mm/s²"). Null when stage_two_accel_rate is null.' type: string example: '15 Mm/s²' nullable: true engage_speed_formatted: description: 'Engage speed formatted for display (e.g. "1.5 km/s"). Null when engage_speed is null.' type: string example: '1.5 km/s' nullable: true type: object quantum_drive_thermal_energy_draw: title: 'Quantum Drive Thermal Energy Draw' description: 'Thermal energy draw (heat units/s) for each quantum travel phase.' properties: pre_ramp_up: type: number format: double example: 8700 nullable: true ramp_up: type: number format: double example: 8700 nullable: true in_flight: type: number format: double example: 8700 nullable: true ramp_down: type: number format: double example: 8700 nullable: true post_ramp_down: type: number format: double example: 8700 nullable: true type: object quantum_drive_travel_time_10gm: title: 'Quantum Drive Travel Time 10GM' description: 'Travel time for a 10GM reference distance as provided by the source data.' properties: seconds: description: 'Travel time in seconds.' type: number format: double example: 56 nullable: true x-suffix: ' s' formatted: description: 'Formatted travel time string.' type: string example: '00:56' nullable: true type: object quantum_drive: title: 'Quantum Drive' description: 'Quantum drive performance taken from stdItem.QuantumDrive in game data, including fuel usage, jump ranges, thermal draw, jump profiles, and derived mode listings.' properties: quantum_fuel_requirement: description: 'Total quantum fuel consumed to complete a spool (QuantumFuelRequirement).' type: number format: double example: 0.006758 nullable: true x-suffix: ' SCU' fuel_rate: description: 'Continuous quantum fuel burn per meter travelled (FuelRate).' type: number format: double example: 6.758E-9 nullable: true jump_range: description: 'Maximum permitted quantum jump distance in meters (JumpRange).' type: number format: double example: 3.402823E+38 nullable: true x-suffix: ' m' jump_range_formatted: description: 'Jump range formatted as human-readable distance (e.g. "~56 GM"). Null when jump_range is null.' type: string example: '~56 GM' nullable: true disconnect_range: description: 'Automatic disengage distance when approaching destination in meters (DisconnectRange).' type: number format: double example: 34693 nullable: true x-suffix: ' m' disconnect_range_formatted: description: 'Disconnect range formatted as human-readable distance (e.g. "35 km"). Null when disconnect_range is null.' type: string example: '35 km' nullable: true thermal_energy_draw: $ref: '#/components/schemas/quantum_drive_thermal_energy_draw' standard_jump: $ref: '#/components/schemas/quantum_drive_jump_profile' spline_jump: $ref: '#/components/schemas/quantum_drive_jump_profile' modes: description: 'List of jump profiles with an explicit mode identifier.' type: array items: $ref: '#/components/schemas/quantum_drive_jump_profile' fuel_consumption_scu_per_gm: description: 'Fuel consumption in SCU per GM (FuelConsumptionSCUPerGM).' type: number format: double example: 0.12 nullable: true fuel_efficiency: description: 'Fuel efficiency in GM per SCU (FuelEfficiencyGMPerSCU).' type: number format: double example: 8.3 nullable: true travel_time_10gm: $ref: '#/components/schemas/quantum_drive_travel_time_10gm' type: object quantum_interdiction_generator_power_fractions: title: 'Quantum Interdiction Generator Power Fractions' description: 'Fractions of the generator total power budget reserved for base/idle, pulse, and jammer phases.' properties: base: description: 'Power fraction allocated to base idle operation.' type: number format: double example: 0.2 nullable: true x-tabulator-formatter: pct pulse: description: 'Power fraction allocated to pulse operations.' type: number format: double example: 0.8 nullable: true x-tabulator-formatter: pct jammer: description: 'Power fraction allocated to jammer operations.' type: number format: double example: 0.4 nullable: true x-tabulator-formatter: pct type: object quantum_interdiction_generator_jamming: title: 'Quantum Interdiction Generator Jamming' description: 'Continuous interdiction field used to yank ships out of quantum travel.' properties: range: description: 'Effective jamming radius in meters.' type: number format: double example: 12000 nullable: true x-suffix: ' m' max_power_draw: description: 'Peak power draw while the jammer is active.' type: number format: double example: 200 nullable: true green_zone_check_range: description: 'Safety buffer around restricted areas.' type: number format: double example: 4000 nullable: true x-suffix: ' m' type: object quantum_interdiction_generator_pulse: title: 'Quantum Interdiction Generator Pulse' description: 'Quantum interdiction pulse (QIP) burst stats.' properties: charge_time: description: 'Seconds to charge the pulse.' type: number format: double example: 90 nullable: true x-suffix: ' s' discharge_time: description: 'Duration of the active pulse.' type: number format: double example: 30 nullable: true x-suffix: ' s' cooldown_time: description: 'Cooldown before the next charge cycle.' type: number format: double example: 1 nullable: true x-suffix: ' s' radius: description: 'Pulse radius in meters.' type: number format: double example: 20000 nullable: true x-suffix: ' m' decrease_charge_rate_time: description: 'Seconds to ramp down charging rate.' type: number format: double example: 1.5 nullable: true x-suffix: ' s' increase_charge_rate_time: description: 'Seconds to ramp up charging rate.' type: number format: double example: 3.5 nullable: true x-suffix: ' s' activation_phase_duration: description: 'Activation animation/FX phase length.' type: number format: double example: 3 nullable: true x-suffix: ' s' disperse_charge_time: description: 'Time to disperse the pulse if cancelled.' type: number format: double example: 5 nullable: true x-suffix: ' s' max_power_draw: description: 'Maximum power draw during pulse operations.' type: number format: double example: 1100 nullable: true stop_charging_power_fraction: description: 'Power fraction at which charging halts.' type: number format: double example: 0.2 nullable: true x-tabulator-formatter: pct max_charge_rate_power_fraction: description: 'Peak charge-rate power fraction.' type: number format: double example: 0.85 nullable: true x-tabulator-formatter: pct active_power_fraction: description: 'Power fraction while pulse is active.' type: number format: double example: 0.95 nullable: true x-tabulator-formatter: pct tethering_power_fraction: description: 'Power fraction while maintaining tether.' type: number format: double example: 0.8 nullable: true x-tabulator-formatter: pct green_zone_check_range: description: 'Safety buffer used for pulse firing checks.' type: number format: double example: 30000 nullable: true x-suffix: ' m' type: object quantum_interdiction_generator: title: 'Quantum Interdiction Generator' description: 'Interdiction and jamming stats including power budget, jamming field, and pulse burst data.' properties: power_fractions: oneOf: - $ref: '#/components/schemas/quantum_interdiction_generator_power_fractions' nullable: true description: 'Fractions of the generator total power budget reserved for base/idle, pulse, and jammer phases.' jamming: oneOf: - $ref: '#/components/schemas/quantum_interdiction_generator_jamming' nullable: true description: 'Continuous interdiction field used to yank ships out of quantum travel.' pulse: oneOf: - $ref: '#/components/schemas/quantum_interdiction_generator_pulse' nullable: true description: 'Quantum interdiction pulse (QIP) burst stats.' interdiction_range: description: 'Deprecated. Use `pulse.radius`.' type: number format: double example: 20000 nullable: true deprecated: true jammer_range: description: 'Deprecated. Use `jamming.range`.' type: number format: double example: 12000 nullable: true deprecated: true charge_duration: description: 'Deprecated. Use `pulse.charge_time`.' type: number format: double example: 90 nullable: true deprecated: true activation_duration: description: 'Deprecated. Use `pulse.activation_phase_duration`.' type: number format: double example: 3 nullable: true deprecated: true discharge_duration: description: 'Deprecated. Use `pulse.discharge_time`.' type: number format: double example: 30 nullable: true deprecated: true cooldown_duration: description: 'Deprecated. Use `pulse.cooldown_time`.' type: number format: double example: 1 nullable: true deprecated: true disperse_charge_duration: description: 'Deprecated. Use `pulse.disperse_charge_time`.' type: number format: double example: 5 nullable: true deprecated: true type: object radar_sensitivity_block: title: 'Radar Sensitivity Block' description: 'Per-signal sensitivity values as provided by game data.' properties: infrared: description: 'Infrared signature detection sensitivity.' type: number format: double nullable: true cross_section: description: 'Cross-section signature detection sensitivity.' type: number format: double nullable: true electromagnetic: description: 'Electromagnetic signature detection sensitivity.' type: number format: double nullable: true resource: description: 'Resource signature detection sensitivity.' type: number format: double nullable: true db: description: 'Decibel signature detection sensitivity.' type: number format: double nullable: true type: object radar_aim_assist_block: title: 'Radar Aim Assist Block' description: 'Aim assist range parameters as provided by game data.' properties: distance_min_assignment: description: 'Minimum distance for aim assist target assignment in meters.' type: number format: double nullable: true x-suffix: ' m' distance_max_assignment: description: 'Maximum distance for aim assist target assignment in meters.' type: number format: double nullable: true x-suffix: ' m' outside_range_buffer_distance: description: 'Buffer distance beyond max range in meters.' type: number format: double nullable: true x-suffix: ' m' type: object radar: title: Radar description: 'Radar detection parameters including sensitivity, piercing, and aim assist.' properties: detection_lifetime: description: 'Deprecated legacy field. Always null in this resource output.' type: number format: double nullable: true deprecated: true altitude_ceiling: description: 'Deprecated legacy field. Always null in this resource output.' type: number format: double nullable: true deprecated: true enable_cross_section_occlusion: description: 'Deprecated legacy field. Always null in this resource output.' type: boolean nullable: true deprecated: true cooldown: description: 'Radar ping cooldown in seconds.' type: number format: double example: 1 nullable: true x-suffix: ' s' sensitivity: oneOf: - $ref: '#/components/schemas/radar_sensitivity_block' nullable: true description: 'Detection sensitivity per signature type.' ground_vehicle_sensitivity: oneOf: - $ref: '#/components/schemas/radar_sensitivity_block' nullable: true description: 'Detection sensitivity for ground vehicles, derived from sensitivity modifiers.' piercing: oneOf: - $ref: '#/components/schemas/radar_sensitivity_block' nullable: true description: 'Signal piercing strength per signature type, controlling detection through occlusion.' aim_assist: oneOf: - $ref: '#/components/schemas/radar_aim_assist_block' nullable: true description: 'Aim assist range parameters.' type: object radiation_resistance: title: 'Radiation Resistance' description: 'Radiation resistance values used by clothing and armor.' properties: maximum_radiation_capacity: description: 'Maximum radiation capacity.' type: number format: double nullable: true radiation_dissipation_rate: description: 'Radiation dissipation rate.' type: number format: double nullable: true type: object salvage_modifier: title: 'Salvage Modifier' description: 'Deprecated: Use values under "weapon_modifier". Salvage-specific tuning taken from Item.stdItem.SalvageModifier' properties: salvage_speed_multiplier: type: number format: double nullable: true deprecated: true radius_multiplier: type: number format: double nullable: true deprecated: true extraction_efficiency: type: number format: double nullable: true deprecated: true type: object seat_axis: title: 'Item Seat Axis Limits' description: 'Minimum and maximum values for a yaw or pitch axis.' properties: min: description: 'Minimum axis limit.' type: number format: double nullable: true max: description: 'Maximum axis limit.' type: number format: double nullable: true minimum: description: 'Deprecated: Use min.' type: number format: double nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true type: object seat_ejection: title: 'Item Seat Ejection' description: 'Ejection system capabilities when equipped.' properties: max_linear_velocity: description: 'Maximum linear ejection velocity in meters per second.' type: number format: double nullable: true x-suffix: ' m/s' max_linear_acceleration: description: 'Maximum linear ejection acceleration in meters per second squared.' type: number format: double nullable: true x-suffix: ' m/s²' max_angular_velocity: description: 'Maximum angular ejection velocity.' type: number format: double nullable: true max_angular_acceleration: description: 'Maximum angular ejection acceleration.' type: number format: double nullable: true ejection_loop_time: description: 'Ejection sequence duration in seconds.' type: number format: double nullable: true x-suffix: ' s' type: object seat: title: Seat description: 'Seat parameters including type, axis limits, and ejection system.' properties: seat_type: description: 'Seat control type.' type: string nullable: true yaw: oneOf: - $ref: '#/components/schemas/seat_axis' nullable: true description: 'Yaw axis rotation limits.' pitch: oneOf: - $ref: '#/components/schemas/seat_axis' nullable: true description: 'Pitch axis rotation limits.' set_yaw_pitch_limits: description: 'Whether yaw and pitch limits are enforced.' type: boolean nullable: true has_ejection: description: 'Whether the seat has an ejection system.' type: boolean nullable: true ejection: oneOf: - $ref: '#/components/schemas/seat_ejection' nullable: true description: 'Ejection system parameters.' type: object self_destruct: title: 'Self-Destruct Module' description: 'Self-destruct charge parameters.' properties: damage: description: 'Peak blast damage at the center of the explosion.' type: number format: double example: 15000 nullable: true radius: description: 'Maximum damage radius in meters.' type: number format: double example: 80 nullable: true x-suffix: ' m' min_radius: description: 'Inner radius in meters that always receives full damage before falloff begins.' type: number format: double example: 30 nullable: true x-suffix: ' m' phys_radius: description: 'Physical impact radius in meters.' type: number format: double example: 50 nullable: true x-suffix: ' m' min_phys_radius: description: 'Inner physical impact radius in meters.' type: number format: double example: 30 nullable: true x-suffix: ' m' time: description: 'Countdown duration in seconds before detonation once armed.' type: number format: double example: 45 nullable: true deprecated: true countdown: description: 'Countdown duration in seconds before detonation.' type: number format: double example: 20 nullable: true x-suffix: ' s' type: object shield_controller: title: 'Shield Controller' description: 'Shield controller parameters.' properties: face_type: description: 'Shield face layout type.' type: string nullable: true max_reallocation: description: 'Maximum shield reallocation fraction.' type: number format: double nullable: true x-tabulator-formatter: pct reconfiguration_cooldown: description: 'Cooldown after shield reconfiguration in seconds.' type: number format: double nullable: true x-suffix: ' s' max_electrical_charge_damage_rate: description: 'Maximum electrical charge damage rate.' type: number format: double nullable: true type: object shield_damage_range: title: 'Shield Damage Range' description: 'Minimum/maximum absorption or resistance values for a given damage type.' properties: min: description: 'Minimum value.' type: number format: double example: 0 nullable: true max: description: 'Maximum value.' type: number format: double example: 1 nullable: true type: object shield_damage_map: title: 'Shield Damage Map' description: 'Per-damage-type values. Only types present in source data are returned.' properties: physical: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true energy: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true distortion: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true thermal: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true biochemical: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true stun: oneOf: - $ref: '#/components/schemas/shield_damage_range' nullable: true type: object shield_reserve_pool: title: 'Shield Reserve Pool' description: 'Reserve pool behavior for shield health and regen.' properties: regen_rate: description: 'Reserve pool maximum regeneration rate.' type: number format: double example: 211 nullable: true regen_time: description: 'Reserve pool regeneration time in seconds.' type: number format: double example: 20 nullable: true initial_health_ratio: description: 'Reserve pool initial health ratio.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct max_health_ratio: description: 'Reserve pool maximum health ratio.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct regen_rate_ratio: description: 'Reserve pool regeneration rate ratio.' type: number format: double example: 1 nullable: true drain_rate_ratio: description: 'Reserve pool drain rate ratio.' type: number format: double example: 2.5 nullable: true type: object shield_regen_delay: title: 'Shield Regen Delay' description: 'Delay before shield regeneration starts.' properties: downed: description: 'Delay after shields are fully downed.' type: number format: double example: 8.47 nullable: true x-suffix: ' s' damage: description: 'Delay after taking damage (without being fully downed).' type: number format: double example: 4.24 nullable: true x-suffix: ' s' type: object shield: title: Shield description: 'Ship shield generator statistics covering health pool, regeneration, reserve pool behavior, recharge delays, and damage absorption/resistance.' properties: max_health: description: 'Total shield hit points across all faces.' type: number format: double example: 4410 nullable: true x-suffix: ' HP' regen_rate: description: 'Maximum shield regeneration per second.' type: number format: double example: 211 nullable: true regen_time: description: 'Shield regeneration time in seconds.' type: number format: double example: 20 nullable: true x-suffix: ' s' decay_ratio: description: 'Portion of regeneration lost when shield is taking damage.' type: number format: double example: 0.25 nullable: true x-tabulator-formatter: pct reserve_pool: $ref: '#/components/schemas/shield_reserve_pool' regen_delay: $ref: '#/components/schemas/shield_regen_delay' electrical_charge_damage_resistance: description: 'Additional resistance to electrical charge damage.' type: number format: double example: 0 nullable: true absorption: oneOf: - $ref: '#/components/schemas/shield_damage_map' nullable: true description: 'Absorption ranges by damage type.' resistance: oneOf: - $ref: '#/components/schemas/shield_damage_map' nullable: true description: 'Resistance ranges by damage type.' max_shield_health: description: 'Deprecated. Use `max_health`.' type: number format: double nullable: true deprecated: true max_shield_regen: description: 'Deprecated. Use `regen_rate`.' type: number format: double nullable: true deprecated: true type: object suit_armor_type_resistance: title: 'Suit Armor Type Resistance' description: 'Per-damage-type resistance entry as returned by the resource.' properties: type: description: 'Damage type identifier (lowercase).' type: string example: physical nullable: true multiplier: description: 'Damage multiplier. Incoming damage is scaled by this value (1.0 = no resistance, <1.0 = reduced damage).' type: number format: double example: 0.7 nullable: true threshold: description: 'Damage threshold before resistance applies.' type: number format: double example: 0 nullable: true type: object suit_armor_damage_resistance: title: 'Suit Armor Damage Resistance' description: 'Deprecated: Use damage_resistance_map. Damage resistance values for the armor piece.' properties: impact: type: number format: double example: 0.6925 nullable: true physical: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true energy: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true distortion: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true thermal: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true biochemical: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true stun: oneOf: - $ref: '#/components/schemas/suit_armor_type_resistance' nullable: true type: object deprecated: true suit_armor_damage_resistance_map: title: 'Suit Armor Damage Resistance Map' description: 'Flattened resistance values and deltas (multiplier change vs 1.0). Returned for convenience.' properties: impact: description: 'Impact damage multiplier.' type: number format: double example: 0.6925 nullable: true impact_change: description: 'Impact multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3075 nullable: true x-tabulator-formatter: pctDelta physical: description: 'Physical damage multiplier.' type: number format: double example: 0.7 nullable: true physical_change: description: 'Physical multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3 nullable: true x-tabulator-formatter: pctDelta energy: description: 'Energy damage multiplier.' type: number format: double example: 0.7 nullable: true energy_change: description: 'Energy multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3 nullable: true x-tabulator-formatter: pctDelta distortion: description: 'Distortion damage multiplier.' type: number format: double example: 0.7 nullable: true distortion_change: description: 'Distortion multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3 nullable: true x-tabulator-formatter: pctDelta thermal: description: 'Thermal damage multiplier.' type: number format: double example: 0.7 nullable: true thermal_change: description: 'Thermal multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3 nullable: true x-tabulator-formatter: pctDelta biochemical: description: 'Biochemical damage multiplier.' type: number format: double example: 0.7 nullable: true biochemical_change: description: 'Biochemical multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.3 nullable: true x-tabulator-formatter: pctDelta stun: description: 'Stun damage multiplier.' type: number format: double example: 0.55 nullable: true stun_change: description: 'Stun multiplier delta from 1.0 (negative = resistance).' type: number format: double example: -0.45 nullable: true x-tabulator-formatter: pctDelta type: object suit_armor_signature: title: 'Suit Armor Signature' description: 'Map of signature emission types (snake_case) to emission values.' type: object additionalProperties: type: number suit_armor: title: 'Suit Armor' description: 'Protective characteristics of FPS armor pieces (helmets, cores, arms, legs). Generated from SuitArmor data in Item.stdItem.' properties: slot: description: 'Armor slot derived from the item classification (e.g. Arms, Core, Legs, Helmet).' type: string example: Arms nullable: true armor_type: description: 'Deprecated legacy field. Use `slot`.' type: string example: Arms nullable: true deprecated: true type: description: 'Derived clothing/armor type from the item name and type (e.g. Jacket, Gloves, Helmet). `type` field from the deprecated clothing resource' type: string example: Jacket nullable: true garment_type: description: 'WIP: Specific garment type parsed from the SC class_name (e.g. Apron, Jumpsuit, Vest, Trenchcoat).' type: string example: Apron nullable: true damage_resistance: oneOf: - $ref: '#/components/schemas/suit_armor_damage_resistance' nullable: true description: 'Structured resistance values.' deprecated: true damage_resistance_map: oneOf: - $ref: '#/components/schemas/suit_armor_damage_resistance_map' nullable: true description: 'Flattened resistance values and multiplier deltas.' protected_body_parts: description: 'UUIDs of body parts covered by this armor.' type: array items: type: string example: - b6d0be4f-bbdd-4a47-a168-8c9c9293c63a - e9c7c16d-d408-41c1-8d13-eec69cd2a013 signature: oneOf: - $ref: '#/components/schemas/suit_armor_signature' nullable: true description: 'Signature emissions produced by the armor (map form).' example: electromagnetic: 5 infrared: 2 temp_resistance_min: description: 'Deprecated: Use temperature_resistance from root.' type: number format: double example: 2 nullable: true deprecated: true temp_resistance_max: description: 'Deprecated: Use temperature_resistance from root.' type: number format: double example: 10 nullable: true deprecated: true radiation_resistance: oneOf: - $ref: '#/components/schemas/radiation_resistance' nullable: true description: 'Radiation protection values from RadiationResistance.' example: maximum_radiation_capacity: 26400 radiation_dissipation_rate: 145.8 gforce_resistance: description: 'G-force tolerance modifier from root. Positive increases tolerance, negative reduces it.' type: number format: double example: 0.9 nullable: true x-tabulator-formatter: pct type: object temperature_resistance: title: 'Temperature Resistance' description: 'Temperature resistance range shared by clothing and armor.' properties: min: description: 'Minimum temperature supported.' type: number format: double nullable: true max: description: 'Maximum temperature supported.' type: number format: double nullable: true minimum: description: 'Deprecated: Use min.' type: number format: double nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true type: object thruster_performance: title: 'Thruster Performance' properties: thrust_capacity: description: 'Maximum thrust output in newtons.' type: number format: double example: 1431557 nullable: true x-suffix: ' N' max_supported_atmospheric_efficiency: description: 'Cap for atmospheric efficiency scaling.' type: number format: double example: 2 nullable: true min_health_thrust_multiplier: description: 'Minimum thrust fraction when the thruster is at critical health (e.g., 0.25 = 25% thrust when badly damaged).' type: number format: double example: 0.25 nullable: true type: object thruster_fuel: title: 'Thruster Fuel Use' properties: burn_rate_per_10k_newton: description: 'Fuel consumed per 10,000 newtons of thrust.' type: number format: double example: 0.125 nullable: true type: object thruster_backwash: title: 'Thruster Backwash' properties: enabled: description: 'Whether backwash effects are enabled.' type: boolean example: true nullable: true automate_size: description: 'Automatically size backwash based on output.' type: boolean example: false nullable: true max_speed: description: 'Max speed (m/s) at which backwash applies.' type: number format: double example: 80 nullable: true x-suffix: ' m/s' max_density: description: 'Max atmospheric density where backwash is considered.' type: number format: double example: 7 nullable: true max_resistance: description: 'Max resistance value for backwash interaction.' type: number format: double example: 100 nullable: true afterburner_multiplier: description: 'Backwash intensity multiplier while afterburning.' type: number format: double example: 1.1 nullable: true type: object thruster_handling: title: 'Thruster Handling' properties: strength_smoothing: description: 'Smoothing factor applied to thrust changes.' type: number format: double example: 0.2 nullable: true type: object thruster: title: Thruster description: 'Ship thruster characteristics focused on performance, fuel efficiency, and backwash behaviour.' properties: performance: oneOf: - $ref: '#/components/schemas/thruster_performance' nullable: true fuel: oneOf: - $ref: '#/components/schemas/thruster_fuel' nullable: true role: description: 'Thruster role within the ship: Main, Maneuver, or Retro.' type: string example: Maneuver nullable: true vtol_only: description: 'True if the thruster only activates in VTOL mode.' type: boolean example: false nullable: true backwash: oneOf: - $ref: '#/components/schemas/thruster_backwash' nullable: true handling: oneOf: - $ref: '#/components/schemas/thruster_handling' nullable: true thrust_capacity: description: 'Deprecated. Use performance.thrust_capacity.' type: number format: double nullable: true deprecated: true min_health_thrust_multiplier: description: 'Deprecated. Use performance.min_health_thrust_multiplier.' type: number format: double nullable: true deprecated: true fuel_burn_per_10k_newton: description: 'Deprecated. Use fuel.burn_rate_per_10k_newton.' type: number format: double nullable: true deprecated: true type: description: 'Deprecated. Use role.' type: string nullable: true deprecated: true type: object tractor_beam_force: title: 'Tractor Beam Force' description: 'Push / pull strength and volume scaling for the beam.' properties: min: description: 'Minimum force output.' type: number format: double example: 1500 nullable: true x-suffix: ' N' max: description: 'Maximum force output.' type: number format: double example: 500000 nullable: true x-suffix: ' N' max_volume: description: 'Maximum object volume the beam can handle (µSCU).' type: number format: double example: 300000 nullable: true x-suffix: ' µSCU' volume_force_coefficient: description: 'Force falloff based on target volume.' type: number format: double example: 0.3 nullable: true type: object tractor_beam_range: title: 'Tractor Beam Range' description: 'Effective distances and cone limits.' properties: min: description: 'Minimum effective distance.' type: number format: double example: 0.5 nullable: true x-suffix: ' m' max: description: 'Maximum effective distance.' type: number format: double example: 135 nullable: true x-suffix: ' m' full_strength_distance: description: 'Distance at which full beam strength is maintained, in meters.' type: number format: double example: 68 nullable: true x-suffix: ' m' max_angle: description: 'Maximum beam cone angle in degrees.' type: number format: double example: 80 nullable: true x-suffix: ' °' hit_radius: description: 'Beam hit detection radius.' type: number format: double example: 0.1 nullable: true type: object tractor_beam_tether: title: 'Tractor Beam Tether' properties: tether_break_time: description: 'Seconds before the tether breaks under excessive strain.' type: number format: double example: 2.25 nullable: true x-suffix: ' s' safe_range_value_factor: description: 'Safety factor used to determine stable range.' type: number format: double example: 0.85 nullable: true allow_scrolling_into_breaking_range: description: 'Whether players can scroll past the safe range into breaking range.' type: boolean example: true nullable: true type: object tractor_beam_cargo_mode_override: title: 'Cargo Mode Overrides' description: 'Stronger cargo-handling profile used when grappling cargo or containers.' properties: min_force: description: 'Cargo mode override for minimum force.' type: number format: double example: 9450001 nullable: true max_force: description: 'Cargo mode override for maximum force.' type: number format: double example: 9500001 nullable: true min_acceleration: description: 'Cargo mode override for minimum acceleration.' type: number format: double example: 15 nullable: true max_acceleration: description: 'Cargo mode override for maximum acceleration.' type: number format: double example: 75 nullable: true min_speed: description: 'Cargo mode override for minimum speed.' type: number format: double example: 12.25 nullable: true max_speed: description: 'Cargo mode override for maximum speed.' type: number format: double example: 24.5 nullable: true acceleration_factor: description: 'Cargo mode override for acceleration factor.' type: number format: double example: 10 nullable: true degrees_per_action: description: 'Cargo mode override for rotation degrees per action.' type: number format: double example: 10 nullable: true max_angular_acceleration: description: 'Cargo mode override for maximum angular acceleration.' type: number format: double example: 150 nullable: true max_angular_velocity: description: 'Cargo mode override for maximum angular velocity.' type: number format: double example: 55 nullable: true degrees_per_action_scroll_wheel: description: 'Cargo mode override for scroll wheel degrees per action.' type: number format: double example: 1000 nullable: true force_fraction_rotation: description: 'Cargo mode override for rotation force fraction.' type: number format: double example: 0.1 nullable: true min_distance: description: 'Cargo mode override for minimum distance.' type: number format: double example: 0.5 nullable: true max_distance: description: 'Cargo mode override for maximum distance.' type: number format: double example: 225 nullable: true full_strength_distance: description: 'Cargo mode override for full strength distance.' type: number format: double example: 100 nullable: true type: object tractor_beam_towing: title: 'Tractor Beam Towing' description: 'Towing parameters emitted under the `towing` key.' properties: force: description: 'Towing force.' type: number format: double example: 100000 nullable: true max_acceleration: description: 'Maximum towing acceleration.' type: number format: double example: 10 nullable: true max_distance: description: 'Maximum towing distance.' type: number format: double example: 100 nullable: true x-suffix: ' m' qt_mass_limit: description: 'Quantum tow mass limit.' type: number format: double example: 0 nullable: true type: object tractor_beam: title: 'Tractor Beam' description: 'Tractor beam and towing gameplay stats.' properties: force: oneOf: - $ref: '#/components/schemas/tractor_beam_force' nullable: true range: oneOf: - $ref: '#/components/schemas/tractor_beam_range' nullable: true tether: oneOf: - $ref: '#/components/schemas/tractor_beam_tether' nullable: true cargo_mode_override: oneOf: - $ref: '#/components/schemas/tractor_beam_cargo_mode_override' nullable: true towing: oneOf: - $ref: '#/components/schemas/tractor_beam_towing' nullable: true min_force: description: 'Deprecated. Use `force.min`.' type: number format: double nullable: true deprecated: true max_force: description: 'Deprecated. Use `force.max`.' type: number format: double nullable: true deprecated: true min_distance: description: 'Deprecated. Use `range.min`.' type: number format: double nullable: true deprecated: true max_distance: description: 'Deprecated. Use `range.max`.' type: number format: double nullable: true deprecated: true full_strength_distance: description: 'Deprecated. Use `range.full_strength_distance`.' type: number format: double nullable: true deprecated: true max_angle: description: 'Deprecated. Use `range.max_angle`.' type: number format: double nullable: true deprecated: true max_volume: description: 'Deprecated. Use `force.max_volume`.' type: number format: double nullable: true deprecated: true volume_force_coefficient: description: 'Deprecated. Use `force.volume_force_coefficient`.' type: number format: double nullable: true deprecated: true tether_break_time: description: 'Deprecated. Use `tether.tether_break_time`.' type: number format: double nullable: true deprecated: true safe_range_value_factor: description: 'Deprecated. Use `tether.safe_range_value_factor`.' type: number format: double nullable: true deprecated: true type: object turret_axis: title: 'Turret Axis' description: 'Axis configuration for turret yaw or pitch.' properties: slaved_only: description: 'Whether the axis is slaved-only.' type: boolean example: false nullable: true speed: description: 'Axis rotation speed.' type: number format: double example: 60 nullable: true x-suffix: ' °/s' time_to_full_speed: description: 'Seconds to reach full rotation speed.' type: number format: double example: 0.5 nullable: true x-suffix: ' s' acceleration_decay: description: 'Acceleration decay value.' type: number format: double example: 0 nullable: true angle_limit_min: description: 'Minimum target angle when RestrictTargetAngles is enabled.' type: number format: double example: -180 nullable: true x-suffix: ' °' angle_limit_max: description: 'Maximum target angle when RestrictTargetAngles is enabled.' type: number format: double example: 180 nullable: true x-suffix: ' °' type: object turret: title: 'Turret & Gimbal' description: 'Turret or gimbal configuration including rotation style, weapon size constraints, and axis parameters.' properties: rotation_style: description: 'Turret rotation style.' type: string nullable: true mounts: description: 'Number of weapon mounts.' type: integer example: 2 nullable: true min_size: description: 'Minimum supported weapon size.' type: integer example: 1 nullable: true max_size: description: 'Maximum supported weapon size.' type: integer example: 3 nullable: true yaw_axis: oneOf: - $ref: '#/components/schemas/turret_axis' nullable: true pitch_axis: oneOf: - $ref: '#/components/schemas/turret_axis' nullable: true type: object vehicle_weapon_damage_entry: title: 'Vehicle Weapon Damage Entry' description: 'Single damage component entry derived from Ammunition impact/detonation damage fields.' properties: type: description: 'Damage phase bucket.' type: string example: impact nullable: true name: description: 'Damage type name (lowercase).' type: string example: physical nullable: true damage: description: 'Damage value.' type: number format: double example: 11.5 nullable: true type: object vehicle_weapon_mode: title: 'Vehicle Weapon Mode' description: 'Fire mode entry as emitted by the resource. Type-specific fields are only present when the mode type matches (e.g. beam fields only appear for type=beam).' properties: mode: description: 'Mode name.' type: string example: Rapid nullable: true localised: description: 'Localized label.' type: string example: '[AUTO]' nullable: true type: description: 'Fire type.' type: string example: rapid nullable: true rpm: description: 'Rounds per minute.' type: number format: double example: 925 nullable: true rounds_per_minute: description: 'Deprecated: Use rpm.' type: number format: double example: 925 nullable: true deprecated: true ammo_per_shot: description: 'Ammo consumed per shot.' type: integer example: 1 nullable: true pellets_per_shot: description: 'Pellets per shot.' type: integer example: 1 nullable: true damage_per_second: description: 'Damage per second.' type: number format: double example: 0 nullable: true heat_per_shot: description: 'Heat generated per shot (projectile modes).' type: number format: double nullable: true wear_per_shot: description: 'Durability lost per shot (projectile modes).' type: number format: double nullable: true heat_per_second: description: 'Heat generated per second (beam / continuous-fire modes).' type: number format: double nullable: true wear_per_second: description: 'Durability lost per second (beam / continuous-fire modes).' type: number format: double nullable: true fire_during_spin_up: description: 'Whether the weapon fires during barrel spin-up (rapid mode).' type: boolean nullable: true shot_count: description: 'Number of shots per burst (burst mode).' type: integer nullable: true cooldown_time: description: 'Cooldown time between bursts in seconds (burst mode).' type: number format: double nullable: true x-suffix: ' s' sequence_mode: description: 'Sequence mode identifier (sequence mode).' type: string nullable: true charge_up_time: description: 'Beam spool-up time in seconds (beam mode).' type: number format: double nullable: true x-suffix: ' s' charge_down_time: description: 'Beam spool-down time in seconds (beam mode).' type: number format: double nullable: true x-suffix: ' s' full_damage_range: description: 'Range at which full damage is applied (beam mode).' type: number format: double nullable: true x-suffix: ' m' zero_damage_range: description: 'Range at which damage drops to zero (beam mode).' type: number format: double nullable: true x-suffix: ' m' hit_type: description: 'Beam hit registration type (beam mode).' type: string nullable: true hit_radius: description: 'Beam impact radius (beam / salvage mode).' type: number format: double nullable: true min_energy_draw: description: 'Minimum power draw (beam / salvage mode).' type: number format: double nullable: true max_energy_draw: description: 'Maximum power draw (beam / salvage mode).' type: number format: double nullable: true healing_mode: description: 'Healing mode identifier (healingbeam mode).' type: string nullable: true healing_per_second: description: 'SCU healed per second (healingbeam mode).' type: number format: double nullable: true ammo_per_mscu: description: 'Ammo consumed per medical SCU (healingbeam mode).' type: number format: double nullable: true medical_ammo_type: description: 'Medical ammo type tag (healingbeam mode).' type: string nullable: true external_healing: description: 'External healing mode (healingbeam mode).' type: string nullable: true toggle: description: 'Toggle mode flag (healingbeam mode).' type: boolean nullable: true max_distance: description: 'Maximum healing distance (healingbeam mode).' type: number format: double nullable: true x-suffix: ' m' max_sensor_distance: description: 'Maximum sensor range for target detection (healingbeam mode).' type: number format: double nullable: true auto_dosage_modifier: description: 'Auto-dosage BDL modifier (healingbeam mode).' type: number format: double nullable: true healing_break_time: description: 'Time before healing breaks in seconds (healingbeam mode).' type: number format: double nullable: true x-suffix: ' s' max_dose_for_auto_adjustment: description: 'Max dose for auto-adjustment (healingbeam mode).' type: number format: double nullable: true battery_drain_per_second: description: 'Battery drain per second (healingbeam mode).' type: number format: double nullable: true material_efficiency: description: 'Material recovery rate (salvage mode).' type: number format: double nullable: true max_health_repair_rate: description: 'Max hull repair rate (salvage mode).' type: number format: double nullable: true max_damage_map_repair_rate: description: 'Max damage-map repair rate (salvage mode).' type: number format: double nullable: true health_to_ammo_ratio: description: 'Health restored per ammo unit (salvage mode).' type: number format: double nullable: true ramp_up_time: description: 'Beam ramp-up time in seconds (salvage mode).' type: number format: double nullable: true x-suffix: ' s' ramp_down_time: description: 'Beam ramp-down time in seconds (salvage mode).' type: number format: double nullable: true x-suffix: ' s' max_vehicle_damage_ratio: description: 'Max vehicle damage ratio (salvage mode).' type: number format: double nullable: true repaired_material_ratio: description: 'Ratio of repaired material (salvage mode).' type: number format: double nullable: true salvage_can_fire_on_full: description: 'Can fire when target is at full health (salvage mode).' type: boolean nullable: true damage_threshold: description: 'Damage threshold for salvage operations (salvage mode).' type: number format: double nullable: true minimum_distance: description: 'Minimum mining distance (collectionbeam mode).' type: number format: double nullable: true x-suffix: ' m' maximum_distance: description: 'Maximum mining distance (collectionbeam mode).' type: number format: double nullable: true x-suffix: ' m' beam_radius: description: 'Collection beam radius (collectionbeam mode).' type: number format: double nullable: true collection_rate: description: 'Ore collection rate (collectionbeam mode).' type: number format: double nullable: true energy_draw: description: 'Power consumption (collectionbeam mode).' type: number format: double nullable: true mining_extractor_tag: description: 'Extractor classification tag (collectionbeam mode).' type: string nullable: true toggle_mode: description: 'Toggle mode flag (tractorbeam mode).' type: boolean nullable: true type: object vehicle_weapon_damage_types: title: 'Vehicle Weapon Damage Types' description: 'Damage values split by type.' properties: physical: description: 'Physical damage.' type: number format: double nullable: true energy: description: 'Energy damage.' type: number format: double nullable: true distortion: description: 'Distortion damage.' type: number format: double nullable: true thermal: description: 'Thermal damage.' type: number format: double nullable: true biochemical: description: 'Biochemical damage.' type: number format: double nullable: true stun: description: 'Stun damage.' type: number format: double nullable: true type: object vehicle_weapon_damage: title: 'Vehicle Weapon Damage' description: 'Damage summary and per-type alpha breakdown.' properties: sustained_60s: description: 'Sustained damage over 60 seconds.' type: number format: double nullable: true burst: description: 'Burst damage.' type: number format: double nullable: true alpha_total: description: 'Total alpha damage per shot.' type: number format: double nullable: true max: description: 'Maximum damage per magazine.' type: number format: double nullable: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true alpha: oneOf: - $ref: '#/components/schemas/vehicle_weapon_damage_types' nullable: true type: object vehicle_weapon_spread: title: 'Vehicle Weapon Spread' properties: min: description: 'Minimum spread angle.' type: number format: double nullable: true x-suffix: ' °' max: description: 'Maximum spread angle.' type: number format: double nullable: true x-suffix: ' °' minimum: description: 'Deprecated: Use min.' type: number format: double nullable: true deprecated: true maximum: description: 'Deprecated: Use max.' type: number format: double nullable: true deprecated: true first_attack: description: 'Spread added on the first shot.' type: number format: double nullable: true x-suffix: ' °' per_attack: description: 'Spread added per subsequent shot.' type: number format: double nullable: true x-suffix: ' °' decay: description: 'Rate at which spread recovers between shots.' type: number format: double nullable: true type: object vehicle_weapon_barrel_spin_time: title: 'Vehicle Weapon Barrel Spin Time' properties: up: description: 'Spin-up time in seconds.' type: number format: double nullable: true x-suffix: ' s' down: description: 'Spin-down time in seconds.' type: number format: double nullable: true x-suffix: ' s' type: object vehicle_weapon_heat: title: 'Vehicle Weapon Heat' properties: per_shot: description: 'Heat generated per shot.' type: number format: double nullable: true cooling_delay: description: 'Delay before cooling begins in seconds.' type: number format: double nullable: true x-suffix: ' s' cooling_per_second: description: 'Cooling rate per second.' type: number format: double nullable: true overheat_max_shots: description: 'Number of shots to trigger overheat.' type: number format: double nullable: true overheat_max_time: description: 'Time to trigger overheat in seconds.' type: number format: double nullable: true overheat_cooldown: description: 'Overheat recovery time in seconds.' type: number format: double nullable: true x-suffix: ' s' type: object vehicle_weapon_capacitor: title: 'Vehicle Weapon Capacitor' properties: max_ammo_load: description: 'Maximum capacitor ammo load.' type: number format: double nullable: true regen_per_second: description: 'Capacitor regeneration per second.' type: number format: double nullable: true cooldown: description: 'Capacitor cooldown in seconds.' type: number format: double nullable: true x-suffix: ' s' requested_ammo_load: description: 'Requested ammo load from capacitor.' type: number format: double nullable: true costs_per_shot: description: 'Capacitor cost per shot.' type: number format: double nullable: true type: object vehicle_weapon_charge: title: 'Vehicle Weapon Charge' properties: time: description: 'Time to reach full charge in seconds.' type: number format: double nullable: true x-suffix: ' s' overcharge_time: description: 'Overcharge window in seconds.' type: number format: double nullable: true x-suffix: ' s' overcharged_time: description: 'Duration of overcharged state in seconds.' type: number format: double nullable: true x-suffix: ' s' cooldown_time: description: 'Cooldown after firing in seconds.' type: number format: double nullable: true x-suffix: ' s' auto_fire: description: 'Auto-fire when fully charged.' type: boolean nullable: true require_full_charge: description: 'Must be fully charged before firing.' type: boolean nullable: true auto_charge: description: 'Auto-charges when held.' type: boolean nullable: true interpolate_bonus: description: 'Interpolates charge bonus linearly.' type: boolean nullable: true type: object vehicle_weapon_charge_modifier: title: 'Vehicle Weapon Charge Modifier' properties: damage: description: 'Damage multiplier at full charge.' type: number format: double nullable: true fire_rate: description: 'Fire rate multiplier at full charge.' type: number format: double nullable: true ammo_speed: description: 'Projectile speed multiplier at full charge.' type: number format: double nullable: true fire_rate_override: description: 'Override fire rate at full charge.' type: number format: double nullable: true pellets_override: description: 'Override pellet count at full charge.' type: integer nullable: true burst_shots_override: description: 'Override burst shot count at full charge.' type: integer nullable: true heat_multiplier: description: 'Heat generation multiplier at full charge.' type: number format: double nullable: true type: object vehicle_weapon: title: 'Vehicle Weapon' description: 'Vehicle weapon stats including damage, fire modes, spread, heat, and capacitor data.' properties: class: description: 'Weapon class.' type: string example: LaserCannon nullable: true type: description: 'Item type.' type: string example: Weapon nullable: true capacity: description: 'Ammunition capacity.' type: integer example: 50 nullable: true range: description: 'Effective range in meters.' type: number format: double example: 1800 nullable: true x-suffix: ' m' rpm: description: 'Primary mode rounds per minute.' type: number format: double example: 400 nullable: true damage: oneOf: - $ref: '#/components/schemas/vehicle_weapon_damage' nullable: true description: 'Damage summary and per-type alpha/dps.' modes: description: 'Fire modes as provided by the game data.' type: array items: $ref: '#/components/schemas/vehicle_weapon_mode' nullable: true damage_per_shot: description: 'Deprecated. Use `damage.alpha_total` (and/or `damage.alpha.*` for per-type values).' type: number format: double nullable: true deprecated: true damages: description: 'Deprecated. Use `damage` (and its `alpha`/`dps` breakdown).' type: array items: $ref: '#/components/schemas/vehicle_weapon_damage_entry' nullable: true deprecated: true regeneration: description: 'Deprecated. Use `capacitor.regen_per_second`.' type: number format: double nullable: true deprecated: true ammunition: description: 'Deprecated: use ammunition from the root resource.' type: object nullable: true deprecated: true spread: oneOf: - $ref: '#/components/schemas/vehicle_weapon_spread' nullable: true barrel_spin_time: oneOf: - $ref: '#/components/schemas/vehicle_weapon_barrel_spin_time' nullable: true heat: oneOf: - $ref: '#/components/schemas/vehicle_weapon_heat' nullable: true capacitor: oneOf: - $ref: '#/components/schemas/vehicle_weapon_capacitor' nullable: true charge: oneOf: - $ref: '#/components/schemas/vehicle_weapon_charge' nullable: true charge_modifier: oneOf: - $ref: '#/components/schemas/vehicle_weapon_charge_modifier' nullable: true magazine_volume: description: 'Total cargo volume consumed by a full magazine of ammunition. Derived from capacity x conversion rate.' properties: micro_scu: description: 'Volume in microSCU.' type: integer example: 574560 nullable: true x-suffix: ' µSCU' scu: description: 'Volume in SCU.' type: number format: double example: 0.57456 nullable: true x-suffix: ' SCU' type: object nullable: true type: object weapon_attachment_rgb_color: title: 'Weapon Attachment RGB Color' description: 'RGB color triplet as provided by the game data.' properties: r: description: 'Red component.' type: number format: double example: 1 nullable: true g: description: 'Green component.' type: number format: double example: 0 nullable: true b: description: 'Blue component.' type: number format: double example: 0 nullable: true type: object weapon_attachment_iron_sight: title: 'Weapon Attachment Iron Sight' properties: default_range: description: 'Default zeroing range in meters.' type: number format: double nullable: true max_range: description: 'Maximum zeroing range in meters.' type: number format: double nullable: true range_increment: description: 'Zeroing range increment in meters.' type: number format: double nullable: true auto_zeroing_time: description: 'Auto-zeroing time in seconds.' type: number format: double nullable: true zoom_scale: description: 'Zoom magnification scale.' type: number format: double nullable: true zoom_time_scale: description: 'Zoom transition time scale.' type: number format: double nullable: true zoom_time_change: description: 'Zoom transition time change.' type: number format: double nullable: true type: object weapon_attachment_magazine: title: 'Weapon Attachment Magazine' properties: initial_ammo_count: description: 'Initial ammo count.' type: integer nullable: true max_ammo_count: description: 'Maximum ammo count.' type: integer nullable: true max_restock_count: description: 'Maximum restock count.' type: integer nullable: true type: object weapon_attachment_laser_pointer: title: 'Weapon Attachment Laser Pointer' properties: range: description: 'Laser range in meters.' type: number format: double nullable: true color: oneOf: - $ref: '#/components/schemas/weapon_attachment_rgb_color' nullable: true color_css: description: 'CSS color string.' type: string nullable: true type: object weapon_attachment_flashlight_profile: title: 'Weapon Attachment Flashlight Profile' description: 'Single flashlight profile (typically keyed as `narrow` or `wide`).' properties: port_name: description: 'Light port name.' type: string nullable: true name: description: 'Profile name.' type: string nullable: true light_type: description: 'Light type.' type: string nullable: true light_radius: description: 'Light radius in meters.' type: number format: double nullable: true intensity: description: 'Light intensity.' type: number format: double nullable: true color: oneOf: - $ref: '#/components/schemas/weapon_attachment_rgb_color' nullable: true color_css: type: string nullable: true type: object weapon_attachment_flashlight: title: 'Weapon Attachment Flashlight' description: 'Flashlight profiles keyed by beam type (`narrow`, `wide`) when present.' type: object additionalProperties: $ref: '#/components/schemas/weapon_attachment_flashlight_profile' weapon_attachment_barrel_attachment: title: 'Weapon Attachment Barrel Attachment' description: 'Barrel attachment map. Keys reflect the raw barrel fields (snake_cased), plus `attachment_point` and `type` injected by the resource.' properties: attachment_point: description: 'Attachment point name.' type: string nullable: true type: description: 'Barrel attachment type.' type: string nullable: true type: object weapon_attachment: title: 'Weapon Attachment' description: 'Weapon attachment details. Only non-empty blocks are returned.' properties: iron_sight: oneOf: - $ref: '#/components/schemas/weapon_attachment_iron_sight' nullable: true laser_pointer: oneOf: - $ref: '#/components/schemas/weapon_attachment_laser_pointer' nullable: true flashlight: oneOf: - $ref: '#/components/schemas/weapon_attachment_flashlight' nullable: true magazine: oneOf: - $ref: '#/components/schemas/weapon_attachment_magazine' nullable: true compensator: oneOf: - $ref: '#/components/schemas/weapon_attachment_barrel_attachment' nullable: true flash_hider: oneOf: - $ref: '#/components/schemas/weapon_attachment_barrel_attachment' nullable: true type: object weapon_modifier_base: title: 'Weapon Modifier Base' description: 'Core scalar adjustments and derived delta fields (`*_change`). Only emitted when the modifier meaningfully differs from defaults.' properties: muzzle_flash_multiplier: description: 'Muzzle flash scale multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct muzzle_flash_change: description: 'Muzzle flash scale change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta fire_rate_multiplier: description: 'Fire rate multiplier.' type: number format: double example: 1.1 nullable: true x-tabulator-formatter: pct fire_rate_change: description: 'Fire rate change.' type: number format: double example: 0.1 nullable: true x-tabulator-formatter: pctDelta damage_multiplier: description: 'Damage multiplier.' type: number format: double example: 0.92 nullable: true x-tabulator-formatter: pct damage_change: description: 'Damage change.' type: number format: double example: -0.08 nullable: true x-tabulator-formatter: pctDelta projectile_speed_multiplier: description: 'Projectile speed multiplier.' type: number format: double example: 0.875 nullable: true x-tabulator-formatter: pct projectile_speed_change: description: 'Projectile speed change.' type: number format: double example: -0.13 nullable: true x-tabulator-formatter: pctDelta ammo_cost_multiplier: description: 'Ammo cost multiplier.' type: number format: double example: 2 nullable: true x-tabulator-formatter: pct ammo_cost_change: description: 'Ammo cost change.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pctDelta heat_generation_multiplier: description: 'Heat generation multiplier.' type: number format: double example: 0.2 nullable: true x-tabulator-formatter: pct heat_generation_change: description: 'Heat generation change.' type: number format: double example: -0.8 nullable: true x-tabulator-formatter: pctDelta sound_radius_multiplier: description: 'Sound radius multiplier.' type: number format: double example: 1.2 nullable: true x-tabulator-formatter: pct sound_radius_change: description: 'Sound radius change.' type: number format: double example: 0.2 nullable: true x-tabulator-formatter: pctDelta charge_time_multiplier: description: 'Charge time multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct charge_time_change: description: 'Charge time change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta type: object weapon_modifier_recoil: title: 'Weapon Modifier Recoil' description: 'Reduced recoil block as emitted by this resource (not a full recoil model export). Only emitted when values differ from defaults.' properties: decay_multiplier: description: 'Recoil decay multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct decay_change: description: 'Recoil decay change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta multiplier: description: 'Recoil randomness multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct multiplier_change: description: 'Recoil randomness change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta type: object weapon_modifier_spread: title: 'Weapon Modifier Spread' description: 'Spread tuning multipliers and derived deltas. Only emitted when values differ from defaults.' properties: min_multiplier: description: 'Minimum spread multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct min_change: description: 'Minimum spread change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta max_multiplier: description: 'Maximum spread multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct max_change: description: 'Maximum spread change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta first_attack_multiplier: description: 'First shot spread multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct first_attack_change: description: 'First shot spread change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta per_attack_multiplier: description: 'Per-shot spread multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct per_attack_change: description: 'Per-shot spread change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta decay_multiplier: description: 'Spread decay multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct decay_change: description: 'Spread decay change.' type: number format: double example: 0 nullable: true x-tabulator-formatter: pctDelta type: object weapon_modifier_aim: title: 'Weapon Modifier Aim' description: 'ADS/zoom adjustments. Only emitted when values differ from defaults.' properties: zoom_scale: description: 'Zoom magnification scale.' type: number format: double example: 4 nullable: true second_zoom_scale: description: 'Secondary zoom magnification scale.' type: number format: double example: 6 nullable: true zoom_time_scale: description: 'Zoom transition time scale.' type: number format: double example: 1.25 nullable: true x-tabulator-formatter: pct zoom_time_change: description: 'Zoom transition time change.' type: number format: double example: 0.25 nullable: true x-tabulator-formatter: pctDelta hide_weapon_in_ads: description: 'Whether the weapon is hidden while aiming.' type: boolean example: false nullable: true fstop_multiplier: description: 'Aperture stop multiplier.' type: number format: double example: 1 nullable: true type: object weapon_modifier_regen: title: 'Weapon Modifier Regen' description: 'Regeneration modifiers. Only emitted when values differ from defaults.' properties: power_ratio_multiplier: description: 'Power ratio multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct max_ammo_load_multiplier: description: 'Maximum ammo load multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct max_regen_per_sec_multiplier: description: 'Maximum regeneration per second multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct type: object weapon_modifier_salvage: title: 'Weapon Modifier Salvage' description: 'Salvage-related multipliers. Only emitted when present per resource logic.' properties: salvage_speed_multiplier: description: 'Salvage speed multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct radius_multiplier: description: 'Salvage radius multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct extraction_efficiency: description: 'Extraction efficiency multiplier.' type: number format: double example: 1 nullable: true x-tabulator-formatter: pct type: object weapon_modifier_zeroing: title: 'Weapon Modifier Zeroing' description: 'Zeroing distances supported by the optic or attachment. Only emitted when present per resource logic.' properties: default_range: description: 'Default zeroing range in meters.' type: number format: double example: 0 nullable: true x-suffix: ' m' max_range: description: 'Maximum zeroing range in meters.' type: number format: double example: 500 nullable: true x-suffix: ' m' range_increment: description: 'Zeroing range increment in meters.' type: number format: double example: 100 nullable: true x-suffix: ' m' auto_zeroing_time: description: 'Auto-zeroing time in seconds.' type: number format: double example: 0 nullable: true x-suffix: ' s' type: object weapon_modifier: title: 'Weapon Modifier' description: 'Weapon modifier stats. Legacy v2 fields are kept for backwards compatibility.' properties: activate_on_attach: description: 'Whether the modifier becomes active as soon as it is attached.' type: boolean example: true nullable: true ignore_wear: description: 'If true, the modifier ignores item wear/maintenance effects.' type: boolean example: false nullable: true base: oneOf: - $ref: '#/components/schemas/weapon_modifier_base' nullable: true recoil: oneOf: - $ref: '#/components/schemas/weapon_modifier_recoil' nullable: true spread: oneOf: - $ref: '#/components/schemas/weapon_modifier_spread' nullable: true aim: oneOf: - $ref: '#/components/schemas/weapon_modifier_aim' nullable: true regen: oneOf: - $ref: '#/components/schemas/weapon_modifier_regen' nullable: true salvage: oneOf: - $ref: '#/components/schemas/weapon_modifier_salvage' nullable: true zeroing: oneOf: - $ref: '#/components/schemas/weapon_modifier_zeroing' nullable: true fire_rate_multiplier: description: 'Deprecated: Use `base.fire_rate_multiplier`.' type: number format: double nullable: true deprecated: true damage_multiplier: description: 'Deprecated: Use `base.damage_multiplier`.' type: number format: double nullable: true deprecated: true damage_over_time_multiplier: description: 'Deprecated: v2 compatibility field. No non-deprecated replacement is currently returned by this resource.' type: number format: double nullable: true deprecated: true projectile_speed_multiplier: description: 'Deprecated: Use `base.projectile_speed_multiplier`.' type: number format: double nullable: true deprecated: true ammo_cost_multiplier: description: 'Deprecated: Use `base.ammo_cost_multiplier`.' type: number format: double nullable: true deprecated: true heat_generation_multiplier: description: 'Deprecated: Use `base.heat_generation_multiplier`.' type: number format: double nullable: true deprecated: true sound_radius_multiplier: description: 'Deprecated: Use `base.sound_radius_multiplier`.' type: number format: double nullable: true deprecated: true charge_time_multiplier: description: 'Deprecated: Use `base.charge_time_multiplier`.' type: number format: double nullable: true deprecated: true type: object weapon_rack: title: 'Weapon Rack' description: 'Summary of weapon slots on a weapon rack item, grouped by weapon category.' properties: pistols: description: 'Number of small weapon slots.' type: integer example: 12 rifles: description: 'Number of medium and large weapon slots.' type: integer example: 8 gadgets: description: 'Number of gadget slots.' type: integer example: 2 total_weapon_slots: description: 'Total number of weapon slots across all categories.' type: integer example: 22 type: object manufacturer_link: title: 'Link to the detail page of a manufacturer' properties: name: type: string code: type: string uuid: type: string link: type: string type: object manufacturer: title: 'In game manufacturer' type: object allOf: - $ref: '#/components/schemas/manufacturer_link' - properties: name: type: string code: type: string uuid: type: string link: type: string type: object mission_completion_tag: title: 'Mission Completion Tag' properties: name: type: string nullable: true unlocks_missions: type: array items: $ref: '#/components/schemas/mission_completion_tag_mission' type: object mission_completion_tag_mission: title: 'Mission Completion Tag Mission' properties: uuid: type: string format: uuid title: type: string nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object mission_prerequisite_group: title: 'Mission Prerequisite Group' properties: required_count: type: integer nullable: true required_tags: type: array items: properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true type: object excluded_tags: type: array items: properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true type: object missions: type: array items: $ref: '#/components/schemas/mission_chain_link' type: object mission_unlock_group: title: 'Mission Unlock Group' description: 'A completion tag group that unlocks missions when this mission is completed.' properties: tag_name: type: string nullable: true tag_uuid: type: string format: uuid nullable: true missions: type: array items: $ref: '#/components/schemas/mission_chain_link' type: object mission_chain_link: title: 'Mission Chain Link' properties: uuid: type: string format: uuid nullable: true title: type: string nullable: true mission_type: type: string nullable: true variant_count: description: 'Number of mission variants with the same title. Only present when greater than 1.' type: integer nullable: true variants: description: 'Additional mission variants sharing the same title. Only present when variant_count > 1.' type: array items: $ref: '#/components/schemas/mission_chain_variant' nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object mission_chain_variant: title: 'Mission Chain Variant' description: 'A variant of a mission chain link, sharing the same title but a different UUID.' properties: uuid: type: string format: uuid nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object mission_combat: title: 'Mission Combat' properties: summary: properties: total: properties: min: type: integer max: type: integer type: object by_group: type: array items: properties: group_name: { type: string } min: { type: integer } max: { type: integer } type: object type: object spawns: type: array items: properties: role: type: string nullable: true weight: type: integer nullable: true group_name: type: string nullable: true spawn_kind: type: string nullable: true concurrent_amount: type: integer nullable: true ships: description: 'ship models resolved for this spawn pool.' type: array items: properties: { class_name: { description: 'Base-hull class name. Null for hulls with no player equivalent.', type: string, example: AEGS_Avenger_Stalker, nullable: true }, name: { description: 'In-game display name.', type: string, example: 'Aegis Avenger Stalker', nullable: true } } type: object type: object aggregated_spawns: description: 'Spawns grouped by role, group_name, and spawn_kind with aggregated concurrent ranges' type: array items: properties: role: type: string group_name: type: string nullable: true spawn_kind: type: string nullable: true concurrent_min: type: integer nullable: true concurrent_max: type: integer nullable: true weight: type: integer nullable: true ships: description: 'Deduped union of ship models over the spawn options in this wave.' type: array items: properties: { class_name: { description: 'Base-hull class name. Null for hulls with no player equivalent.', type: string, example: AEGS_Avenger_Stalker, nullable: true }, name: { type: string, example: 'Aegis Avenger Stalker', nullable: true } } type: object type: object type: object mission_cooldown: title: 'Mission Cooldown' properties: label: type: string nullable: true personal_seconds: type: integer abandoned_seconds: type: integer personal_variation_seconds: type: integer abandoned_variation_seconds: type: integer type: object mission_hauling_order: title: 'Mission Hauling Order' properties: kind: type: string nullable: true name: type: string nullable: true uuid: type: string format: uuid nullable: true items: type: array items: $ref: '#/components/schemas/mission_hauling_order_item' max_scu: type: integer nullable: true min_scu: type: integer nullable: true max_amount: type: integer nullable: true min_amount: type: integer nullable: true max_container_size: type: integer nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true or_options: type: array items: type: array items: $ref: '#/components/schemas/mission_hauling_order' nullable: true type: object mission_hauling_order_item: title: 'Mission Hauling Order Item' properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object mission_index: title: 'Mission Summary' properties: uuid: type: string format: uuid title: type: string nullable: true description: type: string nullable: true mission_giver: type: string nullable: true debug_name: type: string nullable: true faction: properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true link: type: string format: uri nullable: true type: object nullable: true rank_index: type: integer nullable: true illegal: type: boolean legality_label: type: string shareable: type: boolean once_only: type: boolean has_combat: type: boolean nullable: true has_defend_objective: type: boolean nullable: true enemy_count_min: type: integer nullable: true enemy_count_max: type: integer nullable: true reward_min: type: integer nullable: true reward_max: type: integer nullable: true reward_currency: type: string nullable: true time_to_complete_minutes: type: number format: float nullable: true star_systems: type: array items: type: string nullable: true variant_count: type: integer nullable: true variants: type: array items: properties: uuid: type: string format: uuid title: type: string nullable: true type: object nullable: true has_blueprints: type: boolean blueprints: type: array items: $ref: '#/components/schemas/mission_index_blueprint' nullable: true has_chain: type: boolean has_prerequisites: description: 'Deprecated: Use has_chain.' type: boolean deprecated: true has_hauling: type: boolean min_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true max_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true min_standing_name: description: 'Deprecated: Use min_standing.name.' type: string nullable: true deprecated: true max_standing_name: description: 'Deprecated: Use max_standing.name.' type: string nullable: true deprecated: true cost: type: integer nullable: true min_crime_stat: type: integer nullable: true max_crime_stat: type: integer nullable: true available_in_prison: type: boolean not_for_release: type: boolean work_in_progress: type: boolean reputation_gained: type: array items: properties: faction: type: string nullable: true faction_uuid: type: string format: uuid nullable: true scope: type: string nullable: true tier: type: string nullable: true amount: type: integer nullable: true type: object nullable: true max_players_per_instance: type: integer max_instances_per_player: type: integer nullable: true cooldown: oneOf: - $ref: '#/components/schemas/mission_cooldown' nullable: true cooldown_seconds: description: 'Deprecated: Use cooldown.personal_seconds.' type: integer nullable: true deprecated: true cooldown_label: description: 'Deprecated: Use cooldown.label.' type: string nullable: true deprecated: true reaccept_after_abandoning: type: boolean reaccept_after_failing: type: boolean fail_if_became_criminal: type: boolean hauling_summary: type: array items: properties: name: type: string nullable: true min_amount: type: integer nullable: true max_amount: type: integer nullable: true type: object nullable: true reward_scope: type: string nullable: true reputation_amount: type: integer game_version: type: string nullable: true link: type: string format: uri web_url: type: string format: uri type: object mission_index_blueprint: title: 'Mission Index Blueprint' properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true link: type: string format: uri nullable: true type: object mission_lifetime: title: 'Mission Lifetime' properties: label: type: string nullable: true respawn_time_seconds: type: integer max_instances: type: integer respawn_time_variation_seconds: type: integer max_instances_per_player: type: integer type: object mission_starmap_location_group: title: 'Mission Starmap Location Group' properties: purpose: type: string locations: type: array items: $ref: '#/components/schemas/mission_starmap_location' type: object mission_starmap_location: title: 'Mission Starmap Location' properties: uuid: type: string format: uuid nullable: true name: type: string nullable: true system: type: string nullable: true type: type: string nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object mission: title: Mission properties: uuid: type: string format: uuid title: type: string nullable: true description: type: string nullable: true description_html: description: 'HTML-rendered mission description. Escapes raw text, preserves EM4 styling, and renders exact mission token placeholders as tooltip spans.' type: string nullable: true description_variants: description: 'Rendered HTML variants when the raw description is a single mission token with multiple possible values.' type: array items: type: string nullable: true mission_type: type: string nullable: true mission_giver: type: string nullable: true faction: properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true faction_type: type: string nullable: true lawful: type: boolean nullable: true is_npc: type: boolean has_reputation: type: boolean headquarters: type: string nullable: true area: type: string nullable: true focus: type: string nullable: true founded: type: string nullable: true leadership: type: string nullable: true link: type: string format: uri nullable: true reputation_ladder: oneOf: - $ref: '#/components/schemas/mission_faction_reputation_scope' nullable: true type: object nullable: true rank_index: type: integer nullable: true illegal: type: boolean legality_label: type: string shareable: type: boolean once_only: type: boolean available_in_prison: type: boolean not_for_release: type: boolean work_in_progress: type: boolean has_combat: type: boolean nullable: true has_defend_objective: type: boolean nullable: true enemy_count_min: type: integer nullable: true enemy_count_max: type: integer nullable: true min_crime_stat: type: integer nullable: true max_crime_stat: type: integer nullable: true reward_min: type: integer nullable: true reward_max: type: integer nullable: true reward_currency: type: string nullable: true time_to_complete_minutes: type: number format: float nullable: true star_systems: type: array items: type: string nullable: true cooldown: oneOf: - $ref: '#/components/schemas/mission_cooldown' nullable: true lifetime: oneOf: - $ref: '#/components/schemas/mission_lifetime' nullable: true reaccept_after_failing: type: boolean nullable: true reaccept_after_abandoning: type: boolean nullable: true blueprints: oneOf: - $ref: '#/components/schemas/mission_blueprints' nullable: true reward_items: type: array items: $ref: '#/components/schemas/mission_reward_item' nullable: true deprecated: true reward_groups: type: array items: $ref: '#/components/schemas/mission_reward_group' nullable: true combat: oneOf: - $ref: '#/components/schemas/mission_combat' nullable: true completion_tags: type: array items: $ref: '#/components/schemas/mission_completion_tag' nullable: true reputation_gained: type: array items: $ref: '#/components/schemas/mission_reputation' nullable: true reputation_lost: type: array items: $ref: '#/components/schemas/mission_reputation' nullable: true hauling_orders: type: array items: $ref: '#/components/schemas/mission_hauling_order' nullable: true cost: type: integer nullable: true max_players_per_instance: type: integer fail_if_became_criminal: type: boolean nullable: true min_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true max_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true reputation_prerequisite: description: 'Faction-scoped acceptance gate. I.e. the required min / max standing.' properties: faction: description: 'Reputation faction name. May differ from the mission issuing faction.' type: string example: 'Citizens For Prosperity' nullable: true faction_uuid: description: 'Faction UUID resolving the faction show page (see GET /api/factions).' type: string example: cd2b32d1-0362-41fb-8cfd-d29781daf789 nullable: true scope: description: 'Reputation scope name (e.g. FactionReputation, ShipCombat_HeadHunters).' type: string example: FactionReputation nullable: true scope_uuid: type: string example: d31bd373-35ab-4ea4-b0a7-0ccc867ef082 nullable: true min_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true max_standing: properties: name: type: string nullable: true min_reputation: type: integer nullable: true type: object nullable: true type: object nullable: true mission_tokens: description: 'Resolved mission token values. Keys are token identifiers (e.g. "Location|Address", "Danger", "Contractor"). Values are arrays of possible resolved strings. Keys preserve original case and pipe syntax exactly.' type: object nullable: true additionalProperties: type: array items: type: string deadline: properties: auto_end: type: boolean nullable: true end_reason: type: string nullable: true completion_time_minutes: type: integer nullable: true result_after_timer: type: string nullable: true type: object nullable: true broker_reputation_prerequisites: properties: max_wanted_level: type: integer nullable: true min_wanted_level: type: integer nullable: true type: object nullable: true entity_spawns: type: array items: properties: tags: type: array items: type: string nullable: true amount: type: integer nullable: true weight: type: integer nullable: true group_name: type: string nullable: true markup_tags: type: array items: type: string nullable: true negative_tags: type: array items: type: string nullable: true merged_tags: type: array items: type: string type: object nullable: true hidden_in_mobiglas: type: boolean nullable: true notify_on_available: type: boolean nullable: true reward_scope: type: string nullable: true reputation_amount: type: integer game_version: type: string nullable: true starmap_locations: type: array items: $ref: '#/components/schemas/mission_starmap_location_group' nullable: true prerequisite_groups: type: array items: $ref: '#/components/schemas/mission_prerequisite_group' nullable: true unlock_groups: description: 'Completion tag groups that become available after completing this mission' type: array items: $ref: '#/components/schemas/mission_unlock_group' nullable: true merged_locations: description: 'Starmap locations grouped by logical purpose categories (Destinations, Locations, Availability)' type: object nullable: true has_rewards: type: boolean has_combat_section: type: boolean has_locations: type: boolean has_chain: type: boolean has_blueprints: type: boolean released: description: 'Whether this mission is released (not marked as not_for_release or work_in_progress).' type: boolean link: type: string format: uri rental_ships: description: 'Ships granted to the player as rentals for the mission, as vehicle links.' type: array items: $ref: '#/components/schemas/vehicle_link' nullable: true x-since: 4.9.0 type: object mission_blueprints: title: 'Mission Blueprints' description: 'Array of blueprint pools' type: array items: $ref: '#/components/schemas/mission_blueprint_pool' mission_blueprint_pool: title: 'Mission Blueprint Pool' properties: drop_chance: type: number format: float nullable: true drop_chance_percent: type: number format: float nullable: true pool_uuid: type: string nullable: true items: type: array items: $ref: '#/components/schemas/mission_blueprint_item' type: object mission_blueprint_item: title: 'Mission Blueprint Item' properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true item_link: type: string format: uri nullable: true blueprint_link: type: string format: uri nullable: true web_item_link: type: string format: uri nullable: true web_blueprint_link: type: string format: uri nullable: true type: object mission_reward_item: title: 'Mission Reward Item' description: 'Legacy flat representation, prefer reward_groups.' properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true amount: type: integer nullable: true send_to_home: type: boolean nullable: true link: type: string format: uri nullable: true web_url: type: string format: uri nullable: true type: object deprecated: true mission_reward_group: title: 'Mission Reward Group' properties: group_index: type: integer weight: description: 'Source weighting (0 = disabled, 1 = active). Future-proofed as a float.' type: number format: float nullable: true award_only_to_mission_owner: type: boolean nullable: true items: type: array items: $ref: '#/components/schemas/mission_reward_item' type: object mission_reputation: title: 'Mission Reputation' properties: tier: type: string nullable: true scope: type: string nullable: true amount: type: integer nullable: true faction: type: string nullable: true faction_uuid: type: string format: uuid nullable: true type: object mission_faction_reputation_scope: title: 'Mission Faction Reputation Scope' properties: scope_name: type: string nullable: true standings: type: array items: $ref: '#/components/schemas/mission_faction_standing' type: object mission_faction_standing: title: 'Mission Faction Standing' properties: name: type: string display_name: type: string nullable: true min_reputation: type: integer type: object mission_summary: title: 'Mission Summary' description: 'Lightweight mission summary used in location and other nested responses.' properties: uuid: type: string format: uuid title: type: string nullable: true mission_type: type: string nullable: true illegal: type: boolean has_combat: type: boolean nullable: true faction: properties: name: type: string nullable: true uuid: type: string format: uuid nullable: true link: type: string format: uri nullable: true type: object nullable: true link: type: string format: uri web_url: type: string format: uri type: object starmap_location_link: title: 'Starmap Location Link' description: 'Lightweight reference to a starmap location with navigation links.' properties: uuid: type: string format: uuid nullable: true name: type: string nullable: true slug: type: string nullable: true type_name: type: string nullable: true parent_name: type: string nullable: true star_system_name: type: string nullable: true link: description: 'API URL for the starmap location' type: string nullable: true web_url: description: 'Web URL for the starmap location' type: string nullable: true type: object game_starmap_location_linked_summary: title: 'Game Starmap Location Linked Summary' description: 'A lightweight summary of a linked starmap location, used for parent, star, and related location references.' properties: uuid: description: 'Unique identifier of the linked location.' type: string format: uuid name: description: 'Display name of the linked location.' type: string type_name: description: 'Type name of the linked location (e.g. Planet, Moon, Outpost).' type: string slug: description: 'URL-friendly slug for the linked location.' type: string nullable: true type: object game_starmap_location_type: title: 'Game Starmap Location Type' description: 'Classification and quantum travel properties of a starmap location type.' properties: uuid: description: 'UUID of the location type.' type: string format: uuid nullable: true name: description: 'Type name (e.g. Planet, Moon, Outpost, Asteroid).' type: string classification: description: 'Sub-classification of the location type (e.g. Outpost, LandingZone).' type: string nullable: true spawn_nav_points: description: 'Whether this location type spawns navigation points.' type: boolean nullable: true valid_quantum_travel_destination: description: 'Whether this location type is a valid quantum travel destination.' type: boolean nullable: true type: object game_starmap_location_jurisdiction: title: 'Game Starmap Location Jurisdiction' description: 'Legal jurisdiction governing a starmap location, including fines and prison status.' properties: uuid: description: 'UUID of the jurisdiction.' type: string format: uuid nullable: true name: description: 'Name of the governing jurisdiction (e.g. UEE).' type: string nullable: true base_fine: description: 'Base fine amount for crimes committed in this jurisdiction.' type: integer nullable: true max_stolen_goods_possession_scu: description: 'Maximum stolen goods possession allowed in SCU before penalties apply.' type: integer nullable: true is_prison: description: 'Whether this location is a prison facility.' type: boolean nullable: true type: object game_starmap_location_affiliation: title: 'Game Starmap Location Affiliation' description: 'Faction or organization affiliation of a starmap location.' properties: uuid: description: 'UUID of the affiliated faction or organization.' type: string format: uuid nullable: true name: description: 'Display name of the affiliated faction or organization (e.g. UEE, Private Security).' type: string nullable: true type: object game_starmap_location_amenity: title: 'Game Starmap Location Amenity' description: 'An amenity available at a starmap location (e.g. hospital, commodity trading, garage).' properties: uuid: description: 'Unique identifier of the amenity.' type: string format: uuid name: description: 'Internal name of the amenity.' type: string display_name: description: 'Human-readable display name of the amenity, may differ from internal name.' type: string nullable: true type: object game_starmap_location_tag: title: 'Game Starmap Location Tag' description: 'A hierarchy entity tag used for grouping and filtering locations (e.g. orbital markers like HUR_L1).' properties: uuid: description: 'Unique identifier of the hierarchy entity tag.' type: string format: uuid name: description: 'Tag name, typically an orbital or navigational marker code (e.g. HUR_L1, ARC_L2).' type: string type: object game_starmap_location_radar_contact_type: title: 'Game Starmap Location Radar Contact Type' description: 'Radar contact classification for a starmap location, used for navigation and object-of-interest detection.' properties: uuid: description: 'UUID of the radar contact type.' type: string format: uuid nullable: true name: description: 'Internal name of the radar contact type.' type: string nullable: true display_name: description: 'Human-readable display name of the radar contact type.' type: string nullable: true tag_uuid: description: 'UUID of the associated hierarchy entity tag.' type: string format: uuid nullable: true tag_name: description: 'Name of the associated hierarchy entity tag.' type: string nullable: true is_object_of_interest: description: 'Whether this location is marked as an object of interest.' type: boolean nullable: true type: object game_starmap_location_quantum_travel: title: 'Game Starmap Location Quantum Travel' description: 'Quantum travel parameters defining how ships interact with this location during quantum travel.' properties: obstruction_radius: description: 'Radius around the location that obstructs quantum travel.' type: number obstruction_radius_formatted: description: 'Obstruction radius formatted as human-readable distance (GM/km/m).' type: string nullable: true arrival_radius: description: 'Radius at which a ship exits quantum travel near this location.' type: number arrival_radius_formatted: description: 'Arrival radius formatted as human-readable distance (GM/km/m).' type: string nullable: true arrival_point_detection_offset: description: 'Positional offset for detecting the quantum travel arrival point.' type: number adoption_radius: description: 'Radius within which child locations are adopted into the quantum travel zone.' type: number adoption_radius_formatted: description: 'Adoption radius formatted as human-readable distance (GM/km/m).' type: string nullable: true sub_point_radius_multiplier: description: 'Multiplier applied to the sub-point radius for quantum travel calculations.' type: number type: object game_starmap_location_asteroid_ring: title: 'Game Starmap Location Asteroid Ring' description: 'Asteroid ring configuration for locations that have an asteroid belt, defining density, size, and dimensional parameters.' properties: density_scale: description: 'Scale factor controlling asteroid density within the ring.' type: number size_scale: description: 'Scale factor controlling individual asteroid size.' type: number inner_radius: description: 'Inner boundary radius of the asteroid ring.' type: number outer_radius: description: 'Outer boundary radius of the asteroid ring.' type: number depth: description: 'Vertical depth or thickness of the asteroid ring.' type: number type: object game_starmap_location_child_summary: title: 'Game Starmap Location Child Summary' description: 'Summary of a child location within a starmap hierarchy, including amenities and resource availability.' properties: uuid: description: 'Unique identifier of the child location.' type: string format: uuid name: description: 'Display name of the child location.' type: string designation: description: 'Official designation code for the child location.' type: string nullable: true web_url: description: 'Web frontend URL for the child location.' type: string format: uri type_name: description: 'Location type name (e.g. Outpost, Asteroid).' type: string type_classification: description: 'Sub-classification of the location type.' type: string nullable: true respawn_location_type: description: 'Type of respawn facility available, if any.' type: string nullable: true amenities: description: 'Amenities available at this child location.' type: array items: $ref: '#/components/schemas/game_starmap_location_amenity' amenity_labels: description: 'Simplified list of amenity display names or internal names.' type: array items: type: string has_resources: description: 'Whether this child location has harvestable resource deposits.' type: boolean type: object starmap_location_resource: title: 'Starmap Location Resource' description: 'A mineable or harvestable resource deposit at a starmap location, combining deposit configuration with commodity identity.' allOf: - $ref: '#/components/schemas/deposit_base' - properties: name: description: 'Commodity name of the resource deposit.' type: string uuid: description: 'UUID of the commodity, null for non-commodity deposits.' type: string format: uuid nullable: true tier: description: 'Rarity tier of the commodity.' type: string nullable: true link: description: 'API URL for the commodity detail endpoint.' type: string format: uri nullable: true web_url: description: 'Web frontend URL for the commodity detail page.' type: string format: uri nullable: true type: object starmap_location_mining_type_group: title: 'Starmap Location Mining Type Group' description: 'A group of mineable or harvestable deposits at a location, categorized by extraction method (e.g. mining, hand-mining, salvage).' properties: group_name: description: 'Original group name from game data identifying the deposit group.' type: string mining_type: description: 'Extraction method label (e.g. Mining, Hand Mining, Salvage).' type: string mining_type_sort_order: description: 'Sort order for mining type display ordering.' type: integer resource_kind: description: 'Kind of resource (Mineable or Harvestable).' type: string nullable: true group_probability_min: description: 'Lowest raw probability among deposits in this group (0-1).' type: number nullable: true group_probability_max: description: 'Highest raw probability among deposits in this group (0-1).' type: number nullable: true group_probability_min_percent: description: 'Lowest probability in this group as a percentage (0-100).' type: number nullable: true group_probability_max_percent: description: 'Highest probability in this group as a percentage (0-100).' type: number nullable: true resources: description: 'Individual resource deposits within this group.' type: array items: $ref: '#/components/schemas/starmap_location_resource' type: object game_starmap_location_mission_group: title: 'Game Starmap Location Mission Group' description: 'Missions associated with a starmap location, grouped by purpose.' properties: purpose: description: 'Mission purpose category (e.g. Mission, Patrol, Investigation).' type: string nullable: true missions: description: 'List of mission summaries in this group.' type: array items: $ref: '#/components/schemas/mission_summary' type: object game_starmap_location: title: 'Game Starmap Location' description: 'Versioned starmap location data imported from game starmap data.' properties: uuid: description: 'Unique identifier for this starmap location.' type: string format: uuid slug: description: 'URL-friendly slug for this location.' type: string nullable: true name: description: 'Display name of the starmap location.' type: string description: description: 'In-universe description of the location.' type: string nullable: true size: description: 'Relative size of the location.' type: number nullable: true respawn_location_type: description: 'Type of respawn facility available (e.g. Hospital, MedicalRoom).' type: string nullable: true child_count: description: 'Number of direct child locations.' type: integer has_resources: description: 'Whether this location has harvestable resource deposits.' type: boolean nullable: true mission_count: description: 'Number of available missions at this location.' type: integer is_scannable: description: 'Whether this location can be detected by ship scanners.' type: boolean hide_in_starmap: description: 'Whether this location is hidden from the in-game starmap.' type: boolean hide_in_world: description: 'Whether this location is hidden in the game world.' type: boolean block_travel: description: 'Whether quantum travel to this location is blocked.' type: boolean quantum_travel: oneOf: - $ref: '#/components/schemas/game_starmap_location_quantum_travel' nullable: true description: 'Quantum travel parameters for this location.' asteroid_ring: oneOf: - $ref: '#/components/schemas/game_starmap_location_asteroid_ring' nullable: true description: 'Asteroid ring parameters, only present on locations with asteroid rings.' system: description: 'Name of the star system this location belongs to (e.g. Stanton System).' type: string nullable: true parent: oneOf: - $ref: '#/components/schemas/game_starmap_location_linked_summary' nullable: true description: 'Parent location in the hierarchy.' star: oneOf: - $ref: '#/components/schemas/game_starmap_location_linked_summary' nullable: true description: 'Nearest star or celestial body.' children: description: 'Direct child locations. Only included when requested via `include=children`.' type: array items: $ref: '#/components/schemas/game_starmap_location_child_summary' nullable: true type: $ref: '#/components/schemas/game_starmap_location_type' jurisdiction: oneOf: - $ref: '#/components/schemas/game_starmap_location_jurisdiction' nullable: true description: 'Legal jurisdiction governing this location.' affiliation: oneOf: - $ref: '#/components/schemas/game_starmap_location_affiliation' nullable: true description: 'Faction or organization controlling this location.' amenities: description: 'Available amenities at this location.' type: array items: $ref: '#/components/schemas/game_starmap_location_amenity' tag: oneOf: - $ref: '#/components/schemas/game_starmap_location_tag' nullable: true description: 'Hierarchy entity tag for grouping and filtering.' designation: description: 'Official designation code for this location.' type: string nullable: true radar_contact_type: oneOf: - $ref: '#/components/schemas/game_starmap_location_radar_contact_type' nullable: true description: 'Radar contact classification for navigation.' link: description: "API URL for this location's detail endpoint." type: string format: uri web_url: description: 'Web frontend URL for this location.' type: string format: uri updated_at: description: 'Timestamp of the last data update.' type: string format: date-time nullable: true version: description: 'Game data version code.' type: string nullable: true images: description: 'Images from external sources for this location.' type: array items: properties: source: description: 'Image source identifier' type: string nullable: true thumbnail_url: type: string format: uri nullable: true thumbnail_width: type: integer nullable: true thumbnail_height: type: integer nullable: true original_url: type: string format: uri nullable: true original_width: type: integer nullable: true original_height: type: integer nullable: true type: object nullable: true area_boosts: description: 'Areas with boosted deposit spawn rates. Only included when requested via `include=resources`.' type: array items: $ref: '#/components/schemas/area_boost' nullable: true resources: description: 'Harvestable resource deposits grouped by extraction method. Only included when requested via `include=resources`.' type: array items: $ref: '#/components/schemas/starmap_location_mining_type_group' missions: description: 'Available missions grouped by purpose. Only included when requested via `include=missions`.' type: array items: $ref: '#/components/schemas/game_starmap_location_mission_group' nullable: true type: object uex_price: title: 'UEX Price' description: 'Price data from UEXcorp for a commodity or vehicle at a specific terminal' properties: price_buy: type: number nullable: true price_sell: type: number nullable: true price_rent: type: number nullable: true terminal_id: type: integer nullable: true terminal_code: type: string nullable: true terminal_name: type: string nullable: true starmap_location: oneOf: - $ref: '#/components/schemas/starmap_location_link' nullable: true date_updated: type: string nullable: true game_version: type: string nullable: true uex_link: description: 'Link to the UEX terminal page for this item/vehicle price' type: string nullable: true type: object game_vehicle_hardpoint_item: title: 'Vehicle Hardpoint Item v2' description: 'Deprecated: Trimmed down version of item resource, used for hardpoints in v2 API.' allOf: - properties: uuid: description: 'Unique item identifier.' type: string name: description: 'Display name of the equipped item.' type: string class_name: description: 'SC item class name (e.g. BEHR_LaserCannon_S4).' type: string link: description: 'API URL for the full item detail.' type: string size: description: 'Item size as integer.' type: integer nullable: true mass: description: 'Item mass in kg.' type: number format: double nullable: true grade: description: 'Item grade letter (A-D).' type: string nullable: true class: description: 'Item class name from game data.' type: string nullable: true manufacturer: $ref: '#/components/schemas/manufacturer_link' type: description: 'Item type with NOITEM_ prefix stripped.' type: string nullable: true type_label: description: 'Human-readable label for the item type.' type: string nullable: true sub_type: description: 'Item sub-type identifier.' type: string nullable: true sub_type_label: description: 'Human-readable label for the item sub-type.' type: string nullable: true inventory: oneOf: - $ref: '#/components/schemas/item_inventory' nullable: true description: 'Inventory container data, if the item has one.' ports: description: 'Sub-ports available on this item.' type: array items: $ref: '#/components/schemas/item_port' nullable: true updated_at: description: 'Timestamp of the last update.' type: string format: date-time nullable: true version: description: 'Game version code this item belongs to.' type: string example: 4.4.0-LIVE.12340123 nullable: true type: object - $ref: '#/components/schemas/item_related_items' game_vehicle_hardpoint: title: 'Vehicle Hardpoint v2' description: 'Deprecated: For v2 API compatibility. Ports (hardpoints) as defined in scunpacked ship files.' properties: name: description: 'Hardpoint name from scunpacked data.' type: string example: hardpoint_weapon_class2_nose position: description: 'Positional label (e.g. left, right, nose).' type: string example: left nullable: true min_size: description: 'Minimum item size the port accepts.' type: integer example: 1 nullable: true max_size: description: 'Maximum item size the port accepts.' type: integer example: 1 nullable: true class_name: description: 'SC class name of the port component.' type: string example: LFSP_TYDT_S01_ComfortAir nullable: true health: description: 'Port health points.' type: number example: 300 nullable: true type: description: 'Port type (e.g. WeaponGun, Shield, PowerPlant).' type: string example: LifeSupportGenerator nullable: true sub_type: description: 'Port sub-type identifier.' type: string example: UNDEFINED nullable: true pilot_slaveable: description: 'Whether the port can be slaved to a pilot.' type: boolean nullable: true item: oneOf: - $ref: '#/components/schemas/game_vehicle_hardpoint_item' nullable: true description: 'Equipped item details, resolved from the game database.' children: description: 'Nested child hardpoints.' type: array items: $ref: '#/components/schemas/game_vehicle_hardpoint' nullable: true version: description: 'Game version code for this data.' type: string nullable: true type: object deprecated: true game_vehicle_part: title: 'Vehicle Structure Part' description: 'Structural hierarchy for the vehicle with damage caps.' properties: name: description: 'Raw part name from scunpacked data (e.g. LEFT_WING).' type: string example: Nose display_name: description: 'Human-readable name with positional suffix (e.g. "Wing (left)").' type: string example: Nose damage_max: description: 'Maximum damage this structural part can absorb.' type: number example: 2500 nullable: true destruction_damage: description: 'Total damage needed to destroy this part (only set when part appears in DamageBeforeDestruction).' type: number example: 2500 nullable: true detach_damage: description: 'Total damage needed to detach this part (only set when part appears in DamageBeforeDetach).' type: number example: 600 nullable: true children: description: 'Nested child structural parts.' type: array items: $ref: '#/components/schemas/game_vehicle_part' nullable: true version: description: 'Game version code for this data.' type: string nullable: true type: object game_vehicle_port: title: 'Vehicle Port / Hardpoint' description: 'Ports (hardpoints) as defined in scunpacked ship files. Nested ports are supported.' properties: name: description: 'Hardpoint name from scunpacked ship data.' type: string example: hardpoint_weapon_class2_nose position: description: 'Positional label (e.g. left, right, nose).' type: string example: left nullable: true sizes: description: 'Minimum and maximum item sizes the port accepts.' properties: min: description: 'Minimum item size.' type: integer example: 1 nullable: true max: description: 'Maximum item size.' type: integer example: 1 nullable: true type: object nullable: true class_name: description: 'SC class name of the port component.' type: string example: LFSP_TYDT_S01_ComfortAir nullable: true health: description: 'Port health points.' type: number example: 300 nullable: true editable: description: 'Whether the port can be modified in-game.' type: boolean nullable: true editable_children: description: 'Whether child ports can be modified in-game.' type: boolean nullable: true equipped_item_uuid: description: 'UUID of the item currently equipped in this port.' type: string nullable: true type: description: 'Port type (e.g. WeaponGun, Shield, PowerPlant).' type: string example: LifeSupportGenerator nullable: true sub_type: description: 'Port sub-type identifier.' type: string example: UNDEFINED nullable: true subtype: description: 'Deprecated: Use sub_type.' type: string example: UNDEFINED nullable: true deprecated: true category_label: description: 'Human-readable category label. Only present on parent ports (e.g. Weapons, Shields, Thrusters).' type: string example: Weapons nullable: true compatible_types: description: 'Port compatibility list from ship data.' type: array items: properties: type: description: 'Compatible item type.' type: string example: LifeSupportGenerator nullable: true sub_types: description: 'List of compatible sub-types for this port type.' type: array items: type: string nullable: true type: object nullable: true equipped_item: description: 'Equipped item details. On show routes: fully resolved from database (game_port_item). On index routes: lightweight summary from raw loadout JSON (game_port_item_summary).' nullable: true oneOf: - $ref: '#/components/schemas/game_port_item' - $ref: '#/components/schemas/game_port_item_summary' ports: description: 'Nested child ports (hardpoints).' type: array items: $ref: '#/components/schemas/game_vehicle_port' nullable: true required_tags: description: 'Tags that items must have to be equipped in this port. Pass individual values as filter[tags] to the items API.' type: array items: type: string example: - Ship_Dock_Refuel nullable: true port_tags: description: 'Identity tags this port provides. Used to filter items by RequiredTags compatibility - an item can attach if its RequiredTags is empty or fully contained in these tags. Pass as filter[port_tags] to the items API.' type: array items: type: string example: - AEGS_Avenger_Base nullable: true version: description: 'Game version code for this data.' type: string nullable: true attached_vehicle: description: 'Resolved vehicle attached to a NOITEM_Vehicle port (e.g. a snub ship or command module).' properties: uuid: type: string name: type: string class_name: type: string size_class: type: integer nullable: true is_spaceship: type: boolean nullable: true is_vehicle: type: boolean nullable: true is_gravlev: type: boolean nullable: true link: description: 'API URL for the vehicle.' type: string nullable: true web_url: description: 'Web URL for the vehicle page.' type: string nullable: true type: object nullable: true type: object vehicle_relay_entry: title: 'Relay Entry' description: 'A single relay junction with its connected hardpoints grouped by equipment category.' properties: hardpoint: description: 'Relay hardpoint name.' type: string example: hardpoint_relay_bridge class_name: description: 'Relay entity class name.' type: string example: RELAY_2slot nullable: true fuse_slots: description: 'Number of fuse slots on this relay.' type: integer example: 2 room: description: 'Room/bone name where the relay is located.' type: string example: animated_bridge nullable: true connection_count: description: 'Total number of connected hardpoints.' type: integer example: 26 connected_hardpoints: description: 'Hardpoints powered by this relay, grouped by equipment category.' type: array items: description: 'A group of connected hardpoints sharing the same equipment category.' properties: category: description: 'Equipment category label.' type: string example: Weapons count: description: 'Number of hardpoints in this group.' type: integer example: 4 items: description: 'Individual hardpoints in this group.' type: array items: description: 'A hardpoint connected to this relay.' properties: { hardpoint: { description: 'Hardpoint name.', type: string, example: hardpoint_shield_generator_l }, item_name: { description: 'Display name of the installed item.', type: string, example: Barbican, nullable: true }, class_name: { description: 'SC class name of the installed item.', type: string, example: SHLD_BASL_S03_Barbican_SCItem, nullable: true }, type: { description: 'Primary equipment type.', type: string, example: Shield, nullable: true }, uuid: { description: 'Item UUID.', type: string, nullable: true } } type: object type: object nullable: true type: object vehicle_relay_network: title: 'Relay Network' description: 'Ship relay power-distribution topology. Each relay is a fuse-protected junction that feeds connected hardpoints.' properties: total_fuses: description: 'Total fuse slots across all relays.' type: integer example: 18 nullable: true relays: description: 'Relay junction entries with their connected hardpoints.' type: array items: $ref: '#/components/schemas/vehicle_relay_entry' nullable: true links: description: 'Raw relay-to-hardpoint link edges.' type: array items: properties: from: description: 'Source hardpoint (relay).' type: string example: hardpoint_relay_bridge to: description: 'Target hardpoint.' type: string example: hardpoint_controller_shield type: object nullable: true type: object vehicle_suit_storage: title: 'Suit Storage' description: 'Suit locker storage from ship data.' properties: lockers: description: 'Number of suit lockers.' type: integer example: 1 slots_total: description: 'Total suit slots across all lockers.' type: integer example: 8 by_locker: description: 'Per-locker breakdown, grouped by identical configuration.' type: array items: properties: count: description: 'Number of identical lockers with this configuration.' type: integer example: 1 name: description: 'Locker display name.' type: string example: '<= PLACEHOLDER =>' class_name: description: 'Locker class name.' type: string example: locker_suit_drak_cutter_rambler port: description: 'Hardpoint port name.' type: string example: hardpoint_suit_locker_expo slots_total: description: 'Total slots in this locker.' type: integer example: 8 type: object type: object game_vehicle_turret: title: 'Turret Summary' description: 'Manned or remote turret entry as provided by the ship data.' properties: category: description: 'Turret category (manned, remote, pdc).' type: string example: manned nullable: true display_name: description: 'Human-readable turret name.' type: string example: hardpoint_turret_upper nullable: true hardpoint_name: description: 'Hardpoint name from ship data.' type: string example: hardpoint_turret_upper nullable: true part_name: description: 'Vehicle part this turret belongs to.' type: string example: hardpoint_turret_upper nullable: true turret_type: description: 'Full turret type string (e.g. TurretBase.MannedTurret).' type: string example: TurretBase.MannedTurret nullable: true class_name: description: 'SC class name of the turret component.' type: string example: ORIG_890J_SCItem_Turret_Upper nullable: true size: description: 'Turret hardpoint size.' type: integer example: 5 nullable: true turret: description: 'Whether this entry is a turret.' type: boolean example: true nullable: true gimballed: description: 'Whether the turret uses gimbal mounting.' type: boolean example: false nullable: true fixed: description: 'Whether the turret is fixed.' type: boolean example: true nullable: true mount_count: description: 'Number of weapon mounts on the turret.' type: integer example: 2 nullable: true weapon_sizes: description: 'Aggregated weapon sizes across all mounts.' type: array items: type: integer example: 5 nullable: true payload_sizes: description: 'Aggregated payload sizes across all mounts.' type: array items: type: integer example: 5 nullable: true payload_types: description: 'Aggregated payload types across all mounts.' type: array items: type: string example: WeaponGun.Gun nullable: true payload_class_names: description: 'Aggregated payload class names across all mounts.' type: array items: type: string example: BEHR_LaserCannon_S4 nullable: true mounts: description: 'Individual mount details for the turret.' type: array items: properties: display_name: description: 'Human-readable mount name.' type: string example: turret_left nullable: true hardpoint_name: description: 'Hardpoint name of the mount.' type: string example: turret_left nullable: true mount_type: description: 'Mount type string (e.g. Turret.GunTurret).' type: string example: Turret.GunTurret nullable: true class_name: description: 'SC class name of the mount component.' type: string example: Mount_Gimbal_S4 nullable: true size: description: 'Mount hardpoint size.' type: integer example: 4 nullable: true weapon_sizes: description: 'Weapon sizes accepted by this mount.' type: array items: type: integer example: 4 nullable: true payload_sizes: description: 'Payload sizes for this mount.' type: array items: type: integer example: 4 nullable: true payload_types: description: 'Payload types for this mount.' type: array items: type: string example: WeaponGun.Gun nullable: true payload_class_names: description: 'Payload class names equipped on this mount.' type: array items: type: string example: BEHR_LaserCannon_S4 nullable: true type: object nullable: true dps_total: description: 'Aggregate DPS for the turret.' type: number example: 166.7 nullable: true sustained_dps_total: description: 'Sustained DPS for the turret.' type: number example: 74.2 nullable: true alpha_total: description: 'Alpha (per-shot) damage for the turret.' type: number example: 10 nullable: true is_pilot_slaveable: description: 'Whether the turret can be slaved to pilot control.' type: boolean example: false nullable: true weapons: description: 'Per-weapon breakdown with DPS and alpha data.' type: array items: properties: uuid: description: 'Weapon UUID.' type: string example: 18b795c5-25f1-444a-86c0-b5edd7cf0118 nullable: true class_name: description: 'SC class name of the weapon.' type: string example: BEHR_LaserRepeater_PDC_S1 nullable: true name: description: 'Human-readable weapon name.' type: string example: 'M2C "Swarm"' nullable: true link: description: 'API URL for the full item detail.' type: string format: uri nullable: true web_url: description: 'API Web URL for the full item detail.' type: string format: uri nullable: true dps: description: 'Weapon DPS.' type: number example: 166.7 nullable: true sustained_dps: description: 'Weapon sustained DPS.' type: number example: 74.2 nullable: true alpha: description: 'Weapon alpha damage.' type: number example: 10 nullable: true is_pilot_slaveable: description: 'Whether this weapon can be slaved to pilot control.' type: boolean example: false nullable: true type: object nullable: true version: description: 'Game version code for this data.' type: string nullable: true type: object vehicle_link: title: 'Vehicle Link' type: object allOf: - properties: uuid: description: 'Unique vehicle identifier.' type: string name: description: 'Vehicle display name.' type: string class_name: description: 'SC class name of the vehicle.' type: string example: AEGS_Avenger_Stalker career: description: 'Vehicle career (e.g. Combat, Exploration, Transport).' type: string role: description: 'Vehicle role (e.g. Stealth Fighter, Heavy Freight).' type: string size_class: description: 'Vehicle size class (1-6).' type: integer size: description: 'Deprecated: Use size_class.' type: integer deprecated: true is_vehicle: description: 'Whether this is a ground vehicle.' type: boolean is_gravlev: description: 'Whether this is a gravlev vehicle.' type: boolean is_spaceship: description: 'Whether this is a spaceship.' type: boolean manufacturer: $ref: '#/components/schemas/manufacturer_link' link: description: 'API URL for the full vehicle detail.' type: string web_url: description: 'Web URL for the vehicle detail page.' type: string nullable: true updated_at: description: 'Timestamp of the last vehicle data update.' type: string format: date-time version: description: 'Game version code this vehicle belongs to.' type: string example: 4.4.0-LIVE.12340123 type: object - $ref: '#/components/schemas/metadata' game_vehicle: title: 'Game Vehicle' description: 'Vehicle data imported from game files for a specific game version.' properties: uuid: description: 'Unique vehicle identifier.' type: string example: b5892cde-e805-4626-94a2-89fdf6eedc1c name: description: 'Display name of the vehicle.' type: string example: 'Avenger Titan' game_name: description: 'Internal game class name.' type: string example: AEGS_Avenger_Titan nullable: true slug: description: 'URL-friendly vehicle identifier.' type: string example: avenger-titan class_name: description: 'class name.' type: string example: AEGS_Avenger_Titan port_tags: description: 'Vehicle-level identity tags. Used by the items API filter[vehicle] to scope equippable items to this vehicle.' type: array items: type: string example: - AEGS_Avenger_Base manufacturer: $ref: '#/components/schemas/manufacturer_link' size_class: description: 'Vehicle size classification (1-6).' type: integer example: 2 nullable: true dimension: description: 'Vehicle physical dimensions in meters.' properties: length: description: 'Length in meters.' type: number example: 18 width: description: 'Width (beam) in meters.' type: number example: 16 height: description: 'Height in meters.' type: number example: 5 type: object sizes: description: 'Deprecated, use dimension instead.' properties: length: type: number example: 18 beam: type: number example: 16 height: type: number example: 5 type: object deprecated: true emission: description: 'Deprecated, use signature instead. Emission.ir currently maps to IR with shields active. Emission.em_max maps to EM Signature with quantum drive active. Emission.em_idle maps to EM Signature with shields active.' properties: ir: type: number example: 4412 nullable: true em_idle: type: number example: 14320 nullable: true em_max: type: number example: 30458 nullable: true type: object nullable: true deprecated: true mass: description: 'Deprecated, use mass_total instead. Mass is equal to mass_hull.' type: number example: 53531 nullable: true mass_hull: description: 'Hull mass without loadout in kg.' type: number example: 53531 nullable: true mass_loadout: description: 'Equipped loadout mass in kg.' type: number example: 0 nullable: true mass_total: description: 'Total mass (hull + loadout) in kg.' type: number example: 53531 nullable: true cargo_capacity: description: 'Cargo capacity in SCU.' type: number example: 8 nullable: true ore_capacity: description: 'Ore storage capacity in SCU.' type: number example: 96 nullable: true cargo_grids: description: 'Cargo grid containers from ship data.' type: array items: $ref: '#/components/schemas/item_inventory' nullable: true cargo_limits: description: 'Calculated cargo size limits based on grid dimensions.' properties: min: properties: x: type: number example: 1.25 nullable: true 'y': type: number example: 1.25 nullable: true z: type: number example: 1.25 nullable: true type: object nullable: true min_scu_box: description: 'Smallest standard SCU box satisfying the min item size.' type: number example: 1 nullable: true max: properties: x: type: number example: 2.5 nullable: true 'y': type: number example: 2.5 nullable: true z: type: number example: 1.25 nullable: true type: object nullable: true max_scu_box: description: 'Largest standard SCU box that fits within the max item size.' type: number example: 8 nullable: true type: object nullable: true max_scu_box: description: 'Largest standard SCU box that fits within the max item size. Powers of two: 1, 2, 4, 8, 16, 32, 64' type: integer example: 8 nullable: true vehicle_inventory: description: 'Vehicle stowage in micro SCU' type: number example: 0 nullable: true inventory_containers: description: 'Personal inventory containers (stowage) from ship data.' type: array items: $ref: '#/components/schemas/item_inventory' nullable: true weapon_storage: oneOf: - $ref: '#/components/schemas/vehicle_weapon_storage' nullable: true description: 'Weapon locker / rack storage from ship data. Only present when lockers exist.' suit_storage: oneOf: - $ref: '#/components/schemas/vehicle_suit_storage' nullable: true description: 'Suit locker storage from ship data. Only present when lockers exist.' crew: description: 'Crew requirements.' properties: min: description: 'Minimum crew required to operate.' type: integer example: 1 nullable: true max: description: 'Maximum crew capacity.' type: integer example: 1 nullable: true weapon: description: 'Number of weapon crew stations.' type: integer example: 1 nullable: true operation: description: 'Number of operational crew stations.' type: integer nullable: true type: object nullable: true max_medical_tier: description: 'Highest medical bed tier available (e.g., "T2", "T3"). Null if no medical beds.' type: string example: T3 nullable: true seating: description: 'Seating and bed summary.' properties: crew_stations: description: 'Total number of crew stations.' type: integer example: 14 ejection_seats: description: 'Number of ejection seats.' type: integer example: 1 escape_pods: description: 'Number of escape pods. Null when absent.' type: integer example: 4 nullable: true jump_seats: description: 'Number of jump seats. Null when absent.' type: integer example: 4 nullable: true beds: description: 'Total number of beds.' type: integer example: 22 medical_beds: description: 'Medical bed counts by tier. Null if no medical beds.' type: object example: '{"T2": 1, "T3": 4}' nullable: true type: object is_vehicle: type: boolean example: false nullable: true is_gravlev: type: boolean example: false nullable: true is_spaceship: type: boolean example: true nullable: true is_power_suit: description: 'Actor-based power suit (e.g. ATLS).' type: boolean example: false nullable: true health: description: 'Total vehicle health pool.' type: number example: 2500 nullable: true shield_hp: description: 'Use shield.hp property instead.' type: number example: 12000 nullable: true deprecated: true shield_face_type: description: 'Use shield.face_type property instead.' type: string example: FourFaces nullable: true deprecated: true shield: description: 'Shield system data from scunpacked.' properties: hp: description: 'Total shield hit points.' type: number example: 12000 nullable: true regeneration: description: 'Shield regeneration rate per second.' type: number example: 50 nullable: true regeneration_time: description: 'Shield regeneration time from empty. Assuming full power segments assigned to shields.' type: number example: 5.27 nullable: true face_type: description: 'Shield face configuration (e.g., Bubble, Quadrant).' type: string example: FourFaces nullable: true max_reallocation: description: 'Maximum shield reallocation ratio (0-1).' type: number example: 0.5 nullable: true reconfiguration_cooldown: description: 'Cooldown time for shield reconfiguration in seconds.' type: number example: 2 nullable: true max_electrical_charge_damage_rate: description: 'Maximum electrical charge damage rate.' type: number example: 100 nullable: true resistance: description: 'Shield resistance values by damage type.' properties: physical: description: 'Physical shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true energy: description: 'Energy shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true distortion: description: 'Distortion shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true thermal: description: 'Thermal shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true biochemical: description: 'Biochemical shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true stun: description: 'Stun shield resistance.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true type: object nullable: true absorption: description: 'Shield absorption values by damage type.' properties: physical: description: 'Physical shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true energy: description: 'Energy shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true distortion: description: 'Distortion shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true thermal: description: 'Thermal shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true biochemical: description: 'Biochemical shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true stun: description: 'Stun shield absorption.' properties: { minimum: { type: number, nullable: true }, maximum: { type: number, nullable: true } } type: object nullable: true type: object nullable: true type: object nullable: true weapon_snapshot: description: 'Computed weapon statistics from vehicle loadout' properties: pilot_guns_count: type: integer example: 3 turrets_manned_count: type: integer example: 0 turrets_remote_count: type: integer example: 0 turret_weapon_guns_count: type: integer example: 0 missile_rack_count: type: integer example: 2 missile_count: type: integer example: 2 countermeasures_count: type: integer example: 2 type: object nullable: true speed: description: 'Flight speed characteristics in m/s.' properties: scm: description: 'Space Combat Maneuvering speed in m/s.' type: number example: 260 max: description: 'Maximum speed in m/s.' type: number example: 1425 boost_forward: description: 'Forward boost speed in m/s.' type: number example: 610 nullable: true boost_backward: description: 'Backward boost speed in m/s.' type: number example: 280 nullable: true zero_to_scm: description: 'Time from zero to SCM speed in seconds.' type: number example: 2.04 nullable: true zero_to_max: description: 'Time from zero to max speed in seconds.' type: number example: 11.19 nullable: true scm_to_zero: description: 'Time from SCM to zero in seconds.' type: number example: 6368.27 nullable: true max_to_zero: description: 'Time from max to zero in seconds.' type: number example: 34903.01 nullable: true type: object nullable: true agility: description: 'Angular rates and acceleration characteristics.' properties: pitch: description: 'Pitch angular rate in deg/s.' type: number example: 52.5 nullable: true yaw: description: 'Yaw angular rate in deg/s.' type: number example: 48.5 nullable: true roll: description: 'Roll angular rate in deg/s.' type: number example: 180 nullable: true pitch_boosted: description: 'Pitch angular rate with boost in deg/s.' type: number example: 63 nullable: true yaw_boosted: description: 'Yaw angular rate with boost in deg/s.' type: number example: 58.2 nullable: true roll_boosted: description: 'Roll angular rate with boost in deg/s.' type: number example: 216 nullable: true acceleration: description: 'Linear acceleration values.' properties: main: description: 'Forward acceleration in m/s².' type: number example: 127.339 nullable: true retro: description: 'Retro (backward) acceleration in m/s².' type: number example: 0.041 nullable: true vtol: description: 'VTOL acceleration in m/s².' type: number example: 0 nullable: true maneuvering: description: 'Maneuvering thruster acceleration in m/s².' type: number example: 121.49 nullable: true main_g: description: 'Forward acceleration in G.' type: number example: 12.985 nullable: true retro_g: description: 'Retro acceleration in G.' type: number example: 0.004 nullable: true vtol_g: description: 'VTOL acceleration in G.' type: number example: 0 nullable: true maneuvering_g: description: 'Maneuvering acceleration in G.' type: number example: 12.389 nullable: true type: object type: object nullable: true no_fuel_params: oneOf: - $ref: '#/components/schemas/flight_no_fuel_params' nullable: true description: 'Flight parameters when the ship has no fuel.' afterburner: description: 'Afterburner properties from FlightCharacteristics.Afterburner.' properties: pitch_boost_multiplier: description: 'Pitch angular acceleration multiplier when boosting.' type: number example: 1.2 nullable: true roll_boost_multiplier: description: 'Roll angular acceleration multiplier when boosting.' type: number example: 1.2 nullable: true yaw_boost_multiplier: description: 'Yaw angular acceleration multiplier when boosting.' type: number example: 1.2 nullable: true capacitor: description: 'Maximum afterburner capacitor capacity.' type: number example: 20 nullable: true idle_cost: description: 'Afterburner capacitor idle drain per second.' type: number example: 1 nullable: true linear_cost: description: 'Afterburner capacitor cost for linear thrust.' type: number example: 0 nullable: true angular_cost: description: 'Afterburner capacitor cost for angular thrust.' type: number example: 0 nullable: true regen_per_second: description: 'Capacitor regeneration per second.' type: number example: 0.75 nullable: true regen_delay_after_use: description: 'Delay before regeneration starts after use in seconds.' type: number example: 0.2 nullable: true pre_delay_time: description: 'Pre-delay time before afterburner engages in seconds.' type: number example: 0 nullable: true ramp_up_time: description: 'Ramp-up time to full afterburner in seconds.' type: number example: 0.4 nullable: true ramp_down_time: description: 'Ramp-down time from afterburner in seconds.' type: number example: 0.2 nullable: true regen_time: description: 'Total time to fully regenerate capacitor in seconds.' type: number example: 26.67 nullable: true regen_delay: description: 'Delay before capacitor regeneration in seconds.' type: number example: 0.2 nullable: true type: object nullable: true fuel: description: 'Hydrogen fuel capacity, intake rate, and usage.' properties: capacity: description: 'Total hydrogen fuel capacity.' type: number example: 9 intake_rate: description: 'Fuel intake rate from scoops.' type: number example: 22 nullable: true usage: description: 'Fuel consumption rates by thruster type.' properties: main: description: 'Main engine fuel consumption rate.' type: number example: 40.1177 nullable: true retro: description: 'Retro thruster fuel consumption rate.' type: number example: 0.0128 nullable: true vtol: description: 'VTOL fuel consumption rate.' type: number example: 0 nullable: true maneuvering: description: 'Maneuvering thruster fuel consumption rate.' type: number example: 18.5981 nullable: true type: object nullable: true type: object nullable: true quantum: description: 'Quantum travel system parameters.' properties: quantum_speed: description: 'Quantum travel speed in m/s.' type: number example: 165000000 nullable: true quantum_spool_time: description: 'Quantum drive spool-up time in seconds.' type: number example: 4 nullable: true quantum_fuel_capacity: description: 'Quantum fuel capacity.' type: number example: 1.1 nullable: true quantum_range: description: 'Maximum quantum travel range in meters.' type: number example: 112244897.9592 nullable: true port_olisar_to_arccorp_time: description: 'Reference travel time from Port Olisar to ArcCorp in seconds.' type: number example: 254.105158 nullable: true port_olisar_to_arccorp_fuel: description: 'Reference fuel usage from Port Olisar to ArcCorp.' type: number example: 410.888040486 nullable: true type: object nullable: true drive: description: 'Ground vehicle drive characteristics (speed, wheels, agility). Only present for wheeled/tracked ground vehicles.' properties: max_speed_kph: description: 'Maximum speed in km/h.' type: number example: 295.77 nullable: true max_speed_ms: description: 'Maximum speed in m/s.' type: number example: 82.16 nullable: true reverse_speed_kph: description: 'Reverse speed in km/h.' type: number example: 25.2 nullable: true reverse_speed_ms: description: 'Reverse speed in m/s.' type: number example: 7 nullable: true is_tracked: description: 'Whether the vehicle uses tracks instead of wheels.' type: boolean example: false nullable: true wheels: description: 'Wheel configuration summary.' properties: count: description: 'Total number of wheels.' type: integer example: 4 nullable: true driving_count: description: 'Number of driven wheels.' type: integer example: 4 nullable: true steering_count: description: 'Number of steered wheels.' type: integer example: 2 nullable: true drive_type: description: 'Drive configuration (e.g. AWD, RWD, Unknown).' type: string example: AWD nullable: true type: object nullable: true agility: description: 'Handling, grip, and acceleration scores (0-1 scale).' properties: handling: description: 'Handling score (0-1).' type: number example: 0.5 nullable: true grip: description: 'Grip score (0-1).' type: number example: 0.1875 nullable: true acceleration: description: 'Acceleration score (0-1).' type: number example: 1 nullable: true type: object nullable: true type: object nullable: true armor: oneOf: - $ref: '#/components/schemas/vehicle_armor' nullable: true description: 'Vehicle armor data from ArmorResource. Deprecated plural key aliases (signal_multipliers, damage_multipliers, resistance_multipliers) are emitted for backward compatibility.' propulsion: description: 'Vehicle propulsion thruster data.' properties: thrusters: description: 'Array of thruster groups by type.' type: array items: properties: type: { description: 'Thruster type (Main, Maneuver, Retro, etc).', type: string, example: Main } count: { description: 'Number of thrusters of this type.', type: integer, example: 1 } capacity: { description: 'Thruster capacity.', type: number, example: 8.65, nullable: true } g: { description: 'G-force rating.', type: number, example: 14.19, nullable: true } type: object thrust_capacity: description: 'Directional thrust capacity values.' properties: main: description: 'Main engine thrust in Newtons.' type: number example: 3566000 nullable: true retro: description: 'Retro thruster thrust in Newtons.' type: number example: 890000 nullable: true vtol: description: 'VTOL thruster thrust in Newtons.' type: number example: 0 nullable: true maneuvering: description: 'Maneuvering thruster thrust in Newtons.' type: number example: 1200000 nullable: true type: object nullable: true type: object nullable: true weaponry: description: 'Computed weapon DPS and damage statistics from scunpacked.' properties: pilot_dps: description: 'Total pilot weapon DPS.' type: number example: 1200.5 nullable: true pilot_alpha: description: 'Total pilot weapon alpha damage.' type: number example: 350 nullable: true pilot_sustained_dps: description: 'Total pilot weapon sustained DPS.' type: number example: 980 nullable: true turret_dps: description: 'Total turret weapon DPS.' type: number nullable: true turret_alpha: description: 'Total turret weapon alpha damage.' type: number nullable: true turret_sustained_dps: description: 'Total turret weapon sustained DPS.' type: number nullable: true fixed_weapons: description: 'Fixed weapon aggregate stats.' properties: dps_total: type: number nullable: true sustained_dps_total: type: number nullable: true alpha_total: type: number nullable: true weapons: type: array items: { properties: { name: { type: string, nullable: true }, dps: { type: number, nullable: true }, sustained_dps: { type: number, nullable: true }, alpha: { type: number, nullable: true } }, type: object } nullable: true type: object nullable: true missiles: description: 'Missile statistics.' properties: count: type: integer example: 4 nullable: true damage: properties: { physical: { type: number, nullable: true }, energy: { type: number, nullable: true }, distortion: { type: number, nullable: true }, thermal: { type: number, nullable: true }, biochemical: { type: number, nullable: true }, stun: { type: number, nullable: true }, total: { type: number, nullable: true } } type: object nullable: true type: object nullable: true total_missile_damage: description: 'Total missile damage.' type: integer example: 8 nullable: true type: object nullable: true insurance: description: 'Insurance claim times and expedite costs.' properties: claim_time: description: 'Standard claim time in minutes.' type: number example: 4.05 nullable: true expedite_time: description: 'Expedited claim time in minutes.' type: number example: 1.35 nullable: true expedite_cost: description: 'Cost to expedite the claim in aUEC.' type: number example: 2343 nullable: true type: object nullable: true damage_limits: properties: before_destruction: description: 'Map of part name => damage capacity before destruction.' type: object example: Nose: 2500 Body: 2500 nullable: true before_detach: description: 'Map of part name => damage before detachment.' type: object example: WingTipLeft: 1000 WingTipRight: 1000 nullable: true type: object nullable: true ports: description: 'Equipment ports from ship loadout. On show routes: full ports with resolved items and nested children. On index routes: primary hardpoints only, lightweight items from raw JSON.' type: array items: $ref: '#/components/schemas/game_vehicle_port' nullable: true hardpoints: description: 'Legacy v2 equipment hardpoints from ship loadout. Only included on show route via legacy v2 API, excluded from index route. Use `ports` in current API.' type: array items: $ref: '#/components/schemas/game_vehicle_hardpoint' nullable: true parts: type: array items: $ref: '#/components/schemas/game_vehicle_part' nullable: true turrets: properties: manned: type: array items: $ref: '#/components/schemas/game_vehicle_turret' nullable: true remote: type: array items: $ref: '#/components/schemas/game_vehicle_turret' nullable: true pdc: type: array items: $ref: '#/components/schemas/game_vehicle_turret' nullable: true type: object nullable: true cross_section: description: 'Vehicle cross-section dimensions from scunpacked.' properties: length: description: 'Cross-section length (X axis).' type: number example: 18 nullable: true width: description: 'Cross-section width (Y axis).' type: number example: 16 nullable: true height: description: 'Cross-section height (Z axis).' type: number example: 5 nullable: true type: object nullable: true cross_section_max: description: 'Derived: maximum cross-section dimension (max of x, y, z)' type: number example: 18 nullable: true signature: description: 'EM and IR signature data from scunpacked.' properties: ir_quantum: description: 'Infrared signature with quantum drive active.' type: number example: 4412 nullable: true ir_shields: description: 'Infrared signature with shields active.' type: number example: 14320 nullable: true em_quantum: description: 'Electromagnetic signature with quantum drive active.' type: number example: 30458 nullable: true em_shields: description: 'Electromagnetic signature with shields active.' type: number example: 14320 nullable: true em_groups_quantum: description: 'EM signature groups with quantum drive active.' type: array items: type: number nullable: true em_groups_shields: description: 'EM signature groups with shields active.' type: array items: type: number nullable: true em_segment_groups_quantum: description: 'EM segment groups with quantum drive active.' type: array items: type: number nullable: true em_segment_groups_shields: description: 'EM segment groups with shields active.' type: array items: type: number nullable: true em_per_segment: description: 'EM signature per segment.' type: number nullable: true type: object nullable: true cooling: description: 'Cooling system segment allocation.' properties: generation_segments: description: 'Total cooling generation segments available.' type: number nullable: true usage_shields_pct: description: 'Percentage of cooling used by shields.' type: number nullable: true usage_quantum_pct: description: 'Percentage of cooling used by quantum drive.' type: number nullable: true used_segments_shields: description: 'Cooling segments consumed by shields.' type: number nullable: true used_segments_quantum: description: 'Cooling segments consumed by quantum drive.' type: number nullable: true used_segments_shields_grouped: description: 'Grouped cooling segments for shields.' type: array items: type: number nullable: true used_segments_quantum_grouped: description: 'Grouped cooling segments for quantum drive.' type: array items: type: number nullable: true type: object nullable: true power: description: 'Power system segment allocation.' properties: generation_segments: description: 'Total power generation segments available.' type: number nullable: true used_segments_shields: description: 'Power segments consumed by shields.' type: number nullable: true used_segments_quantum: description: 'Power segments consumed by quantum drive.' type: number nullable: true used_segments_grouped: description: 'Grouped power segments consumed.' type: array items: type: number nullable: true type: object nullable: true power_pools: description: 'Power pool allocation limits by component type. Size of -1 indicates unlimited pool.' type: object example: WeaponGun: type: FixedPowerPool item_type: WeaponGun size: 4 Shield: type: DynamicPowerPool item_type: Shield size: 2 FlightController: type: DynamicPowerPool item_type: FlightController size: -1 nullable: true additionalProperties: properties: type: type: string example: FixedPowerPool item_type: type: string example: WeaponGun size: description: 'Power pool size. -1 indicates unlimited.' type: integer example: 4 type: object nullable: true penetration_multiplier: description: 'Penetration multiplier values for fuse and components.' properties: fuse: description: 'Fuse penetration multiplier.' type: number nullable: true components: description: 'Components penetration multiplier.' type: number nullable: true type: object nullable: true relay_network: oneOf: - $ref: '#/components/schemas/vehicle_relay_network' nullable: true career: description: 'Primary career classification (see GET /api/vehicles/filters for valid values).' type: string example: 'Light Freight' nullable: true role: description: 'Specific role within the career (see GET /api/vehicles/filters for valid values).' type: string example: Combat nullable: true game_description: description: 'Vehicle description from raw game data, or a translation object with localized strings.' nullable: true oneOf: - type: string - type: object additionalProperties: type: string web_url: type: string example: 'https://example.com/vehicles/uuid' nullable: true link: type: string example: 'https://api.example.com/vehicles/uuid' description: oneOf: - $ref: '#/components/schemas/translation' nullable: true description: 'Ship-Matrix vehicle description' id: description: 'Ship-Matrix CIG ID' type: integer nullable: true chassis_id: description: 'Ship-Matrix chassis ID' type: integer nullable: true shipmatrix_name: description: 'Ship-Matrix vehicle name' type: string nullable: true foci: description: 'Ship-Matrix vehicle foci/roles' type: array items: $ref: '#/components/schemas/translation' nullable: true production_status: oneOf: - $ref: '#/components/schemas/translation' nullable: true description: 'Ship-Matrix production status' production_note: oneOf: - $ref: '#/components/schemas/translation' nullable: true description: 'Ship-Matrix production note' type: oneOf: - $ref: '#/components/schemas/translation' nullable: true description: 'Ship-Matrix vehicle type' msrp: description: 'Ship-Matrix MSRP in USD' type: number nullable: true pledge_url: description: 'Link to RSI pledge store' type: string nullable: true loaner: description: 'Ship-Matrix loaner vehicles' type: array items: $ref: '#/components/schemas/vehicle_loaner' nullable: true skus: description: 'Ship-Matrix SKUs' type: array items: $ref: '#/components/schemas/vehicle_sku' nullable: true components: description: 'Ship-Matrix components (only included when ?include=components)' type: array items: $ref: '#/components/schemas/vehicle_component' nullable: true uex_prices: description: 'Vehicle purchase and rental prices from UEX Corp API.' properties: purchase: description: 'Purchase prices from UEX Corp.' type: array items: $ref: '#/components/schemas/uex_price' rental: description: 'Rental prices from UEX Corp.' type: array items: $ref: '#/components/schemas/uex_price' type: object images: description: 'Images from external sources for this vehicle.' type: array items: properties: source: description: 'Image source identifier' type: string example: starcitizen.tools thumbnail_url: type: string nullable: true thumbnail_width: type: integer nullable: true thumbnail_height: type: integer nullable: true original_url: type: string nullable: true original_width: type: integer nullable: true original_height: type: integer nullable: true type: object nullable: true updated_at: description: 'Timestamp of last data update.' type: string version: description: 'Game version code this data applies to.' type: string example: 4.4.0-LIVE.12340123 type: object vehicle_weapon_storage: title: 'Weapon Storage' description: 'Weapon locker / rack storage from ship data.' properties: lockers: description: 'Number of weapon lockers.' type: integer example: 2 slots_total: description: 'Total weapon slots across all lockers.' type: integer example: 40 slots_rifle: description: 'Total rifle slots across all lockers.' type: integer example: 16 slots_pistol: description: 'Total pistol slots across all lockers.' type: integer example: 24 by_locker: description: 'Per-locker breakdown, grouped by identical configuration.' type: array items: properties: count: description: 'Number of identical racks with this configuration.' type: integer example: 2 name: description: 'Locker display name.' type: string example: 'Weapon Rack' class_name: description: 'Locker class name.' type: string example: weapon_rack_anvl_carrack_armory_large port: description: 'Hardpoint port name.' type: string example: hardpoint_weapon_locker_01 slots_total: description: 'Total slots in this locker.' type: integer example: 20 slots_rifle: description: 'Rifle slots in this locker.' type: integer example: 8 slots_pistol: description: 'Pistol slots in this locker.' type: integer example: 12 type: object type: object version_changelog: title: 'Version Changelog' properties: from_version: $ref: '#/components/schemas/game_version' to_version: $ref: '#/components/schemas/game_version' summary: description: 'Change counts keyed by entity type (item, vehicle, blueprint, mission, starmap_location)' type: object additionalProperties: properties: added: type: integer example: 47 removed: type: integer example: 12 modified: type: integer example: 234 type: object type: object version_diff_entry: title: 'Version Diff Entry' properties: entity_type: type: string example: item entity_id: type: integer example: 42 change_type: type: string example: modified column_changes: type: object example: '{"name": {"old": "Old Name", "new": "New Name"}}' data_changes: type: object example: '{"stdItem.Mass": {"old": 5, "new": 7}}' type: object weapon_damage: title: 'Weapon Damage' description: 'Individual damage type with value' properties: type: type: string nullable: true name: type: string nullable: true damage: type: number format: double nullable: true type: object metadata: title: Metadata description: 'Information about version and update date' properties: updated_at: description: 'Timestamp this data was last updated.' type: string format: date-time version: description: 'The Game Version this item exists in.' type: string deprecated_fields: description: 'Deprecated fields that will be removed in future versions.' type: string resource: $ref: '#/components/schemas/canonical_resource_meta' type: object canonical_resource_meta: description: 'Canonical resource identity metadata' properties: type: description: 'Resource type discriminator.' type: string enum: - blueprint - commodity - item - location - mission - vehicle example: item uuid: description: 'Entity UUID.' type: string example: 97648869-5fa5-42da-b804-4d9314289539 slug: description: 'URL-friendly slug. Omitted when null.' type: string example: aegs-avenger-stalker nullable: true api_url: description: 'Canonical API URL for this resource.' type: string example: 'https://api.star-citizen.wiki/api/items/aegs-avenger-stalker' web_url: description: 'Canonical web URL for this resource.' type: string example: 'https://star-citizen.wiki/items/aegs-avenger-stalker' version: description: 'Game version code this response is scoped to. Omitted when not applicable.' type: string example: 4.8.0-LIVE.11825000 nullable: true type: object pagination_links: description: 'Pagination navigation links.' properties: first: description: 'URL to the first page.' type: string nullable: true last: description: 'URL to the last page.' type: string nullable: true prev: description: 'URL to the previous page.' type: string nullable: true next: description: 'URL to the next page.' type: string nullable: true type: object pagination_meta: description: 'Pagination metadata.' properties: current_page: description: 'Current page number.' type: integer example: 1 from: description: 'Index of the first item in this page.' type: integer example: 1 last_page: description: 'Last available page number.' type: integer example: 5 per_page: description: 'Number of items per page.' type: integer example: 30 to: description: 'Index of the last item in this page.' type: integer example: 30 total: description: 'Total number of items across all pages.' type: integer example: 150 links: description: 'Pagination navigation links with page URLs.' type: array items: properties: url: type: string nullable: true label: type: string active: type: boolean type: object path: description: 'Base URL path for pagination.' type: string example: 'https://api.star-citizen.wiki/api/vehicles' type: object error_response: description: 'Generic error response.' properties: message: description: 'Human-readable error message.' type: string example: 'Not found.' type: object validation_error_response: description: 'Validation error response with field-level details.' properties: message: description: 'Human-readable error message.' type: string example: 'The given data was invalid.' errors: description: 'Field-level validation errors.' type: object example: 'filter[query]': - 'The filter[query] field is required.' additionalProperties: type: array items: type: string type: object unauthenticated_error_response: description: 'Authentication error response.' properties: message: description: 'Human-readable error message.' type: string example: Unauthenticated. type: object rate_limit_error_response: description: 'Rate limit exceeded error response.' properties: message: description: 'Human-readable error message.' type: string example: 'Too many requests.' type: object not_found_error_response: description: 'Resource not found error response.' properties: message: description: 'Human-readable error message.' type: string example: 'No query results for model.' type: object comm_link_link: title: 'Comm-Link Link' description: "An external hyperlink found within a Comm-Link's content." properties: href: description: 'The URL the link points to.' type: string format: uri example: 'http://robertsspaceindustries.com/forums/' text: description: 'Display text of the hyperlink.' type: string example: forums type: object comm_link: title: Comm-Link description: 'A Spectrum Comm-Link published by Cloud Imperium Games on robertsspaceindustries.com.' properties: id: description: 'CIG identifier for the Comm-Link' type: integer example: 12663 title: description: 'Title of the Comm-Link' type: string example: 'This Week in Star Citizen' rsi_url: description: 'Link to the Comm-Link on the RSI website.' type: string format: uri api_url: description: 'API URL for this Comm-Link resource.' type: string format: uri api_public_url: description: 'Public web URL for this Comm-Link on the API portal.' type: string format: uri channel: description: 'Publishing channel, e.g. Engineering, Transmission.' type: string example: Engineering category: description: 'Content category, e.g. General, Community, Lore, Development.' type: string example: General series: description: 'Series the Comm-Link belongs to, e.g. Around the Verse, 10 For the Chairman.' type: string example: 'Around the Verse' images: description: 'Included images when the `images` relation is loaded.' type: array items: $ref: '#/components/schemas/comm_link_image' images_count: description: 'Total number of images associated with this Comm-Link.' type: integer example: 5 links: description: 'Included links when the `links` relation is loaded.' type: array items: $ref: '#/components/schemas/comm_link_link' links_count: description: 'Total number of external links in the Comm-Link content.' type: integer example: 3 comment_count: description: 'Number of comments on the original RSI post.' type: integer example: 42 created_at: description: 'ISO 8601 timestamp of when the Comm-Link was published.' type: string format: date-time translations: $ref: '#/components/schemas/translation' created_at_human: description: 'Human-readable relative time since publication.' type: string example: '1 hour ago' type: object comm_link_image: title: 'Comm-Link Image' description: 'An image embedded in a Comm-Link, sourced from the RSI media CDN.' properties: id: description: 'Internal database identifier.' type: integer name: description: 'File name or path segment of the image.' type: string example: Starshipbridge.jpg rsi_url: description: 'Full URL to the image on the RSI media CDN.' type: string format: uri example: /media/bluo97w6u7n1ur/source/Starshipbridge.jpg api_url: description: 'API URL for this image resource.' type: string format: uri nullable: true alt: description: 'Alternative text for the image.' type: string size: description: 'File size in bytes.' type: integer example: 1504015 mime_type: description: 'MIME type of the image file.' type: string example: image/jpeg last_modified: description: 'ISO 8601 timestamp of when the image was last modified on the CDN.' type: string format: date-time tags: description: 'Tags associated with the image when the `tags` relation is loaded.' type: array items: properties: name: description: 'Tag name.' type: string translated_name: description: 'Translated tag name.' type: string nullable: true images_count: description: 'Number of images sharing this tag.' type: integer type: object nullable: true similar_url: description: 'API URL to find visually similar images.' type: string format: uri comm_links: description: 'Comm-Links that reference this image, included when the `commLinks` relation is loaded.' type: array items: properties: id: description: 'CIG identifier of the Comm-Link' type: integer title: description: 'Title of the Comm-Link' type: string api_url: description: 'API URL for this Comm-Link resource.' type: string format: uri web_url: description: 'Public web URL for this Comm-Link.' type: string format: uri type: object nullable: true duplicates: description: 'Duplicate images that share the same base image, included when the `duplicates` relation is loaded.' type: array items: properties: id: description: 'Internal database ID of the duplicate image' type: integer name: description: 'File name of the duplicate image' type: string type: object nullable: true base_image: description: 'The original image this is a duplicate of, included when the `baseImage` relation is loaded.' properties: id: description: 'Internal database ID of the base image' type: integer name: description: 'File name of the base image' type: string type: object nullable: true similarity: description: 'Similarity percentage to the search image. Only present in reverse image search results.' type: integer nullable: true type: object galactapedia_article: title: 'Galactapedia Article' description: 'An article from the Galactapedia' properties: id: description: 'CIG identifier' type: string title: type: string slug: type: string thumbnail: type: string nullable: true type: description: 'Alias for template, the first template name' type: string nullable: true template: type: string nullable: true category: description: 'Comma-separated category names' type: string nullable: true tag: description: 'Comma-separated tag names' type: string nullable: true rsi_url: type: string api_url: type: string web_url: type: string created_at: type: string categories: type: array items: $ref: '#/components/schemas/galactapedia_category' categories_count: description: 'Number of categories (present when sorting by categories_count)' type: integer nullable: true tags: type: array items: $ref: '#/components/schemas/galactapedia_tag' tags_count: description: 'Number of tags (present when sorting by tags_count)' type: integer nullable: true properties: type: array items: $ref: '#/components/schemas/galactapedia_property' related_articles: type: array items: $ref: '#/components/schemas/galactapedia_related_article' related_articles_count: description: 'Number of related articles (present when sorting by related_articles_count)' type: integer nullable: true translations: oneOf: - type: string - type: array items: $ref: '#/components/schemas/translation' created_at_human: type: string example: '1 hour ago' type: object galactapedia_category: title: 'Galactapedia article category' description: 'Category of an article' properties: id: type: string name: type: string type: object galactapedia_property: title: 'Galactapedia article property' description: 'Property of an article' properties: name: type: string value: type: string type: object galactapedia_related_article: title: 'Galactapedia related article' description: 'Related article for this galactapedia article' properties: id: type: string title: type: string url: type: string api_url: type: string type: object galactapedia_tag: title: 'Galactapedia article tag' description: 'Tag of an article' properties: id: type: string name: type: string type: object shipmatrix_manufacturer_link: title: 'Link to the detail page of a Ship-Matrix manufacturer' properties: id: type: integer name: type: string code: type: string type: object affiliation: title: Affiliation properties: id: type: string name: type: string code: type: string color: type: string type: object celestial_object: title: 'Celestial Object' properties: id: type: integer code: type: string system_id: type: integer celestial_object_api_url: type: string web_url: type: string name: type: string type: type: string age: type: integer habitable: type: boolean fairchanceact: type: boolean appearance: type: string designation: type: string distance: type: number format: float latitude: type: number format: float longitude: type: number format: float axial_tilt: type: number format: float orbit_period: type: number format: float info_url: type: string description: type: object sensor: properties: population: type: number format: float economy: type: number format: float danger: type: number format: float type: object size: type: number format: float parent_id: type: integer starsystem: properties: id: type: integer nullable: true code: type: string nullable: true name: type: string nullable: true type: object nullable: true time_modified: type: string type: object jumppoint: title: Jumppoint description: 'A jumppoint from the starmap' properties: id: type: integer size: type: string direction: type: string entry: properties: id: type: integer system_id: type: string system_api_url: type: string celestial_object_api_url: type: string status: type: string code: type: string designation: type: string type: object exit: properties: id: type: integer system_id: type: string system_api_url: type: string celestial_object_api_url: type: string status: type: string code: type: string designation: type: string type: object type: object starsystem: title: Starsystem properties: id: type: integer code: type: string system_api_url: type: string name: type: string status: type: string type: type: string web_url: type: string position: properties: x: type: number format: float 'y': type: number format: float z: type: number format: float type: object frost_line: type: number format: float habitable_zone_inner: type: number format: float habitable_zone_outer: type: number format: float info_url: type: string description: type: object aggregated: properties: size: type: number format: float population: type: number format: float economy: type: number format: float danger: type: number format: float stars: type: integer planets: type: integer moons: type: integer stations: type: integer type: object time_modified: type: string celestial_object: properties: celestial_object: properties: data: $ref: '#/components/schemas/celestial_object' type: object nullable: true type: object nullable: true jumppoints: properties: jumppoints: properties: data: $ref: '#/components/schemas/jumppoint' type: object nullable: true type: object nullable: true type: object stat: title: 'RSI Stats' description: 'Statistics about Star Citizen crowdfunding: fans, fleet, and funds (USD)' properties: funds: description: 'Crowdfunding funds raised in USD' type: number format: float example: 962878547.56 fans: description: 'Number of registered fans' type: integer example: 6433852 fleet: description: 'Total Star Citizen fleet size' type: integer example: 6433852 timestamp: description: 'When the snapshot was taken' type: string format: date-time example: '2026-04-13T00:00:00Z' nullable: true type: object vehicle_component: title: 'Vehicle Component' description: 'Components from in-game files' properties: type: type: string name: type: string mounts: type: integer component_size: type: integer category: type: string size: type: integer details: type: string quantity: type: integer manufacturer: type: string component_class: type: string type: object vehicle_loaner: title: 'Vehicle Loaner' properties: uuid: description: 'Unique vehicle identifier.' type: string nullable: true name: type: string slug: description: 'URL-friendly vehicle identifier.' type: string nullable: true link: type: string version: type: string type: object ship_matrix_vehicle: title: 'Ship Matrix Vehicle' description: 'Ship Matrix vehicle' properties: id: type: integer chassis_id: type: integer name: type: string slug: type: string sizes: properties: length: type: number format: float beam: type: number format: float height: type: number format: float type: object deprecated: true dimension: properties: length: type: number format: float width: type: number format: float height: type: number format: float type: object mass: type: number format: float cargo_capacity: description: 'Cargo Capacity in SCU' type: number format: float nullable: true crew: properties: min: type: integer max: type: integer type: object speed: properties: scm: type: number format: float nullable: true max: type: number format: float nullable: true type: object agility: properties: pitch: type: number format: float yaw: type: number format: float roll: type: number format: float acceleration: properties: x_axis: type: number format: float y_axis: type: number format: float z_axis: type: number format: float type: object type: object foci: type: array items: $ref: '#/components/schemas/translation' production_status: $ref: '#/components/schemas/translation' production_note: $ref: '#/components/schemas/translation' type: $ref: '#/components/schemas/translation' description: $ref: '#/components/schemas/translation' size: $ref: '#/components/schemas/translation' msrp: description: 'MSRP imported from the Ship Upgrade tool.' type: number format: float nullable: true pledge_url: description: 'Link to RSI Pledge Store' type: string nullable: true skus: type: array items: $ref: '#/components/schemas/vehicle_sku' manufacturer: properties: code: type: string name: type: string type: object updated_at: type: string components: description: 'Components imported from the Ship-Matrix' type: array items: $ref: '#/components/schemas/vehicle_component' loaner: type: array items: $ref: '#/components/schemas/vehicle_loaner' link: description: 'Link to detail endpoint' type: string type: object vehicle_sku: title: 'Vehicle SKU' properties: source: type: string enum: - upgrade_api - pledge_store cig_id: type: integer title: type: string url: type: string nullable: true price: type: integer discounted_price: type: integer nullable: true is_warbond: type: boolean nullable: true is_package: type: boolean nullable: true available: type: boolean imported_at: type: string format: date-time type: object translation: title: 'Grouped Translations' description: 'Translations of an entity' properties: en: type: string de: type: string zh: type: string fr: type: string type: object translation_single: title: 'Single Translation' description: 'Translation of an entity' type: string parameters: comm_link_includes: name: include in: query explode: false allowReserved: true schema: description: 'Available Comm-Link includes' type: array items: type: string enum: - images - links page: name: page in: query description: 'Page number for pagination (starts at 1). Prefer using `page[number]` instead.' required: false schema: type: integer default: 1 minimum: 1 page_number: name: 'page[number]' in: query description: 'Page number for pagination (starts at 1).' required: false schema: type: integer default: 1 minimum: 1 page_size: name: 'page[size]' in: query description: 'Number of results per page. Maximum 200.' required: false schema: type: integer default: 30 maximum: 200 minimum: 1 locale: name: locale in: query description: 'Locale code for translated fields. Supported values depend on available translations (e.g. en, de, zh).' required: false schema: type: string include: name: include in: query description: "Comma-separated list of relationships to include. Available includes vary per endpoint, see each endpoint's description for supported values." required: false explode: false allowReserved: true schema: type: string sort: name: sort in: query description: 'Comma-separated sort fields. Prefix with `-` for descending. Supported fields vary per endpoint.' required: false explode: false allowReserved: true schema: type: string version: name: version in: query description: 'Game version code to scope results to. Omit to use the current default version. Use `GET /api/game-versions` to list available versions and `GET /api/game-versions/default` to discover the default.' required: false explode: false allowReserved: true schema: type: string securitySchemes: sanctum: type: http description: 'Bearer token authentication via Laravel Sanctum personal access tokens. Most endpoints are public and do not require authentication.' scheme: bearer tags: - name: Blueprints description: Blueprints - name: Commodities description: Commodities - name: Factions description: Factions - name: 'Game Versions' description: 'Game Versions' - name: Items description: Items - name: Search description: Search - name: Manufacturers description: Manufacturers - name: Missions description: Missions - name: Starmap description: Starmap - name: Vehicles description: Vehicles - name: Meta description: Meta - name: Comm-Links description: Comm-Links - name: Images description: Images - name: Galactapedia description: Galactapedia - name: Stats description: Stats - name: 'Ship Matrix' description: 'Ship Matrix' - name: Auth description: Auth