Dokumentacja API

Klucz API tworzysz w „Konto i faktury” (plan Pro albo Biuro BHP). Klucz identyfikuje konto — odpowiedzi obejmują tylko firmy tego konta. Wszystkie odpowiedzi są w JSON, daty w formacie RRRR-MM-DD.

Uwierzytelnianie

Nagłówek Authorization: Bearer bhp_… w każdym zapytaniu.

curl -H "Authorization: Bearer bhp_TWOJ_KLUCZ" \
  https://behapro.pl/api/v1/organizations

Endpointy

Metoda i ścieżkaZakresCo zwraca / przyjmuje
GET /organizationsreadfirmy konta: id, name, nip, city
GET /employees?organization_id=readkartoteka bez PESEL i adresu; opcjonalnie &status=zatrudniony
POST /employeeswriteupsert pracowników (dopasowanie: employee_number, e-mail, imię i nazwisko); stanowisko po nazwie
GET /trainings?organization_id=readrejestr szkoleń BHP
GET /medical?organization_id=readbadania: typ, daty, status (bez treści orzeczeń)
GET /deadlines?organization_id=&days=90readterminy z centralnego rejestru

Przykład: dopisanie pracowników

curl -X POST https://behapro.pl/api/v1/employees \
  -H "Authorization: Bearer bhp_TWOJ_KLUCZ" \
  -H "Content-Type: application/json" \
  -d '{
    "organization_id": "UUID_FIRMY",
    "employees": [
      { "employee_number": "K-001", "first_name": "Jan", "last_name": "Nowak",
        "position": "Magazynier", "hired_at": "2026-10-01", "email": "jan@firma.pl" }
    ]
  }'
# -> { "created": 1, "updated": 0, "errors": [] }

Webhooki

Zdarzenie deadline.due wysyłamy raz dziennie razem z przypomnieniami e-mail. Ciało to JSON, podpis HMAC-SHA256 sekretu w nagłówku X-Behapro-Signature (format sha256=<hex>) liczony z surowego ciała. Odbiorca powinien odpowiedzieć kodem 2xx w ciągu 8 sekund.

POST https://twoj-system.pl/hook
X-Behapro-Event: deadline.due
X-Behapro-Signature: sha256=3f1a…

{
  "event": "deadline.due",
  "created_at": "2026-10-01T05:00:00.000Z",
  "data": {
    "organizations": [
      { "organization_id": "…", "organization_name": "Bistro Pod Lipą",
        "deadlines": [ { "id": "…", "entity_type": "badanie", "title": "Badanie lekarskie - Jan Nowak",
                         "due_at": "2026-10-15", "days_left": 14 } ] }
    ]
  }
}

Limity: 500 pracowników w jednym POST, brak innych limitów w tej wersji. Klucz można unieważnić w każdej chwili.

Błędy: 401 (brak/zły klucz), 403 (brak zakresu albo firma spoza konta), 400 (niepoprawne dane), 500 (błąd serwera).