API

Public API

Informacje ogólne o Comarch TNA API

Usługa Comarch TNA umożliwia integrację z zewnętrznymi systemami za pośrednictwem dedykowanego API, udostępniającego szereg pomocnych funkcjonalności. Komunikacja odbywa się przez wymianę obiektów JSON i zabezpieczona jest szyfrowanym protokołem HTTPS.

Możliwości dotyczące zarządzania pracownikami:

  • pobieranie listy pracowników
  • dodanie nowego pracownika
  • edycja danych pracownika
  • usunięcie pracownika
  • pobranie danych o pracowniku

Zakres danych dostępnych dla klucza wynika z uprawnień włączonych na kluczu. Uprawnienia klucza pojawiają się na liście uprawnień (scope) w odpowiedzi z punktu końcowego tokena.

Ustawienia serwisu (SERVICE_SETTINGS) — uprawnienie do odczytu konfiguracji usługi: urządzeń, bramek i lokalizacji, oraz do zarządzania identyfikatorami. Dostępne poziomy: Wyłączone, Odczyt, Modyfikacja.

Po aktualizacji systemu uprawnienie Ustawienia serwisu jest domyślnie wyłączone na wszystkich istniejących kluczach API. Aby korzystać z metod pobierania urządzeń, bramek i lokalizacji, administrator usługi musi włączyć je w konfiguracji klucza (Narzędzia → API).

Możliwości dotyczące zarządzania czasem pracy pracownika:

  • sprawdzenie aktualnej obecności pracownika
  • sprawdzenie historii wejść/wyjść

Aktywacja API

W celu aktywacji dostępu do API Comarch TNA wymagane jest wygenerowanie klucza dostępu dedykowanego dla usługi. W celu uzyskania takiego klucza należy wykonać następujące kroki:

  1. Logowanie do usługi na stronie https://tna.comarch.com.
  2. Przejście do sekcji "Narzędzia → API".
  3. Uruchomienie przycisku "Wygeneruj".
  4. Zapisanie identyfikatora klucza oraz samego klucza na potrzeby autoryzacji integrującej się usługi.

OAuth 2.0

Generowanie tokenu

Aplikacja kliencka generuje token wysyłając zapytanie (POST) do serwera autoryzującego z swoim identyfikatorem (client_id) oraz kluczem (secret):
https://tna.comarch.com/api/oauth/token

Zapytanie składa się z następujących nagłówków:

NazwaDozwolone wartościWymaganyOpis
Content-Typeapplication/x-www-form-urlencodedTak 
AuthorizationBasic [client_id:client_secret]TakWartość nagłówka Authorization musi być zakodowana w Base64 np. Basic U2ltcGxlQ2xpZW50SWQ6c2VjcmV0

Zapytanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
grant_typetextparamclient_credentialsTakMetoda autoryzacji

Przykładowe żądanie:

POST /oauth/token HTTP/1.1
Host: tna.comarch.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic U2ltcGxlQ2xpZW50SWQ6c2VjcmV0

grant_type=client_credentials

Przykładowa odpowiedź:

 {
"access_token": "2f1591a7-8202-4f90-b942-9e13a5ad4a14",
"token_type": "bearer",
"expires_in": 43090,
"scope": "EMPLOYEE_HISTORY_MANAGEMENT EMPLOYEE_MANAGEMENT"
}

Public API - 1.2.0

Zarządzanie czasem pracy pracownika

API Comarch TNA umożliwia wykonanie następujących operacji związanych z zarządzaniem czasem pracy pracowników:

  • Sprawdzenie aktualnej obecności pracownika
  • Sprawdzenie historii wejść/wyjść

 

Sprawdzenie aktualnej obecności pracownika

W celu pobrania aktualnej obecności pracownika należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v1/history/{userHash}/presence

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userSubscriptionHashtextURL TakIdentyfikator subskrypcji użytkownika do usunięcia. Zwracany na liście pracowników

Przykładowe żądanie:

https://tna.comarch.com/api/v1/history/5279a47d-eb21-448d-8cbc-fe51adbde2ed/presence

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
presencebool Taktrue - jeżeli użytkownik jest obecny w pracy, w przeciwnym wypadku false

Przykładowa odpowiedź:

{ "presence":true }

Sprawdzenie historii wejść/wyjść

W celu pobrania historii wejść/wyść pracownika należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v1/history/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userSubscriptionHashtextURL TakIdentyfikator subskrypcji użytkownika do usunięcia. Zwracany na liście pracowników
fromdateURL GETData ISO-8601NieData minimalna do pobrania wejść/wyjść od początku wskazanego dnia
tilldateURL GETData ISO-8601NieData maksymalna do pobrania wejść/wyjść do końca wskazanego dnia

Przykładowe żądanie:

https://tna.comarch.com/api/v1/history/5279a47d-eb21-448d-8cbc-fe51adbde2ed?from=2018-06-15&till=2018-06-20

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
timestamplong TakCzas aktywności użytkownika w formie EPOCH TIME
directiontextIN, OUTTakInformacja o rodzaju aktywności - wejście/wyjście
entry.descriptiontext TakNazwa bramki
entry.building.descriptiontext TakNazwa lokalizacji

Przykładowa odpowiedź:

[
{
"timestamp": 1528903571,
"direction": "IN",
"entry": {
"description": "D3.6",
"building": {
"description": "SSE 4"
}
}
},
{
"timestamp": 1528903590,
"direction": "OUT",
"entry": {
"description": "D3.6",
"building": {
"description": "SSE 4"
}
}
}
]

Zarządzanie pracownikami

API Comarch TNA umożliwia wykonanie następujących operacji związanych z zarządzaniem pracownikami:

  • Pobieranie listy pracowników
  • Dodanie nowego pracownika
  • Edycja danych pracownika
  • Usunięcie pracownika
  • Pobranie danych o pracowniku

Pobieranie listy pracowników

W celu pobrania listy pracowników dostępnych w usłudze należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v1/users

Przykładowe żądanie:

https://tna.comarch.com/api/v1/users

Zwracane dane (lista obiektów):

NazwaTypDozwolone wartościWymaganyOpis

userHash

text TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtextpl, de, fr, en, esTakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp użytkownika

Przykładowa odpowiedź:

[
 {
  "userHash": "5b0d6089-cfb2-47ee-892d-d7406ea0cb6f",
  "lang": "pl",
  "state": "INACTIVE",
  "userSubscriptionTimestamp": 1529917237926,
  "email": "jan.kowalski@tna.comarch.pl",
  "userType": "user",
  "nameAndLastname": "Jan Kowalski"
 },
 {
  "userHash": "j65ffi9z9p",
  "lang": "pl",
  "state": "ACTIVE",
  "userSubscriptionTimestamp": 1519992991242,
  "email": "anna.nowak@tna.comarch.pl",
  "userType": "employee",
  "nameAndLastname": "Anna Nowak"
 }
]

Dodanie nowego pracownika

W celu dodania do listy pracowników nowego pracownika należy przesłać żądanie (POST) na adres:

https://tna.comarch.com/api/v1/users

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
emailtextBODY TakAdres e-mail logowania
nameAndLastnametextBODY NieImię i nazwisko. Jeśli nie podane użyta zostanie część pola email przed znakiem "@"
languagetextBODY

pl, de, fr, en, es

TakJęzyk komunikacji z użytkownikiem

Przykładowe żądanie:

{
 "email":"jan.nowak@tna.comarch.com",
 "nameAndLastname":"Jan Nowak",
 "language":"pl"
}

Przykładowa odpowiedź:

{
  "userHash": "2w091r86vw",
  "nameAndLastname": "Public Api",
  "lang": "pl",
 "state": "INACTIVE",
 "createTimestamp": 1649055678456,
 "email": null,
 "userType": null
}

Edycja danych pracownika

W celu aktualizacji danych o pracowniku należy przesłać żądanie (PUT) na adres:

https://tna.comarch.com/api/v1/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextURL TakIdentyfikator subskrypcji użytkownika do edycji. Zwracany na liście pracowników
nametextBODY TakImię i nazwisko do aktualizacji dla pracownika

Przykładowe żądanie:

{
 "name":"Jan Kowalski"
}

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

 

Usunięcie pracownika

W celu usunięcia pracownika należy przesłać żądanie (DELETE) na adres:

https://tna.comarch.com/api/v1/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHash
textURL TakIdentyfikator subskrypcji użytkownika do usunięcia. Zwracany na liście pracowników

Przykładowe żądanie:

https://tna.comarch.com/api/v1/users/5279a47d

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

 

Pobranie danych o pracowniku

W celu aktualizacji danych o pracowniku należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v1/users/{userHash}

Przykładowe żądanie:

https://tna.comarch.com/api/v1/users/5279a47d

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis

userHash

text TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtext TakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp

Przykładowa odpowiedź:

{
 "userHash": "5b0d6089-cfb2-47ee-892d-d7406ea0cb6f",
 "lang": "pl",
 "state": "INACTIVE",
 "userSubscriptionTimestamp": 1529917237926,
 "email": "jan.kowalski@tna.comarch.pl",
 "userType": "user",
 "nameAndLastname": "Jan Kowalski"
}

Public API - 2.0.0

Powiadomienia

W celu wysłania powiadomienia push dla użytkownika należy przesłać żądanie (POST) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/users/{userHash}/notifications/push

Przykładowe żądanie:

 {
  "title":"Title of the message",
  "message":"This is a message",
  "rawBody":"This is a rawBody"
 }

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 201 Created.

Token dla powiadomień

Generowanie tokenu do autoryzacji w serwerze TNA-EVENTS jest możliwe poprzez wysłanie żądania (POST) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/events/tokens

Przykładowa odpowiedź:

 {
  "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "eventsService": {
   "host": "https://tna.comarch.com",
   "path": "/api/v2/events/scans/socket.io"
   }
 }

Zarządzanie pracownikami

Pobieranie listy pracowników

W celu pobrania listy pracowników dostępnych w usłudze należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/users

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users

Zwracane dane (lista obiektów):

NazwaTypDozwolone wartościWymaganyOpis

userHash

text TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtextpl, de, fr, en, esTakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp użytkownika

Przykładowa odpowiedź:

[
 {
  "userHash": "5b0d6089-cfb2-47ee-892d-d7406ea0cb6f",
  "lang": "pl",
  "state": "INACTIVE",
  "userSubscriptionTimestamp": 1529917237926,
  "email": "jan.kowalski@tna.comarch.pl",
  "userType": "user",
  "nameAndLastname": "Jan Kowalski"
 },
 {
  "userHash": "j65ffi9z9p",
  "lang": "pl",
  "state": "ACTIVE",
  "userSubscriptionTimestamp": 1519992991242,
  "email": "anna.nowak@tna.comarch.pl",
  "userType": "employee",
  "nameAndLastname": "Anna Nowak"
 }
]

Dodanie nowego pracownika

W celu dodania do listy pracowników nowego pracownika należy przesłać żądanie (POST) na adres:

https://tna.comarch.com/api/v2/users

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
emailtextBODY TakAdres e-mail logowania
nameAndLastnametextBODY NieImię i nazwisko. Jeśli nie podane użyta zostanie część pola email przed znakiem "@"
languagetextBODY

pl, de, fr, en, es

TakJęzyk komunikacji z użytkownikiem
settings.timeTypeTimeTypeBODY

GROSS, NET, GROSS_NET, NONE

TakUstawienia wyświetlania czasu pracy użytkownika

Przykładowe żądanie:

{
  "email":"jan.nowak@tna.comarch.com",
  "nameAndLastname":"Jan Nowak",
  "language":"pl",
 "settings": {
  "timeType":"GROSS"
 }
}

Przykładowa odpowiedź:

{
  "userHash": "2w091r86vw",
  "nameAndLastname": "Public Api",
  "lang": "pl",
 "state": "INACTIVE",
 "createTimestamp": 1649055678456,
 "email": null,
 "userType": null
}

Edycja danych pracownika

W celu aktualizacji danych o pracowniku należy przesłać żądanie (PUT) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextURL TakIdentyfikator subskrypcji użytkownika do edycji. Zwracany na liście pracowników
nametextBODY TakImię i nazwisko do aktualizacji dla pracownika

Przykładowe żądanie:

{
 "name":"Jan Kowalski"
}

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

 

Usunięcie pracownika

W celu usunięcia pracownika należy przesłać żądanie (DELETE) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextURL TakIdentyfikator subskrypcji użytkownika do usunięcia. Zwracany na liście pracowników

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users/5279a47d

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

 

Pobranie danych o pracowniku

W celu aktualizacji danych o pracowniku należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users/5279a47d

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis

userHash

text TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtext TakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp

Przykładowa odpowiedź:

{
 "userHash": "5b0d6089-cfb2-47ee-892d-d7406ea0cb6f",
 "lang": "pl",
 "state": "INACTIVE",
 "userSubscriptionTimestamp": 1529917237926,
 "email": "jan.kowalski@tna.comarch.pl",
 "userType": "user",
 "nameAndLastname": "Jan Kowalski"
}

 

Pobieranie historii wejść/wyjść pracowników

W celu pobrania historii wejść/wyść pracowników należy przesłać żądanie (GET) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/history

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
fromdateURL GETData ISO-8601NieData minimalna do pobrania wejść/wyjść od początku wskazanego dnia
tilldateURL GETData ISO-8601NieData maksymalna do pobrania wejść/wyjść do końca wskazanego dnia
pagelongparam NieNumer strony
pagelongparam NieNumer strony
sizelongparam NieRozmiar strony

Przykładowe żądanie:

https://tna.comarch.com/api/v2/history?from=2018-06-15&till=2018-06-20&page=3&size=2

Zwracane dane:

NazwaTypDozwolone wartościOpis
valuearray TakTablica obiektów z wejściami/wyjściami pracowników
userHashtext TakIdentyfikator pracownika
scansarray TakTablica wejść/wyjść pracownika
timestamplong TakCzas aktywności użytkownika w formie EPOCH TIME
directiontextIN, OUTTakInformacja o rodzaju aktywności - wejście/wyjście
entry.descriptiontext TakNazwa bramki
entry.building.descriptiontext TakNazwa lokalizacji
page.totalElementslong TakLiczba wszystkich elementów
page.totalPageslong TakLiczba stron
page.sizelong TakRozmiar strony
page.numberlong TakNumer strony
page.firstboolean TakCzy pierwsza strona
page.lastboolean TakCzy ostatnia strona
page.numberOfElementslong TakLiczba elementów na stronie

Przykładowa odpowiedź:

 {
  "value":[
    {
     "userHash":"0h70az3t2s",
     "scans":[
     {
      "timestamp": 1528903571,
      "direction": "IN",
     "entry": {
       "description": "D3.6",
       "building": {
       "description": "SSE 4"
    }
   }
   },
   {
   "timestamp": 1528903590,
   "direction": "OUT",
   "entry": {
    "description": "D3.6",
    "building": {
     "description": "SSE 4"
    }
   }
  }
  ]
 },
  {
   "userHash":"nm64xc6483",
    "scans":[
     {
     "timestamp": 1528903590,
     "direction": "IN",
     "entry": {
      "description": "D3.6",
     "building": {
      "description": "SSE 4"
     }
    }
   }
  ]
 },
  "page":{
   "totalElements": 16,
   "totalPages": 8,
   "size": 2,
   "number": 3,
   "first": false,
   "last": false,
   "numberOfElements": 2
  }
 }

Pobieranie szczegółowego raportu obecności pracownika

W celu pobrania raportu z podziałem na dni pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/users/w49ww977e9?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane:

Przykładowa odpowiedź:

 {
  "timeType":"GROSS_NET",
  "userTimeType":"GROSS_NET",
  "subscription":{
   "userHash":"vd0hb1jbvx",
   "name":"Jan Kowalski",
   "email":"test@comarch.pl",
   "etat":{
    "position": "Kierownik",
    "etatNumerator": 1,
    "etatDenominator": 1,
    "fullTimeDailyNorm": 480,
    "type": "DEFAULT",
    "validFrom": "2019-03-19",
   }
  },
   "days": [
   {
    "time": {
     "timeType": "GROSS_NET",
     "grossTime": 29717,
     "netTime": 29717
    },
    "date": "2020-01-01",
    "status": "PRESENCE",
    "workPlan": {
     "workingDay": true,
     "fixedTime": 30600
    },
    "in": "08:45:08",
    "out": "17:00:25",
    "balance": -883,
    "lateness": false
   },
   {…}
  ],
  "summary": {
   "workTime": 29717,
   "notEqualizedWorkTime": 0,
   "month": 12,
   "workedDays": 1,
   "differentDays": 0,
   "workPlanTime": 30600,
   "balance": -883,
   "notEqualizedBalance": -883,
   "workTimeGross": 29717,
   "workTimeNet": 29717,
   "notEqualizedWorkTimeGross": 0,
   "notEqualizedWorkTimeNet": 0
  }
 },

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podsumowaniem czasu pracy pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/users/{userHash}/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/users/w49ww977e9/summary?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane:

Przykładowa odpowiedź:

 {
  "timeType":"GROSS_NET",
  "userTimeType":"GROSS_NET",
  "subscription":{
   "userHash":"vd0hb1jbvx",
   "name":"Jan Kowalski",
   "email":"test@comarch.pl",
   "etat":{
    "position": "Kierownik",
    "etatNumerator": 1,
    "etatDenominator": 1,
    "fullTimeDailyNorm": 480,
    "type": "DEFAULT",
    "validFrom": "2019-03-19",
   }
  },
   "months": [
   {
    "workTime": 612000,
    "notEqualizedWorkTime": 0,
    "month": 12,
    "workedDays": 20,
    "differentDays": 0,
    "workPlanTime": 612000,
    "balance": 0,
    "notEqualizedBalance": 0,
    "workTimeGross": 612000,
    "workTimeNet": 612000,
    "notEqualizedWorkTimeGross": 0,
    "notEqualizedWorkTimeNet": 0
   },
   {…}
  ],
  "summary": {
   "workTime": 612000,
   "notEqualizedWorkTime": 0,
   "workedDays": 20,
   "differentDays": 0,
   "workPlanTime": 612000,
   "balance": 0,
   "notEqualizedBalance": 0,
   "workTimeGross": 612000,
   "workTimeNet": 612000,
   "notEqualizedWorkTimeGross": 0,
   "notEqualizedWorkTimeNet": 0
  }
 },

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podziałem na dni pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
datedatePath2020-01-01 Tak 
sizeintURL 20Nie 
pageintURL 0Nie 
searchtextURL    
includeArchivalboolURLtrue, falsefalsenieDołącza do raportu użytkowników archiwalnych

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports?date=2020-01-01

Zwracane dane:

Przykładowa odpowiedź:

 {
  "content":[
   {
     "timeType":"GROSS_NET",
     "userTimeType":"GROSS",
     "subscription":{
      "userHash":"y518uam23d",
      "name":"Jan Kowalski",
      "email":"test@comarch.pl",
      "archival": false,
      "etat":{
       "position": "Kierownik",
       "etatNumerator": 1,
       "etatDenominator": 1,
       "fullTimeDailyNorm": 480,
       "validFrom": "2019-03-18",
      }
     },
   "days": [
     {
       "time":{
        "timeType": "GROSS_NET",
        "grossTime": 29717,
        "netTime": 29717
       },
       "date": "2020-01-01",
       "status": "PRESENCE",
       "workPlan": {
        "workingDay": true,
        "fixedTime": 30600
       },
       "in": "08:45:08",
       "out": "17:00:25",
       "balance": -883,
       "lateness": false
     }
    ]
   }
  },
  "last": false,
  "totalElements": 89,
  "totalPages": 89,
  "sort": [
   {
    "direction": "ASC",
    "property": "name"
   }
  ],
  "numberOfElements": 1,
  "first": true,
  "size": 1,
  "number": 0
 },

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podsumowaniem czasu pracy pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
datedatePath2020-01-01 Tak 
sizeintURL 20Nie 
pageintURL 0Nie 
searchtextURL    
includeArchivalboolURLtrue, falsefalsenieDołącza do raportu użytkowników archiwalnych

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/summary ?fromDate=2020-01-01&tillDate=2020-09-30

Zwracane dane:

Przykładowa odpowiedź:

 {
  "content":[
   {
     "timeType":"GROSS_NET",
     "userTimeType":"GROSS",
     "subscription":{
      "userHash":"rxw7q52krm",
      "name":"Jan Kowalski",
      "email":"test@comarch.pl",
      "archival": false,
      "etat":{
       "position": "Kierownik",
       "etatNumerator": 1,
       "etatDenominator": 1,
       "fullTimeDailyNorm": 480,
       "type": "DEFAULT",
       "validFrom": "2018-08-10",
      }
     },
     "summary": {
       "time":{
       "workTime": 185126,
       "month": 1,
       "workedDays": 5,
       "differentDays": 1,
       "workPlanTime": 5844600,
       "balance": -5659474,
       "workTimeGross": 185126,
       "workTimeNet": 185126
     }
   },
   {...}
  },
  "totalElements": 89,
  "last": false,
  "totalPages": 9,
  "sort": [
   {
    "direction": "ASC",
    "property": "name"
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": true
   }
  ],
  "first": true,
  "numberOfElements": 10,
  "size": 10,
  "number": 0
 },

Typy wyliczeniowe

api/v2/presences

type:

LEAVE_ON_DEMAND,Urlop na żądania
VACATION,Urlop wypoczynkowy
SICK_LEAVE,Zwolnienie chorobowe
SPECIAL_LEAVE, 
OFFICIAL_TRIP,Delegacja
MANUALLY_ADDED,Obecność zgłoszona ręcznie
OTHER_CIRCUMSTANCES, 
TRAINING,Szkolenie
OTHER,Inne
HOME_OFFICE,Praca zdalna
OPTIMA_E_NIEOBECNOSC,
OPTIMA_INNA_NIEOBECNOSC,
OPTIMA_NIEOBECNOSC_USPRAWIEDLIWIONA,
OPTIMA_NIEOBECNOSC_NIEUSPRAWIEDLIWIONA,
OPTIMA_SLUZBA_WOJSKOWA,
OPTIMA_URLOP_BEZPLATNY_111,
OPTIMA_URLOP_BEZPLATNY_112,
OPTIMA_URLOP_MACIERZYNSKI,
OPTIMA_URLOP_MACIERZYNSKI_DODATKOWY,
OPTIMA_URLOP_OJCOWSKI,
OPTIMA_URLOP_OKOLICZNOSCIOWY,
OPTIMA_URLOP_OPIEKUNCZY_ZASILEK,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNI,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNIGODZ,
OPTIMA_URLOP_REHABILITACYJNY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_PRZY_PRACY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_W_DRODZE,
OPTIMA_URLOP_RODZICIELSKI,
OPTIMA_URLOP_SZKOLENIOWY,
OPTIMA_URLOP_WYCHOWAWCZY_121,
OPTIMA_URLOP_WYCHOWAWCZY_122,
OPTIMA_URLOP_WYPOCZYNKOWY,
OPTIMA_URLOP_WYPOCZYNKOWY_PLAN,
OPTIMA_URLOP_WYPOCZYNKOWY_TYMCZASOWY,
OPTIMA_ZWOLNIENIE_CHOROBOWE,
 

 

presenceStatus:

ACCEPTEDZaakceptowany
WAITINGNowy/oczekujący
ACCEPTED_AUTOMATICALLYZaakceptowany automatycznie
ACCEPTED_CORRECTEDZaakceptowany poprawiony
REJECTEDOdrzucony
CANCELEDAnulowany
REMOVEDUsunięty

 

api/v2/delegations

type:

DOMESTICKrajowa
FOREIGNZagraniczna

 

Status:

NEWNowa
REJECTEDOdrzucona
ACCEPTEDZaakceptowana
FOR_SETTLEMENTDo rozliczenia
SETTLEDRozliczona
CANCELEDAnulowana

 

modeOfTransportation:

PRIVATE_CARSamochód prywatny
COMPANY_CARSamochód służbowy
PLANESamolot
TRAINPociąg
BUSAutobus
TAXITaksówka
PUBLIC_TRANSPORTTransport publiczny
OTHERInne

 

api/v2/reports

status:

WORKING_DAY,Dzień pracujący
HOLIDAY,Święto
EMPTY,Brak planu pracy
DAY_OFF,Dzień wolny
PRESENCE,Obecność
UNEXCUSED_ABSENCE,Nieobecność
  
LEAVE_ON_DEMAND,Urlop na żądania
VACATION,Urlop wypoczynkowy
SICK_LEAVE,Zwolnienie chorobowe
SPECIAL_LEAVE, 
OFFICIAL_TRIP,Delegacja
MANUALLY_ADDED,Obecność zgłoszona ręcznie
OTHER_CIRCUMSTANCES, 
TRAINING,Szkolenie
OTHER,Inne
HOME_OFFICE,Praca zdalna
OPTIMA_E_NIEOBECNOSC,
OPTIMA_INNA_NIEOBECNOSC,
OPTIMA_NIEOBECNOSC_USPRAWIEDLIWIONA,
OPTIMA_NIEOBECNOSC_NIEUSPRAWIEDLIWIONA,
OPTIMA_SLUZBA_WOJSKOWA,
OPTIMA_URLOP_BEZPLATNY_111,
OPTIMA_URLOP_BEZPLATNY_112,
OPTIMA_URLOP_MACIERZYNSKI,
OPTIMA_URLOP_MACIERZYNSKI_DODATKOWY,
OPTIMA_URLOP_OJCOWSKI,
OPTIMA_URLOP_OKOLICZNOSCIOWY,
OPTIMA_URLOP_OPIEKUNCZY_ZASILEK,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNI,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNIGODZ,
OPTIMA_URLOP_REHABILITACYJNY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_PRZY_PRACY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_W_DRODZE,
OPTIMA_URLOP_RODZICIELSKI,
OPTIMA_URLOP_SZKOLENIOWY,
OPTIMA_URLOP_WYCHOWAWCZY_121,
OPTIMA_URLOP_WYCHOWAWCZY_122,
OPTIMA_URLOP_WYPOCZYNKOWY,
OPTIMA_URLOP_WYPOCZYNKOWY_PLAN,
OPTIMA_URLOP_WYPOCZYNKOWY_TYMCZASOWY,
OPTIMA_ZWOLNIENIE_CHOROBOWE,

Zgłoszenia pracowników

Pobieranie listy zgłoszeń pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/presences

Żądanie składa się z następujących parametrów:

NazwaTypDozwolone wartościDomyślna wartośćWymaganyOpis
fromDatedate2020-07-01 Tak 
tillDatedate2020-07-01 Tak 
typetextPresenceType Nie 
excludeTypetextPresenceType Nie 
statustextPresenceStatus Nie 
excludeStatustextPresenceStatus Nie 
sizeint 20Nie 
pageint 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/presences?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "subscription": {
     "userHash": "o29hhutr9c",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-06-25"
     }
    },
    "dates": [
    "2020-10-01"
     ],
    "type": "VACATION",
    "presenceStatus": "WAITING",
    "hash": "62mvsid33fgpr8ntr4ga1n87s9",
    "from": "2020-10-01",
    "to": "2020-10-01",
    "createDateTime": "2020-10-01T12:35:02.887"
     },
    {…}
   ],
  "totalElements": 9,
  "totalPages": 5,
  "last": false,
  "size": 2,
  "number": 0,
  "sort": [
   {
    "direction": "DESC",
    "property": "date"
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false
   }
   {
    "direction": "ASC",
    "property": "nameAndLastName",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": true
   }
  ],
  "numberOfElements": 2,
  "first": true
 }

Pobieranie listy zgłoszeń pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/presences/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
typetextURLPresenceType Nie 
excludeTypetextURLPresenceType Nie 
statustextURLPresenceStatus Nie 
excludeStatustextURLPresenceStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/presences/users/o29hhutr9c?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "subscription": {
     "userHash": "o29hhutr9c",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-06-25"
     }
    },
    "dates": [
    "2020-10-01"
     ],
    "type": "VACATION",
    "presenceStatus": "WAITING",
    "hash": "62mvsid33fgpr8ntr4ga1n87s9",
    "from": "2020-10-01",
    "to": "2020-10-01",
    "createDateTime": "2020-10-01T12:35:02.887"
     },
    {…}
   ],
  "totalElements": 9,
  "totalPages": 5,
  "last": false,
  "size": 2,
  "number": 0,
  "sort": [
   {
    "direction": "DESC",
    "property": "date"
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false
   }
   {
    "direction": "ASC",
    "property": "nameAndLastName",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": true
   }
  ],
  "numberOfElements": 2,
  "first": true
 }

Pobieranie listy delegacji pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/delegations

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
statustextURLDelegationStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/delegations?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "hash": "trgi7g3gc2sbddkcj5fm56lorh",
    "subscription": {
     "userHash": "w49ww977e9",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-08-01"
     }
    },
    "reportingPerson": {
     "userHash": "w49ww977e9",
     "name": " Jan Kowalski"
    },
    "from": "2018-08-01",
    "to": "2018-08-01",
    "type": "DOMESTIC",
    "remark": "komentarz",
    "modeOfTransportation": "PRIVATE_CAR",
    "address": "Kraków",
    "createDateTime": "2017-08-07T10:16:00.514Z",
    "status": "NEW"
     },
    {…}
   ],
  "totalElements": 90,
  "last": false,
  "totalPages": 90,
  "size": 10,
  "number": 0,
  "sort": null,
  "numberOfElements": 1,
  "first": true
 }

Pobieranie listy delegacji pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/delegations/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
statustextURLDelegationStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/delegations/users/w49ww977e9?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "hash": "trgi7g3gc2sbddkcj5fm56lorh",
    "subscription": {
     "userHash": "w49ww977e9",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-08-01"
     }
    },
    "reportingPerson": {
     "userHash": "w49ww977e9",
     "name": " Jan Kowalski"
    },
    "from": "2018-08-01",
    "to": "2018-08-01",
    "type": "DOMESTIC",
    "remark": "komentarz",
    "modeOfTransportation": "PRIVATE_CAR",
    "address": "Kraków",
    "createDateTime": "2017-08-07T10:16:00.514Z",
    "status": "WAITING"
     },
    {…}
   ],
  "totalElements": 90,
  "last": false,
  "totalPages": 90,
  "size": 10,
  "number": 0,
  "sort": null,
  "numberOfElements": 1,
  "first": true
 }


Public API - 2.1.0

Powiadomienia

W celu wysłania powiadomienia push dla użytkownika należy przesłać żądanie (POST) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/users/{userHash}/notifications/push

Przykładowe żądanie:

 {
  "title":"Title of the message",
  "message":"This is a message",
  "rawBody":"This is a rawBody"
 }

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 201 Created.

Token dla powiadomień

Generowanie tokenu do autoryzacji w serwerze TNA-EVENTS jest możliwe poprzez wysłanie żądania (POST) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/events/tokens

Przykładowa odpowiedź:

 {
  "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "eventsService": {
   "host": "https://tna.comarch.com",
   "path": "/api/v2/events/scans/socket.io"
   }
 }

Zarządzanie pracownikami

Pobieranie listy pracowników

W celu pobrania listy pracowników dostępnych w usłudze należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/users

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users

Zwracane dane (lista obiektów):

NazwaTypDozwolone wartościWymaganyOpis
userHashtext TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtextpl, de, fr, en, esTakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp użytkownika
identifierslista-NieLista identyfikatorów przypisanych do pracownika. Pole jest zawsze zwracane jako tablica; gdy pracownik nie ma przypisanych identyfikatorów, zwracana jest pusta tablica []. Lista nie zawiera identyfikatorów typu MOBILE_CARD.
etatslista-NieEtaty pracownika wraz z firmą i centrum, do których należą. Pole jest zawsze zwracane jako tablica; gdy pracownik nie ma etatów, zwracana jest pusta tablica [].
NazwaTypDozwolone wartościWymaganyOpis
identifiers[].identifierTypetextCARD, TAG, STICKER, OTHERNieTyp identyfikatora.
identifiers[].descriptiontext-NieOpis identyfikatora.
identifiers[].statustextDISABLED, ACTIVE_AVAILABLE, ACTIVE_IN_USE, SUSPENDED, IN_SHIPPING, ASSIGNED, LOSSNieStatus identyfikatora.
identifiers[].tagIdtext-NieIdentyfikator znacznika (tag) zapisany w identyfikatorze.
identifiers[].hashtext-NieUnikalny skrót (hash) identyfikatora.
identifiers[].stickerIdtext-NieNumer naklejki (sticker) identyfikatora.
NazwaTypDozwolone wartościWymaganyOpis
etats[].etatHashtextNieIdentyfikator etatu.
etats[].statetextACTIVE, INACTIVE, ARCHIVALNieStan etatu.
etats[].typetextPRIMARY, ADDITIONAL, DEFAULTNieTyp etatu: PRIMARY — podstawowy, ADDITIONAL — dodatkowy.
etats[].positiontextNieStanowisko.
etats[].etatNumeratorintNieLicznik wymiaru etatu — np. 1 dla wymiaru 1/2.
etats[].etatDenominatorintNieMianownik wymiaru etatu — np. 2 dla wymiaru 1/2.
etats[].validDateRangeslistaNieOkresy obowiązywania etatu. Każdy element ma pola from i to w formacie yyyy-MM-dd.
etats[].companyobiektNieFirma, do której należy etat: hash, name, location.
etats[].centerobiektNieCentrum, do którego należy etat: hash, code, name.

Przykładowa odpowiedź:

Pracownik z przypisanymi identyfikatorami i etatami (element listy z GET /api/v2/users):
{
"userHash": "a1b2c3d4e5f6a7b8c9d0",
"nameAndLastname": "Jan Kowalski",
"lang": "pl",
"state": "ACTIVE",
"createTimestamp": 1700000000000,
"email": "jan.kowalski@example.com",
"userType": "EMPLOYEE",
"identifiers": [
{
"identifierType": "CARD",
"description": "Karta wejściowa",
"status": "ACTIVE_IN_USE",
"tagId": "04A1B2C3D4E5F6",
"hash": "id1a2b3c4d5e6f7a8b9c0",
"stickerId": "ST-000123"
}
],
"etats": [
{
"etatHash": "e1a2b3c4d5e6f7a8b9c0",
"state": "ACTIVE",
"type": "PRIMARY",
"position": "Specjalista",
"etatNumerator": 1,
"etatDenominator": 1,
"validDateRanges": [
{
"from": "2026-01-01",
"to": "2026-12-31"
}
],
"company": {
"hash": "c1a2b3c4d5e6f7a8b9c0",
"name": "Comarch S.A.",
"location": "Kraków"
},
"center": {
"hash": "ce1a2b3c4d5e6f7a8b9",
"code": "DZ-IT",
"name": "Dział IT"
}
}
]
}
Pracownik bez przypisanych identyfikatorów i etatów — pola identifiers i etats zwracane jako puste tablice:
{
"userHash": "b2c3d4e5f6a7b8c9d0e1",
"nameAndLastname": "Anna Nowak",
"lang": "pl",
"state": "ACTIVE",
"createTimestamp": 1700000500000,
"email": "anna.nowak@example.com",
"userType": "EMPLOYEE",
"identifiers": [],
"etats": []
}

Pole etats jest zwracane wyłącznie na liście pracowników. Zasób „Pobranie danych o pracowniku" (GET https://tna.comarch.com/api/v2/users/{userHash}) tego pola nie zwraca — integrator, który potrzebuje etatów konkretnego pracownika, korzysta z listy.

Dodanie nowego pracownika

W celu dodania do listy pracowników nowego pracownika należy przesłać żądanie (POST) na adres:

https://tna.comarch.com/api/v2/users

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
emailtextBODY TakAdres e-mail logowania
nameAndLastnametextBODY NieImię i nazwisko. Jeśli nie podane użyta zostanie część pola email przed znakiem "@"
languagetextBODYpl, de, fr, en, esTakJęzyk komunikacji z użytkownikiem
settings.timeTypeTimeTypeBODYGROSS, NET, GROSS_NET, NONETakUstawienia wyświetlania czasu pracy użytkownika

Przykładowe żądanie:

{
"email":"jan.nowak@tna.comarch.com",
"nameAndLastname":"Jan Nowak",
"language":"pl",
"settings": {
"timeType":"GROSS"
}
}

Przykładowa odpowiedź:

{
"userHash": "2w091r86vw",
"nameAndLastname": "Public Api",
"lang": "pl",
"state": "INACTIVE",
"createTimestamp": 1649055678456,
"email": null,
"userType": null
}

Edycja danych pracownika

W celu aktualizacji danych o pracowniku należy przesłać żądanie (PUT) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextURL TakIdentyfikator subskrypcji użytkownika do edycji. Zwracany na liście pracowników
nametextBODY TakImię i nazwisko do aktualizacji dla pracownika

Przykładowe żądanie:

{
"name":"Jan Kowalski"
}

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

Usunięcie pracownika

W celu usunięcia pracownika należy przesłać żądanie (DELETE) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextURL TakIdentyfikator subskrypcji użytkownika do usunięcia. Zwracany na liście pracowników

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users/5279a47d

Odpowiedź nie zawiera dodatkowych informacji. Zwracany jest status HTTP 200 OK

Pobranie danych o pracowniku

W celu aktualizacji danych o pracowniku należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/users/{userHash}

Przykładowe żądanie:

https://tna.comarch.com/api/v2/users/5279a47d

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
userHashtext TakIdentyfikator subskrypcji użytkownika
nameAndLastnametext TakImię i nazwisko
langtext TakJęzyk
statetextACTIVE, INACTIVETakStan subskrypcji
userSubscriptionTimestampint TakCzas włączenia subskrypcji w formie EPOCH TIME
emailtext TakAdres e-mail
userTypetextuser, employee, companyTakTyp
identifierslista-NieLista identyfikatorów przypisanych do pracownika. Pole jest zawsze zwracane jako tablica; gdy pracownik nie ma przypisanych identyfikatorów, zwracana jest pusta tablica []. Lista nie zawiera identyfikatorów typu MOBILE_CARD.
NazwaTypDozwolone wartościWymaganyOpis
identifiers[].identifierTypetextCARD, TAG, STICKER, OTHERNieTyp identyfikatora.
identifiers[].descriptiontext-NieOpis identyfikatora.
identifiers[].statustextDISABLED, ACTIVE_AVAILABLE, ACTIVE_IN_USE, SUSPENDED, IN_SHIPPING, ASSIGNED, LOSSNieStatus identyfikatora.
identifiers[].tagIdtext-NieIdentyfikator znacznika (tag) zapisany w identyfikatorze.
identifiers[].hashtext-NieUnikalny skrót (hash) identyfikatora.
identifiers[].stickerIdtext-NieNumer naklejki (sticker) identyfikatora.

Przykładowa odpowiedź:

Pracownik z przypisanymi identyfikatorami (GET /api/v2/users/{userHash}):

{
  "userHash": "a1b2c3d4e5f6a7b8c9d0",
  "nameAndLastname": "Jan Kowalski",
  "lang": "pl",
  "state": "ACTIVE",
  "createTimestamp": 1700000000000,
  "email": "jan.kowalski@example.com",
  "userType": "EMPLOYEE",
  "identifiers": [
    {
      "identifierType": "CARD",
      "description": "Karta wejściowa",
      "status": "ACTIVE_IN_USE",
      "tagId": "04A1B2C3D4E5F6",
      "hash": "id1a2b3c4d5e6f7a8b9c0",
      "stickerId": "ST-000123"
    },
    {
      "identifierType": "STICKER",
      "description": "Naklejka NFC",
      "status": "ASSIGNED",
      "tagId": "08F1E2D3C4B5A6",
      "hash": "id9z8y7x6w5v4u3t2s1r0",
      "stickerId": "ST-000456"
    }
  ]
}

Pracownik bez przypisanych identyfikatorów — pole identifiers zwracane jako pusta tablica:

{
  "userHash": "b2c3d4e5f6a7b8c9d0e1",
  "nameAndLastname": "Anna Nowak",
  "lang": "pl",
  "state": "ACTIVE",
  "createTimestamp": 1700000500000,
  "email": "anna.nowak@example.com",
  "userType": "EMPLOYEE",
  "identifiers": []
}

Pobieranie historii wejść/wyjść pracowników

W celu pobrania historii wejść/wyść pracowników należy przesłać żądanie (GET) wraz z nagłówkiem Authorization zawierającym token dla TNA-PUBLIC-API na adres:
https://tna.comarch.com/api/v2/history

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
fromdateURL GETData ISO-8601NieData minimalna do pobrania wejść/wyjść od początku wskazanego dnia
tilldateURL GETData ISO-8601NieData maksymalna do pobrania wejść/wyjść do końca wskazanego dnia
pagelongparam NieNumer strony
pagelongparam NieNumer strony
sizelongparam NieRozmiar strony

Przykładowe żądanie:

https://tna.comarch.com/api/v2/history?from=2018-06-15&till=2018-06-20&page=3&size=2

Zwracane dane:

NazwaTypDozwolone wartościOpis
valuearray TakTablica obiektów z wejściami/wyjściami pracowników
userHashtext TakIdentyfikator pracownika
scansarray TakTablica wejść/wyjść pracownika
timestamplong TakCzas aktywności użytkownika w formie EPOCH TIME
directiontextIN, OUTTakInformacja o rodzaju aktywności - wejście/wyjście
entry.descriptiontext TakNazwa bramki
entry.building.descriptiontext TakNazwa lokalizacji
page.totalElementslong TakLiczba wszystkich elementów
page.totalPageslong TakLiczba stron
page.sizelong TakRozmiar strony
page.numberlong TakNumer strony
page.firstboolean TakCzy pierwsza strona
page.lastboolean TakCzy ostatnia strona
page.numberOfElementslong TakLiczba elementów na stronie

Przykładowa odpowiedź:

 {
"value":[
{
"userHash":"0h70az3t2s",
"scans":[
{
"timestamp": 1528903571,
"direction": "IN",
"entry": {
"description": "D3.6",
"building": {
"description": "SSE 4"
}
}
},
{
"timestamp": 1528903590,
"direction": "OUT",
"entry": {
"description": "D3.6",
"building": {
"description": "SSE 4"
}
}
}
]
},
{
"userHash":"nm64xc6483",
"scans":[
{
"timestamp": 1528903590,
"direction": "IN",
"entry": {
"description": "D3.6",
"building": {
"description": "SSE 4"
}
}
}
]
},
"page":{
"totalElements": 16,
"totalPages": 8,
"size": 2,
"number": 3,
"first": false,
"last": false,
"numberOfElements": 2
}
}

Pobieranie szczegółowego raportu obecności pracownika

W celu pobrania raportu z podziałem na dni pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/users/w49ww977e9?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane:

Przykładowa odpowiedź:

 {
"timeType":"GROSS_NET",
"userTimeType":"GROSS_NET",
"subscription":{
"userHash":"vd0hb1jbvx",
"name":"Jan Kowalski",
"email":"test@comarch.pl",
"etat":{
"position": "Kierownik",
"etatNumerator": 1,
"etatDenominator": 1,
"fullTimeDailyNorm": 480,
"type": "DEFAULT",
"validFrom": "2019-03-19",
}
},
"days": [
{
"time": {
"timeType": "GROSS_NET",
"grossTime": 29717,
"netTime": 29717
},
"date": "2020-01-01",
"status": "PRESENCE",
"workPlan": {
"workingDay": true,
"fixedTime": 30600
},
"in": "08:45:08",
"out": "17:00:25",
"balance": -883,
"lateness": false
},
{…}
],
"summary": {
"workTime": 29717,
"notEqualizedWorkTime": 0,
"month": 12,
"workedDays": 1,
"differentDays": 0,
"workPlanTime": 30600,
"balance": -883,
"notEqualizedBalance": -883,
"workTimeGross": 29717,
"workTimeNet": 29717,
"notEqualizedWorkTimeGross": 0,
"notEqualizedWorkTimeNet": 0
}
},

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podsumowaniem czasu pracy pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/users/{userHash}/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/users/w49ww977e9/summary?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane:

Przykładowa odpowiedź:

 {
"timeType":"GROSS_NET",
"userTimeType":"GROSS_NET",
"subscription":{
"userHash":"vd0hb1jbvx",
"name":"Jan Kowalski",
"email":"test@comarch.pl",
"etat":{
"position": "Kierownik",
"etatNumerator": 1,
"etatDenominator": 1,
"fullTimeDailyNorm": 480,
"type": "DEFAULT",
"validFrom": "2019-03-19",
}
},
"months": [
{
"workTime": 612000,
"notEqualizedWorkTime": 0,
"month": 12,
"workedDays": 20,
"differentDays": 0,
"workPlanTime": 612000,
"balance": 0,
"notEqualizedBalance": 0,
"workTimeGross": 612000,
"workTimeNet": 612000,
"notEqualizedWorkTimeGross": 0,
"notEqualizedWorkTimeNet": 0
},
{…}
],
"summary": {
"workTime": 612000,
"notEqualizedWorkTime": 0,
"workedDays": 20,
"differentDays": 0,
"workPlanTime": 612000,
"balance": 0,
"notEqualizedBalance": 0,
"workTimeGross": 612000,
"workTimeNet": 612000,
"notEqualizedWorkTimeGross": 0,
"notEqualizedWorkTimeNet": 0
}
},

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podziałem na dni pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
datedatePath2020-01-01 Tak 
sizeintURL 20Nie 
pageintURL 0Nie 
searchtextURL    
includeArchivalboolURLtrue, falsefalsenieDołącza do raportu użytkowników archiwalnych

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports?date=2020-01-01

Zwracane dane:

Przykładowa odpowiedź:

 {
"content":[
{
"timeType":"GROSS_NET",
"userTimeType":"GROSS",
"subscription":{
"userHash":"y518uam23d",
"name":"Jan Kowalski",
"email":"test@comarch.pl",
"archival": false,
"etat":{
"position": "Kierownik",
"etatNumerator": 1,
"etatDenominator": 1,
"fullTimeDailyNorm": 480,
"validFrom": "2019-03-18",
}
},
"days": [
{
"time":{
"timeType": "GROSS_NET",
"grossTime": 29717,
"netTime": 29717
},
"date": "2020-01-01",
"status": "PRESENCE",
"workPlan": {
"workingDay": true,
"fixedTime": 30600
},
"in": "08:45:08",
"out": "17:00:25",
"balance": -883,
"lateness": false
}
]
}
},
"last": false,
"totalElements": 89,
"totalPages": 89,
"sort": [
{
"direction": "ASC",
"property": "name"
}
],
"numberOfElements": 1,
"first": true,
"size": 1,
"number": 0
},

Pobieranie ogólnego raportu obecności pracownika

W celu pobrania raportu z podsumowaniem czasu pracy pracowników należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/reports/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
datedatePath2020-01-01 Tak 
sizeintURL 20Nie 
pageintURL 0Nie 
searchtextURL    
includeArchivalboolURLtrue, falsefalsenieDołącza do raportu użytkowników archiwalnych

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/summary ?fromDate=2020-01-01&tillDate=2020-09-30

Zwracane dane:

Przykładowa odpowiedź:

 {
"content":[
{
"timeType":"GROSS_NET",
"userTimeType":"GROSS",
"subscription":{
"userHash":"rxw7q52krm",
"name":"Jan Kowalski",
"email":"test@comarch.pl",
"archival": false,
"etat":{
"position": "Kierownik",
"etatNumerator": 1,
"etatDenominator": 1,
"fullTimeDailyNorm": 480,
"type": "DEFAULT",
"validFrom": "2018-08-10",
}
},
"summary": {
"time":{
"workTime": 185126,
"month": 1,
"workedDays": 5,
"differentDays": 1,
"workPlanTime": 5844600,
"balance": -5659474,
"workTimeGross": 185126,
"workTimeNet": 185126
}
},
{...}
},
"totalElements": 89,
"last": false,
"totalPages": 9,
"sort": [
{
"direction": "ASC",
"property": "name"
"ignoreCase": false,
"nullHandling": "NATIVE",
"ascending": true
}
],
"first": true,
"numberOfElements": 10,
"size": 10,
"number": 0
},

Typy wyliczeniowe

api/v2/presences

type:

LEAVE_ON_DEMAND,Urlop na żądania
VACATION,Urlop wypoczynkowy
SICK_LEAVE,Zwolnienie chorobowe
SPECIAL_LEAVE, 
OFFICIAL_TRIP,Delegacja
MANUALLY_ADDED,Obecność zgłoszona ręcznie
OTHER_CIRCUMSTANCES, 
TRAINING,Szkolenie
OTHER,Inne
HOME_OFFICE,Praca zdalna
OPTIMA_E_NIEOBECNOSC,
OPTIMA_INNA_NIEOBECNOSC,
OPTIMA_NIEOBECNOSC_USPRAWIEDLIWIONA,
OPTIMA_NIEOBECNOSC_NIEUSPRAWIEDLIWIONA,
OPTIMA_SLUZBA_WOJSKOWA,
OPTIMA_URLOP_BEZPLATNY_111,
OPTIMA_URLOP_BEZPLATNY_112,
OPTIMA_URLOP_MACIERZYNSKI,
OPTIMA_URLOP_MACIERZYNSKI_DODATKOWY,
OPTIMA_URLOP_OJCOWSKI,
OPTIMA_URLOP_OKOLICZNOSCIOWY,
OPTIMA_URLOP_OPIEKUNCZY_ZASILEK,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNI,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNIGODZ,
OPTIMA_URLOP_REHABILITACYJNY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_PRZY_PRACY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_W_DRODZE,
OPTIMA_URLOP_RODZICIELSKI,
OPTIMA_URLOP_SZKOLENIOWY,
OPTIMA_URLOP_WYCHOWAWCZY_121,
OPTIMA_URLOP_WYCHOWAWCZY_122,
OPTIMA_URLOP_WYPOCZYNKOWY,
OPTIMA_URLOP_WYPOCZYNKOWY_PLAN,
OPTIMA_URLOP_WYPOCZYNKOWY_TYMCZASOWY,
OPTIMA_ZWOLNIENIE_CHOROBOWE,
 

presenceStatus:

ACCEPTEDZaakceptowany
WAITINGNowy/oczekujący
ACCEPTED_AUTOMATICALLYZaakceptowany automatycznie
ACCEPTED_CORRECTEDZaakceptowany poprawiony
REJECTEDOdrzucony
CANCELEDAnulowany
REMOVEDUsunięty

api/v2/delegations

type:

DOMESTICKrajowa
FOREIGNZagraniczna

Status:

NEWNowa
REJECTEDOdrzucona
ACCEPTEDZaakceptowana
FOR_SETTLEMENTDo rozliczenia
SETTLEDRozliczona
CANCELEDAnulowana

modeOfTransportation:

PRIVATE_CARSamochód prywatny
COMPANY_CARSamochód służbowy
PLANESamolot
TRAINPociąg
BUSAutobus
TAXITaksówka
PUBLIC_TRANSPORTTransport publiczny
OTHERInne

api/v2/reports

status:

WORKING_DAY,Dzień pracujący
HOLIDAY,Święto
EMPTY,Brak planu pracy
DAY_OFF,Dzień wolny
PRESENCE,Obecność
UNEXCUSED_ABSENCE,Nieobecność
  
LEAVE_ON_DEMAND,Urlop na żądania
VACATION,Urlop wypoczynkowy
SICK_LEAVE,Zwolnienie chorobowe
SPECIAL_LEAVE, 
OFFICIAL_TRIP,Delegacja
MANUALLY_ADDED,Obecność zgłoszona ręcznie
OTHER_CIRCUMSTANCES, 
TRAINING,Szkolenie
OTHER,Inne
HOME_OFFICE,Praca zdalna
OPTIMA_E_NIEOBECNOSC,
OPTIMA_INNA_NIEOBECNOSC,
OPTIMA_NIEOBECNOSC_USPRAWIEDLIWIONA,
OPTIMA_NIEOBECNOSC_NIEUSPRAWIEDLIWIONA,
OPTIMA_SLUZBA_WOJSKOWA,
OPTIMA_URLOP_BEZPLATNY_111,
OPTIMA_URLOP_BEZPLATNY_112,
OPTIMA_URLOP_MACIERZYNSKI,
OPTIMA_URLOP_MACIERZYNSKI_DODATKOWY,
OPTIMA_URLOP_OJCOWSKI,
OPTIMA_URLOP_OKOLICZNOSCIOWY,
OPTIMA_URLOP_OPIEKUNCZY_ZASILEK,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNI,
OPTIMA_URLOP_OPIEKUNCZY_188_2DNIGODZ,
OPTIMA_URLOP_REHABILITACYJNY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_PRZY_PRACY,
OPTIMA_URLOP_REHABILITACYJNY_WYPADEK_W_DRODZE,
OPTIMA_URLOP_RODZICIELSKI,
OPTIMA_URLOP_SZKOLENIOWY,
OPTIMA_URLOP_WYCHOWAWCZY_121,
OPTIMA_URLOP_WYCHOWAWCZY_122,
OPTIMA_URLOP_WYPOCZYNKOWY,
OPTIMA_URLOP_WYPOCZYNKOWY_PLAN,
OPTIMA_URLOP_WYPOCZYNKOWY_TYMCZASOWY,
OPTIMA_ZWOLNIENIE_CHOROBOWE,

Zarządzanie identyfikatorami

Zasoby w tej sekcji umożliwiają pobieranie danych o identyfikatorach przypisanych w ramach serwisu. Dostęp do zasobów wymaga uprawnienia SERVICE_SETTINGS (Ustawienia serwisu) — uprawnienie to pojawia się na liście uprawnień (scope) w odpowiedzi z punktu końcowego tokena. Wymagane wcześniej uprawnienie IDENTIFIERS_MANAGEMENT nie jest już używane. Identyfikatory typu MOBILE_CARD nie są zwracane przez żaden z poniższych zasobów.

Pobranie danych o identyfikatorze

Aby pobrać dane pojedynczego identyfikatora, należy przesłać żądanie (GET) na adres https://tna.comarch.com/api/v2/identifiers/{hash}.

Parametry ścieżki:

NazwaTypDozwolone wartościWymaganyOpis
hashtextTakUnikalny skrót (hash) identyfikatora.

 

Odpowiedź:

NazwaTypDozwolone wartościWymaganyOpis
identifierTypetextCARD, TAG, STICKER, OTHERNieTyp identyfikatora.
descriptiontextNieOpis identyfikatora.
statustextDISABLED, ACTIVE_AVAILABLE, ACTIVE_IN_USE, SUSPENDED, IN_SHIPPING, ASSIGNED, LOSSNieStatus identyfikatora.
tagIdtextNieIdentyfikator znacznika (tag) zapisany w identyfikatorze.
hashtextNieUnikalny skrót (hash) identyfikatora.
stickerIdtextNieNumer naklejki (sticker) identyfikatora.
userobiektNieDane pracownika, do którego identyfikator jest przypisany. Pole jest pomijane, gdy identyfikator nie jest przypisany do żadnego pracownika.
user.userHashtextNieUnikalny skrót (hash) pracownika.
user.nameAndLastNametextNieImię i nazwisko pracownika.
user.firstNametextNieImię pracownika.
user.lastNametextNieNazwisko pracownika.
user.emailtextNieAdres e-mail pracownika.

 

Jeżeli identyfikator o podanym hash nie istnieje, nie należy do serwisu wywołującego lub jest identyfikatorem typu MOBILE_CARD, zwracany jest kod odpowiedzi 404 (Not Found). Zasób ten może zwrócić identyfikator w dowolnym statusie poza identyfikatorami typu MOBILE_CARD.

Przykład — identyfikator przypisany do pracownika:

{
  "identifierType": "CARD",
  "description": "Karta wejściowa",
  "status": "ACTIVE_IN_USE",
  "tagId": "04A1B2C3D4E5F6",
  "hash": "id1a2b3c4d5e6f7a8b9c0",
  "stickerId": "ST-000123",
  "user": {
    "userHash": "a1b2c3d4e5f6a7b8c9d0",
    "nameAndLastName": "Jan Kowalski",
    "firstName": "Jan",
    "lastName": "Kowalski",
    "email": "jan.kowalski@example.com"
  }
}
Przykład — identyfikator nieprzypisany (pole user jest pomijane):
{
  "identifierType": "STICKER",
  "description": "Naklejka NFC (wolna)",
  "status": "ACTIVE_AVAILABLE",
  "tagId": "08F1E2D3C4B5A6",
  "hash": "id9z8y7x6w5v4u3t2s1r0",
  "stickerId": "ST-000456"
}

Pobieranie listy identyfikatorów

Aby pobrać listę identyfikatorów serwisu, należy przesłać żądanie (GET) na adres https://tna.comarch.com/api/v2/identifiers.

Parametry zapytania:

NazwaTypFormaDomyślna wartośćWymaganyOpis
pageintquery0NieNumer pobieranej strony (numeracja od 0).
sizeintquery20NieLiczba elementów na stronie.

Lista jest domyślnie sortowana rosnąco po polu stickerId. Lista nie zawiera identyfikatorów typu MOBILE_CARD ani identyfikatorów w statusie IN_SHIPPING.

Struktura pojedynczego elementu listy (content[]) jest taka sama jak w odpowiedzi zasobu „Pobranie danych o identyfikatorze” (pola identifierType, description, status, tagId, hash, stickerId oraz opcjonalny obiekt user).

Przykład odpowiedzi:

{
  "content": [
    {
      "identifierType": "CARD",
      "description": "Karta wejściowa",
      "status": "ACTIVE_IN_USE",
      "tagId": "04A1B2C3D4E5F6",
      "hash": "id1a2b3c4d5e6f7a8b9c0",
      "stickerId": "ST-000123",
      "user": {
        "userHash": "a1b2c3d4e5f6a7b8c9d0",
        "nameAndLastName": "Jan Kowalski",
        "firstName": "Jan",
        "lastName": "Kowalski",
        "email": "jan.kowalski@example.com"
      }
    },
    {
      "identifierType": "STICKER",
      "description": "Naklejka NFC (wolna)",
      "status": "ACTIVE_AVAILABLE",
      "tagId": "08F1E2D3C4B5A6",
      "hash": "id9z8y7x6w5v4u3t2s1r0",
      "stickerId": "ST-000456"
    }
  ],
  "totalElements": 2,
  "totalPages": 1,
  "last": true,
  "size": 20,
  "number": 0,
  "sort": {
    "sorted": true,
    "unsorted": false,
    "empty": false
  },
  "numberOfElements": 2,
  "first": true
}

Zgłoszenia pracowników

Pobieranie listy zgłoszeń pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/presences

Żądanie składa się z następujących parametrów:

NazwaTypDozwolone wartościDomyślna wartośćWymaganyOpis
fromDatedate2020-07-01 Tak 
tillDatedate2020-07-01 Tak 
typetextPresenceType Nie 
excludeTypetextPresenceType Nie 
statustextPresenceStatus Nie 
excludeStatustextPresenceStatus Nie 
sizeint 20Nie 
pageint 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/presences?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "subscription": {
     "userHash": "o29hhutr9c",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-06-25"
     }
    },
    "dates": [
    "2020-10-01"
     ],
    "type": "VACATION",
    "presenceStatus": "WAITING",
    "hash": "62mvsid33fgpr8ntr4ga1n87s9",
    "from": "2020-10-01",
    "to": "2020-10-01",
    "createDateTime": "2020-10-01T12:35:02.887"
     },
    {…}
   ],
  "totalElements": 9,
  "totalPages": 5,
  "last": false,
  "size": 2,
  "number": 0,
  "sort": [
   {
    "direction": "DESC",
    "property": "date"
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false
   }
   {
    "direction": "ASC",
    "property": "nameAndLastName",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": true
   }
  ],
  "numberOfElements": 2,
  "first": true
 }

Pobieranie listy zgłoszeń pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/presences/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
typetextURLPresenceType Nie 
excludeTypetextURLPresenceType Nie 
statustextURLPresenceStatus Nie 
excludeStatustextURLPresenceStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/presences/users/o29hhutr9c?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "subscription": {
     "userHash": "o29hhutr9c",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-06-25"
     }
    },
    "dates": [
    "2020-10-01"
     ],
    "type": "VACATION",
    "presenceStatus": "WAITING",
    "hash": "62mvsid33fgpr8ntr4ga1n87s9",
    "from": "2020-10-01",
    "to": "2020-10-01",
    "createDateTime": "2020-10-01T12:35:02.887"
     },
    {…}
   ],
  "totalElements": 9,
  "totalPages": 5,
  "last": false,
  "size": 2,
  "number": 0,
  "sort": [
   {
    "direction": "DESC",
    "property": "date"
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false
   }
   {
    "direction": "ASC",
    "property": "nameAndLastName",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": true
   }
  ],
  "numberOfElements": 2,
  "first": true
 }

Pobieranie listy delegacji pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/delegations

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
statustextURLDelegationStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/delegations?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "hash": "trgi7g3gc2sbddkcj5fm56lorh",
    "subscription": {
     "userHash": "w49ww977e9",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-08-01"
     }
    },
    "reportingPerson": {
     "userHash": "w49ww977e9",
     "name": " Jan Kowalski"
    },
    "from": "2018-08-01",
    "to": "2018-08-01",
    "type": "DOMESTIC",
    "remark": "komentarz",
    "modeOfTransportation": "PRIVATE_CAR",
    "address": "Kraków",
    "createDateTime": "2017-08-07T10:16:00.514Z",
    "status": "NEW"
     },
    {…}
   ],
  "totalElements": 90,
  "last": false,
  "totalPages": 90,
  "size": 10,
  "number": 0,
  "sort": null,
  "numberOfElements": 1,
  "first": true
 }

Pobieranie listy delegacji pracowników

W celu pobrania listy delegacji pracownika należy przesłać żądanie (GET) na adres:
https://tna.comarch.com/api/v2/delegations/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
userHashtextPath  Tak 
fromDatedateURL2020-07-01 Tak 
tillDatedateURL2020-07-01 Tak 
statustextURLDelegationStatus Nie 
sizeintURL 20Nie 
pageintURL 0Nie 

Przykładowe żądanie:

https://tna.comarch.com/api/v2/delegations/users/w49ww977e9?fromDate=2020-01-01&tillDate=2020-12-31&size=10&page=1

Zwracane dane (strona obiektów):

Przykładowa odpowiedź:

 {
  "content":[
   {
    "hash": "trgi7g3gc2sbddkcj5fm56lorh",
    "subscription": {
     "userHash": "w49ww977e9",
     "name": "Jan Kowalski",
     "email": "test@comarch.pl",
     "etat": {
      "position": "Kierownik",
      "etatNumerator": 1,
      "etatDenominator": 1,
      "fullTimeDailyNorm": 480,
      "type": "DEFAULT",
      "validFrom": "2020-08-01"
     }
    },
    "reportingPerson": {
     "userHash": "w49ww977e9",
     "name": " Jan Kowalski"
    },
    "from": "2018-08-01",
    "to": "2018-08-01",
    "type": "DOMESTIC",
    "remark": "komentarz",
    "modeOfTransportation": "PRIVATE_CAR",
    "address": "Kraków",
    "createDateTime": "2017-08-07T10:16:00.514Z",
    "status": "WAITING"
     },
    {…}
   ],
  "totalElements": 90,
  "last": false,
  "totalPages": 90,
  "size": 10,
  "number": 0,
  "sort": null,
  "numberOfElements": 1,
  "first": true
 }


Ustawienia serwisu

Zasoby w tej sekcji umożliwiają pobieranie konfiguracji usługi: urządzeń, bramek i lokalizacji. Dostęp do zasobów wymaga uprawnienia SERVICE_SETTINGS (Ustawienia serwisu) — uprawnienie to pojawia się na liście uprawnień (scope) w odpowiedzi z punktu końcowego tokena.

Zwracane są wyłącznie rekordy aktywne. Pola o wartości pustej są pomijane w odpowiedzi. Listy nie są stronicowane — cała lista zwracana jest w polu content.

Pobieranie listy urządzeń

W celu pobrania listy urządzeń usługi należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/devices

Żądanie nie przyjmuje parametrów. Lista jest sortowana rosnąco po polu deviceId.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/devices

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
contentlistaTakTablica urządzeń usługi.
content[].deviceIdtextTakIdentyfikator urządzenia (numer naklejki). Ten sam identyfikator występuje w polu deviceIds na liście bramek.
content[].deviceNametextTakNazwa urządzenia w TNA.
content[].deviceTypetextBEACON_COMBO, DUAL_USE, GW_MOBILE, BASE, POS, OTHERTakTyp urządzenia.
content[].directiontextIN, OUT, INOUTNieKierunek urządzenia.
content[].statustextONLINE, OFFLINE, IN_SHIPPINGNieStatus urządzenia. Ustawiany wyłącznie dla urządzeń typu DUAL_USE — dla pozostałych typów, w tym dla urządzeń zarejestrowanych przez publiczne API, pole jest pomijane i nie należy go traktować jako informacji o dostępności urządzenia.
content[].clientDevicebooltrue, falseTaktrue dla urządzeń zarejestrowanych zasobem POST /api/v2/devices/register.
content[].entryDescriptiontextNieOpis bramki, do której urządzenie jest przypisane. Pole jest pomijane, gdy urządzenie nie ma przypisanej bramki.

Przykładowa odpowiedź:

{
  "content": [
    {
      "deviceId": "ST-000123",
      "deviceName": "Czytnik wejście główne",
      "deviceType": "BEACON_COMBO",
      "direction": "INOUT",
      "clientDevice": true,
      "entryDescription": "Bramka 1"
    },
    {
      "deviceId": "ST-000124",
      "deviceName": "Terminal recepcja",
      "deviceType": "DUAL_USE",
      "direction": "INOUT",
      "status": "ONLINE",
      "clientDevice": false,
      "entryDescription": "Bramka 1"
    }
  ]
}

Pobieranie listy bramek

W celu pobrania listy bramek usługi należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/entries

Żądanie nie przyjmuje parametrów. Lista jest sortowana rosnąco po polu description.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/entries

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
contentlistaTakTablica bramek usługi.
content[].descriptiontextTakOpis bramki. Identyfikuje bramkę w polu entryDescription na liście urządzeń oraz w danych o wejściach/wyjściach.
content[].buildingobiektNieLokalizacja, w której znajduje się bramka. Pole jest pomijane, gdy bramka nie ma przypisanej lokalizacji.
content[].building.descriptiontextNieOpis lokalizacji.
content[].building.timeZoneIdtextNieStrefa czasowa lokalizacji w notacji IANA, np. Europe/Warsaw.
content[].deviceIdslistaTakIdentyfikatory urządzeń przypisanych do bramki, posortowane rosnąco. Zwracane są wyłącznie urządzenia aktywne. Pole jest zawsze zwracane jako tablica; gdy bramka nie ma urządzeń, zwracana jest pusta tablica [].

Przykładowa odpowiedź:

{
  "content": [
    {
      "description": "Bramka 1",
      "building": {
        "description": "Budynek A",
        "timeZoneId": "Europe/Warsaw"
      },
      "deviceIds": ["ST-000123", "ST-000124"]
    },
    {
      "description": "Bramka 2",
      "deviceIds": []
    }
  ]
}

Pobieranie listy lokalizacji

W celu pobrania listy lokalizacji usługi należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/buildings

Żądanie nie przyjmuje parametrów. Lista jest sortowana rosnąco po polu description.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/buildings

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
contentlistaTakTablica lokalizacji usługi.
content[].descriptiontextTakOpis lokalizacji. Identyfikuje lokalizację na liście bramek oraz w danych o wejściach/wyjściach.
content[].timeZoneIdtextNieStrefa czasowa lokalizacji w notacji IANA, np. Europe/Warsaw. Pole jest pomijane, gdy lokalizacja nie ma ustawionej strefy czasowej.

Przykładowa odpowiedź:

{
  "content": [
    {
      "description": "Budynek A",
      "timeZoneId": "Europe/Warsaw"
    },
    {
      "description": "Budynek B"
    }
  ]
}

Projekty

Zasób w tej sekcji umożliwia pobranie listy projektów usługi. Dostęp do zasobów wymaga uprawnienia EMPLOYEE_WORK_TIME_MANAGEMENT (Zarządzanie czasem pracy pracownika) — tego samego, którego wymagają raporty obecności pracowników.

Pobieranie listy projektów

W celu pobrania listy projektów usługi należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/projects

Żądanie nie przyjmuje parametrów. Lista nie jest stronicowana i jest sortowana rosnąco po polu name.

Zwracane są projekty aktywne i archiwalne — dzięki temu integrator rozliczający historyczny czas pracy może rozwiązać identyfikator projektu zapisany wcześniej, także dla projektu już zamkniętego.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/projects

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
contentlistaTakTablica projektów usługi.
content[].nametextTakNazwa projektu.
content[].dateFromdateData w formacie yyyy-MM-ddNiePoczątek obowiązywania projektu. Pole jest pomijane, gdy nie jest określony.
content[].dateTodateData w formacie yyyy-MM-ddNieKoniec obowiązywania projektu. Pole jest pomijane, gdy nie jest określony.
content[].statustextACTIVE, INACTIVETakStatus projektu.
content[].hashtextTakIdentyfikator projektu. Identyfikuje projekt w polu projectHash w raportach projektowych.

Przykładowa odpowiedź:

{
  "content": [
    {
      "name": "Projekt Alfa",
      "dateFrom": "2026-01-01",
      "dateTo": "2026-12-31",
      "status": "ACTIVE",
      "hash": "p1a2b3c4d5e6f7a8b9c0"
    },
    {
      "name": "Projekt Beta",
      "status": "INACTIVE",
      "hash": "p9z8y7x6w5v4u3t2s1r0"
    }
  ]
}

Raporty projektowe

Zasoby w tej sekcji zwracają czas pracy w rozbiciu na projekty. Odpowiadają czterem raportom obecności z sekcji „Zarządzanie pracownikami" — mają te same adresy uzupełnione o segment /projects, te same parametry i to samo stronicowanie. Dostęp do zasobów wymaga uprawnienia EMPLOYEE_WORK_TIME_MANAGEMENT (Zarządzanie czasem pracy pracownika) — tego samego, którego wymagają raporty obecności pracowników.

Identyfikatory projektów zwracane w polu projectHash rozwiązuje zasób „Pobieranie listy projektów".

Klucz API nie ma tożsamości kierownika, dlatego raporty dla całej usługi obejmują wszystkich pracowników usługi, zawężonych parametrami companies i centers. Nie ma odpowiednika ograniczenia „tylko podwładni" znanego z aplikacji.

Pobieranie szczegółowego raportu projektowego pracownika

W celu pobrania raportu projektowego pracownika z podziałem na dni należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/reports/projects/users/{userHash}

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextPathTakIdentyfikator pracownika. Zwracany na liście pracowników.
fromDatedateURL2026-07-01TakPoczątek zakresu raportu.
tillDatedateURL2026-07-31TakKoniec zakresu raportu.
etattextURLNieIdentyfikator etatu. Zawęża raport do jednego etatu pracownika. Bez tego parametru raport obejmuje wszystkie etaty.

https://tna.comarch.com/api/v2/reports/projects/users/w49ww977e9?fromDate=2026-07-01&tillDate=2026-07-31

Zwracane dane:

NazwaTypDozwolone wartościWymaganyOpis
timeTypetextGROSS, NET, GROSS_NET, CUSTOM, NONETakTryb prezentacji czasu pracy w raporcie.
userTimeTypetextGROSS, NET, GROSS_NET, CUSTOM, NONETakTryb prezentacji czasu pracy ustawiony dla pracownika.
subscriptionobiektTakDane pracownika: userHash, nameAndLastName, email oraz etat.
dayslistaTakKolejne dni zakresu raportu.
days[].datedateData w formacie yyyy-MM-ddTakDzień raportu.
days[].statustextm.in. PRESENCE, WORKING_DAY, HOLIDAY, DAY_OFF, VACATION, SICK_LEAVETakStatus dnia — wartości jak w raporcie obecności pracownika.
days[].workPlanobiektNiePlan pracy na ten dzień: workingDay i fixedTime.
days[].intextNieGodzina pierwszego wejścia.
days[].outtextNieGodzina ostatniego wyjścia.
days[].balancelongNieBilans dnia w sekundach.
days[].latenessbooltrue, falseTakInformacja o spóźnieniu.
days[].projectsTimeslistaTakCzas pracy w rozbiciu na projekty. Pole jest zawsze zwracane jako tablica; gdy w danym dniu nie ma czasu projektowego, zwracana jest pusta tablica [].
days[].projectsTimes[].projectHashtextTakIdentyfikator projektu.
days[].projectsTimes[].dateTimeFromdateData ISO-8601TakPoczątek pracy nad projektem.
days[].projectsTimes[].dateTimeTodateData ISO-8601TakKoniec pracy nad projektem.
days[].projectsTimes[].timeobiektTakCzas pracy nad projektem: timeType oraz grossTime i netTime w sekundach.
days[].projectsTimes[].notEqualizedTimeobiektNieCzas pracy nad projektem przed wygładzeniem.
days[].projectsTimes[].equalizedTimeobiektNieCzas pracy nad projektem po wygładzeniu.
days[].totalProjectsTimesobiektTakSuma czasu projektowego w dniu.
days[].totalProjectsNotEqualizedTimesobiektNieSuma czasu projektowego w dniu przed wygładzeniem.
days[].totalProjectsEqualizedTimesobiektNieSuma czasu projektowego w dniu po wygładzeniu.
summaryobiektTakPodsumowanie całego zakresu raportu: projectsTimes z sumami dla każdego projektu, totalProjectsTimes, totalProjectsNotEqualizedTimes, totalProjectsEqualizedTimes, projectsCount, workPlanTime i balance.

Przykładowa odpowiedź:

{
  "timeType": "GROSS_NET",
  "userTimeType": "GROSS_NET",
  "subscription": {
    "userHash": "a1b2c3d4e5f6a7b8c9d0",
    "nameAndLastName": "Jan Kowalski",
    "email": "jan.kowalski@example.com"
  },
  "days": [
    {
      "date": "2026-07-15",
      "status": "PRESENCE",
      "workPlan": {
        "workingDay": true,
        "fixedTime": 30600
      },
      "in": "08:00:00",
      "out": "16:05:00",
      "balance": 300,
      "lateness": false,
      "projectsTimes": [
        {
          "projectHash": "p1a2b3c4d5e6f7a8b9c0",
          "dateTimeFrom": "2026-07-15T08:00:00+02:00",
          "dateTimeTo": "2026-07-15T12:00:00+02:00",
          "time": {
            "timeType": "GROSS_NET",
            "grossTime": 14400,
            "netTime": 14400
          }
        },
        {…}
      ],
      "totalProjectsTimes": {
        "timeType": "GROSS_NET",
        "grossTime": 29100,
        "netTime": 29100
      }
    },
    {…}
  ],
  "summary": {
    "timeType": "GROSS_NET",
    "projectsTimes": [
      {
        "projectHash": "p1a2b3c4d5e6f7a8b9c0",
        "time": {
          "timeType": "GROSS_NET",
          "grossTime": 14400,
          "netTime": 14400
        }
      },
      {…}
    ],
    "totalProjectsTimes": {
      "timeType": "GROSS_NET",
      "grossTime": 29100,
      "netTime": 29100
    },
    "projectsCount": 2,
    "workPlanTime": 30600,
    "balance": 300
  }
}

Pobieranie ogólnego raportu projektowego pracownika

W celu pobrania raportu projektowego pracownika z podsumowaniem miesięcznym należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/reports/projects/users/{userHash}/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościWymaganyOpis
userHashtextPathTakIdentyfikator pracownika. Zwracany na liście pracowników.
fromDatedateURL2026-01-01TakPoczątek zakresu raportu.
tillDatedateURL2026-12-31TakKoniec zakresu raportu.
etattextURLNieIdentyfikator etatu. Zawęża raport do jednego etatu pracownika.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/projects/users/w49ww977e9/summary?fromDate=2026-01-01&tillDate=2026-12-31

Zwracane dane:

Struktura jak w zasobie „Pobieranie szczegółowego raportu projektowego pracownika", z tą różnicą, że zamiast pola days zwracane jest pole months. Każdy element months ma tę samą strukturę co pole summary, uzupełnioną o pola month i year — sumy dla poszczególnych projektów czyta się więc w obu zasobach identycznie.

Przykładowa odpowiedź:

{
  "timeType": "GROSS_NET",
  "userTimeType": "GROSS_NET",
  "subscription": {
    "userHash": "a1b2c3d4e5f6a7b8c9d0",
    "nameAndLastName": "Jan Kowalski",
    "email": "jan.kowalski@example.com"
  },
  "months": [
    {
      "timeType": "GROSS_NET",
      "month": 7,
      "year": 2026,
      "projectsTimes": [
        {
          "projectHash": "p1a2b3c4d5e6f7a8b9c0",
          "time": {
            "timeType": "GROSS_NET",
            "grossTime": 288000,
            "netTime": 288000
          }
        },
        {…}
      ],
      "totalProjectsTimes": {
        "timeType": "GROSS_NET",
        "grossTime": 604800,
        "netTime": 604800
      },
      "projectsCount": 3,
      "workPlanTime": 612000,
      "balance": -7200
    },
    {…}
  ],
  "summary": {…}
}

Pobieranie raportu projektowego pracowników za dzień

W celu pobrania raportu projektowego wszystkich pracowników usługi za jeden dzień należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/reports/projects

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
datedateURL2026-07-15TakDzień raportu.
searchtextURLNieFiltr po imieniu lub nazwisku pracownika.
includeArchivalboolURLtrue, falsefalseNieDołącza do raportu pracowników archiwalnych.
companieslistaURLNieIdentyfikatory firm — zawężenie raportu do wskazanych firm.
centerslistaURLNieIdentyfikatory centrów — zawężenie raportu do wskazanych centrów.
pageintURL0NieNumer pobieranej strony (numeracja od 0).
sizeintURL20NieLiczba elementów na stronie.
sorttextURLnameNiePole sortowania.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/projects?date=2026-07-15&size=20&page=0

Zwracane dane:

Strona obiektów o strukturze jak w zasobie „Pobieranie szczegółowego raportu projektowego pracownika", zwracana w standardowej kopercie stronicowania.

NazwaTypDozwolone wartościWymaganyOpis
contentlistaTakTablica raportów — po jednym na pracownika.
totalElementslongTakLiczba wszystkich elementów.
totalPageslongTakLiczba stron.
sizelongTakRozmiar strony.
numberlongTakNumer strony.
firstbooltrue, falseTakCzy pierwsza strona.
lastbooltrue, falseTakCzy ostatnia strona.
numberOfElementslongTakLiczba elementów na stronie.
sortlistaTakZastosowane sortowanie: direction i property.

Przykładowa odpowiedź:

Przykładowa odpowiedź:
{
  "content": [
    {…}
  ],
  "totalElements": 89,
  "totalPages": 5,
  "size": 20,
  "number": 0,
  "first": true,
  "last": false,
  "numberOfElements": 20,
  "sort": [
    {
      "direction": "ASC",
      "property": "name"
    }
  ]
}

Pobieranie raportu projektowego pracowników za okres

W celu pobrania raportu projektowego wszystkich pracowników usługi za zakres dat należy przesłać żądanie (GET) na adres:

https://tna.comarch.com/api/v2/reports/projects/summary

Żądanie składa się z następujących parametrów:

NazwaTypFormaDozwolone wartościDomyślna wartośćWymaganyOpis
fromDatedateURL2026-07-01TakPoczątek zakresu raportu.
tillDatedateURL2026-07-31TakKoniec zakresu raportu.
searchtextURLNieFiltr po imieniu lub nazwisku pracownika.
includeArchivalboolURLtrue, falsefalseNieDołącza do raportu pracowników archiwalnych.
companieslistaURLNieIdentyfikatory firm — zawężenie raportu do wskazanych firm.
centerslistaURLNieIdentyfikatory centrów — zawężenie raportu do wskazanych centrów.
pageintURL0NieNumer pobieranej strony (numeracja od 0).
sizeintURL20NieLiczba elementów na stronie.
sorttextURLnameNiePole sortowania.

Przykładowe żądanie:

https://tna.comarch.com/api/v2/reports/projects/summary?fromDate=2026-07-01&tillDate=2026-07-31

Zwracane dane:

Koperta stronicowania jak w zasobie „Pobieranie raportu projektowego pracowników za dzień". Każdy element pola content ma strukturę raportu szczegółowego, obejmującą wszystkie dni wskazanego zakresu.

Publiczne API do rejestracji odbić

Publiczne API do rejestracji odbić składa się z 2 elementów:

  • Metody API do dodania urządzenia które będzie symulować urządzenie fizyczne na którym można rejestrować odbicia poprzez publiczne API
  • Metod API do rejestracji pojedynczego odbicia lub zbioru odbić

Dodawanie urządzenia do rejestracji odbić przez publiczne API

POST https://tna.comarch.com/api/v2/devices/register

Body:

NazwaTypDozwolone
wartości
Domyślna
wartość
WymaganyOpis
deviceIdString  TakIdentyfikator urządzenia
deviceNameString  TakNazwa urządzenia w TNA
directionDirectionIN,OUT, INOUTINOUTNieKierunek urządzenia
INOUT – naprzemiennie dla tego samego użytkownika

Przykład:

{

"deviceId": "mydevice1",

"deviceName": "name",

"direction": "INOUT"
}

 

Odpowiedź:

200 – OK

kody błędów:
2001 – Urządzenie od podanym deviceId już istnieje
2002 – Urządzenie o podanej nazwie już istnieje

Listę urządzeń zarejestrowanych w usłudze można pobrać zasobem GET https://tna.comarch.com/api/v2/devices (sekcja „Ustawienia serwisu" w Public API - 2.1.0). Urządzenia dodane tym zasobem mają w odpowiedzi clientDevice: true.

Dodawanie pojedynczego odbicia

POST https://tna.comarch.com/api/v2/scans/report

Body:

NazwaTypDozwolone
wartości
Domyślna
wartość
WymaganyOpis
tagIdString  TakRev hex karty użytkownika
deviceIdString  TakIdentyfikator urządzenia na którym zostanie zarejestrowana aktywność
directionDirectionIN,OUT NieKierunek odbicia -> nadrzedy do kierunku urzadzenia
zonedDateTimeyyyy-MM-dd'T'HH:mm:ss. SSSZ2000-10-31 01:30:00.000+01:00 NieData + czas z jakim ma być zarejestrowane odbicie
(Nie może występować jeśli istnieje wartość dla „timestamp”
timestampNumber1731675479 NieUNIX timestamp (seconds) z jakim ma być zarejestrowane odbicie
(Nie może występować jeśli istnieje wartość dla „zonedDateTime”
dateDate2000-10-31 Nie

Data do której zaliczone zostanie odbicie.

W przypadku podania tego pola, pola zonedDateTime lub timestamp muszą mieścić się w przedziale wskazanej w tym polu daty i kolejnego dnia.

Przykład:
date - 2000-10-30,
zonedDateTime – w przedziale
[2000-10-30T00:00 - 2000-10-31T23:59]

W przypadku braku podania tego pola system sam wybierze odpowiedni dzień na podstawie planu pracy i ustawień usługi.

W przypadku kiedy nie podano wartości dla zonedDateTime oraz timestamp odbicie zostanie zarejestrowane z czasem serwerowym.
Niedozwolone jest podanie razem wartości dla „zonedDateTime” i „timestamp”

Przykład:

{

"deviceId": "mydevice1",

"tagId": "AABBCCDD",

"direction": "IN",
"timestamp": 1731675479
}

 

{

"deviceId": "mydevice1",

"tagId": "AABBCCDD",

"direction": "IN",
"zonedDateTime": "2024-11-15T14:46:17.162+01:00"
}

 

Odpowiedź:

{

"tagId": " AABBCCDD ",

"deviceId": " mydevice1",

"dateTime": "2024-11-15T14:46:17.162",

"direction": {

"present": true

},

"scanFlags": [],

"errorCode": 0,

"scanType": "CARD",

"subscriptionHash": "cc132da4-ac48-4373-8d1b-856f5e5703a9",

"date": "2024-11-15",

"buildingDescription": "Lokalizacja 1",

"timestamp": 1731678377,

"zonedDateTime": "2024-11-15T14:46:17.162+01:00",

"entryDescription": "Bramka 1",

"scanDirection": "IN",

"zonedTimestamp": "2024-11-15T14:46:17.162+01:00[Europe/Warsaw]"

}

Dodawanie zbioru odbić

POST https://tna.comarch.com/api/v2/scans/report/batch

Body:

NazwaTypDozwolone
wartości
Domyślna
wartość
WymaganyOpis
scansArray[]  TakLista obiektów z metody do dodawnia pojedynczego odbicia

Przykład:

{

"scans": [

{

"deviceId": "mydevice1",

"tagId": "AABBCCDD",

"direction": "IN",
"timestamp": 1731675479

},

{

"deviceId": "mydevice1",

"tagId": "AABBCCDD",

"direction": "IN",
"timestamp": 1731675479

}

]

}

 

Odpowiedź:

{

"addedScans": [

{

"tagId": " AABBCCDD",

"deviceId": " mydevice1",

"dateTime": "2024-11-15T14:55:18.682",

"direction": {

"present": true

},

"scanFlags": [],

"errorCode": 0,

"scanType": "CARD",

"subscriptionHash": "cc132da4-ac48-4373-8d1b-856f5e5703a9",

"date": "2024-11-15",

"buildingDescription": "Lokalizacja 1",

"timestamp": 1731678918,

"zonedDateTime": "2024-11-15T14:55:18.682+01:00",

"entryDescription": "Bramka 1",

"scanDirection": "OUT",

"zonedTimestamp": "2024-11-15T14:55:18.682+01:00[Europe/Warsaw]"

}

],

"errorScans": [

{

"tagId": " AABBCCDD",

"deviceId": " mydevice1",

"dateTime": "2024-11-15T14:55:18.682",

"direction": {

"present": true

},

"scanFlags": [],

"errorCode": 1004,

"errorMessage": "Scan with date time [2024-11-15T14:55:18.682] already exists",

"scanType": "CARD",

"subscriptionHash": "cc132da4-ac48-4373-8d1b-856f5e5703a9",

"scanDirection": "IN"

}

]

}

 

addedScans – lista z odbiciami które zostały poprawnie dodane

errorScans – lista z odbiciami które nie zostały zarejestrowane z powodu błędu

Kody błedów:
1001 – Nie znaleziono urządzenia o podanym deviceId
1002 – Urządzenie nie zostało przypisane do bramki
1003 – Nie znaleziono przypisanej do użytkownika karty o podanym tagId
1004 – Odbicie z taką datą i godziną już istnieje
1005 – Próba dodania odbicia na przyszłość
1006 – Data + czas odbicia (zonedDateTime lub timestamp) nie mieszczą się w dozwolonym zakresie opartym o pole date (występuje wyłącznie w przypadku podania pola date)

Comarch SA
al. Jana Pawła II 39a
31-864 Kraków
Telefon: 12 681 43 00  wew. 3*
*w dni robocze 9:00 – 17:00

Wypróbuj aplikacje
Comarch TNA
na swoim smartfonie
Copyright Comarch SA 2024

Comarch SA
al. Jana Pawła II 39a
31-864 Kraków
kontakt@tna.comarch.com
Telefon: 12 681 43 00  wew. 3*
*w dni robocze 9:00 – 17:00

Wypróbuj aplikacje Comarch TNA na swoim smartfonie
Copyright Comarch SA 2024
crossmenuchevron-down