since Cumulocity uses a document based database you can store arbitrary fragments in a device. Devices are basically ManagedObjects that are managed via the Inventory API:
You can also add properties using the Properties Library under Administration → Settings. Those can then be used e.g. in an Asset Properties Widget in the Cockpit Application.
The basic structure of an event has a few mandatory (source, type, time) fields. In addition there a some predefined fragments which are supported by the platform ootb. See the example below. There we have a location update which is interpreted by the platfrom using the c8y_Postition fragment.