Skip to content

Projektmanagement – Vollständige API-Referenz ​

Fach-API für Projekte, Aufgaben, Kanban, Support-Linien und Zeiterfassung. Basis ist https://core-backend.reybex.com/api (Staging: https://io-staging-partner.reybex.com/api). Authentifizierung wie im API: --header "authorization: Basic $TOKEN".

Der Kunde steht unter Kunden- und Lieferantenverwaltung. Aufträge unter Auftragsverwaltung. Die Abrechnung der Leistungen schreibt Verkaufsbelege oder Eingangsrechnungen.

Der schreibende Weg des Projekts ist POST /api/project/. Der Körper ist das Projekt selbst. Der schreibende Weg der Aufgabe ist POST /api/task/. Der Körper trägt den Umschlag task.

1. Grundlagen ​

ObjektRolle
ProjectProjekt, Phase oder Sprint
TaskAufgabe oder Ticket
TaskHistoryZeitbuchung
SupportLineSupport-Linie
KanbanBoard

Die Zahlen in den Beispielen sind Beispiel-Ids eines Mandanten. 30001 ist Kunde KD-1000. 501 ist der Benutzer. 41 ist ein Projektstatus, 51 ein Projekttyp. 61 ist ein Aufgabenstatus.

Datum am Projekt ist yyyy-MM-dd. Die Projektnummer setzt die API.

1.1 Suchschlüssel ​

ZielSuchschlüssel
KundecustomerNo
Benutzer, Status, Typid
Artikel an anderen Fach-APIsmatCode, sonst sku

members sind Benutzer per id.

1.2 Antwort- und Fehlerformat ​

AufrufResponse
Projekt{ "id": … }
Aufgabe{ "taskId": …, "taskNumber": "…" }
Projekt löschender Satz wird logisch gelöscht
Aufgabe löschen{ "success": true }
SituationKörper
Projekt nicht gefundenHTTP 404
Standardprojekt ohne Partner des Benutzerscustomer.not.found.error
E-Mail der Aufgabe unbekanntHTTP 404
Fehlende AnmeldungHTTP 401

2. Projekt ​

POST /api/project/ legt an, wenn keine id im Körper steht. shouldCreateFromTemplate true kopiert die genannte Vorlage und antwortet mit deren neuer id.

isSprintProject true setzt isSprint und internal. isPhase true macht das Projekt zur Phase. Die Sortierung vergibt die API, wenn sortOrder leer ist.

2.1 Felder ​

FeldBedeutung
titleTitel
customerKunde
userVerantwortlicher, per id
projectType, projectStatusArt und Status, per id
startDate, endDateyyyy-MM-dd
descriptionText
membersListe { "id": … }. Fehlt die Liste, bleibt sie leer
isSprint, isPhaseSprint oder Phase
mainProjectübergeordnetes Projekt
isTemplateVorlage
isFixPrice, fixPriceFestpreis
pricePerHourStundensatz
isDeleteLogisch gelöscht

2.2 Pflichtfelder ​

Auflösung, wenn ein Pflichtfeld fehlt ​

Die API setzt Pflicht-Referenzen nicht von selbst. Fehlt ein Feld, in dieser Reihenfolge füllen. Der erste Treffer gilt.

  1. Angabe – Wert aus dem Auftrag für dieses Feld.
  2. Vorlage – dasselbe Feld aus GET /api/project/{id}. id und projectNumber nicht übernehmen. Ist eine Vorlage genannt und shouldCreateFromTemplate true, diese Id senden. Sonst keine raten, mit Schritt 3 weiter.
  3. Standard – Wert aus der Tabelle.
  4. Domäne – Kunde über customerNo lesen. Status und Art GET /api/domains/projectStatus?take=1&sort=code und GET /api/domains/projectType?take=1&sort=code. Die id setzen.
  5. Stopp – Kunde, Status oder Art ist leer. Projekt nicht anlegen.
FeldPflichtVorlageStandardDomäne
titlejatitle——
customerjacustomer—Kunde, customerNo
projectStatusjaprojectStatus—projectStatus
projectTypejaprojectType—projectType
userneinuserangemeldeter Benutzer, per id—
membersneinnicht übernehmen[]—
projectNumberneinnicht übernehmenNummernkreis—

2.3 Projekt anlegen ​

json
{
  "title": "Einführung Nordlicht",
  "customer": { "customerNo": "KD-1000" },
  "user": { "id": 501 },
  "projectStatus": { "id": 41 },
  "projectType": { "id": 51 },
  "startDate": "2026-10-16",
  "endDate": "2026-12-31",
  "members": [{ "id": 501 }]
}

Response: { "id": 97001 }

Phasen: GET /api/project/phases/97001. Sprints: GET /api/project/sprints/97001. Reihenfolge: POST /api/project/reorderSprints.

Offene Aufträge des Kunden: GET /api/project/getOpenSalesOrdersForCustomer. Aufgaben aus Positionen: POST /api/project/importTasksFromSalesItems.

Lesen: GET /api/project/97001. Löschen ist logisch: DELETE /api/project/97001. Unbekannt: HTTP 404.

Beobachten: POST /api/observedProject/97001. Ablegen: DELETE /api/observedProject/97001.

3. Aufgabe ​

POST /api/task/ speichert task. Response: { "taskId": 97100, "taskNumber": "T-100" }

json
{
  "task": {
    "title": "Schnittstelle einrichten",
    "project": { "id": 97001 },
    "customer": { "customerNo": "KD-1000" },
    "user": { "id": 501 },
    "taskStatus": { "id": 61 },
    "plannedCostHour": 4,
    "startDate": "2026-10-16",
    "endDate": "2026-10-20"
  }
}

isDefaultForManager true legt die Aufgabe ins Standardprojekt des Benutzers. Hat er keins und keinen Partner: customer.not.found.error.

Status ändern: POST /api/task/changeStatusOfTask. taskId und taskStatus sind Ids. Fehlt eine von beiden: HTTP 404.

json
{ "taskId": 97100, "taskStatus": 62 }

In den Sprint: POST /api/task/addTasksToSprint. Unteraufgabe anlegen: POST /api/subTask/. Aus der Aufgabe: POST /api/task/createSubTaskFromTask. Liste: GET /api/task/listSubTasks/97100. Status der Unteraufgabe: POST /api/task/changeSubTaskStatus/{id}.

Verkaufsbeleg aus Kosten, die noch keinen Beleg haben: POST /api/task/createSalesDocuments. taskIds sind die Aufgaben. docDate ist yyyy-MM-dd. Fehlt die Belegart: salesDocType.not.found.error.

json
{
  "taskIds": [97100],
  "docDate": "2026-10-16",
  "docType": { "id": 4101 }
}

4101 ist die Verkaufsbelegart. Eingangsbeleg: POST /api/task/createVerificationDocuments.

Liefergegenstand: POST /api/deliverable/. Tickets: GET /api/ticket/listTickets.

Lesen: GET /api/task/97100. Löschen: DELETE /api/task/97100. Antwort { "success": true }.

Kommentar: POST /api/taskComment/.

4. Zeit, Kanban, Support ​

Buchung starten: GET /api/taskHistory/bookTask/97100. Beenden: GET /api/taskHistory/endTask. Aktuelle Buchung: GET /api/taskHistory/currentBookingTask. Eigene Buchungen: GET /api/taskHistory/myBookings.

Manuell speichern: POST /api/taskHistory/.

Kanban lesen: POST /api/kanban/ oder GET /api/kanban/{kanbanCode}. Spalten: POST /api/kanban/kanbanColumnPreferences.

Support-Linie: POST /api/supportLine/. SLA: POST /api/supportLineSla/. Folgen: GET /api/supportLine/follow/{id}.

Checkliste: POST /api/checkList/. Punkt: POST /api/checkList/checkListItem.

5. Weitere Beispiele ​

5.1 Vom Kunden zur Aufgabe ​

  1. Projekt anlegen, Abschnitt Projekt.
  2. Aufgabe mit demselben Kunden und project.id.
  3. Zeit über GET /api/taskHistory/bookTask/{id} starten und mit endTask beenden.
  4. POST /api/task/createSalesDocuments, wenn die Stunden berechnet werden.

6. Endpoint-Katalog ​

MethodePfadBedeutung
GET/api/project/{id}Ein Projekt
POST/api/project/Projekt speichern
DELETE/api/project/{id}Logisch löschen
GET/api/project/phases/{id}Phasen
GET/api/project/sprints/{id}Sprints
POST/api/project/importTasksFromSalesItemsAufgaben aus Auftragspositionen
GET/api/task/{id}Eine Aufgabe
POST/api/task/Speichern, Umschlag task
DELETE/api/task/{id}Löschen
POST/api/task/changeStatusOfTaskStatus
POST/api/task/createSalesDocumentsVerkaufsbeleg aus Kosten
GET/api/taskHistory/bookTask/{id}Zeit starten
GET/api/taskHistory/endTaskZeit beenden
POST/api/kanban/Board
POST/api/supportLine/Support-Linie
POST/api/checkList/Checkliste
POST/api/subTask/Unteraufgabe
POST/api/taskComment/Kommentar
POST/api/deliverable/Liefergegenstand
GET/api/ticket/listTicketsTickets
POST/api/taskHistory/bookTaskWithSubTaskZeit mit Unteraufgabe

7. Häufige Fehler ​

SituationUrsache
customer.not.found.errorisDefaultForManager und der Benutzer hat keinen Partner
HTTP 404 beim Löschen des Projektsid unbekannt
HTTP 404 beim Speichern der AufgabereleatedEmailId zeigt auf keine E-Mail
HTTP 404 beim StatustaskId oder taskStatus unbekannt
salesDocType.not.found.errorcreateSalesDocuments ohne Belegart

Nur für reybex-Partner. Nicht für Endkunden bestimmt.