> ## Documentation Index
> Fetch the complete documentation index at: https://teardowns.aero/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Vocabularies

> Aircraft types and engine models how to look them up and use them.

Teardowns on the public API support two `asset_type` values today
`aircraft` and `engine` so there are two vocabularies you'll work with.
Where the web UI shows you a dropdown of these, the API takes the
human-readable **name** directly.

<Note>
  APU and landing-gear flows are UI-only at the moment. The public API
  doesn't accept `asset_type=apu` or `asset_type=landing_gear` on
  teardown writes, and the matching vocabulary fields aren't on the
  public request schema. Listings still accept `apu_model` names for
  APU listings see the listings docs.
</Note>

## The two vocabularies

| `asset_type` | Vocabulary field on the body | Example values                      |
| ------------ | ---------------------------- | ----------------------------------- |
| `aircraft`   | `aircraft_type`              | `A320-200`, `737-700`, `A350-1000`  |
| `engine`     | `engine_model`               | `CFM56-5B`, `Trent 1000`, `GEnx-1B` |

You set exactly one per teardown, matching the `asset_type` you chose.
The other is ignored if you send it.

## How resolution works

When you POST or PATCH a teardown:

1. The server reads `asset_type` first.
2. It then reads the matching vocabulary field (e.g., `aircraft_type`).
3. It looks up the active row in the corresponding table whose `name`
   matches your value, **case-insensitively**.

So `"aircraft_type": "a320-200"` and `"aircraft_type": "A320-200"` both
resolve to the same row. Inactive vocabulary rows are not accepted.

## Unknown values are friendly errors

If you send a name that doesn't match any active row, the response is a
`400 unknown_vocabulary` with the full allowed list in the body:

```jsonc theme={null}
{
  "detail": {
    "error_code": "unknown_vocabulary",
    "field": "aircraft_type",
    "value": "A320-poo",
    "valid_values": [
      "737-700",
      "737-800",
      "747-400",
      "A320-200",
      "A321-200",
      "A350-900",
      "A350-1000",
      ...
    ],
    "message": "Unknown aircraft_type: 'A320-poo'. See valid_values."
  }
}
```

This is self-correcting your ERP can dump `valid_values` into its
config, prompt the user to pick the right one, retry. No docs lookup
needed.

## Discovering valid values up front

You don't have to wait for an `unknown_vocabulary` error to find out
what's accepted. The full active lists are below, grouped by
manufacturer. All values are matched case-insensitively, send them
exactly as written.

The **Aircraft types** and **Engine models** tabs apply to both
teardowns and listings. The **APU models** tab applies to listings
only (`listing_type=apu`) the teardown surface doesn't accept APU
asset types today.

<Tabs>
  <Tab title="Aircraft types">
    **Airbus**

    * A300
    * A310-300
    * A318
    * A319
    * A320
    * A320-200
    * A321
    * A321-200
    * A330
    * A330-200
    * A330-300
    * A340-300
    * A340-600
    * A350-900
    * A350-1000
    * A380

    **Boeing**

    * 737-200
    * 737-200 VIP
    * 737-300
    * 737-400
    * 737-500
    * 737-600
    * 737-700
    * 737-800
    * 737-900
    * 737 MAX 8
    * 737 MAX 9
    * 747-400
    * 747-8
    * 757-200
    * 757-300
    * 767-200
    * 767-300ER
    * 777-200
    * 777-200ER
    * 777-300
    * 777-300ER
    * 787-8
    * 787-9

    **Embraer**

    * E170
    * E175
    * E190
    * E195
    * ERJ-135
    * ERJ-145
    * ERJ-145LR

    **Bombardier**

    * CRJ-100
    * CRJ-200
    * CRJ-700
    * CRJ-900
    * CRJ-900ER
    * CRJ-1000
    * Challenger 604
    * Challenger 605
    * Global 5000
    * Global Express
    * Learjet 45

    **De Havilland Canada**

    * DHC-8 Q100
    * DHC-8 Q200
    * DHC-8 Q300
    * DHC-8 Q400
    * DHC 8-400

    **ATR**

    * ATR 42
    * ATR 72

    **McDonnell Douglas**

    * DC-9
    * DC-10
    * MD-11
    * MD-80
    * MD-90

    **Lockheed**

    * L-1011

    **Fokker**

    * Fokker 50
    * Fokker 100

    **Saab**

    * Saab 340
    * Saab 2000

    **Gulfstream**

    * Gulfstream G550
    * Gulfstream G650
    * Gulfstream GV

    **Dassault**

    * Falcon 900
    * Falcon 2000

    **Cessna**

    * Citation X
  </Tab>

  <Tab title="Engine models">
    **CFM International**

    * CFM56-3
    * CFM56-3B1
    * CFM56-3C1
    * CFM56-5A3
    * CFM56-5B
    * CFM56-7
    * CFM56-7B
    * CFM56-7B24
    * CFM56-7B26
    * CFM56-7B27
    * LEAP-1A
    * LEAP-1B

    **GE Aviation**

    * CF34-3B
    * CF34-3B1
    * CF34-8C5
    * CF34-8E5
    * CF34-10E5
    * CF34-10E6
    * CF6-80C2
    * CF6-80E1
    * GE90-90B
    * GE90-94B
    * GE90-115B
    * GEnx-1B
    * GEnx-2B

    **Rolls-Royce**

    * AE3007-A1
    * AE3007-A1/3
    * BR710
    * RB211-535E4
    * Trent 700
    * Trent 772B
    * Trent 772B-60
    * Trent 800
    * Trent 900
    * Trent 1000
    * Trent XWB

    **Pratt & Whitney**

    * JT8D-219
    * JT9D-7R4
    * PW1100G
    * PW1500G
    * PW4000-94
    * PW4056
    * PW4060
    * PW4062
    * PW4090

    **Pratt & Whitney Canada**

    * PW121
    * PW123
    * PW126
    * PW127M
    * PW150A

    **IAE**

    * V2500-A5
    * V2527-A5
    * V2533-A5
  </Tab>

  <Tab title="APU models">
    **Honeywell**

    * 131-9\[A]
    * GTCP36-150G
    * GTCP36-150RJ
    * GTCP85-129H
    * GTCP131-9A
    * GTCP131-9B
    * GTCP331-200
    * GTCP331-250
    * GTCP331-350
    * GTCP331-350C
    * GTCP331-500
    * GTCP331-600
    * HGT1700

    **Pratt & Whitney**

    * APS500
    * APS500C14
    * APS500R
    * APS1000C12
    * APS2300
    * APS3200
    * APS3200C
    * APS5000

    **Sundstrand**

    * T-62T-40C11
    * T-62T-46C

    **Hamilton Sundstrand**

    * RE220
  </Tab>
</Tabs>

<Note>
  These lists are sourced directly from the active vocabulary tables and
  may drift over time as new types are added. If your ERP sees an
  `unknown_vocabulary` error, branch on the `valid_values` array
  returned in the response body, that array is always current.
</Note>
