API · v1 · stabil
CODEMETA OSDeveloper Center
Konsole öffnen

Create asset

POST/v1/assets

Legt ein Asset im aktuellen Tenant an. Einziges Pflichtfeld ist status (ACTIVE, INACTIVE, RETIRED, IN_REPAIR, ORDERED). Alle übrigen Felder sind optional — ein Asset trägt je nach Art völlig unterschiedliche Angaben: ein Server hat hostname und ipAddress, eine Domain registrar und domainExpiresAt, eine Lizenz licenseKey und seats. Welche Felder es gibt, steht vollständig in der Schema-Referenz.

Auch name ist bewusst optional: Peripherie und Kleinteile haben oft keinen sinnvollen Namen und werden über manufacturer + model + serialNumber identifiziert.

assetNumber und inventoryNumber vergibt der Server aus dem Nummernkreis des Mandanten. Diese Felder werden — wie alle server-verwalteten Felder — aus dem Request verworfen, nicht als Fehler abgewiesen. Ein Audit-Eintrag (JSON-Patch) entsteht in derselben Transaktion wie das Asset.

Datenmodell

Diese Operation arbeitet auf der Entität Asset (asset). Alle 221 Felder — Typ, Validierung, Pflichtangabe, Beziehungen — stehen in der Schema-Referenz.

  • Pflichtfelder: status
  • Server-verwaltet: _id, schema, schemaVersion, tenantId, version, createdAt, updatedAt, createdBy, updatedBy, deletedAt, deletedBy, assetNumber — diese Felder vergibt die Plattform; im Request werden sie verworfen.

Beispiel

curl -X POST https://api.codemeta-os.de/v1/assets \
  -H "X-Tenant-Id: $TENANT" \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{
  "status": "ACTIVE",
  "name": "Notebook Vertrieb 04",
  "manufacturer": "Lenovo",
  "model": "ThinkPad T14 Gen 5",
  "serialNumber": "PF3ABCDE",
  "partyId": "{{sandbox.partyId}}"
}'
const result = await cm.assets.post({
  "status": "ACTIVE",
  "name": "Notebook Vertrieb 04",
  "manufacturer": "Lenovo",
  "model": "ThinkPad T14 Gen 5",
  "serialNumber": "PF3ABCDE",
  "partyId": "{{sandbox.partyId}}"
});

Best Practice

Setzen Sie partyId möglichst schon beim Anlegen. Das Feld ist nicht nur eine Verknüpfung, sondern der Anker der Datensicht customer_contact: Wer über diesen Scope liest, sieht ausschließlich Assets der eigenen Firma. Ein Asset ohne partyId ist für diese Nutzer:innen unsichtbar und muss später nachgezogen werden.

Wenn Sie Geräte aus einem Inventarisierungs- oder RMM-System spiegeln, führen Sie die Fremd-ID in sourceRef mit. Ohne diesen Anker lässt sich beim zweiten Lauf nicht entscheiden, ob ein Gerät neu ist oder schon existiert — und Sie legen es ein zweites Mal an.

Antwortcodes

HTTP Bedeutung
200 Default Response

Verwandte Konzepte

Suche