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[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[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' } }, 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[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. Vehicle-type items (NOITEM_Vehicle) 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[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' } } }, 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 title when no filters or sorts are active. 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
      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: { type: integer }, 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 2 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[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 along with a human label and result count.'
      properties:
        value:
          nullable: true
          oneOf:
            -
              type: string
            -
              type: integer
            -
              type: boolean
        label:
          type: string
        count:
          type: integer
      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
        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
        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
        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
            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
            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
            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
        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
        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
        salvage_modifier:
          oneOf:
            -
              $ref: '#/components/schemas/salvage_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
    cargo_grid:
      title: 'Cargo Grid'
      description: 'Cargo grid capacity and dimensions derived from inventory container data.'
      properties:
        scu:
          description: 'Cargo capacity in Standard Cargo Units.'
          type: number
          format: double
          nullable: true
          x-suffix: ' SCU'
        x:
          description: 'Interior width in meters.'
          type: number
          format: double
          nullable: true
          x-suffix: ' m'
        'y':
          description: 'Interior depth in meters.'
          type: number
          format: double
          nullable: true
          x-suffix: ' m'
        z:
          description: 'Interior height in meters.'
          type: number
          format: double
          nullable: true
          x-suffix: ' m'
      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:
      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
      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
          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
        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
            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
            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
          nullable: true
        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
          nullable: true
        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
        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
          nullable: true
        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
        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
        item_counts:
          properties:
            max_items:
              type: integer
              nullable: true
            min_items:
              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
          nullable: true
        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
      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'
      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
    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
        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
        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
    shipmatrix_vehicle_link:
      title: 'Ship-Matrix Vehicle Link'
      type: object
      allOf:
        -
          properties:
            id:
              type: integer
            name:
              type: string
            slug:
              type: string
            size:
              $ref: '#/components/schemas/translation'
            type:
              $ref: '#/components/schemas/translation'
            manufacturer:
              $ref: '#/components/schemas/shipmatrix_manufacturer_link'
            production_status:
              $ref: '#/components/schemas/translation'
            link:
              type: string
            updated_at:
              type: string
          type: object
        -
          $ref: '#/components/schemas/metadata'
    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:
        title:
          type: string
        price:
          type: integer
        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
      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
