The appearance schema validatesDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/nordicsemi/bluetooth-numbers-database/llms.txt
Use this file to discover all available pages before exploring further.
v1/gap_appearance.json, which contains the GAP Appearance values defined by the Bluetooth SIG. Appearance is a two-byte value that describes what type of device a Bluetooth peripheral represents — for example, a heart rate sensor, a keyboard, or a smartwatch. The schema is defined in v1/appearance_schema.json and reflects a two-level hierarchy: top-level categories and optional sub-categories nested within them.
The two bytes of an Appearance value are split as follows: bits 15–6 encode the category and bits 5–0 encode the sub-category.
Full schema
Category fields
Each item in the top-level array represents an Appearance category and must include the following fields.A decimal integer identifying the Appearance category. This corresponds to the value encoded in bits 15–6 of the 2-byte Appearance value as defined in the Bluetooth Core Specification Supplement. For example,
2 is the category value for Computer. Category values must be unique across the entire gap_appearance.json file — duplicates are detected by verify.js.The human-readable name for the Appearance category, matching the name used in the Bluetooth SIG Assigned Numbers document. Examples:
"Unknown", "Phone", "Computer", "Watch".An optional array of sub-category objects providing finer-grained device classification within the parent category. When present, each element must conform to the sub-category schema described below. Categories with no meaningful sub-classifications (such as
"Phone" or "Unknown") omit this field entirely.Example
The following shows the Computer category entry (category2) from gap_appearance.json, including its full sub-category list:
Uniqueness constraint
Theverify.js duplicate checker specifically targets the category field in gap_appearance.json:
Check No Duplicates CI workflow enforces this on every push and pull request.
Some categories have no sub-categories — for example,
"Phone" (category 1) and "Unknown" (category 0) are defined with only category and name. The subcategory field is entirely optional in the schema and should only be included when the Bluetooth SIG Assigned Numbers document defines sub-types for that category.