API Dokumentation – Aufgaben
Endpunkte unter /api/tasks/ zur Anlage von Aufgaben („Tasks“) über die öffentliche CATAMA-API. Strukturierte Zusatzdaten wie Aufgaben-Typ, Fahrzeugdaten und Kundendaten können als JSON mitgegeben werden.
Authentifizierung
Alle Endpunkte erfordern den Parameter token mit einem gültigen API-Token.
Bei ungültigem Token wird {"status": 0, "message": "Invalid Token"} zurückgegeben.
Endpunkte
POST /api/tasks/create— Neue Aufgabe anlegen
Authentifizierung
Akzeptiert werden zwei API-Tokens (in dieser Reihenfolge geprüft):
- Primär:
settings.catama_public_api_token– derselbe Token wie für/api/customerscars/*und/api/invoices/create. - Fallback:
settings.public_access_token– wird aus Backwards-Compatibility weiterhin akzeptiert.
Den Token finden Sie in der CATAMA-Verwaltung unter Einstellungen → System → CATAMA API Token.
{"data":[],"status":0,"message":"Invalid Token"}.POST /api/tasks/create
POST /api/tasks/create
Legt eine neue Aufgabe an. Akzeptiert JSON-Body, Form-Daten und Query-Parameter. Deutsche und englische Schlüssel werden parallel unterstützt.
Pflichtparameter
| Name | Typ | Beschreibung |
|---|---|---|
token |
string | API-Token. Pflicht |
titleAlias: Titel |
string | Titel der Aufgabe, darf nicht leer sein. Pflicht |
user_idAlias: userid, userId |
integer | ID des Bearbeiters aus der users-Tabelle. Pflicht* |
externaluid |
string | Permalogin-Token des Users (Alternative zu user_id). Pflicht* |
user_id oder externaluid muss angegeben werden. user_id hat Vorrang.Optionale Parameter – Inhalt & Klassifizierung
| Name | Typ | Beschreibung |
|---|---|---|
descriptionAlias: Beschreibung |
string | Beschreibungstext. optional |
task_typeAlias: type, Typ |
string | Aufgaben-Typ. Erlaubt: create-purchase, contact-customer, mixed, create-offer. optional |
priorityAlias: prio, Prio |
integer | 0 niedrig … 3 hoch. Standard: 1. optional |
deadlineAlias: Deadline |
string | Frist. Mehrere Formate erlaubt – siehe Deadline-Formate. optional |
status |
integer | 0 = offen, 1 = erledigt, 2 = in Bearbeitung, 3 = unterbrochen. Standard: 0. optional |
category |
integer | Numerische Kategorie. Standard: 0. optional |
duration |
integer | Geschätzte Dauer in Minuten. Standard: 0. optional |
kanban_identifier |
string | Spalten-Identifier im Kanban. Standard: _todo. optional |
board_id |
integer | Ziel-Board. Standard: 1. optional |
Optionale Parameter – Verknüpfungen
| Name | Typ | Beschreibung |
|---|---|---|
customer_idAlias: customerid |
integer | Existierende Kunden-ID. Wird gegen customers geprüft. optional |
mobile_idAlias: mobileid |
integer | Existierende Bestandsfahrzeug-ID (siehe Kundenfahrzeugdaten-API). Wird gegen clientmobiles geprüft. optional |
document_idAlias: documentid |
integer | Belegzuordnung. optional |
document_typeAlias: documentype, documenttype |
string | Belegtyp, z. B. invoice, article. optional |
assigned_user_idsAlias: assignedUserIds |
array | csv | json | Mehrere Bearbeiter. Akzeptiert JSON-Array, CSV-String oder Form-Array. Ungültige IDs werden still verworfen. optional |
Optionale Parameter – Zusatzdaten & Tracking
| Name | Typ | Beschreibung |
|---|---|---|
vehicledataAlias: fahrzeugDaten, vehicle_data |
object | json | Freie Fahrzeugdaten als JSON. Siehe Beispiele. optional |
customerdataAlias: kundenDaten, customer_data |
object | json | Freie Kundendaten als JSON. optional |
source |
string | Herkunft des Requests, z. B. n8n, zapier. Standard: api. optional |
external_referenceAlias: externalreference |
string | Externe Referenz (CRM-Vorgang, Ticket-ID …). Indexiert. optional |
extraAlias: metadata |
object | json | Beliebige weitere Metadaten. optional |
Beispiel-Aufruf – minimal
cURL
curl -X POST https://catama-instanz.de/api/tasks/create \
-H "Content-Type: application/json" \
-d '{
"token": "DEIN_API_TOKEN",
"title": "Kunde Müller zurückrufen",
"user_id": 2
}'Beispiel-Aufruf – vollständig
cURL
curl -X POST https://catama-instanz.de/api/tasks/create \
-H "Content-Type: application/json" \
-d '{
"token": "DEIN_API_TOKEN",
"title": "Ankaufangebot für Golf VII vorbereiten",
"description": "Kunde möchte Inzahlungnahme. Bewertung anfertigen.",
"user_id": 2,
"assigned_user_ids": [2, 11, 12],
"task_type": "create-purchase",
"priority": 2,
"deadline": "2026-12-31",
"duration": 30,
"status": 0,
"kanban_identifier": "_todo",
"board_id": 1,
"customer_id": 200,
"mobile_id": 1085,
"source": "n8n",
"external_reference": "CRM-2026-04711",
"vehicledata": {
"plate": "B-AB 1234",
"vin": "WVWZZZ3CZWE123456",
"model": "Golf VII",
"mileage": 85000
},
"customerdata": {
"company": "Muster GmbH",
"forename": "Max",
"lastname": "Mustermann"
},
"extra": {
"campaign": "frühjahrs-aktion-2026"
}
}'Beispiel-Aufruf – Form-Post mit deutschen Aliassen
cURL
curl -X POST https://catama-instanz.de/api/tasks/create \
-d "token=DEIN_API_TOKEN" \
-d "Titel=Angebot prüfen" \
-d "Beschreibung=Bitte Angebot 2026-04711 freigeben" \
-d "user_id=2" \
-d "Typ=create-offer" \
-d "Prio=3" \
-d "Deadline=15.09.2026"Erfolgreiche Antwort
{
"data": {
"task_id": 29387,
"user_id": 2,
"task_type": "create-purchase",
"customer_id": 200,
"mobile_id": 1085,
"document_id": null,
"document_type": null,
"board_id": 1,
"kanban_identifier": "_todo",
"priority": 2,
"status": 0,
"deadline": 1798761600,
"assigned_user_ids": [2, 11, 12],
"source": "n8n",
"external_reference": "CRM-2026-04711",
"created_at": 1777555600
},
"status": 1,
"message": "Success",
"task_id": 29387
}Fehler – Beispiele
{ "status": 0, "message": "Invalid Token" } // HTTP 401
{ "status": 0, "message": "title is required" } // HTTP 400
{ "status": 0, "message": "user_id or externaluid is required" } // HTTP 400
{ "status": 0, "message": "Invalid task_type. Allowed: create-purchase, contact-customer, mixed, create-offer" } // HTTP 400
{ "status": 0, "message": "User not found" } // HTTP 404
{ "status": 0, "message": "Customer not found" } // HTTP 404
{ "status": 0, "message": "Car not found" } // HTTP 404
{ "status": 0, "message": "Failed to create task" } // HTTP 500Aufgaben-Typ (task_type)
Strukturierter, semantischer Aufgaben-Typ. Wird zentral in der Tabelle tasks_api_metadata abgelegt und ist später per SQL filterbar. Erlaubt sind ausschließlich:
| Wert | Bedeutung |
|---|---|
create-purchase |
Aufgabe zum Anlegen eines Ankaufs / einer Bestellung. |
contact-customer |
Aufgabe für eine Kundenkontaktaufnahme (Anruf, E-Mail). |
mixed |
Mischvorgang / mehrere Schritte kombiniert. |
create-offer |
Aufgabe zum Erstellen eines Angebots. |
Invalid task_type.Deadline-Formate
Der Parameter deadline akzeptiert mehrere Formate:
| Format | Beispiel | Hinweis |
|---|---|---|
| Unix-Timestamp | 1798761600 |
Sekunden seit 1970-01-01 (empfohlen, eindeutig). |
| ISO 8601 – Datum | 2026-12-31 |
Datum in Server-Zeitzone. |
| ISO 8601 – Datum & Zeit | 2026-12-31 14:30:002026-12-31T14:30:00Z |
Mit Uhrzeit, Z-Suffix oder Offset. |
| Deutsches Datum | 15.09.2026 |
Format d.m.Y. |
| Monat / Jahr | 09/2026 |
Wird auf den 1. des Monats gesetzt. |
Wird kein Wert übergeben, speichert das System 2147483647 (= „kein Limit“).
Fahrzeug- und Kundendaten als JSON
Die Parameter vehicledata und customerdata nehmen beliebige strukturierte JSON-Objekte entgegen. Die Inhalte werden in der Tabelle tasks_api_metadata als JSON abgelegt (siehe Datenablage) und sind per SQL auswertbar.
Beide Parameter akzeptieren entweder ein JSON-Objekt (innerhalb eines JSON-Bodys) oder einen serialisierten JSON-String (bei Form-Posts).
Beispiel: Fahrzeugdaten
{
"plate": "B-AB 1234",
"vin": "WVWZZZ3CZWE123456",
"fabricator": "Volkswagen",
"model": "Golf VII",
"registration_date": "2019-03-15",
"mileage": 85000,
"intern_id": "KFZ-001"
}Beispiel: Kundendaten
{
"company": "Muster GmbH",
"forename": "Max",
"lastname": "Mustermann",
"email": "max@muster.de",
"phone": "+49 30 12345678",
"street": "Beispielstr. 1",
"zip": "10115",
"city": "Berlin"
}customer_id bzw. mobile_id an. Die JSON-Felder sind primär für freie Daten oder zusätzlichen Kontext gedacht.Response-Felder im Detail
Die vollständige Liste aller Response-Felder finden Sie aufklappbar oben unter POST /api/tasks/create → Erfolgreiche Antwort → „Alle Felder im Response-Objekt anzeigen“.
Fehler-Codes
Alle Fehlerantworten haben die Form {"data":[],"status":0,"message":"…"}.
| HTTP | Message | Ursache |
|---|---|---|
401 |
Invalid Token |
Kein oder ungültiger Token. |
400 |
title is required |
title fehlt oder ist leer. |
400 |
user_id or externaluid is required |
Weder user_id noch externaluid übergeben. |
400 |
Invalid task_type |
task_type nicht in der Whitelist. |
404 |
User not found |
User existiert nicht. |
404 |
Customer not found |
customer_id existiert nicht in customers. |
404 |
Car not found |
mobile_id existiert nicht in clientmobiles. |
500 |
Database connection failed |
Interner Fehler – DB nicht erreichbar. |
500 |
Failed to create task |
Insert-Query ist fehlgeschlagen. |
Datenablage
Ein erfolgreicher Request schreibt in mehrere Tabellen:
| Tabelle | Inhalt |
|---|---|
tasks |
Hauptdatensatz: userid, title, description, priority, status, deadline, customerid, mobileid, documentid, documentype, kanban_identifier, created_at, created_by, duration, category. |
tasks_boards_rel |
Zuordnung Aufgabe → Kanban-Board. |
tasks_users_rel |
Mehrfach-Bearbeiter aus assigned_user_ids (1 Zeile pro User). |
tasks_api_metadata |
Strukturierte API-Zusatzdaten (1:1 zu tasks über task_id): task_type, vehicle_data (JSON), customer_data (JSON), source, external_reference, extra (JSON). |
tasks_api_metadata gespeichert – nicht mehr als angehängter Text in description. Damit sind sie per SQL filterbar und reportingfähig.