Adding a new UUID to the Bluetooth Numbers Database means editing a JSON file under theDocumentation 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/ directory. Each type of GATT attribute has its own file, and every entry must include all four required fields: name, identifier, uuid, and source. This guide walks through exactly what to edit and how to format each field correctly.
Adding a Service UUID
Open the service UUIDs file
Open
v1/service_uuids.json in your editor. The file contains a single JSON array of service objects.Add a new object to the array
Append your entry to the array. All four fields are required:
name, identifier, uuid, and source.Adding a Characteristic UUID
Open the characteristic UUIDs file
Open
v1/characteristic_uuids.json. The structure is identical to the services file — a single JSON array.Add your entry to the array
Append a new object with all four required fields. Change
service to characteristic in the identifier type segment.Adding a Descriptor UUID
Open the descriptor UUIDs file
Open
v1/descriptor_uuids.json. Same array structure as the other GATT attribute files.Add your entry
Append a new object using
descriptor as the attribute type segment in the identifier.UUID Format Requirements
Every 128-bit UUID in the database must conform to the following rules, enforced by both the JSON Schema (attribute_schema.json) and the duplicate checker (verify.js):
| Rule | Detail |
|---|---|
| Length | 36 characters including four hyphens |
| Pattern | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
| Character set | Uppercase hex only: A–F and 0–9 |
| 16-bit exception | A 4-character hex string (e.g., 1800) is only valid for correcting existing SIG-defined entries with gss source |
verify.js is:
npm run verify to fail with an error identifying the offending entry by index.
Identifier Naming Convention
Theidentifier field uses a reverse-domain UTI format to create a globally unique, human-readable name for the attribute. The structure is:
What NOT to Do
Real-World Source Examples
Here are several real entries fromv1/service_uuids.json to show what correctly formatted entries look like in practice:
1800, 180F with gss source) and the proprietary 128-bit entries (Philips Hue and Apple with their own source strings). New community contributions should always follow the 128-bit pattern with an appropriate source value matching your organization or project name.