Dokumentacja API

Kompletna dokumentacja REST API TimeHunter — 111 endpointów

Bazowy URLhttps://api.timehunter.pl

Wprowadzenie

Autentykacja

API wspiera dwie metody autentykacji: tokeny JWT i klucze API.

Token JWT (HttpOnly Cookie)

Zaloguj się przez POST /api/auth/login aby otrzymać JWT. Token ustawiany jest automatycznie jako HttpOnly cookie lub można go wysłać w nagłówku Authorization.

Authorization: Bearer eyJhbG...

Klucz API

Wygeneruj klucz API w Ustawienia → Klucze API. Wyślij go w nagłówku X-Api-Key. Klucze mają uprawnienia do odczytu/zapisu.

X-Api-Key: th_live_abc123...

Limity zapytań

Endpointy mają limity zapytań w celu ochrony przed nadużyciami. Po przekroczeniu limitu API zwraca HTTP 429.

LimiterOknoMaks. zapytań
auth15 min20
register1 h5
qr1 min30
api1 min100
ai1 min10
schema5 min10
adminOp1 h5
locationTrail30 s1

Autentykacja(5)

POST/api/auth/register-companyPubliczny5/1 h

Rejestracja nowej firmy z kontem administratora i wyborem planu

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/auth/register-company" \
  -H "Content-Type: application/json" \
  -d '{"companyName":"Moja Firma Sp. z o.o.","nip":"1234567890","email":"admin@mojafirma.pl","password":"SecurePass123!","adminName":"Jan Kowalski","plan":"start","countryCode":"PL"}'
Zapytanie
{
  "companyName": "Moja Firma Sp. z o.o.",
  "nip": "1234567890",
  "email": "admin@mojafirma.pl",
  "password": "SecurePass123!",
  "adminName": "Jan Kowalski",
  "plan": "start",
  "countryCode": "PL"
}
Odpowiedź
{
  "success": true,
  "message": "Firma zarejestrowana pomyślnie",
  "user": {
    "id": "uuid",
    "email": "admin@mojafirma.pl",
    "role": "admin"
  }
}
POST/api/auth/loginPubliczny20/15 min

Logowanie za pomocą e-maila i hasła, otrzymanie tokenu JWT

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@mojafirma.pl","password":"SecurePass123!"}'
Zapytanie
{
  "email": "admin@mojafirma.pl",
  "password": "SecurePass123!"
}
Odpowiedź
{
  "success": true,
  "user": {
    "userId": "uuid",
    "email": "admin@mojafirma.pl",
    "role": "admin",
    "companyId": "uuid"
  }
}
GET/api/auth/meJWT

Pobranie profilu bieżącego użytkownika i informacji o subskrypcji

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/auth/me" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "user": {
    "id": "uuid",
    "email": "admin@mojafirma.pl",
    "full_name": "Jan Kowalski",
    "role": "admin"
  },
  "subscription": {
    "status": "trial",
    "trialEnd": "2026-03-01"
  }
}
POST/api/auth/logoutPubliczny

Wylogowanie (wyczyszczenie HttpOnly cookie)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/auth/logout"
Odpowiedź
{
  "success": true
}
POST/api/auth/change-passwordJWT

Zmiana hasła zalogowanego użytkownika

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/auth/change-password" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"currentPassword":"OldPass123!","newPassword":"NewPass456!"}'
Zapytanie
{
  "currentPassword": "OldPass123!",
  "newPassword": "NewPass456!"
}
Odpowiedź
{
  "success": true,
  "message": "Hasło zmienione"
}

Sesje pracy(8)

GET/api/work/sessionJWT

Pobranie aktywnej sesji pracy użytkownika

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/work/session" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "session": {
    "id": "uuid",
    "start_time": "2026-02-15T08:00:00+01:00",
    "break_start": null,
    "end_time": null
  },
  "breakLimit": 30
}
POST/api/work/startJWT

Rozpoczęcie nowej sesji pracy z opcjonalną lokalizacją GPS

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/start" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"latitude":50.2649,"longitude":19.0238,"workMode":"office"}'
Zapytanie
{
  "latitude": 50.2649,
  "longitude": 19.0238,
  "workMode": "office"
}
Odpowiedź
{
  "success": true,
  "session": {
    "id": "uuid",
    "start_time": "2026-02-15T08:00:00+01:00"
  }
}
POST/api/work/stopJWT

Zakończenie bieżącej sesji pracy

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/stop" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"latitude":50.2649,"longitude":19.0238}'
Zapytanie
{
  "latitude": 50.2649,
  "longitude": 19.0238
}
Odpowiedź
{
  "success": true,
  "session": {
    "id": "uuid",
    "end_time": "2026-02-15T16:00:00+01:00",
    "total_hours": 8
  }
}
POST/api/work/break-startOpcjonalny

Rozpoczęcie przerwy (obsługuje autoryzację tokenem QR)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/break-start" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"qrToken":"optional-qr-token"}'
Zapytanie
{
  "qrToken": "optional-qr-token"
}
Odpowiedź
{
  "success": true,
  "breakStart": "2026-02-15T12:00:00+01:00"
}
POST/api/work/break-endOpcjonalny

Zakończenie bieżącej przerwy (obsługuje autoryzację tokenem QR)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/break-end" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"qrToken":"optional-qr-token"}'
Zapytanie
{
  "qrToken": "optional-qr-token"
}
Odpowiedź
{
  "success": true,
  "breakEnd": "2026-02-15T12:30:00+01:00"
}
GET/api/work/break-todayJWT

Pobranie łącznego czasu przerwy na dziś

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/work/break-today" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "totalBreakSeconds": 1800
}
GET/api/work/todayAPI Key / JWT

Pobranie podsumowania czasu pracy na dziś

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/work/today" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "totalSeconds": 28800,
  "totalHours": "8.00"
}
POST/api/work/location-updateJWT

Wysłanie aktualizacji lokalizacji GPS podczas aktywnej sesji

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/location-update" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"latitude":50.2649,"longitude":19.0238}'
Zapytanie
{
  "latitude": 50.2649,
  "longitude": 19.0238
}
Odpowiedź
{
  "success": true
}

QR kod i skanowanie(4)

GET/api/qr/:userIdJWT

Pobranie kodu QR użytkownika (własnego lub jako admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/qr/:userId" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "qrToken": "uuid-token",
  "qrCodeUrl": "data:image/png;base64,..."
}
POST/api/work/qr-scanQR Token30/1 min

Skanowanie kodu QR w celu przełączenia sesji (start/stop/przerwa)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/qr-scan" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"qrToken":"uuid-token","latitude":50.2649,"longitude":19.0238}'
Zapytanie
{
  "qrToken": "uuid-token",
  "latitude": 50.2649,
  "longitude": 19.0238
}
Odpowiedź
{
  "success": true,
  "action": "start",
  "session": {
    "id": "uuid"
  }
}
POST/api/work/qr-scan-statusQR Token30/1 min

Pobranie statusu pracy za pomocą tokenu QR

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/qr-scan-status" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"qrToken":"uuid-token"}'
Zapytanie
{
  "qrToken": "uuid-token"
}
Odpowiedź
{
  "isWorking": true,
  "onBreak": false,
  "sessionStart": "2026-02-15T08:00:00+01:00"
}
POST/api/work/photo-uploadQR Token30/1 min

Przesłanie zdjęcia weryfikacyjnego podczas rejestracji QR

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work/photo-upload" \
  -H "Authorization: Bearer <token>"
Zapytanie
(multipart/form-data: qrToken, eventId, photo)
Odpowiedź
{
  "success": true,
  "photoUrl": "https://..."
}

Obecność(3)

GET/api/attendanceJWT + Admin

Pobranie danych obecności wszystkich pracowników (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/attendance" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/attendance?date=2026-02-15&employeeId=uuid
Odpowiedź
{
  "attendance": [
    {
      "userId": "uuid",
      "fullName": "Jan Kowalski",
      "startTime": "08:00",
      "endTime": "16:00",
      "totalHours": "7.50",
      "breaks": 1800
    }
  ]
}
GET/api/employees/statusAPI Key / JWT

Pobranie bieżącego statusu pracy wszystkich pracowników

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/employees/status" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "employees": [
    {
      "id": "uuid",
      "fullName": "Jan Kowalski",
      "isWorking": true,
      "onBreak": false,
      "startTime": "08:00"
    }
  ]
}
GET/api/late/todayJWT

Sprawdzenie czy użytkownik spóźnił się dzisiaj

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/late/today" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "isLate": false,
  "minutesLate": 0
}

Zestawienia(6)

GET/api/report/dailyAPI Key / JWT

Pobranie dziennego raportu pracy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/report/daily" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/report/daily?date=2026-02-15
Odpowiedź
{
  "date": "2026-02-15",
  "totalHours": "8.00",
  "sessions": []
}
GET/api/report/weeklyAPI Key / JWT

Pobranie tygodniowego raportu pracy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/report/weekly" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "weekStart": "2026-02-10",
  "weekEnd": "2026-02-16",
  "totalHours": "40.00"
}
GET/api/report/monthlyAPI Key / JWT

Pobranie miesięcznego raportu pracy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/report/monthly" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/report/monthly?month=2026-02
Odpowiedź
{
  "month": "2026-02",
  "totalHours": "160.00",
  "workDays": 20
}
GET/api/reports/periodJWT + Admin

Pobranie raportu za wybrany zakres dat (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/reports/period" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/reports/period?from=2026-02-01&to=2026-02-28
Odpowiedź
{
  "employees": [],
  "summary": {
    "totalHours": "320.00"
  }
}
GET/api/report/pdf-dataJWT

Pobranie danych raportu do generowania PDF

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/report/pdf-data" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "reportData": {}
}
POST/api/reports/monthly-pdfJWT + Admin

Generowanie miesięcznego raportu PDF (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/reports/monthly-pdf" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"month":"2026-02","employeeIds":["uuid1","uuid2"]}'
Zapytanie
{
  "month": "2026-02",
  "employeeIds": [
    "uuid1",
    "uuid2"
  ]
}
Odpowiedź
(PDF binary)

Wnioski urlopowe(5)

POST/api/leave/requestJWT

Złożenie nowego wniosku urlopowego (urlop, zwolnienie lekarskie itp.)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/leave/request" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"leave_type":"vacation","start_date":"2026-03-01","end_date":"2026-03-05","comment":"Urlop wypoczynkowy","request_unit":"days"}'
Zapytanie
{
  "leave_type": "vacation",
  "start_date": "2026-03-01",
  "end_date": "2026-03-05",
  "comment": "Urlop wypoczynkowy",
  "request_unit": "days"
}
Odpowiedź
{
  "success": true,
  "request": {
    "id": "uuid",
    "status": "pending"
  }
}
GET/api/leave/balance/:userIdJWT

Pobranie salda urlopowego użytkownika

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/leave/balance/:userId" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "balance": {
    "total_days": 26,
    "used_days": 5,
    "pending_days": 3,
    "remaining_days": 18
  }
}
PUT/api/leave/balance/:userIdJWT + Admin

Aktualizacja salda urlopowego (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/leave/balance/:userId" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"total_days":30}'
Zapytanie
{
  "total_days": 30
}
Odpowiedź
{
  "success": true
}
GET/api/admin/leave-requestsJWT + Admin

Lista wszystkich wniosków urlopowych (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/leave-requests" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "requests": [
    {
      "id": "uuid",
      "employee": "Jan Kowalski",
      "leave_type": "vacation",
      "status": "pending"
    }
  ]
}
POST/api/admin/leave/:actionJWT + Admin

Zatwierdzenie lub odrzucenie wniosku urlopowego (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/admin/leave/:action" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"requestId":"uuid","comment":"Zatwierdzono"}'
Zapytanie
{
  "requestId": "uuid",
  "comment": "Zatwierdzono"
}
Odpowiedź
{
  "success": true,
  "status": "approved"
}

Święta(4)

GET/api/holidaysJWT

Pobranie listy świąt firmowych

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/holidays" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "holidays": [
    {
      "id": 1,
      "name": "Nowy Rok",
      "date": "2026-01-01",
      "country_code": "PL"
    }
  ]
}
POST/api/admin/holidaysJWT + Admin

Utworzenie niestandardowego święta (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/admin/holidays" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dzień Firmy","date":"2026-06-15"}'
Zapytanie
{
  "name": "Dzień Firmy",
  "date": "2026-06-15"
}
Odpowiedź
{
  "success": true,
  "holiday": {
    "id": 2,
    "name": "Dzień Firmy"
  }
}
PUT/api/admin/holidays/:idJWT + Admin

Aktualizacja święta (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/admin/holidays/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dzień Firmy (zaktualizowany)","date":"2026-06-16"}'
Zapytanie
{
  "name": "Dzień Firmy (zaktualizowany)",
  "date": "2026-06-16"
}
Odpowiedź
{
  "success": true
}
DELETE/api/admin/holidays/:idJWT + Admin

Usunięcie święta (admin)

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/admin/holidays/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}

Rejestr czasu(6)

GET/api/eventsJWT

Pobranie zdarzeń/zadań na dany dzień

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/events" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/events?date=2026-02-15
Odpowiedź
{
  "events": [
    {
      "id": 1,
      "title": "Spotkanie",
      "start": "09:00",
      "end": "10:00"
    }
  ]
}
POST/api/events/createJWT

Utworzenie nowego zdarzenia lub zadania

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/events/create" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Spotkanie","date":"2026-02-20","start_time":"09:00","end_time":"10:00"}'
Zapytanie
{
  "title": "Spotkanie",
  "date": "2026-02-20",
  "start_time": "09:00",
  "end_time": "10:00"
}
Odpowiedź
{
  "success": true,
  "event": {
    "id": 2
  }
}
PUT/api/events/:idJWT + Admin

Aktualizacja zdarzenia (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/events/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Spotkanie (zmienione)","end_time":"11:00"}'
Zapytanie
{
  "title": "Spotkanie (zmienione)",
  "end_time": "11:00"
}
Odpowiedź
{
  "success": true
}
DELETE/api/events/:idJWT + Admin

Usunięcie zdarzenia (admin)

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/events/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}
POST/api/events/bulk-activateJWT + Admin

Masowa aktywacja zdarzeń (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/events/bulk-activate" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"ids":[1,2,3]}'
Zapytanie
{
  "ids": [
    1,
    2,
    3
  ]
}
Odpowiedź
{
  "success": true,
  "count": 3
}
POST/api/events/bulk-deleteJWT + Admin

Masowe usunięcie zdarzeń (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/events/bulk-delete" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"ids":[1,2,3]}'
Zapytanie
{
  "ids": [
    1,
    2,
    3
  ]
}
Odpowiedź
{
  "success": true,
  "count": 3
}

Wnioski i zatwierdzenia(7)

GET/api/requestsJWT

Pobranie wniosków użytkownika lub wszystkich wniosków (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/requests" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "requests": [
    {
      "id": "uuid",
      "leave_type": "vacation",
      "status": "pending"
    }
  ]
}
POST/api/requestsJWT

Utworzenie nowego wniosku

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/requests" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"employee_id":"uuid","start_date":"2026-03-01","end_date":"2026-03-05","leave_type":"vacation","comment":"Urlop"}'
Zapytanie
{
  "employee_id": "uuid",
  "start_date": "2026-03-01",
  "end_date": "2026-03-05",
  "leave_type": "vacation",
  "comment": "Urlop"
}
Odpowiedź
{
  "success": true,
  "request": {
    "id": "uuid"
  }
}
PUT/api/requests/:idJWT

Aktualizacja szczegółów wniosku

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/requests/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"start_date":"2026-03-02","end_date":"2026-03-06"}'
Zapytanie
{
  "start_date": "2026-03-02",
  "end_date": "2026-03-06"
}
Odpowiedź
{
  "success": true
}
PUT/api/requests/:id/statusJWT

Aktualizacja statusu wniosku (zatwierdzenie/odrzucenie)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/requests/:id/status" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"status":"approved","comment":"Zatwierdzono"}'
Zapytanie
{
  "status": "approved",
  "comment": "Zatwierdzono"
}
Odpowiedź
{
  "success": true
}
DELETE/api/requests/:idJWT

Usunięcie wniosku

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/requests/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}
POST/api/requests/bulk-approveJWT

Masowe zatwierdzanie wniosków

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/requests/bulk-approve" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"ids":["uuid1","uuid2"]}'
Zapytanie
{
  "ids": [
    "uuid1",
    "uuid2"
  ]
}
Odpowiedź
{
  "success": true,
  "count": 2
}
POST/api/requests/bulk-rejectJWT

Masowe odrzucanie wniosków

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/requests/bulk-reject" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"ids":["uuid1","uuid2"],"comment":"Odrzucono"}'
Zapytanie
{
  "ids": [
    "uuid1",
    "uuid2"
  ],
  "comment": "Odrzucono"
}
Odpowiedź
{
  "success": true,
  "count": 2
}

Harmonogramy(5)

GET/api/schedulesAPI Key / JWT

Pobranie harmonogramów pracy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/schedules" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/schedules?month=2026-02&userId=uuid
Odpowiedź
{
  "schedules": [
    {
      "id": "uuid",
      "date": "2026-02-15",
      "start": "08:00",
      "end": "16:00"
    }
  ]
}
POST/api/schedulesJWT

Utworzenie wpisu harmonogramu pracy

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/schedules" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"userId":"uuid","date":"2026-02-20","start_time":"08:00","end_time":"16:00"}'
Zapytanie
{
  "userId": "uuid",
  "date": "2026-02-20",
  "start_time": "08:00",
  "end_time": "16:00"
}
Odpowiedź
{
  "success": true,
  "schedule": {
    "id": "uuid"
  }
}
POST/api/schedules/bulkJWT

Masowe tworzenie wpisów harmonogramu

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/schedules/bulk" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"schedules":[{"userId":"uuid","date":"2026-02-20","start_time":"08:00","end_time":"16:00"}]}'
Zapytanie
{
  "schedules": [
    {
      "userId": "uuid",
      "date": "2026-02-20",
      "start_time": "08:00",
      "end_time": "16:00"
    }
  ]
}
Odpowiedź
{
  "success": true,
  "count": 5
}
PUT/api/schedules/:idJWT

Aktualizacja wpisu harmonogramu

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/schedules/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"start_time":"09:00","end_time":"17:00"}'
Zapytanie
{
  "start_time": "09:00",
  "end_time": "17:00"
}
Odpowiedź
{
  "success": true
}
DELETE/api/schedules/:idJWT

Usunięcie wpisu harmonogramu

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/schedules/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}

Zarządzanie pracownikami(6)

GET/api/admin/usersJWT + Admin

Lista wszystkich pracowników w firmie (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/users" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "users": [
    {
      "id": "uuid",
      "full_name": "Jan Kowalski",
      "email": "jan@firma.pl",
      "role": "employee"
    }
  ]
}
POST/api/admin/add-employeeJWT + Admin

Dodanie nowego pracownika (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/admin/add-employee" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Anna Nowak","email":"anna@firma.pl","password":"TempPass123!","role":"employee","initialLeaveDays":26}'
Zapytanie
{
  "fullName": "Anna Nowak",
  "email": "anna@firma.pl",
  "password": "TempPass123!",
  "role": "employee",
  "initialLeaveDays": 26
}
Odpowiedź
{
  "success": true,
  "employee": {
    "id": "uuid",
    "email": "anna@firma.pl"
  }
}
PUT/api/admin/edit-employee/:idJWT + Admin

Edycja danych pracownika (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/admin/edit-employee/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"fullName":"Anna Nowak-Kowalska","role":"manager"}'
Zapytanie
{
  "fullName": "Anna Nowak-Kowalska",
  "role": "manager"
}
Odpowiedź
{
  "success": true
}
PUT/api/admin/update-permissions/:idJWT + Admin

Aktualizacja uprawnień pracownika (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/admin/update-permissions/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"permissions":{"dashboard":true,"reports":true,"events":false}}'
Zapytanie
{
  "permissions": {
    "dashboard": true,
    "reports": true,
    "events": false
  }
}
Odpowiedź
{
  "success": true
}
PUT/api/admin/archive-employee/:idJWT + Admin

Archiwizacja/dezaktywacja pracownika (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/admin/archive-employee/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"archived":true}'
Zapytanie
{
  "archived": true
}
Odpowiedź
{
  "success": true
}
GET/api/admin/user-timeJWT + Admin

Pobranie podsumowania czasu pracy użytkownika (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/user-time" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/admin/user-time?date=2026-02-15
Odpowiedź
{
  "users": [
    {
      "userId": "uuid",
      "fullName": "Jan Kowalski",
      "totalHours": "8.00",
      "isWorking": true
    }
  ]
}

Nadgodziny(5)

GET/api/overtime/settingsJWT

Pobranie ustawień nadgodzin

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/overtime/settings" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "dailyThreshold": 8,
  "weeklyThreshold": 40,
  "multiplier": 1.5
}
PUT/api/overtime/settingsJWT + Admin

Aktualizacja ustawień nadgodzin (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/overtime/settings" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"dailyThreshold":8,"weeklyThreshold":40,"multiplier":1.5}'
Zapytanie
{
  "dailyThreshold": 8,
  "weeklyThreshold": 40,
  "multiplier": 1.5
}
Odpowiedź
{
  "success": true
}
GET/api/overtime/recordsJWT

Pobranie rekordów nadgodzin

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/overtime/records" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/overtime/records?month=2026-02
Odpowiedź
{
  "records": [
    {
      "id": "uuid",
      "date": "2026-02-10",
      "hours": 2.5,
      "status": "pending"
    }
  ]
}
GET/api/overtime/summaryJWT

Pobranie podsumowania nadgodzin

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/overtime/summary" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "totalOvertimeHours": 15.5,
  "pendingHours": 5,
  "approvedHours": 10.5
}
POST/api/overtime/bulk-approveJWT + Admin

Masowe zatwierdzanie rekordów nadgodzin (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/overtime/bulk-approve" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"ids":["uuid1","uuid2"]}'
Zapytanie
{
  "ids": [
    "uuid1",
    "uuid2"
  ]
}
Odpowiedź
{
  "success": true,
  "count": 2
}

Grupy robocze(4)

GET/api/admin/work-groupsJWT + Admin

Lista wszystkich grup roboczych (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/work-groups" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "groups": [
    {
      "id": "uuid",
      "name": "Produkcja",
      "membersCount": 12
    }
  ]
}
POST/api/admin/work-groupsJWT + Admin

Utworzenie grupy roboczej (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/admin/work-groups" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Logistyka"}'
Zapytanie
{
  "name": "Logistyka"
}
Odpowiedź
{
  "success": true,
  "group": {
    "id": "uuid",
    "name": "Logistyka"
  }
}
PUT/api/admin/work-groups/:idJWT + Admin

Aktualizacja grupy roboczej (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/admin/work-groups/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Logistyka & Transport"}'
Zapytanie
{
  "name": "Logistyka & Transport"
}
Odpowiedź
{
  "success": true
}
DELETE/api/admin/work-groups/:idJWT + Admin

Usunięcie grupy roboczej (admin)

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/admin/work-groups/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}

Ogłoszenia(4)

GET/api/announcementsJWT

Pobranie ogłoszeń

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/announcements" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "announcements": [
    {
      "id": "uuid",
      "title": "Nowy regulamin",
      "content": "...",
      "createdAt": "2026-02-15"
    }
  ]
}
POST/api/announcementsJWT + Admin

Utworzenie ogłoszenia (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/announcements" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Zmiana godzin pracy","content":"Od marca biuro czynne 7-15"}'
Zapytanie
{
  "title": "Zmiana godzin pracy",
  "content": "Od marca biuro czynne 7-15"
}
Odpowiedź
{
  "success": true,
  "announcement": {
    "id": "uuid"
  }
}
POST/api/announcements/:id/readJWT

Oznaczenie ogłoszenia jako przeczytanego

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/announcements/:id/read" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}
GET/api/announcements/unread-countJWT

Pobranie liczby nieprzeczytanych ogłoszeń

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/announcements/unread-count" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "count": 3
}

Zarządzanie firmą(7)

POST/api/company/updateJWT + Admin

Aktualizacja ustawień firmy (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/company/update" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nowa Nazwa Sp. z o.o."}'
Zapytanie
{
  "name": "Nowa Nazwa Sp. z o.o."
}
Odpowiedź
{
  "success": true
}
GET/api/company/detailsJWT + Admin

Pobranie szczegółów firmy (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/company/details" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "company": {
    "id": "uuid",
    "name": "Moja Firma",
    "plan": "start"
  }
}
GET/api/company/brandingJWT

Pobranie ustawień brandingu firmy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/company/branding" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "logoUrl": "https://...",
  "primaryColor": "#2563eb"
}
PUT/api/company/brandingJWT + Admin

Aktualizacja brandingu firmy (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/company/branding" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"primaryColor":"#059669"}'
Zapytanie
{
  "primaryColor": "#059669"
}
Odpowiedź
{
  "success": true
}
POST/api/company/logoJWT + Admin

Przesłanie logo firmy (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/company/logo" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"logo_url":"https://example.com/logo.png"}'
Zapytanie
{
  "logo_url": "https://example.com/logo.png"
}
Odpowiedź
{
  "success": true
}
GET/api/company/locationJWT + Admin

Pobranie głównej lokalizacji firmy (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/company/location" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "location": {
    "latitude": 50.2649,
    "longitude": 19.0238,
    "radius": 200
  }
}
POST/api/company/locationJWT + Admin

Ustawienie głównej lokalizacji firmy (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/company/location" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"latitude":50.2649,"longitude":19.0238,"radius":200}'
Zapytanie
{
  "latitude": 50.2649,
  "longitude": 19.0238,
  "radius": 200
}
Odpowiedź
{
  "success": true
}

Subskrypcje i plany(3)

GET/api/subscription/statusJWT

Pobranie statusu bieżącej subskrypcji

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/subscription/status" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "status": "trial",
  "planId": "uuid",
  "trialEnd": "2026-03-01",
  "paymentReference": "TH-12345"
}
GET/api/subscription/payment-infoJWT

Pobranie informacji o płatności za subskrypcję

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/subscription/payment-info" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "bankName": "mBank",
  "iban": "PL...",
  "reference": "TH-12345",
  "amount": "32.50 PLN"
}
GET/api/plans/publicPubliczny

Pobranie publicznych planów cenowych

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/plans/public"
Odpowiedź
{
  "plans": [
    {
      "slug": "micro",
      "name": "Micro",
      "price_per_user": 3.99,
      "max_employees": 5
    },
    {
      "slug": "start",
      "name": "Start",
      "price_per_user": 6.5,
      "max_employees": 15
    },
    {
      "slug": "pro",
      "name": "Pro",
      "price_per_user": 9.5,
      "max_employees": null
    }
  ]
}

Dodatki(4)

GET/api/addonsJWT

Pobranie dostępnych dodatków

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/addons" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "addons": [
    {
      "id": "uuid",
      "slug": "photo_registration",
      "name": "Rejestracja zdjęciem",
      "price": 1
    }
  ]
}
POST/api/addons/:id/activateJWT + Admin

Aktywacja dodatku (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/addons/:id/activate" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}
POST/api/addons/:id/deactivateJWT + Admin

Dezaktywacja dodatku (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/addons/:id/deactivate" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}
GET/api/company/addonsJWT

Pobranie aktywnych dodatków firmy

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/company/addons" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "activeAddons": [
    "photo_registration",
    "location_basic"
  ]
}

Klucze API(3)

GET/api/api-keysJWT + Admin

Lista kluczy API (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/api-keys" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "keys": [
    {
      "id": "uuid",
      "name": "Integration Key",
      "prefix": "th_live_ab12",
      "created_at": "2026-02-01"
    }
  ]
}
POST/api/api-keysJWT + Admin

Utworzenie nowego klucza API (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/api-keys" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"ERP Integration","permissions":{"read":true,"write":false}}'
Zapytanie
{
  "name": "ERP Integration",
  "permissions": {
    "read": true,
    "write": false
  }
}
Odpowiedź
{
  "success": true,
  "key": "th_live_abc123...",
  "prefix": "th_live_ab12"
}
DELETE/api/api-keys/:idJWT + Admin

Usunięcie klucza API (admin)

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/api-keys/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}

Raporty e-mail(4)

GET/api/email-reportsJWT + Admin

Lista zaplanowanych raportów e-mail (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/email-reports" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "reports": [
    {
      "id": "uuid",
      "title": "Raport tygodniowy",
      "schedule": "weekly",
      "recipients": [
        "admin@firma.pl"
      ]
    }
  ]
}
POST/api/email-reportsJWT + Admin

Utworzenie zaplanowanego raportu e-mail (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/email-reports" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Raport dzienny","schedule":"daily","recipients":["admin@firma.pl"]}'
Zapytanie
{
  "title": "Raport dzienny",
  "schedule": "daily",
  "recipients": [
    "admin@firma.pl"
  ]
}
Odpowiedź
{
  "success": true,
  "report": {
    "id": "uuid"
  }
}
PUT/api/email-reports/:idJWT + Admin

Aktualizacja raportu e-mail (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/email-reports/:id" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Raport dzienny (v2)","schedule":"daily"}'
Zapytanie
{
  "title": "Raport dzienny (v2)",
  "schedule": "daily"
}
Odpowiedź
{
  "success": true
}
DELETE/api/email-reports/:idJWT + Admin

Usunięcie raportu e-mail (admin)

Pokaż przykład
cURL
curl -X DELETE "https://api.timehunter.pl/api/email-reports/:id" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true
}

Asystent AI(2)

POST/api/ai/chat-claudeJWT10/1 min

Czat z asystentem AI o danych pracy

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/ai/chat-claude" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"message":"Ile godzin przepracowałem w tym tygodniu?","context":"work_time"}'
Zapytanie
{
  "message": "Ile godzin przepracowałem w tym tygodniu?",
  "context": "work_time"
}
Odpowiedź
{
  "reply": "W tym tygodniu przepracowałeś 32.5 godziny..."
}
POST/api/ai/analyze-dbJWT + Admin10/1 min

Analiza bazy danych za pomocą AI (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/ai/analyze-db" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"query":"Pokaż pracowników z nadgodzinami w lutym"}'
Zapytanie
{
  "query": "Pokaż pracowników z nadgodzinami w lutym"
}
Odpowiedź
{
  "analysis": "...",
  "data": []
}

Webhooki(3)

GET/api/integrations/webhookJWT + Admin

Pobranie ustawień webhooka (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/integrations/webhook" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "webhookUrl": "https://...",
  "events": [
    "work.start",
    "work.stop"
  ]
}
PUT/api/integrations/webhookJWT + Admin

Aktualizacja ustawień webhooka (admin)

Pokaż przykład
cURL
curl -X PUT "https://api.timehunter.pl/api/integrations/webhook" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"webhookUrl":"https://example.com/hook","events":["work.start","work.stop","leave.request"]}'
Zapytanie
{
  "webhookUrl": "https://example.com/hook",
  "events": [
    "work.start",
    "work.stop",
    "leave.request"
  ]
}
Odpowiedź
{
  "success": true
}
POST/api/integrations/webhook/testJWT + Admin

Wysłanie testowego webhooka (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/integrations/webhook/test" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "success": true,
  "statusCode": 200
}

Układy pulpitu(2)

GET/api/dashboard/layoutJWT

Pobranie niestandardowego układu pulpitu użytkownika

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/dashboard/layout" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "layout": {
    "widgets": [
      "workStatus",
      "breakTimer",
      "leaveBalance"
    ]
  }
}
POST/api/dashboard/layoutJWT

Zapisanie układu pulpitu

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/dashboard/layout" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"widgets":["workStatus","breakTimer","quickTile"]}'
Zapytanie
{
  "widgets": [
    "workStatus",
    "breakTimer",
    "quickTile"
  ]
}
Odpowiedź
{
  "success": true
}

Lokalizacje(2)

GET/api/admin/locationsJWT + Admin

Pobranie wszystkich zarejestrowanych lokalizacji pracy (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/locations" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "locations": [
    {
      "id": "uuid",
      "name": "Biuro",
      "latitude": 50.2649,
      "longitude": 19.0238,
      "radius": 200
    }
  ]
}
GET/api/admin/location-trailJWT + Admin

Pobranie śladu lokalizacji GPS pracownika (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/admin/location-trail" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/admin/location-trail?userId=uuid&date=2026-02-15
Odpowiedź
{
  "trail": [
    {
      "lat": 50.2649,
      "lng": 19.0238,
      "timestamp": "08:05"
    }
  ]
}

Presety godzin(2)

GET/api/hour-presetsJWT

Pobranie presetów godzin do szybkiego wpisu czasu

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/hour-presets" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "presets": [
    {
      "id": "uuid",
      "name": "8h standard",
      "startTime": "08:00",
      "endTime": "16:00"
    }
  ]
}
POST/api/hour-presetsJWT + Admin

Utworzenie presetu godzin (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/hour-presets" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nocna zmiana","startTime":"22:00","endTime":"06:00"}'
Zapytanie
{
  "name": "Nocna zmiana",
  "startTime": "22:00",
  "endTime": "06:00"
}
Odpowiedź
{
  "success": true,
  "preset": {
    "id": "uuid"
  }
}

Przepływy zatwierdzania(2)

GET/api/approval-workflowsJWT + Admin

Lista przepływów zatwierdzania (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/approval-workflows" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "workflows": [
    {
      "id": "uuid",
      "name": "Urlopy",
      "steps": [
        "manager",
        "admin"
      ]
    }
  ]
}
POST/api/approval-workflowsJWT + Admin

Utworzenie przepływu zatwierdzania (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/approval-workflows" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nadgodziny","steps":[{"role":"manager","action":"approve"}]}'
Zapytanie
{
  "name": "Nadgodziny",
  "steps": [
    {
      "role": "manager",
      "action": "approve"
    }
  ]
}
Odpowiedź
{
  "success": true,
  "workflow": {
    "id": "uuid"
  }
}

Logi audytu(1)

GET/api/audit-logsJWT + Admin

Przeglądanie logów audytu (admin)

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/audit-logs" \
  -H "Authorization: Bearer <token>"
Zapytanie
GET /api/audit-logs?page=1&limit=50
Odpowiedź
{
  "logs": [
    {
      "id": "uuid",
      "action": "employee.created",
      "userId": "uuid",
      "timestamp": "2026-02-15T10:30:00"
    }
  ],
  "total": 150
}

Powiadomienia(1)

GET/api/notificationsJWT

Pobranie powiadomień użytkownika

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/notifications" \
  -H "Authorization: Bearer <token>"
Odpowiedź
{
  "notifications": [
    {
      "id": "uuid",
      "type": "leave_approved",
      "message": "Twój urlop został zatwierdzony",
      "read": false
    }
  ]
}

Auto-uzupełnianie(1)

POST/api/work-sessions/auto-fillJWT + Admin

Auto-uzupełnienie brakujących sesji pracy za miesiąc (admin)

Pokaż przykład
cURL
curl -X POST "https://api.timehunter.pl/api/work-sessions/auto-fill" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"userId":"uuid","month":"2026-02","startTime":"08:00","endTime":"16:00"}'
Zapytanie
{
  "userId": "uuid",
  "month": "2026-02",
  "startTime": "08:00",
  "endTime": "16:00"
}
Odpowiedź
{
  "success": true,
  "sessionsCreated": 20
}

Publiczne endpointy(2)

GET/Publiczny

Kontrola stanu — potwierdzenie działania API

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/"
Odpowiedź
{
  "status": "ok",
  "version": "1.0.0"
}
GET/api/app/latest-versionPubliczny

Pobranie informacji o najnowszej wersji aplikacji mobilnej

Pokaż przykład
cURL
curl -X GET "https://api.timehunter.pl/api/app/latest-version"
Odpowiedź
{
  "version": "1.0.0",
  "downloadUrl": "https://...",
  "releaseDate": "2026-02-12"
}

TimeHunter API v1.0 © 2026

Ta strona używa plików cookies

Używamy plików cookies, aby zapewnić prawidłowe działanie serwisu, analizować ruch i personalizować treści. Więcej informacji znajdziesz w naszej Polityce prywatności