The purpose of this page is to outline the data that needs to be provided to Sopht, and their format, in order to fill out their inventory.
<aside> 💡
Both the CSV and the JSON API expect your full inventory at each import. If an asset is not present in a subsequent import, we will consider it retired. If your inventory is too large for one file, you can split it in multiple pages.
If your inventory comes from different unmerged sources, you can send us one CSV (or one set of paginated CSVs) per source.
</aside>
Character encoding: UTF-8 (without BOM)
The line separator is the character set CRLF: Carriage Return (carriage return) and Line Feed (line feed). The last line may or may not end with this separator.
The file must have a first "header" line reminding the names of the fields defined below.
Columns are separated by the character ,
Each value can be surrounded by double quotes “. If a value contains the character , it becomes necessary. If the “ character must appear inside a surrounded value, the character must be doubled.
For further details on the CSV format, see the RFC 4180.
You can remove optional columns altogether, or change the order of the columns, although the names of the columns must remain unchanged.
This CSV is intended to identify all information concerning the asset itself. The file name must be in the form of: device_information_YYYYMMDD.csv (ex: "device_information_20230113")
<aside> ℹ️ Hardware not tracked as a unit by serial number (headset, mouse, keyboard…) are not part of this CSV, they are managed in another file as peripherals bought by batch : CSV Import Peripheral Inventory
</aside>
device_information_20250723.csv
Assets with invalid serial number will be ignored.
A serial number is considered valid if it contains only alphanumerical characters or the following special characters: ‘ ’, ‘-’, ‘/’. It must start and end with an alphanumerical character and be at least 3 characters long.
<aside> 💡
The regex used to validate serial numbers is :
^[A-Za-z0-9][A-Za-z0-9-/ ]+[A-Za-z0-9]$
</aside>
Between two imports, if a field has been modified: