/api/Auth/Token
Wydanie JWT i tokenu odświeżającegoZanim zaczniesz
Dokumentacja API
TessAPI umożliwia dostęp do Twojej Symfonii ERP przez chmurowe REST API. Twoja aplikacja komunikuje się z jednym adresem w chmurze, a lokalny konektor bezpiecznie wykonuje operacje w odpowiedniej instalacji Symfonii.
Ta strona opisuje endpointy publiczne dostępne obecnie w aplikacji.
https://tessapi.pl/apiUwierzytelnianie
Dostęp przebiega dwuetapowo. Najpierw token dostępowy tenanta przekazany w nagłówku X-Access-Token jest wymieniany na
krótkotrwały JWT. Następnie JWT należy przesyłać w nagłówku Authorization przy każdym żądaniu.
POST /api/Auth/Token
X-Access-Token: twój-token-dostępowy
Authorization: Bearer otrzymany-token-jwt
Content-Type: application/json- Tokeny przechowuj wyłącznie po stronie serwera i nie umieszczaj ich w publicznym kodzie aplikacji.
- JWT jest ważny przez 60 minut. Do uzyskania kolejnego służy token odświeżający.
- Wywołania endpointów wymagają aktywnego konektora i włączonej odpowiedniej licencji.
Konwencje
- Format
- JSON kodowany w UTF-8. Nazwy właściwości odpowiedzi są zapisywane w notacji
camelCase. - Daty
- Daty i czas są serializowane zgodnie z ISO 8601, np.
2026-09-10T12:30:00Z. - Paginacja
- Część endpointów używa paginacji za pomocą parametrów
pageipageSize.
Zasoby
Tokeny
Endpointy autoryzacji wydają JWT dla konkretnego tenanta i pozwalają odnowić sesję bez ponownego użycia głównego tokenu dostępowego.
/api/Auth/Refresh
Odnowienie JWTOdświeżenie tokenu
POST /api/Auth/Refresh
Content-Type: application/json
{
"token": "eyJhbGciOi...",
"refreshToken": "odświeżający-token"
}Odpowiedź 200
{
"token": "eyJhbGciOi...",
"refreshToken": "odświeżający-token",
"refreshTokenExpireDateUtc": "2026-09-11T12:30:00Z"
}Kontrahenci
Kartoteka kontrahentów z lokalnej Symfonii. Wszystkie wywołania wymagają JWT, dostępnego konektora oraz odpowiedniej licencji.
/api/Contractors
Lista kontrahentów/api/Contractors?code={code}
Kontrahent wyszukany po kodzie/api/Contractors/{id}
Kontrahent wyszukany po ID/api/Contractors
Utworzenie kontrahenta/api/Contractors
Aktualizacja kontrahentaUtworzenie kontrahenta
POST /api/Contractors
Authorization: Bearer <token>
Content-Type: application/json
{
"code": "KLIENT-001",
"name": "Przykładowa sp. z o.o.",
"nip": "5250001009",
"country": "Polska",
"city": "Warszawa",
"street": "Prosta",
"houseNo": "1",
"postCode": "00-001"
}Odpowiedź 201
HTTP/1.1 201 Created
Location: /api/Contractors/123
(pusta treść odpowiedzi)idintegerIdentyfikator kontrahenta w Symfonii; wymagany przy aktualizacji.codestringKod kontrahenta; wymagany przy tworzeniu.namestringNazwa kontrahenta.nipstring?Numer NIP; walidowany, jeśli został podany.peselstring?Numer PESEL; walidowany, jeśli został podany.regonstring?Numer REGON.country, province, citystring?Podstawowe elementy adresu.street, houseNo, apartmentNostring?Szczegóły adresu.postCode, postOfficestring?Kod i urząd pocztowy.eParagony
Fiskalizacja dokumentów Symfonii w serwisie eparagony.pl. Endpointy klienckie wymagają JWT i odpowiedniej licencji.
Endpointy związane z fiskalizacją eparagonów są częścią modułu eparagony. W sprawie licencji skontaktuj się z nami.
/api/eparagony/fiscalize/{documentId}
Rozpoczęcie fiskalizacji/api/eparagony/jobs/{jobId}
Status fiskalizacji/api/eparagony/jobs?page=1&pageSize=20&status=Pending
Lista zadań fiskalizacji/api/eparagony/fiscalizable-documents?limit=100
Dokumenty gotowe do fiskalizacjiRozpoczęcie fiskalizacji
POST /api/eparagony/fiscalize/12345
Authorization: Bearer <token>Odpowiedź 200
{
"jobId": "d3f5e764-c3ae-4b16-a067-164522b845ac",
"status": 0
}SentDokument został przyjęty przez eparagony.pl. TessAPI czeka na fiskalizację dokumentu. Ten status jest również używany, gdy eParagon został potwierdzony, ale nie udało się jeszcze oznaczyć dokumentu jako fiskalnego w Symfonii.ReadySerwis eparagony.pl przygotował dokument, zwykle wraz z publicznym adresem, ale proces nie został jeszcze fizycznie zafiskalizowany, potwierdzony i zsynchronizowany z Symfonią.ConfirmedFiskalizacja zakończyła się pomyślnie, a dokument został także oznaczony jako fiskalny w Symfonii. Jest to końcowy status sukcesu.ErrorWystąpił błąd przejściowy. Zadanie zostanie ponowione zgodnie z harmonogramem odnowień.Failedbłąd trwały albo wyczerpanie limitu ponowień. Zadanie nie będzie już samoczynnie ponawiane. Ponowne wywołanie fiskalizacji może je zresetować do Pending.Praktyka
Błędy
Błąd API zawiera liczbowy errorCode oraz tablicę komunikatów messages. Kod HTTP opisuje klasę błędu.
{
"errorCode": 400,
"messages": [
"Opis błędu lub naruszonej reguły"
]
}VALIDATION_FAILNiepoprawne parametry lub treść żądania.UNAUTHORIZEDBrak lub nieprawidłowy token.FEATURE_DISABLEDWymagana funkcja nie jest aktywna dla tenanta.NOT_FOUNDNie znaleziono wskazanego zasobu.INTERNAL_ERRORNieoczekiwany błąd po stronie usługi.CONNECTOR_UNAVAILABLELokalny konektor jest niedostępny; odpowiedź zawiera Retry-After.Konektor a API
Operacje na kontrahentach i dokumentach fiskalnych są przekazywane przez chmurę do konektora działającego przy lokalnej bazie Symfonii.
Jeżeli konektor jest niedostępny, API zwraca 503 Service Unavailable wraz z nagłówkiem Retry-After: 30.
Specyfikacja techniczna
Wszystkie schematy w OpenAPI
Interaktywna specyfikacja jest generowana bezpośrednio z kontrolerów aplikacji, dlatego pozostaje źródłem szczegółowych typów żądań i odpowiedzi.