Eine vollständige REST API für Zeiterfassung mit Timer-Steuerung, Projektmanagement und detaillierten Statistiken. Perfekt für Time-Tracking-Apps, Abrechnungssysteme und Produktivitätsanalysen.
https://creativeskyline.de/api/flowtime/timer
https://creativeskyline.de/api/flowtime/entries
https://creativeskyline.de/api/flowtime/projects
https://creativeskyline.de/api/flowtime/stats
https://creativeskyline.de/api/flowtime/working-hours
https://creativeskyline.de/api/flowtime/shifts
Bevor Sie die FlowTime API nutzen können, benötigen Sie Ihre persönlichen Zugangsdaten: Melden Sie sich an, navigieren Sie zu Profil → API-Zugang und kopieren Sie Ihren persönlichen API-Key (pk_...).
Alle API-Anfragen benötigen diesen HTTP-Header:
Authorization: Bearer pk_dein_api_key
Accept: application/json
/api/flowtime/timer/status
Ruft den aktuellen Timer-Status ab. Zeigt an, ob ein Timer läuft und wie lange. Läuft kein Timer, ist "is_tracking" false und "timer" null. Das Feld "timer.entry_type" (work|break) und "timer.state" (working|on_break) zeigen im Modus "Einfache Zeiterfassung" an, ob gerade gearbeitet oder pausiert wird.
/api/flowtime/timer/start
Startet einen neuen Timer. Läuft bereits ein Timer, wird dieser NICHT ersetzt: Die API antwortet mit HTTP 409 und liefert im Feld "data.active_timer_uuid" die UUID des bereits laufenden Timers zurück. Stoppen oder Abbrechen Sie den aktiven Timer zuerst, bevor Sie einen neuen starten. Breaking Change: Das frühere numerische Feld "project_id" wird nicht mehr akzeptiert (Validierungsfehler); das Projekt wird ausschließlich über "project_uuid" angegeben. Im Modus "Einfache Zeiterfassung" sind "description" und "project_uuid" nicht erlaubt (HTTP 422) — der Start entspricht dem Einstempeln.
description
string
Beschreibung der Tätigkeit (max. 500 Zeichen). Im Modus "Einfache Zeiterfassung" nicht erlaubt.
project_uuid
string
UUID des zugehörigen Projekts (teamgebunden). Im Modus "Einfache Zeiterfassung" nicht erlaubt.
/api/flowtime/timer/stop
Stoppt den aktuell laufenden Timer und speichert den Zeiteintrag. Im Projekt-Modus müssen Projekt und Beschreibung gesetzt sein (HTTP 400). Im Modus "Einfache Zeiterfassung" (Ausstempeln) entfallen beide Anforderungen; das gilt auch für eine laufende Pause, die dadurch beendet wird (Gehen aus der Pause). Wie bei Start und Update sind "description"/"project_uuid" dort nicht erlaubt (HTTP 422). HTTP 409, wenn sich der Status zwischenzeitlich geändert hat (z. B. parallel gestartete Pause).
/api/flowtime/timer
Aktualisiert den aktuell laufenden Timer (Beschreibung oder Projekt ändern). Breaking Change: Das frühere numerische Feld "project_id" wird nicht mehr akzeptiert; das Projekt wird ausschließlich über "project_uuid" angegeben. Im Modus "Einfache Zeiterfassung" (und bei laufender Pause) sind "description"/"project_uuid" nicht erlaubt (HTTP 422) — nur "starts_at" bleibt änderbar.
description
string
Neue Beschreibung
project_uuid
string
UUID des neuen Projekts (teamgebunden)
/api/flowtime/timer
Bricht den aktuell laufenden Timer ab, ohne die Zeit zu speichern. Eine laufende Pause kann nicht abgebrochen werden (HTTP 409) — sie muss beendet werden ("Pause beenden") oder es wird ausgestempelt.
/api/flowtime/timer/break/start
Nur im Modus "Einfache Zeiterfassung" (sonst HTTP 409). Schließt den laufenden Arbeits-Eintrag und öffnet atomar einen Pausen-Eintrag (entry_type=break). Pausen zählen nie als Arbeitszeit. HTTP 404 ohne laufenden Timer, HTTP 409 wenn bereits pausiert.
/api/flowtime/timer/break/stop
Nur im Modus "Einfache Zeiterfassung" (sonst HTTP 409). Schließt den laufenden Pausen-Eintrag und öffnet atomar einen neuen Arbeits-Eintrag. HTTP 404 ohne laufenden Timer, HTTP 409 wenn nicht pausiert.
/api/flowtime/entries
Ruft alle Zeiteinträge mit optionalen Filtern ab.
start_date
string
Startdatum (YYYY-MM-DD)
end_date
string
Enddatum (YYYY-MM-DD)
project_uuid
string
Filter nach Projekt-UUID
user_uuid
string
Nur für Teaminhaber (oder Mitglieder mit FlowTime-Vollzugriff): Einträge eines bestimmten Nutzers (UUID) filtern. Mitglieder mit dem Sub-Recht "berichte" sehen team-weite Einträge, ohne dieses Recht nur die eigenen.
entry_type
string
Filter nach Eintragstyp: "work" oder "break" (Modus "Einfache Zeiterfassung")
limit
integer
Maximale Anzahl der Einträge (1-500, Standard: 50)
offset
integer
Offset für Pagination
/api/flowtime/entries/{uuid}
Ruft einen einzelnen Zeiteintrag mit allen Details ab.
/api/flowtime/entries
Erstellt einen manuellen Zeiteintrag (ohne Timer). Start- und Endzeitpunkt sind Pflicht; die Dauer wird serverseitig aus der Differenz berechnet. Breaking Change: Das frühere numerische Feld "project_id" wird nicht mehr akzeptiert; das Projekt wird ausschließlich über "project_uuid" angegeben. Im Modus "Einfache Zeiterfassung" gilt ein anderer Vertrag: "description" und "project_uuid" sind dort NICHT erlaubt, stattdessen kann optional "entry_type" (work|break, Standard: work) gesetzt werden. Validierungsfehler dieses Endpunkts (auch die Modus-Verbote) antworten mit HTTP 400 und {"success": false, "errors": {...}}.
description
string
Bedingt: Pflicht im Projekt-Modus (max. 500 Zeichen); im Modus "Einfache Zeiterfassung" nicht erlaubt (HTTP 400).
project_uuid
string
Bedingt: Pflicht im Projekt-Modus (Projekt-UUID, muss zum Team gehören); im Modus "Einfache Zeiterfassung" nicht erlaubt (HTTP 400).
starts_at
string
*
Startzeitpunkt (ISO 8601)
ends_at
string
*
Endzeitpunkt (ISO 8601), muss nach starts_at liegen
entry_type
string
Nur im Modus "Einfache Zeiterfassung": "work" oder "break" (Standard: work). Im Projekt-Modus nicht erlaubt (HTTP 400).
/api/flowtime/entries/{uuid}
Aktualisiert einen bestehenden Zeiteintrag. Breaking Change: Das frühere numerische Feld "project_id" wird nicht mehr akzeptiert; das Projekt wird ausschließlich über "project_uuid" angegeben. Feldvalidierung antwortet mit HTTP 400. Stempeluhr-Einträge (Pausen, Einträge im Modus "Einfache Zeiterfassung" sowie abgeschlossene Anwesenheitseinträge ohne Projekt und Beschreibung) akzeptieren weder "description" noch "project_uuid" (HTTP 422) — nur Start- und Endzeit sind änderbar; "entry_type" ist unveränderlich. Ein laufender Eintrag (Timer oder Pause) kann hier nicht bearbeitet werden (HTTP 409) — dafür PUT /api/flowtime/timer verwenden.
description
string
Beschreibung
project_uuid
string
Projekt-UUID (teamgebunden)
starts_at
string
Startzeitpunkt (ISO 8601)
ends_at
string
Endzeitpunkt (ISO 8601)
/api/flowtime/entries/{uuid}
Löscht einen Zeiteintrag unwiderruflich. Ein laufender Eintrag (Timer oder Pause) kann hier nicht gelöscht werden (HTTP 409) — dafür die Timer-Endpunkte (Stoppen/Abbrechen) verwenden.
/api/flowtime/projects
Listet alle Projekte auf, zu denen der Benutzer Zugriff hat (inklusive Zeitstatistiken).
/api/flowtime/projects/{uuid}
Ruft Details eines einzelnen Projekts ab, inklusive Zeitstatistiken. Das Projekt wird über seine UUID adressiert; numerische IDs werden nicht mehr akzeptiert (HTTP 404).
/api/flowtime/projects
Erstellt ein neues Projekt (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Breaking Change: Der Kunde wird über client_uuid übergeben; das frühere numerische Feld client_id wird nicht mehr akzeptiert (Validierungsfehler).
name
string
*
Projektname (max. 255 Zeichen)
client_uuid
string
*
UUID des CRM-Kunden, der zum Team gehören muss
description
string
Projektbeschreibung
color_code
string
Hex-Farbe (z.B. #10B981, Standard: #3B82F6)
is_public
boolean
Für alle Teammitglieder sichtbar (Standard: true)
is_billable
boolean
Projekt ist abrechenbar (Standard: false)
billable_rate
number
Stundensatz für die Abrechnung
currency
string
Währungscode nach ISO 4217 (3 Zeichen, Standard: Team-Währung)
/api/flowtime/projects/{uuid}
Aktualisiert ein bestehendes Projekt (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Das Projekt wird über seine UUID adressiert; numerische IDs werden nicht mehr akzeptiert (HTTP 404).
name
string
Projektname (max. 255 Zeichen)
description
string
Projektbeschreibung
status
string
Projektstatus: active oder archived
color_code
string
Hex-Farbe (z.B. #10B981)
is_public
boolean
Für alle Teammitglieder sichtbar
is_hidden
boolean
Projekt in Listen ausblenden
is_billable
boolean
Projekt ist abrechenbar
billable_rate
number
Stundensatz für die Abrechnung
currency
string
Währungscode nach ISO 4217 (3 Zeichen)
/api/flowtime/projects/{uuid}/permissions
Legt fest, welche Teammitglieder Zugriff auf ein privates Projekt haben (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Die übergebene Liste ersetzt die bestehenden Berechtigungen vollständig. Nur Nutzer, die zum Team gehören, werden übernommen.
user_uuids
array
*
Liste der Nutzer-UUIDs, die Zugriff erhalten sollen
user_uuids.*
string
*
Einzelne Nutzer-UUID (gültiges UUID-Format)
/api/flowtime/projects/{uuid}
Entfernt ein Projekt aus FlowTime (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Wie in der Weboberfläche muss das Projekt zuvor archiviert sein, sonst antwortet die Schnittstelle mit HTTP 409 und dem Fehler project_not_archived. Ein Projekt, auf das noch Zeiteinträge gebucht sind, bleibt erhalten und antwortet mit HTTP 409 und dem Fehler project_has_entries, damit gebuchte Stunden ihr Projekt nie verlieren. Gelöscht wird nur die FlowTime-Seite des Projekts; der Kundenprojekt-Datensatz in FlowCRM bleibt unberührt.
/api/flowtime/context
Liefert das Arbeitszeitmodell des Teams, die eigenen Sub-Rechte, die Arbeitszeitvorgaben und den Zustand der Stempeluhr. Ein Client braucht das vor dem ersten Schreibzugriff: im Modus "Einfache Zeiterfassung" trägt ein Eintrag weder Projekt noch Beschreibung, und die Schicht-Endpunkte stehen nur bereit, wenn das Team die Schichtplanung eingeschaltet hat. Der Zustand der Stempeluhr ist einer von clocked_out, clocked_in, on_break oder inactive.
/api/flowtime/search
Durchsucht die FlowTime-Datensätze einer Art. Die Sichtbarkeit folgt den Rechten des Schlüssels: ohne Berichtsrechte erscheinen nur die eigenen Zeiteinträge, Projekte nur mit dem Sub-Recht projekte, Kunden nur für den Teaminhaber. Eine Art, die der Schlüssel nicht erreicht, antwortet mit HTTP 403 und dem Fehler record_type_not_available.
type
string
*
Art des Datensatzes: entry, project, client, member, shift_plan, shift_type oder shift_template
q
string
Suchbegriff; trifft den Namen des Datensatzes, bei Mitgliedern zusätzlich die Mailadresse
from
string
Nur für type=entry: frühestes Startdatum (YYYY-MM-DD)
to
string
Nur für type=entry: spätestes Startdatum (YYYY-MM-DD)
user_uuid
string
Nur für type=entry: grenzt auf die Einträge einer Person ein; fremde Personen erfordern das Sub-Recht teamberichte
page
integer
Seitenzahl, ab 1
per_page
integer
Einträge pro Seite, 1-200 (Standard 50)
/api/flowtime/reports/{report}
Liefert einen der vier Berichte. Der Pfadabschnitt report ist detailed, team, overtime oder logs. detailed gibt die abgeschlossenen Arbeitseinträge eines Zeitraums seitenweise zurück (Standard ist der laufende Monat) und akzeptiert from, to und user_uuid. team liefert je Teammitglied die Monatsauswertung und akzeptiert year und month. overtime gibt den Überstundensaldo der laufenden Woche zurück, standardmäßig den eigenen; eine fremde user_uuid ist dem Teaminhaber vorbehalten. logs gibt die Protokollzeilen des Moduls seitenweise zurück.
from
string
Nur detailed: Beginn des Zeitraums (YYYY-MM-DD), Standard Monatsbeginn
to
string
Nur detailed: Ende des Zeitraums (YYYY-MM-DD), Standard heute
year
integer
Nur team: Jahr der Auswertung, Standard laufendes Jahr
month
integer
Nur team: Monat der Auswertung (1-12), Standard laufender Monat
user_uuid
string
Für detailed und overtime: die Person, deren Zahlen gemeint sind
page
integer
Für detailed und logs: Seitenzahl, ab 1
per_page
integer
Für detailed und logs: Einträge pro Seite, 1-200 (Standard 50)
Statistik-Endpoints liefern aggregierte Auswertungen der erfassten Zeiten. GET /api/flowtime/stats/today gibt die Tagesauswertung zurück, GET /api/flowtime/stats/week die Wochenauswertung mit täglicher Aufschlüsselung und Projekt-Anteilen.
Breaking Change: Die Projekt-Aufschlüsselung unter data.by_project weist das Projekt über project_uuid aus. Das frühere numerische project_id entfällt ersatzlos.
Pausen (Modus "Einfache Zeiterfassung"): break_seconds enthält die abgeschlossenen Pausen des Tages und den bereits verstrichenen Anteil einer gerade laufenden Pause (auf den Tagesbeginn begrenzt); total_seconds zählt Pausen nie mit.
/api/flowtime/stats/today
Aggregierte Auswertung der heute erfassten Zeiten des Benutzers, einschließlich Pausen und Aufschlüsselung nach Projekt (data.by_project, adressiert über project_uuid).
/api/flowtime/stats/week
Aggregierte Auswertung der laufenden Woche mit täglicher Aufschlüsselung und Projekt-Anteilen.
/api/flowtime/working-hours/status
Ruft die aktuelle Arbeitszeit-Bilanz des angemeldeten Nutzers ab (Tages-, Wochen- und Monatsbilanz sowie Überstunden-Saldo). Sind keine Arbeitszeiten konfiguriert, ist "configured" false.
/api/flowtime/working-hours/settings
Ändert die Arbeitszeit-Einstellungen eines Teammitglieds (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Das Zielmitglied wird über "user_uuid" identifiziert. Nur übergebene Felder werden aktualisiert.
user_uuid
string
*
UUID des Zielmitglieds
weekly_hours
number
Wochenstunden (0-168)
working_days
array
Arbeitstage als Zahlen 1-7 (Mo-So)
daily_hours
array
Sollstunden pro Tag (0-24)
track_overtime
boolean
Überstunden erfassen
work_time_model
string
Arbeitszeitmodell: standard, flexible oder shift
/api/flowtime/working-hours/overtime/adjust
Passt den Überstunden-Saldo eines Teammitglieds an (nur Teaminhaber oder Mitglieder mit FlowTime-Vollzugriff). Mit "mode" wird der Wert entweder addiert (add, Standard) oder absolut gesetzt (set). Der resultierende Saldo wird serverseitig auf die zulässigen Grenzen begrenzt.
user_uuid
string
*
UUID des Zielmitglieds
minutes
integer
*
Anzahl Minuten (bei mode=add Delta, bei mode=set Zielwert)
mode
string
add (addieren, Standard) oder set (absolut setzen)
reason
string
Begründung für den Audit-Trail (max. 500 Zeichen)
/api/flowtime/working-hours/history
Ruft den tagesweisen Arbeitszeit-Verlauf ab. Standardmäßig die aktuelle Woche des angemeldeten Nutzers. Teaminhaber und Mitglieder mit FlowTime-Vollzugriff können über "user_uuid" den Verlauf eines anderen Mitglieds abrufen. Der Zeitraum ist auf maximal 31 Tage begrenzt.
start_date
string
Startdatum (YYYY-MM-DD, Standard: Wochenanfang)
end_date
string
Enddatum (YYYY-MM-DD, muss >= start_date sein)
user_uuid
string
Nur für Teaminhaber (oder Mitglieder mit FlowTime-Vollzugriff): Verlauf eines bestimmten Nutzers
/api/flowtime/shifts/types
Listet alle Schichttypen des Teams auf.
/api/flowtime/shifts/types
Erstellt einen neuen Schichttyp (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
name
string
*
Name des Schichttyps (max. 255 Zeichen)
description
string
Beschreibung
color
string
Hex-Farbe (max. 7 Zeichen)
icon
string
Icon-Kennung (max. 50 Zeichen)
is_active
boolean
Schichttyp aktiv
/api/flowtime/shifts/types/{uuid}
Ruft einen einzelnen Schichttyp ab, inklusive der Anzahl seiner Vorlagen und Schichten.
/api/flowtime/shifts/types/{uuid}
Aktualisiert einen Schichttyp (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Adressierung ausschließlich per UUID.
name
string
Name des Schichttyps (max. 255 Zeichen)
description
string
Beschreibung
color
string
Hex-Farbe im Format #RRGGBB
icon
string
Icon-Kennung (max. 50 Zeichen)
is_active
boolean
Schichttyp aktiv
/api/flowtime/shifts/types/{uuid}
Löscht einen Schichttyp (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Adressierung ausschließlich per UUID.
/api/flowtime/shifts/templates
Listet alle Schichtvorlagen des Teams auf.
/api/flowtime/shifts/templates
Erstellt eine neue Schichtvorlage (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Breaking Change: Das frühere numerische Feld "shift_type_id" wird nicht mehr akzeptiert; der Schichttyp wird ausschließlich über "shift_type_uuid" angegeben.
name
string
*
Name der Schichtvorlage (max. 255 Zeichen)
shift_type_uuid
string
*
UUID des Schichttyps (teamgebunden)
start_time
string
*
Startzeit (HH:MM)
end_time
string
*
Endzeit (HH:MM)
min_staff
integer
Minimale Besetzung
max_staff
integer
Maximale Besetzung (>= min_staff)
default_days
array
Standard-Wochentage (1-7)
is_active
boolean
Schichtvorlage aktiv
/api/flowtime/shifts/templates/{uuid}
Ruft eine einzelne Schichtvorlage samt ihrem Schichttyp ab.
/api/flowtime/shifts/templates/{uuid}
Aktualisiert eine Schichtvorlage (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Adressierung ausschließlich per UUID. Breaking Change: Das frühere numerische Feld "shift_type_id" wird nicht mehr akzeptiert; der Schichttyp wird ausschließlich über "shift_type_uuid" angegeben.
name
string
Name der Schichtvorlage (max. 255 Zeichen)
shift_type_uuid
string
UUID des Schichttyps (teamgebunden)
start_time
string
Startzeit (HH:MM)
end_time
string
Endzeit (HH:MM)
min_staff
integer
Minimale Besetzung
max_staff
integer
Maximale Besetzung (>= min_staff)
default_days
array
Standard-Wochentage (1-7)
is_active
boolean
Schichtvorlage aktiv
/api/flowtime/shifts/templates/{uuid}
Löscht eine Schichtvorlage (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Adressierung ausschließlich per UUID.
/api/flowtime/shifts/plans
Listet die Schichtpläne des Teams auf.
status
string
Filtert nach Status (draft, published oder archived)
start_date
string
Filtert Pläne ab diesem Datum
end_date
string
Filtert Pläne bis zu diesem Datum (muss >= start_date sein)
/api/flowtime/shifts/plans
Erstellt einen neuen Schichtplan für eine Woche (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Breaking Change: Das frühere numerische Feld "shift_type_ids" wird nicht mehr akzeptiert; die Schichttypen werden ausschließlich über "shift_type_uuids" angegeben.
week_start
string
*
Wochenanfang (Datum)
name
string
Name des Plans (max. 255 Zeichen)
create_from_templates
boolean
Plan aus Vorlagen erzeugen
shift_type_uuids
array
UUIDs der zu berücksichtigenden Schichttypen (teamgebunden)
shift_type_uuids.*
string
Einzelne Schichttyp-UUID
/api/flowtime/shifts/plans/{uuid}
Ruft einen einzelnen Schichtplan mit seinen Schichten ab. Adressierung ausschließlich per UUID.
/api/flowtime/shifts/plans/{uuid}
Ändert Name und Notiz eines Schichtplans (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Nur Entwürfe sind änderbar; ein veröffentlichter oder archivierter Plan antwortet mit HTTP 409 und dem Fehler plan_not_editable. Die Planwoche selbst ist unveränderlich, weil die Schichten an ihren Tagen hängen; für eine andere Woche gibt es die Kopieren-Aktion. Der Status ändert sich ausschließlich über publish und archive.
name
string
Neuer Name des Plans (max. 255 Zeichen)
notes
string
Notiz zum Plan; null leert sie
/api/flowtime/shifts/plans/{uuid}
Löscht einen Schichtplan samt seinen Schichten und deren Zuweisungen (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Nur Entwürfe sind löschbar: ein veröffentlichter Plan ist der Dienstplan, nach dem das Team arbeitet, ein archivierter die Aufzeichnung einer vergangenen Woche. Beide antworten mit HTTP 409 und dem Fehler plan_not_editable und werden stattdessen archiviert.
/api/flowtime/shifts/plans/{uuid}/shifts
Ruft die Schichten eines Plans seitenweise ab, optional auf einen Tag oder einen Schichttyp eingegrenzt. Die Plan-Detailansicht liefert dagegen die ganze Woche in einer Antwort.
date
string
Grenzt auf einen Tag ein (YYYY-MM-DD)
shift_type_uuid
string
Grenzt auf einen Schichttyp des Teams ein
page
integer
Seitenzahl, ab 1
per_page
integer
Einträge pro Seite, 1-200 (Standard 50)
/api/flowtime/shifts/plans/{uuid}/publish
Veröffentlicht einen Schichtplan (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
/api/flowtime/shifts/plans/{uuid}/archive
Archiviert einen Schichtplan (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
/api/flowtime/shifts/plans/{uuid}/copy
Kopiert einen Schichtplan in eine andere Woche (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
target_week_start
string
*
Ziel-Wochenstartdatum
/api/flowtime/shifts
Erstellt eine einzelne Schicht innerhalb eines Plans (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Breaking Change: Die früheren numerischen Felder "shift_plan_id" und "shift_type_id" werden nicht mehr akzeptiert; Plan und Typ werden ausschließlich über "shift_plan_uuid" und "shift_type_uuid" angegeben.
shift_plan_uuid
string
*
UUID des Schichtplans (teamgebunden)
shift_type_uuid
string
*
UUID des Schichttyps (teamgebunden)
date
string
*
Datum der Schicht
start_time
string
*
Startzeit (HH:MM)
end_time
string
*
Endzeit (HH:MM)
min_staff
integer
Minimale Besetzung
max_staff
integer
Maximale Besetzung (>= min_staff)
notes
string
Notizen zur Schicht
/api/flowtime/shifts/{uuid}
Ruft eine einzelne Schicht mit ihren Zuweisungen und ihrem Besetzungsstand ab. Das Feld editable wiederholt die Regel der Planungsoberfläche: nur Schichten in einem Entwurf sind änderbar.
/api/flowtime/shifts/{uuid}
Ändert eine Schicht (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Nur Schichten in einem Entwurf sind änderbar, sonst HTTP 409 mit dem Fehler plan_not_editable. Das Datum muss in der Planwoche liegen, sonst HTTP 422 mit date_outside_plan_week. Eine Schicht bleibt in ihrem Plan; für eine andere Woche wird sie im Zielplan neu angelegt. Die Dauer berechnet die Schnittstelle selbst und berücksichtigt dabei Nachtschichten über Mitternacht.
shift_type_uuid
string
Anderer Schichttyp des Teams
date
string
Neues Datum (YYYY-MM-DD), muss in der Planwoche liegen
start_time
string
Beginn im Format HH:MM
end_time
string
Ende im Format HH:MM
min_staff
integer
Mindestbesetzung, mindestens 1
max_staff
integer
Maximalbesetzung; darf die Mindestbesetzung nicht unterschreiten, null hebt die Obergrenze auf
notes
string
Notiz zur Schicht
/api/flowtime/shifts/{uuid}
Löscht eine Schicht (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff). Adressierung ausschließlich per UUID.
/api/flowtime/shifts/{uuid}/assign
Weist einer Schicht einen Nutzer zu (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
user_uuid
string
*
UUID des zuzuweisenden Nutzers
check_conflicts
boolean
Zeitliche Konflikte prüfen
/api/flowtime/shifts/{uuid}/assign/{userUuid}
Entfernt die Zuweisung eines Nutzers von einer Schicht (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
/api/flowtime/shifts/{uuid}/available-users
Listet Nutzer, die für eine Schicht zugewiesen werden können (erfordert Sub-Recht "schichtplanung", Teaminhaber oder FlowTime-Vollzugriff).
/api/flowtime/shifts/assignments/{uuid}/confirm
Bestätigt eine eigene Schicht-Zuweisung. Steht jedem Mitglied für die eigenen Zuweisungen offen.
/api/flowtime/shifts/assignments/{uuid}/decline
Lehnt eine eigene Schicht-Zuweisung ab. Steht jedem Mitglied für die eigenen Zuweisungen offen.
reason
string
Begründung für die Ablehnung
/api/flowtime/shifts/my-shifts
Ruft die eigenen Schichten des angemeldeten Nutzers ab.
start_date
string
Filtert Schichten ab diesem Datum
end_date
string
Filtert Schichten bis zu diesem Datum (muss >= start_date sein)
/api/flowtime/shifts/current
Ruft die aktuelle Schicht-Übersicht ab.
/api/flowtime/shifts/preferences
Ruft die eigenen Verfügbarkeits-Präferenzen des angemeldeten Nutzers ab.
/api/flowtime/shifts/preferences/{dayOfWeek}
Setzt die eigene Verfügbarkeits-Präferenz für einen Wochentag (1-7). Steht jedem Mitglied für die eigenen Präferenzen offen.
availability
string
*
Verfügbarkeit: available, preferred, unavailable oder if_needed
available_from
string
Verfügbar ab (HH:MM)
available_until
string
Verfügbar bis (HH:MM)
preferred_shift_types
array
Bevorzugte Schichttypen als UUIDs (teamgebunden)
notes
string
Notizen (max. 500 Zeichen)
Im Modus "Einfache Zeiterfassung" (Team-Einstellung) wird der Zustand allein aus dem einzigen offenen Zeiteintrag abgeleitet. Pro Benutzer existiert höchstens ein offener Eintrag (DB-erzwungen).
| Von Status | Mögliche Folgestatus |
|---|---|
clocked_out
|
working
|
working
|
on_break,
clocked_out
|
on_break
|
working,
clocked_out
|
/api/flowtime/timer/status
curl -X GET "https://creativeskyline.de/api/flowtime/timer/status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/timer/status');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/timer/status',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"is_tracking": true,
"timer": {
"uuid": "6f1e2a3b-...",
"entry_type": "work",
"state": "working",
"description": "Feature-Entwicklung",
"project": {
"uuid": "9d2f4c1a-7b3e-4f8a-9c5d-1e6a8b0c2d4f",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH"
},
"starts_at": "2024-01-15T09:00:00+00:00",
"elapsed_seconds": 3600,
"elapsed_formatted": "01:00:00"
}
}
}
/api/flowtime/timer/start
curl -X POST "https://creativeskyline.de/api/flowtime/timer/start" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/start', [
'description' => 'value',
'project_uuid' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/start', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/start',
headers=headers,
json=payload,
)
data = response.json()
{
"success": false,
"error": "A timer is already running",
"data": {
"active_timer_uuid": "6f1e2a3b-..."
}
}
/api/flowtime/timer/stop
curl -X POST "https://creativeskyline.de/api/flowtime/timer/stop" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/stop');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/stop', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/stop',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Timer stopped successfully",
"data": {
"uuid": "6f1e2a3b-...",
"description": "Bug-Fixing",
"project": {
"uuid": "9d2f4c1a-...",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH"
},
"starts_at": "2024-01-15T09:00:00+00:00",
"ends_at": "2024-01-15T10:30:00+00:00",
"seconds": 5400,
"duration_formatted": "01:30:00"
}
}
/api/flowtime/timer
curl -X PUT "https://creativeskyline.de/api/flowtime/timer" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/timer', [
'description' => 'value',
'project_uuid' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/timer',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/timer
curl -X DELETE "https://creativeskyline.de/api/flowtime/timer" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/timer');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/timer',
headers=headers,
)
data = response.json()
/api/flowtime/timer/break/start
curl -X POST "https://creativeskyline.de/api/flowtime/timer/break/start" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/break/start');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/break/start', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/break/start',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Break started successfully",
"data": {
"uuid": "6f1e2a3b-...",
"entry_type": "break",
"state": "on_break",
"starts_at": "2026-09-01T12:00:00+00:00"
}
}
/api/flowtime/timer/break/stop
curl -X POST "https://creativeskyline.de/api/flowtime/timer/break/stop" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/break/stop');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/break/stop', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/break/stop',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Break ended successfully",
"data": {
"uuid": "7a2b3c4d-...",
"entry_type": "work",
"state": "working",
"starts_at": "2026-09-01T12:30:00+00:00"
}
}
/api/flowtime/entries
curl -X GET "https://creativeskyline.de/api/flowtime/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/entries');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/entries',
headers=headers,
)
data = response.json()
/api/flowtime/entries/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/entries/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/entries
curl -X POST "https://creativeskyline.de/api/flowtime/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value", "starts_at": "value", "ends_at": "value", "entry_type": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/entries', [
'description' => 'value',
'project_uuid' => 'value',
'starts_at' => 'value',
'ends_at' => 'value',
'entry_type' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
starts_at: 'value',
ends_at: 'value',
entry_type: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
'starts_at': 'value',
'ends_at': 'value',
'entry_type': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/entries',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/entries/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value", "starts_at": "value", "ends_at": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/entries/{uuid}', [
'description' => 'value',
'project_uuid' => 'value',
'starts_at' => 'value',
'ends_at' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
starts_at: 'value',
ends_at: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
'starts_at': 'value',
'ends_at': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/entries/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/entries/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/projects
curl -X GET "https://creativeskyline.de/api/flowtime/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/projects');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/projects',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "9d2f4c1a-7b3e-4f8a-9c5d-1e6a8b0c2d4f",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH",
"color_code": "#3B82F6",
"is_public": true,
"is_billable": false,
"billable_rate": null,
"currency": "EUR"
}
],
"count": 1
}
/api/flowtime/projects/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/projects/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/projects
curl -X POST "https://creativeskyline.de/api/flowtime/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "client_uuid": "value", "description": "value", "color_code": "value", "is_public": true, "is_billable": true, "billable_rate": 0, "currency": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/projects', [
'name' => 'value',
'client_uuid' => 'value',
'description' => 'value',
'color_code' => 'value',
'is_public' => true,
'is_billable' => true,
'billable_rate' => 0,
'currency' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
client_uuid: 'value',
description: 'value',
color_code: 'value',
is_public: true,
is_billable: true,
billable_rate: 0,
currency: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'client_uuid': 'value',
'description': 'value',
'color_code': 'value',
'is_public': True,
'is_billable': True,
'billable_rate': 0,
'currency': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/projects',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/projects/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "status": "value", "color_code": "value", "is_public": true, "is_hidden": true, "is_billable": true, "billable_rate": 0, "currency": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/projects/{uuid}', [
'name' => 'value',
'description' => 'value',
'status' => 'value',
'color_code' => 'value',
'is_public' => true,
'is_hidden' => true,
'is_billable' => true,
'billable_rate' => 0,
'currency' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
status: 'value',
color_code: 'value',
is_public: true,
is_hidden: true,
is_billable: true,
billable_rate: 0,
currency: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'status': 'value',
'color_code': 'value',
'is_public': True,
'is_hidden': True,
'is_billable': True,
'billable_rate': 0,
'currency': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/projects/{uuid}/permissions
curl -X PUT "https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuids": [], "user_uuids.*": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions', [
'user_uuids' => [],
'user_uuids.*' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuids: [],
user_uuids.*: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuids': [],
'user_uuids.*': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/projects/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/projects/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Project deleted successfully"
}
/api/flowtime/context
curl -X GET "https://creativeskyline.de/api/flowtime/context" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/context');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/context', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/context',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"mode": "stamp_clock",
"simple_mode": true,
"shifts_enabled": false,
"rights": {
"owner": true,
"reports": true,
"team_reports": true,
"projects": true,
"logs": true,
"shifts": false,
"shift_planning": false
},
"working_hours": {
"weekly_hours": 40,
"work_time_model": "fixed"
},
"stamp_clock": {
"state": "clocked_in",
"running_entry_uuid": "11aa22bb-...",
"running_since": "2026-09-21T08:02:00+02:00"
}
}
}
/api/flowtime/search
curl -X GET "https://creativeskyline.de/api/flowtime/search" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/search');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/search', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/search',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "11aa22bb-...",
"user_name": "Anna",
"project_name": "Relaunch",
"description": "Konzept",
"starts_at": "2026-09-21T08:00:00+02:00",
"seconds": 5400
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}
/api/flowtime/reports/{report}
curl -X GET "https://creativeskyline.de/api/flowtime/reports/{report}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/reports/{report}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/reports/{report}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/reports/{report}',
headers=headers,
)
data = response.json()
{
"success": true,
"report": "detailed",
"from": "2026-09-01",
"to": "2026-09-21",
"data": [
{
"uuid": "11aa22bb-...",
"user_name": "Anna",
"project_name": "Relaunch",
"starts_at": "2026-09-21T08:00:00+02:00",
"ends_at": "2026-09-21T09:30:00+02:00",
"seconds": 5400
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}
/api/flowtime/stats/today
curl -X GET "https://creativeskyline.de/api/flowtime/stats/today" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/stats/today');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/stats/today', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/stats/today',
headers=headers,
)
data = response.json()
/api/flowtime/stats/week
curl -X GET "https://creativeskyline.de/api/flowtime/stats/week" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/stats/week');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/stats/week', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/stats/week',
headers=headers,
)
data = response.json()
/api/flowtime/working-hours/status
curl -X GET "https://creativeskyline.de/api/flowtime/working-hours/status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/working-hours/status');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/working-hours/status',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"configured": true,
"settings": {
"weekly_hours": 40,
"working_days": [
1,
2,
3,
4,
5
],
"daily_hours": 8,
"track_overtime": true,
"work_time_model": "standard"
},
"overtime_balance": {
"minutes": 120,
"hours": 2,
"formatted": "+02:00"
},
"today": [],
"this_week": [],
"this_month": []
}
}
/api/flowtime/working-hours/settings
curl -X PUT "https://creativeskyline.de/api/flowtime/working-hours/settings" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "weekly_hours": 0, "working_days": [], "daily_hours": [], "track_overtime": true, "work_time_model": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/working-hours/settings', [
'user_uuid' => 'value',
'weekly_hours' => 0,
'working_days' => [],
'daily_hours' => [],
'track_overtime' => true,
'work_time_model' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/settings', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
weekly_hours: 0,
working_days: [],
daily_hours: [],
track_overtime: true,
work_time_model: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'weekly_hours': 0,
'working_days': [],
'daily_hours': [],
'track_overtime': True,
'work_time_model': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/working-hours/settings',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/working-hours/overtime/adjust
curl -X POST "https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "minutes": 0, "mode": "value", "reason": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust', [
'user_uuid' => 'value',
'minutes' => 0,
'mode' => 'value',
'reason' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
minutes: 0,
mode: 'value',
reason: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'minutes': 0,
'mode': 'value',
'reason': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/working-hours/history
curl -X GET "https://creativeskyline.de/api/flowtime/working-hours/history" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/working-hours/history');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/history', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/working-hours/history',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/types
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/types');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/types',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/types
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "color": "value", "icon": "value", "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/types', [
'name' => 'value',
'description' => 'value',
'color' => 'value',
'icon' => 'value',
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
color: 'value',
icon: 'value',
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'color': 'value',
'icon': 'value',
'is_active': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/types',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/types/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "3c2b1a09-...",
"name": "Frühschicht",
"short_name": "FS",
"color": "#3B82F6",
"is_active": true,
"templates_count": 2,
"shifts_count": 14
}
}
/api/flowtime/shifts/types/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "color": "value", "icon": "value", "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', [
'name' => 'value',
'description' => 'value',
'color' => 'value',
'icon' => 'value',
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
color: 'value',
icon: 'value',
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'color': 'value',
'icon': 'value',
'is_active': True,
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/types/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/templates
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/templates');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/templates',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/templates
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "shift_type_uuid": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "default_days": [], "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/templates', [
'name' => 'value',
'shift_type_uuid' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'default_days' => [],
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
shift_type_uuid: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
default_days: [],
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'shift_type_uuid': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'default_days': [],
'is_active': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/templates',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/templates/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "4d3c2b1a-...",
"name": "Frühdienst Werktag",
"shift_type_uuid": "3c2b1a09-...",
"shift_type_name": "Frühschicht",
"start_time": "06:00",
"end_time": "14:00",
"duration_minutes": 480,
"min_staff": 2,
"max_staff": 4,
"default_days": [
1,
2,
3,
4,
5
],
"is_active": true
}
}
/api/flowtime/shifts/templates/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "shift_type_uuid": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "default_days": [], "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', [
'name' => 'value',
'shift_type_uuid' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'default_days' => [],
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
shift_type_uuid: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
default_days: [],
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'shift_type_uuid': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'default_days': [],
'is_active': True,
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/templates/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/plans
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/plans
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"week_start": "value", "name": "value", "create_from_templates": true, "shift_type_uuids": [], "shift_type_uuids.*": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans', [
'week_start' => 'value',
'name' => 'value',
'create_from_templates' => true,
'shift_type_uuids' => [],
'shift_type_uuids.*' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
week_start: 'value',
name: 'value',
create_from_templates: true,
shift_type_uuids: [],
shift_type_uuids.*: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'week_start': 'value',
'name': 'value',
'create_from_templates': True,
'shift_type_uuids': [],
'shift_type_uuids.*': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/plans/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/plans/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', [
'name' => 'value',
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "5e4d3c2b-...",
"name": "KW 39/2026",
"start_date": "2026-09-21",
"end_date": "2026-09-27",
"status": "draft",
"editable": true,
"shifts_count": 12
},
"message": "Shift plan updated successfully"
}
/api/flowtime/shifts/plans/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Shift plan deleted successfully"
}
/api/flowtime/shifts/plans/{uuid}/shifts
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "6f5e4d3c-...",
"shift_plan_uuid": "5e4d3c2b-...",
"shift_type_uuid": "3c2b1a09-...",
"date": "2026-09-21",
"start_time": "06:00",
"end_time": "14:00",
"min_staff": 2,
"max_staff": 4,
"assigned_count": 2,
"staffing_status": "full",
"editable": true
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 12,
"last_page": 1
}
}
/api/flowtime/shifts/plans/{uuid}/publish
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/plans/{uuid}/archive
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/plans/{uuid}/copy
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"target_week_start": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy', [
'target_week_start' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
target_week_start: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'target_week_start': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts
curl -X POST "https://creativeskyline.de/api/flowtime/shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"shift_plan_uuid": "value", "shift_type_uuid": "value", "date": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts', [
'shift_plan_uuid' => 'value',
'shift_type_uuid' => 'value',
'date' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
shift_plan_uuid: 'value',
shift_type_uuid: 'value',
date: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'shift_plan_uuid': 'value',
'shift_type_uuid': 'value',
'date': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'notes': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/{uuid}
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "6f5e4d3c-...",
"shift_plan_uuid": "5e4d3c2b-...",
"shift_type_name": "Frühschicht",
"date": "2026-09-21",
"start_time": "06:00",
"end_time": "14:00",
"assigned_count": 2,
"staffing_status": "full",
"editable": true,
"assignments": [
{
"uuid": "7a6f5e4d-...",
"user_uuid": "e5f6a7b8-...",
"user_name": "Anna",
"status": "confirmed"
}
]
}
}
/api/flowtime/shifts/{uuid}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"shift_type_uuid": "value", "date": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/{uuid}', [
'shift_type_uuid' => 'value',
'date' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
shift_type_uuid: 'value',
date: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'shift_type_uuid': 'value',
'date': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "6f5e4d3c-...",
"date": "2026-09-22",
"start_time": "07:00",
"end_time": "15:00",
"duration_minutes": 480,
"editable": true
},
"message": "Shift updated successfully"
}
/api/flowtime/shifts/{uuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/{uuid}/assign
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "check_conflicts": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign', [
'user_uuid' => 'value',
'check_conflicts' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
check_conflicts: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'check_conflicts': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/{uuid}/assign/{userUuid}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/{uuid}/available-users
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/assignments/{uuid}/confirm
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/assignments/{uuid}/decline
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"reason": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline', [
'reason' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reason: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'reason': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline',
headers=headers,
json=payload,
)
data = response.json()
/api/flowtime/shifts/my-shifts
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/my-shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/my-shifts');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/my-shifts', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/my-shifts',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/current
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/current" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/current');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/current', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/current',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/preferences
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/preferences');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/preferences', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/preferences',
headers=headers,
)
data = response.json()
/api/flowtime/shifts/preferences/{dayOfWeek}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"availability": "value", "available_from": "value", "available_until": "value", "preferred_shift_types": [], "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}', [
'availability' => 'value',
'available_from' => 'value',
'available_until' => 'value',
'preferred_shift_types' => [],
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
availability: 'value',
available_from: 'value',
available_until: 'value',
preferred_shift_types: [],
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'availability': 'value',
'available_from': 'value',
'available_until': 'value',
'preferred_shift_types': [],
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/timer/status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/timer/status');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/timer/status',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"is_tracking": true,
"timer": {
"uuid": "6f1e2a3b-...",
"entry_type": "work",
"state": "working",
"description": "Feature-Entwicklung",
"project": {
"uuid": "9d2f4c1a-7b3e-4f8a-9c5d-1e6a8b0c2d4f",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH"
},
"starts_at": "2024-01-15T09:00:00+00:00",
"elapsed_seconds": 3600,
"elapsed_formatted": "01:00:00"
}
}
}
curl -X POST "https://creativeskyline.de/api/flowtime/timer/start" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/start', [
'description' => 'value',
'project_uuid' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/start', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/start',
headers=headers,
json=payload,
)
data = response.json()
{
"success": false,
"error": "A timer is already running",
"data": {
"active_timer_uuid": "6f1e2a3b-..."
}
}
curl -X POST "https://creativeskyline.de/api/flowtime/timer/stop" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/stop');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/stop', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/stop',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Timer stopped successfully",
"data": {
"uuid": "6f1e2a3b-...",
"description": "Bug-Fixing",
"project": {
"uuid": "9d2f4c1a-...",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH"
},
"starts_at": "2024-01-15T09:00:00+00:00",
"ends_at": "2024-01-15T10:30:00+00:00",
"seconds": 5400,
"duration_formatted": "01:30:00"
}
}
curl -X PUT "https://creativeskyline.de/api/flowtime/timer" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/timer', [
'description' => 'value',
'project_uuid' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/timer',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/timer" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/timer');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/timer',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/timer/break/start" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/break/start');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/break/start', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/break/start',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Break started successfully",
"data": {
"uuid": "6f1e2a3b-...",
"entry_type": "break",
"state": "on_break",
"starts_at": "2026-09-01T12:00:00+00:00"
}
}
curl -X POST "https://creativeskyline.de/api/flowtime/timer/break/stop" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/timer/break/stop');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/timer/break/stop', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/timer/break/stop',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Break ended successfully",
"data": {
"uuid": "7a2b3c4d-...",
"entry_type": "work",
"state": "working",
"starts_at": "2026-09-01T12:30:00+00:00"
}
}
curl -X GET "https://creativeskyline.de/api/flowtime/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/entries');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/entries',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/entries/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value", "starts_at": "value", "ends_at": "value", "entry_type": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/entries', [
'description' => 'value',
'project_uuid' => 'value',
'starts_at' => 'value',
'ends_at' => 'value',
'entry_type' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
starts_at: 'value',
ends_at: 'value',
entry_type: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
'starts_at': 'value',
'ends_at': 'value',
'entry_type': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/entries',
headers=headers,
json=payload,
)
data = response.json()
curl -X PUT "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"description": "value", "project_uuid": "value", "starts_at": "value", "ends_at": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/entries/{uuid}', [
'description' => 'value',
'project_uuid' => 'value',
'starts_at' => 'value',
'ends_at' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'value',
project_uuid: 'value',
starts_at: 'value',
ends_at: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'description': 'value',
'project_uuid': 'value',
'starts_at': 'value',
'ends_at': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/entries/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/entries/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/entries/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/entries/{uuid}',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/projects');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/projects',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "9d2f4c1a-7b3e-4f8a-9c5d-1e6a8b0c2d4f",
"name": "Website Redesign",
"client_name": "Musterfirma GmbH",
"color_code": "#3B82F6",
"is_public": true,
"is_billable": false,
"billable_rate": null,
"currency": "EUR"
}
],
"count": 1
}
curl -X GET "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/projects/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "client_uuid": "value", "description": "value", "color_code": "value", "is_public": true, "is_billable": true, "billable_rate": 0, "currency": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/projects', [
'name' => 'value',
'client_uuid' => 'value',
'description' => 'value',
'color_code' => 'value',
'is_public' => true,
'is_billable' => true,
'billable_rate' => 0,
'currency' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
client_uuid: 'value',
description: 'value',
color_code: 'value',
is_public: true,
is_billable: true,
billable_rate: 0,
currency: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'client_uuid': 'value',
'description': 'value',
'color_code': 'value',
'is_public': True,
'is_billable': True,
'billable_rate': 0,
'currency': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/projects',
headers=headers,
json=payload,
)
data = response.json()
curl -X PUT "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "status": "value", "color_code": "value", "is_public": true, "is_hidden": true, "is_billable": true, "billable_rate": 0, "currency": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/projects/{uuid}', [
'name' => 'value',
'description' => 'value',
'status' => 'value',
'color_code' => 'value',
'is_public' => true,
'is_hidden' => true,
'is_billable' => true,
'billable_rate' => 0,
'currency' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
status: 'value',
color_code: 'value',
is_public: true,
is_hidden: true,
is_billable: true,
billable_rate: 0,
currency: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'status': 'value',
'color_code': 'value',
'is_public': True,
'is_hidden': True,
'is_billable': True,
'billable_rate': 0,
'currency': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
curl -X PUT "https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuids": [], "user_uuids.*": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions', [
'user_uuids' => [],
'user_uuids.*' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuids: [],
user_uuids.*: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuids': [],
'user_uuids.*': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/projects/{uuid}/permissions',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/projects/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/projects/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/projects/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/projects/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Project deleted successfully"
}
curl -X GET "https://creativeskyline.de/api/flowtime/context" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/context');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/context', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/context',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"mode": "stamp_clock",
"simple_mode": true,
"shifts_enabled": false,
"rights": {
"owner": true,
"reports": true,
"team_reports": true,
"projects": true,
"logs": true,
"shifts": false,
"shift_planning": false
},
"working_hours": {
"weekly_hours": 40,
"work_time_model": "fixed"
},
"stamp_clock": {
"state": "clocked_in",
"running_entry_uuid": "11aa22bb-...",
"running_since": "2026-09-21T08:02:00+02:00"
}
}
}
curl -X GET "https://creativeskyline.de/api/flowtime/search" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/search');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/search', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/search',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "11aa22bb-...",
"user_name": "Anna",
"project_name": "Relaunch",
"description": "Konzept",
"starts_at": "2026-09-21T08:00:00+02:00",
"seconds": 5400
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}
curl -X GET "https://creativeskyline.de/api/flowtime/reports/{report}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/reports/{report}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/reports/{report}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/reports/{report}',
headers=headers,
)
data = response.json()
{
"success": true,
"report": "detailed",
"from": "2026-09-01",
"to": "2026-09-21",
"data": [
{
"uuid": "11aa22bb-...",
"user_name": "Anna",
"project_name": "Relaunch",
"starts_at": "2026-09-21T08:00:00+02:00",
"ends_at": "2026-09-21T09:30:00+02:00",
"seconds": 5400
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}
curl -X GET "https://creativeskyline.de/api/flowtime/stats/today" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/stats/today');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/stats/today', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/stats/today',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/stats/week" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/stats/week');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/stats/week', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/stats/week',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/working-hours/status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/working-hours/status');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/working-hours/status',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"configured": true,
"settings": {
"weekly_hours": 40,
"working_days": [
1,
2,
3,
4,
5
],
"daily_hours": 8,
"track_overtime": true,
"work_time_model": "standard"
},
"overtime_balance": {
"minutes": 120,
"hours": 2,
"formatted": "+02:00"
},
"today": [],
"this_week": [],
"this_month": []
}
}
curl -X PUT "https://creativeskyline.de/api/flowtime/working-hours/settings" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "weekly_hours": 0, "working_days": [], "daily_hours": [], "track_overtime": true, "work_time_model": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/working-hours/settings', [
'user_uuid' => 'value',
'weekly_hours' => 0,
'working_days' => [],
'daily_hours' => [],
'track_overtime' => true,
'work_time_model' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/settings', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
weekly_hours: 0,
working_days: [],
daily_hours: [],
track_overtime: true,
work_time_model: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'weekly_hours': 0,
'working_days': [],
'daily_hours': [],
'track_overtime': True,
'work_time_model': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/working-hours/settings',
headers=headers,
json=payload,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "minutes": 0, "mode": "value", "reason": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust', [
'user_uuid' => 'value',
'minutes' => 0,
'mode' => 'value',
'reason' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
minutes: 0,
mode: 'value',
reason: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'minutes': 0,
'mode': 'value',
'reason': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/working-hours/overtime/adjust',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/working-hours/history" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/working-hours/history');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/working-hours/history', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/working-hours/history',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/types');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/types',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "color": "value", "icon": "value", "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/types', [
'name' => 'value',
'description' => 'value',
'color' => 'value',
'icon' => 'value',
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
color: 'value',
icon: 'value',
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'color': 'value',
'icon': 'value',
'is_active': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/types',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "3c2b1a09-...",
"name": "Frühschicht",
"short_name": "FS",
"color": "#3B82F6",
"is_active": true,
"templates_count": 2,
"shifts_count": 14
}
}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "description": "value", "color": "value", "icon": "value", "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', [
'name' => 'value',
'description' => 'value',
'color' => 'value',
'icon' => 'value',
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
description: 'value',
color: 'value',
icon: 'value',
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'description': 'value',
'color': 'value',
'icon': 'value',
'is_active': True,
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/types/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/types/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/types/{uuid}',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/templates');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/templates',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "shift_type_uuid": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "default_days": [], "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/templates', [
'name' => 'value',
'shift_type_uuid' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'default_days' => [],
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
shift_type_uuid: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
default_days: [],
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'shift_type_uuid': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'default_days': [],
'is_active': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/templates',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "4d3c2b1a-...",
"name": "Frühdienst Werktag",
"shift_type_uuid": "3c2b1a09-...",
"shift_type_name": "Frühschicht",
"start_time": "06:00",
"end_time": "14:00",
"duration_minutes": 480,
"min_staff": 2,
"max_staff": 4,
"default_days": [
1,
2,
3,
4,
5
],
"is_active": true
}
}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "shift_type_uuid": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "default_days": [], "is_active": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', [
'name' => 'value',
'shift_type_uuid' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'default_days' => [],
'is_active' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
shift_type_uuid: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
default_days: [],
is_active: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'shift_type_uuid': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'default_days': [],
'is_active': True,
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/templates/{uuid}',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"week_start": "value", "name": "value", "create_from_templates": true, "shift_type_uuids": [], "shift_type_uuids.*": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans', [
'week_start' => 'value',
'name' => 'value',
'create_from_templates' => true,
'shift_type_uuids' => [],
'shift_type_uuids.*' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
week_start: 'value',
name: 'value',
create_from_templates: true,
shift_type_uuids: [],
shift_type_uuids.*: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'week_start': 'value',
'name': 'value',
'create_from_templates': True,
'shift_type_uuids': [],
'shift_type_uuids.*': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
)
data = response.json()
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "value", "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', [
'name' => 'value',
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'value',
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'name': 'value',
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "5e4d3c2b-...",
"name": "KW 39/2026",
"start_date": "2026-09-21",
"end_date": "2026-09-27",
"status": "draft",
"editable": true,
"shifts_count": 12
},
"message": "Shift plan updated successfully"
}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"message": "Shift plan deleted successfully"
}
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/shifts',
headers=headers,
)
data = response.json()
{
"success": true,
"data": [
{
"uuid": "6f5e4d3c-...",
"shift_plan_uuid": "5e4d3c2b-...",
"shift_type_uuid": "3c2b1a09-...",
"date": "2026-09-21",
"start_time": "06:00",
"end_time": "14:00",
"min_staff": 2,
"max_staff": 4,
"assigned_count": 2,
"staffing_status": "full",
"editable": true
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 12,
"last_page": 1
}
}
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/publish',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/archive',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"target_week_start": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy', [
'target_week_start' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
target_week_start: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'target_week_start': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/plans/{uuid}/copy',
headers=headers,
json=payload,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"shift_plan_uuid": "value", "shift_type_uuid": "value", "date": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts', [
'shift_plan_uuid' => 'value',
'shift_type_uuid' => 'value',
'date' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
shift_plan_uuid: 'value',
shift_type_uuid: 'value',
date: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'shift_plan_uuid': 'value',
'shift_type_uuid': 'value',
'date': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'notes': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "6f5e4d3c-...",
"shift_plan_uuid": "5e4d3c2b-...",
"shift_type_name": "Frühschicht",
"date": "2026-09-21",
"start_time": "06:00",
"end_time": "14:00",
"assigned_count": 2,
"staffing_status": "full",
"editable": true,
"assignments": [
{
"uuid": "7a6f5e4d-...",
"user_uuid": "e5f6a7b8-...",
"user_name": "Anna",
"status": "confirmed"
}
]
}
}
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"shift_type_uuid": "value", "date": "value", "start_time": "value", "end_time": "value", "min_staff": 0, "max_staff": 0, "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/{uuid}', [
'shift_type_uuid' => 'value',
'date' => 'value',
'start_time' => 'value',
'end_time' => 'value',
'min_staff' => 0,
'max_staff' => 0,
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
shift_type_uuid: 'value',
date: 'value',
start_time: 'value',
end_time: 'value',
min_staff: 0,
max_staff: 0,
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'shift_type_uuid': 'value',
'date': 'value',
'start_time': 'value',
'end_time': 'value',
'min_staff': 0,
'max_staff': 0,
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
json=payload,
)
data = response.json()
{
"success": true,
"data": {
"uuid": "6f5e4d3c-...",
"date": "2026-09-22",
"start_time": "07:00",
"end_time": "15:00",
"duration_minutes": 480,
"editable": true
},
"message": "Shift updated successfully"
}
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/{uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/{uuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user_uuid": "value", "check_conflicts": true}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign', [
'user_uuid' => 'value',
'check_conflicts' => true,
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_uuid: 'value',
check_conflicts: true,
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'user_uuid': 'value',
'check_conflicts': True,
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign',
headers=headers,
json=payload,
)
data = response.json()
curl -X DELETE "https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->delete('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.delete(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/assign/{userUuid}',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/{uuid}/available-users',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/confirm',
headers=headers,
)
data = response.json()
curl -X POST "https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"reason": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline', [
'reason' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reason: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'reason': 'value',
}
response = requests.post(
'https://creativeskyline.de/api/flowtime/shifts/assignments/{uuid}/decline',
headers=headers,
json=payload,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/my-shifts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/my-shifts');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/my-shifts', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/my-shifts',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/current" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/current');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/current', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/current',
headers=headers,
)
data = response.json()
curl -X GET "https://creativeskyline.de/api/flowtime/shifts/preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->get('https://creativeskyline.de/api/flowtime/shifts/preferences');
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/preferences', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
},
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/shifts/preferences',
headers=headers,
)
data = response.json()
curl -X PUT "https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"availability": "value", "available_from": "value", "available_until": "value", "preferred_shift_types": [], "notes": "value"}'
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')
->put('https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}', [
'availability' => 'value',
'available_from' => 'value',
'available_until' => 'value',
'preferred_shift_types' => [],
'notes' => 'value',
]);
$data = $response->json();
const response = await fetch('https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
availability: 'value',
available_from: 'value',
available_until: 'value',
preferred_shift_types: [],
notes: 'value',
}),
});
const data = await response.json();
import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json',
}
payload = {
'availability': 'value',
'available_from': 'value',
'available_until': 'value',
'preferred_shift_types': [],
'notes': 'value',
}
response = requests.put(
'https://creativeskyline.de/api/flowtime/shifts/preferences/{dayOfWeek}',
headers=headers,
json=payload,
)
data = response.json()