Endpunkt für Projekte & Aufgaben
NEU v2.35.0 · xoCRM
Projects Endpoint
Verwalten Sie xoCRM-Projekte und Projektaufgaben per JSON-API: exportieren, anlegen, aktualisieren und löschen — inkl. mehrsprachiger Beschreibungen, Projektleitern, Bearbeiter-Zuweisungen und Status-History.
Endpoints
| Methode | Endpoint | Scope | Beschreibung |
|---|---|---|---|
GET | /Export/JSON/projects | projects:read | Alle Projekte (optional ?include_tasks=1) |
GET | /Export/JSON/project/{id} | projects:read | Einzelnes Projekt |
POST | /Import/JSON/projects | projects:write | Neue Projekte anlegen |
PUT | /Import/JSON/projects | projects:write | Projekte aktualisieren (project_id Pflicht) |
DELETE | /Delete/JSON/project/{id} | projects:delete | Projekt löschen (kaskadierend inkl. Aufgaben) |
GET | /Export/JSON/project_tasks | project_tasks:read | Alle Aufgaben (Filter siehe unten) |
GET | /Export/JSON/project_task/{id} | project_tasks:read | Einzelne Aufgabe |
POST | /Import/JSON/project_tasks | project_tasks:write | Neue Aufgaben anlegen (project_id Pflicht) |
PUT | /Import/JSON/project_tasks | project_tasks:write | Aufgaben aktualisieren (task_id Pflicht) |
DELETE | /Delete/JSON/project_task/{id} | project_tasks:delete | Aufgabe löschen (Projekt bleibt bestehen) |
Filter (Export)
Projekte
?status={id}— Projektstatus?customer_id={id}— zugeordneter Kunde?category_id={id}— Projektkategorie?leader_admin_id={id}— Projektleiter?is_private=0|1— private Projekte?date_from / ?date_to— Anlagedatum?last_modified={ts}— geändert seit?include_tasks=1— Aufgaben eingebettet
Aufgaben
?project_id={id}— Aufgaben eines Projekts?status={id}— Aufgabenstatus?priority=1-5— Priorität?admin_id={id}— zugewiesener Bearbeiter?customer_id={id}/?category_id={id}?due_from / ?due_to— Fälligkeitsbereich?progress_min / ?progress_max— Fortschritt (0-100)?last_modified={ts}— geändert seit
?language=de|en steuert die Sprache der Status-/Kategorienamen. Die Meta-Blöcke project_statuses[] bzw. task_statuses[] liefern alle verfügbaren Status-Werte.
Payload-Struktur (Projekt)
{
"type": "projects",
"data": [
{
"name": "Website-Relaunch",
"description": "<p>Beschreibung (Default-Sprache)</p>",
"descriptions": [
{ "language_id": 1, "project_name": "Website Relaunch", "project_description": "<p>EN</p>" }
],
"customer_scope": "specific",
"customer_ids": [4711],
"date_start": "2026-07-01",
"date_end": "2026-09-30",
"is_private": false,
"leader_admin_ids": [1],
"category_ids": [2],
"relationships": [ { "target_type": "orders_id", "target_id": 12345 } ],
"admin_id": 1,
"status_comment": "Projekt via API angelegt"
}
]
}Payload-Struktur (Aufgabe)
{
"type": "project_tasks",
"data": [
{
"project_id": 126,
"name": "Konzept erstellen",
"priority": 4,
"progress_percent": 0,
"date_start": "2026-07-01",
"due_date": "2026-07-15",
"hours_planned": 8.5,
"hours_actual": null,
"status_id": 60,
"assigned_admin_ids": [1],
"admin_id": 1,
"status_comment": "Aufgabe via API angelegt"
}
]
}Hinweise
- NEU v2.36.0: Projekte und Aufgaben enthalten im Export
status_history[]— alle Statuseinträge inkl.comments(Meeting-Protokolle),progress_percent,status_nameunduser_name. admin_id= handelnder Admin (wird alscreated_by/modified_byund in der Status-History alsuser_idgespeichert; ohne Angabe = 0/System).status_idwird gegen die Status-Verwaltung validiert (Typprojectsbzw.tasks); ohne Angabe greift der Default-Status. Ein Statuswechsel per PUT erzeugt automatisch einen Status-History-Eintrag mitstatus_comment— seit v2.40.0 schreibtstatus_commentauch ohne Statusänderung einen Eintrag (Arbeitsnotizen/Protokolle); bei Aufgaben wandertprogress_percentals Fortschritt in den Eintrag.descriptions[]ist mehrsprachig; bei PUT gilt Merge-Semantik — nur gelieferte Sprachen/Felder werden überschrieben.leader_admin_ids,relationships(Projekte) undassigned_admin_ids(Aufgaben) werden nur ersetzt, wenn der Key im Payload enthalten ist (replace-on-present).- POST mit bereits vergebener ID liefert
Already exists— in dem Fall PUT verwenden (und umgekehrtNot foundbei PUT auf unbekannte IDs). - Achtung:
DELETE /project/{id}löscht kaskadierend alle Aufgaben des Projekts mit. Verknüpfte Bestellungen/Tickets werden dabei nur entkoppelt, nicht gelöscht. Die Response enthältdeleted_tasks.