Skip to content

CSV import

The Channels, Devices, Gateways, and Groups pages have an Upload CSV button for creating many objects at once.

  1. Pick a CSV file.
  2. Celestian shows a per-row preview (valid or error, and the reason). The preview runs exactly the same path as the real import and then rolls it back, so rules, uniqueness, permissions, and quotas are really checked.
  3. When every row is valid, choose to import. If even one row has a problem, nothing is saved.
  4. Download the result report. Device keys generated automatically appear only in this report, once.

General rules: the column separator is , or ; (detected from the header, handy for local Excel), a BOM is ignored, unknown columns are refused, a list inside one cell is separated by |, and at most 500 rows and about 900 KB per file.

name,route,tags,metadata_json
Warehouse Telemetry,warehouse-telemetry,telemetry|warehouse,
Device Control,device-control,control,
name,key,serial,device_type_key,device_type_version,is_gateway,tags,gateway,channels,metadata_json
Building A Gateway,,GW-A,,,true,gateway,,warehouse-telemetry,
Freezer Room A1 Sensor,,001a2b3c4d5e,,,false,freezer-room,GW-A,warehouse-telemetry:publish,
Chiller B1 Sensor,,001a2b3c4d5f,,,false,chiller,GW-A,,
Column Description
name* Required.
key Empty = generated automatically (appears only in the download report). A key you supply is not echoed back.
serial Unique per workspace.
device_type_key, device_type_version, attributes_json Bind the device to a type and fill in its attributes. Without a version, the latest active version is used.
is_gateway true for a gateway. On the Gateways page every row is automatically a gateway.
gateway The Serial or ID of the intermediary gateway (it may be a gateway on an earlier row of the same file).
channels A route or ID of a channel. The suffix :publish or :subscribe restricts the type; without a suffix it means both. The channel must already exist, and you need the connect permission on both sides.
name,description,parent,tags,metadata_json
Building A,Main cold storage,,building,
Floor 1,,Building A,floor,

An import that exceeds your device or channel quota is cancelled entirely, with a quota.*_exceeded error per row.