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.
Bevor Sie die FlowTime API nutzen können, benötigen Sie Ihre persönlichen Zugangsdaten:
Alle API-Anfragen benötigen diese HTTP-Header:
Voraussetzung: Der Benutzer benötigt eine aktive FlowTime-Berechtigung (tt) um die API nutzen zu können.
Testen Sie Ihre Verbindung mit diesem einfachen Beispiel:
curl -X GET "https://creativeskyline.de/api/flowtime/timer/status" \ -H "X-Team-UUID: ihre-team-uuid" \ -H "X-User-UUID: ihre-user-uuid" \ -H "Accept: application/json"
Basis-URL: https://creativeskyline.de/api/flowtime
/api/flowtime/timer/status
Ruft den aktuellen Timer-Status ab. Zeigt an, ob ein Timer läuft und wie lange.
{
"success": true,
"data": {
"is_running": true,
"entry": {
"id": 123,
"description": "Feature-Entwicklung",
"project": {
"id": 456,
"name": "Website Redesign"
},
"starts_at": "2024-01-15T09:00:00Z",
"duration_seconds": 3600,
"duration_formatted": "01:00:00"
}
}
}
{
"success": true,
"data": {
"is_running": false,
"entry": null
}
}
/api/flowtime/timer/start
Startet einen neuen Timer. Falls bereits ein Timer läuft, wird dieser gestoppt und ein neuer gestartet.
{
"description": "Bug-Fixing für Login-Seite",
"project_id": 456 // Optional: Projekt-ID
}
description - Beschreibung der Tätigkeit (optional)
project_id - ID des zugehörigen Projekts (optional)
/api/flowtime/timer/stop
Stoppt den aktuell laufenden Timer und speichert den Zeiteintrag.
{
"success": true,
"message": "Timer gestoppt",
"data": {
"id": 123,
"description": "Bug-Fixing für Login-Seite",
"project": {
"id": 456,
"name": "Website Redesign"
},
"starts_at": "2024-01-15T09:00:00Z",
"ends_at": "2024-01-15T10:30:00Z",
"duration_seconds": 5400,
"duration_formatted": "01:30:00"
}
}
/api/flowtime/timer
Aktualisiert den aktuell laufenden Timer (Beschreibung oder Projekt ändern).
{
"description": "Neue Beschreibung",
"project_id": 789
}
/api/flowtime/timer
Bricht den aktuell laufenden Timer ab, ohne die Zeit zu speichern.
/api/flowtime/entries
Ruft alle Zeiteinträge mit optionalen Filtern ab.
date_from - Startdatum (Format: YYYY-MM-DD)
date_to - Enddatum (Format: YYYY-MM-DD)
project_id - Filter nach Projekt-ID
limit - Maximale Anzahl der Einträge (Standard: 50)
offset - Offset für Pagination
GET /api/flowtime/entries?date_from=2024-01-01&date_to=2024-01-31&project_id=456&limit=20
/api/flowtime/entries/{id}
Ruft einen einzelnen Zeiteintrag mit allen Details ab.
/api/flowtime/entries
Erstellt einen manuellen Zeiteintrag (ohne Timer).
{
"description": "Meeting mit Kunde",
"project_id": 456,
"starts_at": "2024-01-15T14:00:00Z",
"ends_at": "2024-01-15T15:30:00Z"
}
// Alternativ mit Dauer in Sekunden:
{
"description": "Dokumentation schreiben",
"project_id": 456,
"starts_at": "2024-01-15T14:00:00Z",
"seconds": 5400
}
/api/flowtime/entries/{id}
Aktualisiert einen bestehenden Zeiteintrag.
{
"description": "Aktualisierte Beschreibung",
"project_id": 789,
"starts_at": "2024-01-15T14:00:00Z",
"ends_at": "2024-01-15T16:00:00Z"
}
/api/flowtime/entries/{id}
Löscht einen Zeiteintrag unwiderruflich.
/api/flowtime/projects
Listet alle Projekte auf, zu denen der Benutzer Zugriff hat.
{
"success": true,
"data": [
{
"id": 456,
"name": "Website Redesign",
"client": {
"id": 1,
"name": "Musterfirma GmbH"
},
"color": "#3B82F6",
"is_public": true,
"total_time_seconds": 36000,
"total_time_formatted": "10:00:00"
}
]
}
/api/flowtime/projects/{id}
Ruft Details eines einzelnen Projekts ab, inklusive Zeitstatistiken.
/api/flowtime/projects
Erstellt ein neues Projekt (nur Teaminhaber).
{
"name": "Neues Projekt",
"client_project_id": 123, // Optional: CRM-Projekt-ID
"color": "#10B981", // Optional: Hex-Farbe
"is_public": true // Optional: Für alle Teammitglieder sichtbar
}
/api/flowtime/projects/{id}
Aktualisiert ein bestehendes Projekt (nur Teaminhaber).
Private Projekte können bestimmten Teammitgliedern zugewiesen werden:
/api/flowtime/projects/{id}/permissions
Aktualisiert die Benutzer mit Zugriff auf das Projekt (ersetzt alle bestehenden Berechtigungen).
{
"user_uuids": [
"550e8400-e29b-41d4-a716-446655440000",
"550e8400-e29b-41d4-a716-446655440001"
]
}
/api/flowtime/stats/today
Ruft die Zeitstatistiken für den heutigen Tag ab.
{
"success": true,
"data": {
"date": "2024-01-15",
"total_seconds": 28800,
"total_formatted": "08:00:00",
"entries_count": 5,
"projects": [
{
"id": 456,
"name": "Website Redesign",
"seconds": 14400,
"formatted": "04:00:00",
"percentage": 50
},
{
"id": 789,
"name": "App Development",
"seconds": 14400,
"formatted": "04:00:00",
"percentage": 50
}
]
}
}
/api/flowtime/stats/week
Ruft die Zeitstatistiken für die aktuelle Woche ab.
{
"success": true,
"data": {
"week_number": 3,
"year": 2024,
"start_date": "2024-01-15",
"end_date": "2024-01-21",
"total_seconds": 144000,
"total_formatted": "40:00:00",
"daily_breakdown": [
{ "date": "2024-01-15", "day": "Montag", "seconds": 28800, "formatted": "08:00:00" },
{ "date": "2024-01-16", "day": "Dienstag", "seconds": 32400, "formatted": "09:00:00" },
{ "date": "2024-01-17", "day": "Mittwoch", "seconds": 25200, "formatted": "07:00:00" },
{ "date": "2024-01-18", "day": "Donnerstag", "seconds": 28800, "formatted": "08:00:00" },
{ "date": "2024-01-19", "day": "Freitag", "seconds": 28800, "formatted": "08:00:00" },
{ "date": "2024-01-20", "day": "Samstag", "seconds": 0, "formatted": "00:00:00" },
{ "date": "2024-01-21", "day": "Sonntag", "seconds": 0, "formatted": "00:00:00" }
],
"projects": [
{
"id": 456,
"name": "Website Redesign",
"seconds": 72000,
"formatted": "20:00:00",
"percentage": 50
}
]
}
}
# Timer starten
curl -X POST "https://creativeskyline.de/api/flowtime/timer/start" \
-H "X-Team-UUID: ihre-team-uuid" \
-H "X-User-UUID: ihre-user-uuid" \
-H "Content-Type: application/json" \
-d '{
"description": "Feature implementieren",
"project_id": 456
}'
# Timer stoppen
curl -X POST "https://creativeskyline.de/api/flowtime/timer/stop" \
-H "X-Team-UUID: ihre-team-uuid" \
-H "X-User-UUID: ihre-user-uuid" \
-H "Accept: application/json"
async function getTimeEntries(dateFrom, dateTo, projectId = null) {
const params = new URLSearchParams({
date_from: dateFrom,
date_to: dateTo,
limit: 100
});
if (projectId) {
params.append('project_id', projectId);
}
const response = await fetch(
`https://creativeskyline.de/api/flowtime/entries?${params}`,
{
headers: {
'X-Team-UUID': process.env.TEAM_UUID,
'X-User-UUID': process.env.USER_UUID,
'Accept': 'application/json'
}
}
);
const data = await response.json();
return data.data;
}
// Beispielaufruf: Einträge vom Januar 2024
const entries = await getTimeEntries('2024-01-01', '2024-01-31');
console.log(`${entries.length} Einträge gefunden`);
$teamUuid = getenv('FLOWSUITE_TEAM_UUID');
$userUuid = getenv('FLOWSUITE_USER_UUID');
$data = [
'description' => 'Kundentermin',
'project_id' => 456,
'starts_at' => '2024-01-15T14:00:00Z',
'ends_at' => '2024-01-15T15:30:00Z'
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://creativeskyline.de/api/flowtime/entries',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'X-Team-UUID: ' . $teamUuid,
'X-User-UUID: ' . $userUuid,
'Content-Type: application/json',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
curl_close($ch);
if ($result['success']) {
echo "Zeiteintrag erstellt: " . $result['data']['id'];
}
import os
import requests
team_uuid = os.environ.get('FLOWSUITE_TEAM_UUID')
user_uuid = os.environ.get('FLOWSUITE_USER_UUID')
headers = {
'X-Team-UUID': team_uuid,
'X-User-UUID': user_uuid,
'Accept': 'application/json',
}
response = requests.get(
'https://creativeskyline.de/api/flowtime/stats/week',
headers=headers
)
data = response.json()
if data['success']:
stats = data['data']
print(f"Woche {stats['week_number']}/{stats['year']}")
print(f"Gesamtzeit: {stats['total_formatted']}")
print("\nTägliche Aufschlüsselung:")
for day in stats['daily_breakdown']:
print(f" {day['day']}: {day['formatted']}")
Erstellen Sie eine native iOS/Android-App für Zeiterfassung unterwegs. Starten und stoppen Sie Timer direkt vom Smartphone.
Integrieren Sie FlowTime mit Ihrer Buchhaltungssoftware für automatische Rechnungserstellung basierend auf erfassten Zeiten.
Erstellen Sie benutzerdefinierte Dashboards zur Visualisierung von Arbeitszeiten, Projektfortschritt und Team-Produktivität.
Verbinden Sie FlowTime mit Projektmanagement-Tools wie Jira, Asana oder Trello für nahtlose Zeiterfassung bei Aufgaben.