Dla deweloperów

Dokumentacja API v1

REST · JSON · OAuth 2.0 Bearer https://api.manilo.app Stabilne — brak zmian łamiących zgodność w obrębie v1

Przegląd

Manilo API to REST API w formacie JSON, służące do programowego zarządzania tą samą historią finansów, której używasz w aplikacji na iOS — kontami, kategoriami, budżetami, wspólnymi grupami i transakcjami. Zbudujesz na nim importery, eksportery, mostki synchronizacji, panele analityczne albo własne automatyzacje.

  • Adres bazowy: https://api.manilo.app — poprzedni adres bazowy api.ledgy.app nadal działa.
  • Prefiks wersji: wszystkie endpointy opisane w tym dokumencie są dostępne pod /api/v1/.
  • Transport: tylko HTTPS. Żądania HTTP nie są przyjmowane.
  • Kodowanie: treść żądania i odpowiedzi w JSON. UTF-8. Nazwy pól w camelCase.
  • Uwierzytelnianie: Authorization: Bearer … przy każdym żądaniu.
  • Subskrypcja Cloud: wymagana na każdym endpoincie v1. Zobacz Wymóg subskrypcji.
Szukasz asystenta AI? Jeśli chcesz, aby Claude, ChatGPT lub Cursor rozmawiały z Manilo w Twoim imieniu, skorzystaj z endpointu Model Context Protocol pod adresem https://api.manilo.app/mcp — zobacz Integracje. Opisane tutaj API REST jest przeznaczone do kodu, który piszesz samodzielnie.

Szybki start

Trzy kroki do pierwszego uwierzytelnionego żądania.

1. Wygeneruj Personal Access Token

  1. Zaloguj się do panelu Manilo i otwórz Ustawienia → Dostęp do API.
  2. Kliknij + Nowy token.
  3. Nadaj tokenowi opisową nazwę (np. „Zapier — cotygodniowy eksport”), wybierz potrzebne zakresy (zobacz Zakresy) i opcjonalnie ustaw datę wygaśnięcia.
  4. Skopiuj token. Zobaczysz go tylko raz. Tokeny zaczynają się od prefiksu lgpat_, po którym następują 64 znaki szesnastkowe.

Ta sama strona wyświetla Twoje aktywne tokeny wraz z czasem ostatniego użycia i liczbą uprawnień, pokazuje ostrzeżenie „Wygasa za 30 dni” i pozwala natychmiast unieważnić dowolny token ikoną kosza. Jedno konto może mieć jednocześnie maksymalnie 25 aktywnych tokenów.

2. Wyślij żądanie

cURLLista kont
# Replace lgpat_… with your token
curl "https://api.manilo.app/api/v1/accounts" \
  -H "Authorization: Bearer lgpat_a1b2c3d4e5…"

3. Przeanalizuj odpowiedź

200 OKapplication/json
{
  "items": [
    {
      "id": "acc_01HK8V…",
      "name": "Wise EUR",
      "currencyCode": "EUR",
      "initialBalance": 1240.50,
      "icon": "wallet",
      "color": "#4A90E2",
      "order": 0,
      "createdAt": "2026-04-12T08:13:09Z",
      "updatedAt": "2026-05-01T17:02:31Z"
    }
  ],
  "totalCount": 1
}
Traktuj swój token jak hasło. Każdy, kto go ma, może odczytywać i zmieniać Twoją historię transakcji w granicach nadanych zakresów. Tokeny, które wyciekły, natychmiast unieważnij w Ustawienia → Dostęp do API.

Uwierzytelnianie

Każde żądanie do /api/v1/ musi zawierać nagłówek Authorization. Akceptowane są dwa rodzaje tokenów:

  • Personal Access Token (PAT) — długowieczny token bearer, który tworzysz w panelu na stronie Ustawienia → Dostęp do API. Format: lgpat_ + 64 znaki szesnastkowe. Ograniczony zakresami, odwoływalny, opcjonalnie wygasający. Zalecany do wszystkich integracji zewnętrznych.
  • Sesyjny token JWT — krótkotrwały token wydawany aplikacjom własnym (iOS, panel www). Nie ma ograniczeń zakresów. Możesz go użyć do jednorazowych testów, jeśli uda Ci się wydobyć go z zalogowanej sesji, ale wspieraną ścieżką są tokeny PAT.

Format nagłówka

HTTP
Authorization: Bearer lgpat_a1b2c3d4e5f6…

Limity tokenów

  • Maksymalnie 25 aktywnych tokenów PAT na jedno konto Manilo.
  • Przy tworzeniu tokenu możesz opcjonalnie ustawić datę wygaśnięcia. Wygasłe tokeny zwracają 401 Unauthorized.
  • Unieważnione tokeny przestają działać natychmiast — Manilo przechowuje wyłącznie skrót SHA-256 tokenu, nigdy jego wartość, więc tokenu, który wyciekł, nie da się odzyskać: można go tylko unieważnić i zastąpić nowym.

Najczęstsze błędy uwierzytelniania

401
Brak tokenu albo token nieprawidłowy, wygasły lub unieważniony.
403
Token jest prawidłowy, ale żądany endpoint wymaga zakresu, którego Twój token PAT nie posiada, albo Twoja subskrypcja Cloud nie jest aktywna.

Zakresy

Tokeny PAT działają w modelu domyślnej odmowy. Token może wywołać wyłącznie te endpointy, których wymagany zakres posiada; wszystko inne zwraca 403 Forbidden. Nadawaj możliwie najwęższy zestaw zakresów, jakiego naprawdę potrzebuje Twoja integracja.

Dostępne zakresy:

accounts:read accounts:write categories:read categories:write budgets:read budgets:write groups:read groups:write transactions:read transactions:write tags:read tags:write recurring:read recurring:write settings:read settings:write

Każdy endpoint wymieniony poniżej pokazuje wymagany zakres jako mały fioletowy znacznik. Zakresy :write nie oznaczają automatycznie :read — jeśli potrzebujesz obu, poproś o oba.

Wymóg subskrypcji

Wszystkie endpointy v1 — również te tylko do odczytu — wymagają, aby wywołujący użytkownik miał aktywną subskrypcję Manilo Cloud. Jeśli subskrypcja została anulowana, wygasła albo nigdy nie została uruchomiona, API odpowiada:

403 Forbidden
HTTP/1.1 403 Forbidden
X-Subscription-Required: true
Content-Type: application/json

{ "error": "Active cloud subscription required" }

Nagłówek X-Subscription-Required pozwala klientom odróżnić blokadę subskrypcji od zwykłej odmowy uprawnień. Dostęp przywrócisz, aktywując ponownie Cloud w aplikacji na iOS lub na dashboard.manilo.app/upgrade.

Błędy

Błędy korzystają ze standardowych kodów statusu HTTP. Treścią odpowiedzi jest obiekt JSON z jednym polem:

JSON
{ "error": "Human-readable message" }

Kody statusu, które warto obsłużyć:

200
OK — zwrócono zasób albo listę.
201
Created — utworzono nowy zasób. Nagłówek Location wskazuje kanoniczny adres URL.
204
No Content — usunięcie powiodło się; bez treści odpowiedzi.
400
Walidacja nie powiodła się — brak wymaganego pola, wartość poza zakresem, nieprawidłowy JSON.
401
Uwierzytelnianie nie powiodło się — zobacz Uwierzytelnianie.
403
Odmowa dostępu — niewystarczający zakres lub nieaktywna subskrypcja.
404
Nie znaleziono zasobu albo jest on ukryty ze względu na uprawnienia.
409
Conflict — np. naruszenie ograniczenia unikalności.
5xx
Błąd po stronie serwera. Idempotentne odczyty można bezpiecznie ponowić z wykładniczo rosnącym odstępem.

Paginacja i filtry

Endpointy listujące domyślnie zwracają wszystkie pasujące elementy. Transakcje — jedyny zasób, który może mocno urosnąć — obsługują paginację kursorową.

Kursor transakcji

cURLLista z paginacją
curl "https://api.manilo.app/api/v1/transactions?limit=50&type=expense&dateFrom=2026-01-01" \
  -H "Authorization: Bearer lgpat_…"

Odpowiedź zawiera pole nextCursor. Przekaż je z powrotem jako parametr zapytania cursor, aby pobrać kolejną stronę; gdy nextCursor ma wartość null, oznacza to koniec listy.

  • limit — rozmiar strony, ograniczany do 1..200. Domyślnie 50.
  • cursor — token nieprzezroczysty. Traktuj go jak czarną skrzynkę.
  • type, dateFrom, dateTo, categoryId, accountId, groupId — filtry opcjonalne; zobacz endpoint Lista transakcji.

Typy i formaty

  • Identyfikatory — nieprzezroczyste ciągi znaków. Nie parsuj ich; traktuj je jak identyfikatory UTF-8 z rozróżnianiem wielkości liter.
  • Znaczniki czasu — ISO-8601 w UTC z końcowym Z, np. "2026-05-13T10:30:00Z".
  • Daty (np. pole transakcji date) — ten sam format ISO-8601, ale znacząca jest wyłącznie część datowa.
  • Kwoty — liczby JSON w jednostkach głównych, z dokładnością do 4 miejsc po przecinku (np. 12.50). Nigdy w jednostkach podrzędnych. Zawsze w parze z currencyCode.
  • Kody walut — ISO-4217, dokładnie trzy wielkie litery (np. "EUR", "USD", "GBP").
  • Usuwanie — wszystkie operacje usuwania to usunięcia miękkie. Usunięte elementy przestają pojawiać się w odpowiedziach list i pobrań; powiązania z osobami współdzielącymi oraz historyczne paragony zostają zachowane.
  • Efekty uboczne — usunięcie konta, kategorii lub grupy nie narusza powiązanych transakcji; odpinane są jedynie odwołania. Endpoint Usuń konto przyjmuje jawnie wskazaną strategię.

Konta

Konta to kubełki, które przechowują salda — rachunek bankowy, karta kredytowa, portfel gotówkowy, rachunek maklerski. Każda transakcja jest powiązana z jednym kontem (albo z dwoma, gdy jest to przelew).

GET /api/v1/accounts accounts:read

Zwraca każde konto, którego uwierzytelniony użytkownik jest właścicielem lub do którego ma dostęp.

GET /api/v1/accounts/{id} accounts:read

Pobiera jedno konto po identyfikatorze. 404, jeśli nie znaleziono.

POST /api/v1/accounts accounts:write

Tworzy nowe konto. Zwraca 201 z utworzonym obiektem oraz nagłówek Location.

Treść żądania
PoleTypOpis
namestringwymaganeNazwa wyświetlana. Maks. 100 znaków.
currencyCodestringwymaganeISO-4217. Dokładnie 3 litery.
initialBalancenumberwymaganeSaldo początkowe w walucie currencyCode.
orderintegerwymaganePozycja sortowania. Niższa wartość jest wyżej.
iconstringopcjonalneIdentyfikator ikony z /api/v1/icons. Maks. 50.
colorstringopcjonalneKolor szesnastkowy, np. "#4A90E2". Maks. 20.
iconColorstringopcjonalneNadpisuje kolor ikony.
Żądanie
POST /api/v1/accounts
{
  "name": "Cash",
  "currencyCode": "EUR",
  "initialBalance": 50.00,
  "order": 2,
  "icon": "wallet",
  "color": "#22C55E"
}
201 Created
{
  "id": "acc_01HK8V…",
  "name": "Cash",
  "currencyCode": "EUR",
  "initialBalance": 50.00,
  "order": 2,
  "icon": "wallet",
  "color": "#22C55E",
  "iconColor": null,
  "shareInviteToken": null,
  "createdAt": "2026-05-13T10:30:00Z",
  "updatedAt": "2026-05-13T10:30:00Z"
}
PUT /api/v1/accounts/{id} accounts:write

Zastępuje istniejące konto. Treść żądania jest identyczna jak w Utwórz; należy podać wszystkie pola.

DELETE /api/v1/accounts/{id} accounts:write

Usuwa konto miękko. O tym, co stanie się z jego transakcjami, decydujesz parametrem zapytania action.

Parametry zapytania
PoleTypOpis
actionenumopcjonalneDetach (domyślnie): usuwa odwołanie do konta w każdej transakcji. Move: przenosi transakcje na konto wskazane w moveTargetAccountId. DeleteAll: usuwa miękko każdą powiązaną transakcję, której jesteś właścicielem.
moveTargetAccountIdstringopcjonalneWymagane, gdy action=Move. Identyfikator konta docelowego.

Kategorie

Kategorie określają, czego dotyczy transakcja (zakupy spożywcze, czynsz, przychód z freelancingu). Kategorie systemowe są tylko do odczytu i wspólne dla wszystkich użytkowników; kategoriami użytkownika zarządzasz sam. Grupy kategorii łączą powiązane ze sobą kategorie.

GET /api/v1/categories/system-categories categories:read

Zwraca wyselekcjonowany przez Manilo zestaw kategorii „dobrze znanych” — startowy zestaw dostarczany z aplikacją na iOS. Jest wersjonowany globalnie i można go bezpiecznie buforować według pola version.

Kategorie użytkownika

GET /api/v1/categories categories:read

Zwraca wszystkie kategorie zdefiniowane przez użytkownika.

GET /api/v1/categories/{id} categories:read

Pobiera jedną kategorię użytkownika po identyfikatorze.

POST /api/v1/categories categories:write

Tworzy kategorię użytkownika.

Treść żądania
PoleTypOpis
namestringwymaganeNazwa wyświetlana. Maks. 100.
typestringwymagane"income" lub "expense".
orderintegerwymaganePozycja sortowania w obrębie grupy.
isPinnedbooleanwymaganePrzypina na górze listy wyboru.
categoryGroupIdstringopcjonalneIdentyfikator grupy nadrzędnej albo null dla kategorii bez grupy.
iconstringopcjonalneIdentyfikator ikony.
colorstringopcjonalneKolor szesnastkowy.
PUT /api/v1/categories/{id} categories:write

Zastępuje kategorię użytkownika. Treść żądania jest identyczna jak w Utwórz.

DELETE /api/v1/categories/{id} categories:write

Usuwa miękko kategorię użytkownika. Transakcje nie są usuwane; czyszczone jest ich pole categoryId.

Grupy kategorii

GET /api/v1/categories/groups categories:read

Zwraca Twoje grupy kategorii.

GET /api/v1/categories/groups/{id} categories:read

Pobiera jedną grupę kategorii.

POST /api/v1/categories/groups categories:write

Tworzy grupę kategorii.

Treść żądania
PoleTypOpis
namestringwymaganeNazwa wyświetlana. Maks. 100.
orderintegerwymaganePozycja sortowania.
iconstringopcjonalneIdentyfikator ikony.
colorstringopcjonalneKolor szesnastkowy.
PUT /api/v1/categories/groups/{id} categories:write

Zastępuje grupę kategorii.

DELETE /api/v1/categories/groups/{id} categories:write

Usuwa miękko grupę. Kategorie podrzędne zostają zachowane — czyszczone jest ich pole categoryGroupId.

Budżety

Budżet ogranicza wydatki w ramach kategorii (a gdy categoryId ma wartość null — w ramach całej historii transakcji) w powtarzalnym okresie. Aby udostępnić budżet grupie, ustaw groupId.

GET /api/v1/budgets budgets:read

Zwraca wszystkie budżety.

GET /api/v1/budgets/{id} budgets:read

Pobiera jeden budżet.

POST /api/v1/budgets budgets:write

Tworzy budżet.

Treść żądania
PoleTypOpis
amountnumberwymaganeLimit na okres. Musi być większy niż 0.
currencyCodestringwymaganeISO-4217.
periodintegerwymagane0 tygodniowy · 1 miesięczny · 2 kwartalny · 3 roczny.
startDatestring (ISO-8601)wymaganePoczątek pierwszego okresu.
isActivebooleanwymaganeCzy ten budżet jest obecnie egzekwowany.
endDatestring (ISO-8601)opcjonalnePo tej dacie śledzenie zostaje wstrzymane.
namestringopcjonalneEtykieta. Maks. 200.
categoryIdstringopcjonalneKategoria do śledzenia. Pomiń, aby objąć budżetem wszystkie wydatki.
groupIdstringopcjonalneGrupa, której chcesz udostępnić budżet. Pomiń dla budżetu osobistego.
PUT /api/v1/budgets/{id} budgets:write

Zastępuje budżet.

DELETE /api/v1/budgets/{id} budgets:write

Usuwa budżet miękko.

Grupy

Grupy to wspólne historie transakcji — gospodarstwo domowe, wyjazd, wspólne mieszkanie. Każdy członek widzi te same transakcje; własność pozostaje osobista. Członkostwem i zaproszeniami zarządza się w aplikacji na iOS; API udostępnia tutaj sam zasób.

GET /api/v1/groups groups:read

Zwraca grupy, których jesteś właścicielem lub członkiem.

GET /api/v1/groups/{id} groups:read

Pobiera jedną grupę.

POST /api/v1/groups groups:write

Tworzy grupę. Stajesz się jej właścicielem; członków zaprosisz z aplikacji na iOS.

Treść żądania
PoleTypOpis
namestringwymaganeNazwa wyświetlana. Maks. 100.
descriptionstringopcjonalneDowolny tekst. Maks. 500.
iconstringopcjonalneIdentyfikator ikony.
colorstringopcjonalneKolor szesnastkowy.
PUT /api/v1/groups/{id} groups:write

Zastępuje metadane grupy.

DELETE /api/v1/groups/{id} groups:write

Usuwa grupę miękko. Członkowie tracą widoczność; powiązane transakcje wracają do statusu osobistych.

Transakcje

Transakcje to czasowniki Twojej historii finansów. Występują w czterech postaciach: income, expense, transfer (z konta na konto) oraz adjustment (jednorazowe wyrównanie salda). Endpoint podstawowy tworzy przychody i wydatki; przelewy mają własny endpoint; dla importerów o dużym wolumenie istnieją warianty zbiorcze.

GET /api/v1/transactions transactions:read

Zwraca listę transakcji z paginacją kursorową i filtrami.

Parametry zapytania
PoleTypOpis
limitintegeropcjonalneRozmiar strony. 1..200. Domyślnie 50.
cursorstringopcjonalneNieprzezroczysty token kontynuacji z poprzedniej odpowiedzi.
typestringopcjonalne"income", "expense", "transfer" lub "adjustment".
dateFromstring (ISO-8601)opcjonalneDolna granica włącznie.
dateTostring (ISO-8601)opcjonalneGórna granica włącznie.
categoryIdstringopcjonalneFiltruje do jednej kategorii.
accountIdstringopcjonalneFiltruje do jednego konta.
groupIdstringopcjonalneFiltruje do wspólnej grupy.
200 OK
{
  "items": [ /* TransactionDto[] */ ],
  "totalCount": 317,
  "nextCursor": "eyJrIjoiMjAyNi0wNS0xM1QxMDoz…"
}
GET /api/v1/transactions/{id} transactions:read

Pobiera jedną transakcję.

POST /api/v1/transactions transactions:write

Tworzy pojedynczą transakcję przychodu lub wydatku. Do przelewów użyj /transfer.

Treść żądania
PoleTypOpis
typestringwymagane"income" lub "expense".
amountnumberwymaganeKwota dodatnia w walucie currencyCode.
currencyCodestringwymaganeISO-4217.
datestring (ISO-8601)wymaganeKiedy nastąpiła transakcja (UTC).
accountIdstringopcjonalneKonto źródłowe lub docelowe.
categoryIdstringopcjonalneEtykieta kategorii.
payeestringopcjonalneSprzedawca lub kontrahent. Maks. 200.
notestringopcjonalneDowolna notatka. Maks. 2000.
groupIdstringopcjonalneUdostępnienie grupie.
exchangeRatenumberopcjonalneKurs wymiany, gdy currencyCode ≠ waluta główna użytkownika.
convertedAmountnumberopcjonalneKwota w walucie głównej użytkownika.
ŻądanieKawa za €8.50 wczoraj na koncie Wise
POST /api/v1/transactions
{
  "type": "expense",
  "amount": 8.50,
  "currencyCode": "EUR",
  "date": "2026-05-12T09:14:00Z",
  "accountId": "acc_01HK8V…",
  "categoryId": "cat_food_drinks",
  "payee": "Pret",
  "note": "Flat white"
}
PUT /api/v1/transactions/{id} transactions:write

Zastępuje transakcję. Treść żądania jest identyczna jak w Utwórz.

DELETE /api/v1/transactions/{id} transactions:write

Usuwa miękko jedną transakcję.

POST /api/v1/transactions/transfer transactions:write

Tworzy przelew między dwoma kontami. Bez kategorii. Przy przelewach międzywalutowych podaj exchangeRate oraz convertedAmount w walucie docelowej.

Treść żądania
PoleTypOpis
fromAccountIdstringwymaganeKonto źródłowe.
toAccountIdstringwymaganeKonto docelowe. Musi być inne niż źródłowe.
amountnumberwymaganeKwota wysłana, w walucie currencyCode.
currencyCodestringwymaganeWaluta źródłowa, ISO-4217.
datestring (ISO-8601)wymaganeData przelewu.
exchangeRatenumberopcjonalneWymagane, gdy waluta źródłowa i docelowa są różne.
convertedAmountnumberopcjonalneKwota zaksięgowana na koncie docelowym, w jego walucie.
notestringopcjonalneMaks. 2000.

Operacje zbiorcze

Zaprojektowane z myślą o importerach. Każda partia jest ograniczona do 100 elementów i działa w trybie best-effort: jeden błędny wiersz nie wycofuje pozostałych. Elementy przyjęte oraz błędy poszczególnych wierszy raportowane są osobno, dzięki czemu możesz ponowić tylko te nieudane.

POST /api/v1/transactions/bulk transactions:write

Tworzy do 100 transakcji w jednym wywołaniu.

200 OK
{
  "items": [ /* successful TransactionDto[] */ ],
  "errors": [
    { "index": 3, "error": "Invalid currency code" }
  ]
}
PUT /api/v1/transactions/bulk transactions:write

Aktualizuje do 100 transakcji w jednym wywołaniu. Każdy element musi zawierać własne id wraz z pełną treścią transakcji.

POST /api/v1/transactions/bulk-delete transactions:write

Usuwa miękko do 100 transakcji w jednym wywołaniu. Używa POST zamiast DELETE, dzięki czemu treść żądania jest akceptowana przez wszystkie klienty HTTP.

Treść żądania
PoleTypOpis
idsstring[]wymaganeOd 1 do 100 identyfikatorów transakcji.
200 OK
{
  "deleted": 97,
  "notFound": [ "tx_old1", "tx_old2", "tx_old3" ]
}

Obiekt transakcji

PoleTypOpis
idstringNieprzezroczysty identyfikator.
typestringincome · expense · transfer · adjustment.
amountnumberW walucie currencyCode.
currencyCodestringISO-4217.
exchangeRatenumber | nullUstawiane przy wpisach międzywalutowych.
convertedAmountnumber | nullTa sama wartość w walucie głównej użytkownika.
datestringISO-8601 UTC.
accountIdstring | nullPrzy przelewach jest to konto źródłowe.
toAccountIdstring | nullKonto docelowe — wyłącznie przy przelewach.
categoryIdstring | nullNull przy przelewach.
groupIdstring | nullUstawiane, gdy transakcja jest udostępniona grupie.
payeestring | nullSprzedawca lub kontrahent.
notestring | nullDowolny tekst.
receiptImagePathstring | nullŚcieżka do załączonego paragonu. Pobierz przez endpoint paragonów (osobny, poza v1).
recurringTransactionIdstring | nullUstawiane, gdy wiersz powstał z reguły cyklicznej.
sourcestringZnacznik pochodzenia — api, mobile, web, import itd.
createdAtstringISO-8601 UTC.
updatedAtstringISO-8601 UTC.

Ikony

Manilo dostarcza wyselekcjonowany zestaw ikon i paletę kolorów używaną wszędzie — na kontach, kategoriach i grupach. Pobierz katalog raz, zbuforuj go i używaj tych samych identyfikatorów przy tworzeniu zasobów.

GET /api/v1/icons

Zwraca pełną bibliotekę ikon pogrupowanych w kategorie wraz z obsługiwaną paletą kolorów. Jest wersjonowana — można ją bezpiecznie buforować według pola version.

200 OK
{
  "version": "2026.05.10",
  "library": "font-awesome-6",
  "categories": [
    {
      "id": "finance",
      "name": "Finance",
      "icons": [ "wallet", "credit-card", "piggy-bank" ]
    }
  ],
  "colors": [
    { "name": "Blue", "hex": "#4A90E2" },
    { "name": "Green", "hex": "#22C55E" }
  ]
}

Wersjonowanie

  • Brak zmian łamiących zgodność w obrębie v1. Będziemy dodawać wyłącznie nowe endpointy, nowe pola opcjonalne i nowe wartości enumów. Typ pola, dopuszczalność wartości null ani jego wymagalność nie ulegną zmianie.
  • Nowe wartości enumów nie łamią zgodności. Nieznane wartości pól type, source oraz action traktuj jako „nie renderuj”, zamiast przerywać działanie — będziemy je dodawać wraz z rozwojem produktu.
  • Zmiany łamiące zgodność (jeśli kiedykolwiek okażą się potrzebne) trafią pod /api/v2/, z co najmniej 6-miesięczną równoległą dostępnością i nagłówkiem o wycofaniu w odpowiedziach v1.

Pomoc

Błąd do zgłoszenia? Brakujący endpoint? Coś nieudokumentowanego? Otwórz centrum pomocy lub napisz na support@manilo.app — zgłaszając problem, dołącz identyfikator żądania (zwracany w nagłówku odpowiedzi X-Request-Id).

W sprawach zgłoszeń dotyczących bezpieczeństwa (wyciek tokenu, obejście uprawnień, nieautoryzowany odczyt) pisz na security@manilo.app.