Zum Inhalt springen

Projekte

Projekte und Budgets.
GET/api/v1/projects

Neueste zuerst. Filter nach Status und Kunde.

Berechtigung: projects:read

Query-Parameter

  • status"active" | "done" | "archived"
    nur Projekte mit diesem Status
  • contactIdstring
    nur Projekte dieses Kunden
    max. 128 Zeichen
  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<Project>Pflicht
    • idstringPflicht
    • numberstring | nullPflicht
      Projektnummer aus dem Nummernkreis "project"
    • namestringPflicht
    • descriptionstring | nullPflicht
    • contactIdstring | nullPflicht
      Kunde (Kontakt-ID)
    • contactNamestring | nullPflicht
      Anzeigename des Kunden
    • status"active" | "done" | "archived"Pflicht
    • budgetProjectBudget | nullPflicht
    • hourlyRateCentsinteger | nullPflicht
      Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
      0–10000000
    • billablebooleanPflicht
      Standard für neue Zeiteinträge
    • startDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • endDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • tasksArray<ProjectTask>Pflicht
      • idstringPflicht
      • namestringPflicht
      • hourlyRateCentsinteger | nullPflicht
        abweichender Stundensatz; null = Satz des Projekts
        0–10000000
      • billableboolean | nullPflicht
        null = wie Projekt
      • donebooleanPflicht
    • archivedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/projects' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "number": "string",
      "name": "string",
      "description": "string",
      "contactId": "string",
      "contactName": "string",
      "status": "active",
      "budget": null,
      "hourlyRateCents": 0,
      "billable": false,
      "startDate": "2026-11-01",
      "endDate": "2026-11-01",
      "tasks": [
        {
          "id": null,
          "name": null,
          "hourlyRateCents": null,
          "billable": null,
          "done": null
        }
      ],
      "archivedAt": "2026-11-01T09:30:00.000Z",
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/projects

Kunde (contactId), Budget in Stunden oder Euro, Stundensatz und optionale Aufgaben. Die Projektnummer kommt aus dem Nummernkreis project (abschaltbar mit assignNumber: false). Löst project.created aus.

Berechtigung: projects:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · ProjectCreate

  • namestringPflicht
    max. 160 Zeichen
  • descriptionstring | null
    max. 2000 Zeichen
  • contactIdstring | null
    max. 128 Zeichen
  • status"active" | "done" | "archived"
    Standard: "active"
  • budgetProjectBudget | null
  • hourlyRateCentsinteger | null
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billableboolean
    Standard: true
  • startDatestring (date) | null
    Datum (YYYY-MM-DD)
  • endDatestring (date) | null
    Datum (YYYY-MM-DD)
  • tasksArray<object>
    • namestringPflicht
      max. 120 Zeichen
    • hourlyRateCentsinteger | null
      Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
      0–10000000
    • billableboolean | null
  • assignNumberboolean
    Projektnummer aus dem Nummernkreis vergeben
    Standard: true

Antwort 201 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/projects' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "description": "string",
  "contactId": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": true,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false
    }
  ],
  "assignNumber": true
}'
Antwort 201
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/projects/{id}

Berechtigung: projects:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/projects/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/projects/{id}

Nur übergebene Felder werden geändert. status: "archived" archiviert (Ereignis project.archived). Ein neuer Kunde wird auf noch nicht abgerechnete Zeiteinträge übertragen.

Berechtigung: projects:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Body (JSON) · ProjectUpdate

  • namestring
    max. 160 Zeichen
  • descriptionstring | null
    max. 2000 Zeichen
  • contactIdstring | null
    max. 128 Zeichen
  • status"active" | "done" | "archived"
  • budgetProjectBudget | null
  • hourlyRateCentsinteger | null
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billableboolean
  • startDatestring (date) | null
    Datum (YYYY-MM-DD)
  • endDatestring (date) | null
    Datum (YYYY-MM-DD)

Antwort 200 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/projects/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "description": "string",
  "contactId": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01"
}'
Antwort 200
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/projects/{id}

Nur Projekte ohne Zeiteinträge (sonst 409 project_has_entries – stattdessen archivieren).

Berechtigung: projects:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 204

Erfolg, keine Antwort

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/projects/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/projects/{id}/summary

Erfasste, abrechenbare, offene und abgerechnete Zeiten und Beträge über die gesamte Laufzeit, Budgetverbrauch und Aufteilung nach Aufgaben. Beträge = exakte Minuten × Stundensatz (ohne Abrechnungstakt).

Berechtigung: projects:read, time:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · ProjectSummary

  • projectIdstringPflicht
  • entriesintegerPflicht
    -9007199254740991–9007199254740991
  • minutesintegerPflicht
    -9007199254740991–9007199254740991
  • billableMinutesintegerPflicht
    -9007199254740991–9007199254740991
  • nonBillableMinutesintegerPflicht
    -9007199254740991–9007199254740991
  • unbilledMinutesintegerPflicht
    -9007199254740991–9007199254740991
  • invoicedMinutesintegerPflicht
    -9007199254740991–9007199254740991
  • billableAmountCentsintegerPflicht
    abrechenbare Zeit × Stundensatz
    -9007199254740991–9007199254740991
  • unbilledAmountCentsintegerPflicht
    noch nicht abgerechnet
    -9007199254740991–9007199254740991
  • invoicedAmountCentsintegerPflicht
    -9007199254740991–9007199254740991
  • missingRateMinutesintegerPflicht
    abrechenbare Minuten ohne Stundensatz (nicht im Betrag enthalten)
    -9007199254740991–9007199254740991
  • firstDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • lastDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • budgetProjectBudget | nullPflicht
  • budgetUsedPercentnumber | nullPflicht
    verbrauchtes Budget in Prozent (Stunden: alle erfassten; Betrag: abrechenbarer Betrag)
  • budgetRemainingnumber | nullPflicht
    Rest in Stunden bzw. Cent
  • byTaskArray<TimeSummaryRow>Pflicht
    • keystringPflicht
    • labelstringPflicht
    • entriesintegerPflicht
      -9007199254740991–9007199254740991
    • minutesintegerPflicht
      -9007199254740991–9007199254740991
    • billableMinutesintegerPflicht
      -9007199254740991–9007199254740991
    • nonBillableMinutesintegerPflicht
      -9007199254740991–9007199254740991
    • unbilledMinutesintegerPflicht
      -9007199254740991–9007199254740991
    • invoicedMinutesintegerPflicht
      -9007199254740991–9007199254740991
    • billableAmountCentsintegerPflicht
      abrechenbare Zeit × Stundensatz
      -9007199254740991–9007199254740991
    • unbilledAmountCentsintegerPflicht
      noch nicht abgerechnet
      -9007199254740991–9007199254740991
    • invoicedAmountCentsintegerPflicht
      -9007199254740991–9007199254740991
    • missingRateMinutesintegerPflicht
      abrechenbare Minuten ohne Stundensatz (nicht im Betrag enthalten)
      -9007199254740991–9007199254740991

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/projects/ID/summary' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "projectId": "string",
  "entries": 0,
  "minutes": 0,
  "billableMinutes": 0,
  "nonBillableMinutes": 0,
  "unbilledMinutes": 0,
  "invoicedMinutes": 0,
  "billableAmountCents": 0,
  "unbilledAmountCents": 0,
  "invoicedAmountCents": 0,
  "missingRateMinutes": 0,
  "firstDate": "2026-11-01",
  "lastDate": "2026-11-01",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "budgetUsedPercent": 0,
  "budgetRemaining": 0,
  "byTask": [
    {
      "key": "string",
      "label": "string",
      "entries": 0,
      "minutes": 0,
      "billableMinutes": 0,
      "nonBillableMinutes": 0,
      "unbilledMinutes": 0,
      "invoicedMinutes": 0,
      "billableAmountCents": 0,
      "unbilledAmountCents": 0,
      "invoicedAmountCents": 0,
      "missingRateMinutes": 0
    }
  ]
}
POST/api/v1/projects/{id}/tasks

Aufgaben sind optional. Eigener Stundensatz/abrechenbar überschreibt die Projektwerte. Antwort: das geänderte Projekt.

Berechtigung: projects:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · ProjectTaskCreate

  • namestringPflicht
    max. 120 Zeichen
  • hourlyRateCentsinteger | null
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billableboolean | null

Antwort 201 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/projects/ID/tasks' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "hourlyRateCents": 0,
  "billable": false
}'
Antwort 201
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/projects/{id}/tasks/{taskId}

Name, Stundensatz, abrechenbar oder erledigt. Antwort: das geänderte Projekt.

Berechtigung: projects:write

Pfadparameter

  • idstringPflicht
    max. 128 Zeichen
  • taskIdstringPflicht
    ID der Aufgabe
    max. 128 Zeichen

Body (JSON) · ProjectTaskUpdate

  • namestring
    max. 120 Zeichen
  • hourlyRateCentsinteger | null
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billableboolean | null
  • doneboolean

Antwort 200 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/projects/ID/tasks/TASKID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "hourlyRateCents": 0,
  "billable": false,
  "done": false
}'
Antwort 200
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/projects/{id}/tasks/{taskId}

Nur Aufgaben ohne Zeiteinträge (sonst 409 task_has_entries – stattdessen als erledigt markieren). Antwort: das geänderte Projekt.

Berechtigung: projects:write

Pfadparameter

  • idstringPflicht
    max. 128 Zeichen
  • taskIdstringPflicht
    ID der Aufgabe
    max. 128 Zeichen

Antwort 200 · Project

  • idstringPflicht
  • numberstring | nullPflicht
    Projektnummer aus dem Nummernkreis "project"
  • namestringPflicht
  • descriptionstring | nullPflicht
  • contactIdstring | nullPflicht
    Kunde (Kontakt-ID)
  • contactNamestring | nullPflicht
    Anzeigename des Kunden
  • status"active" | "done" | "archived"Pflicht
  • budgetProjectBudget | nullPflicht
  • hourlyRateCentsinteger | nullPflicht
    Stundensatz in Cent (netto bzw. brutto je nach Rechnung)
    0–10000000
  • billablebooleanPflicht
    Standard für neue Zeiteinträge
  • startDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • endDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • tasksArray<ProjectTask>Pflicht
    • idstringPflicht
    • namestringPflicht
    • hourlyRateCentsinteger | nullPflicht
      abweichender Stundensatz; null = Satz des Projekts
      0–10000000
    • billableboolean | nullPflicht
      null = wie Projekt
    • donebooleanPflicht
  • archivedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/projects/ID/tasks/TASKID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "number": "string",
  "name": "string",
  "description": "string",
  "contactId": "string",
  "contactName": "string",
  "status": "active",
  "budget": {
    "type": "hours",
    "hours": 0
  },
  "hourlyRateCents": 0,
  "billable": false,
  "startDate": "2026-11-01",
  "endDate": "2026-11-01",
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "hourlyRateCents": 0,
      "billable": false,
      "done": false
    }
  ],
  "archivedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}