UAB Testas apskaita: API
Demonstracinė sistema per48h integracijos bandymams: duomenys netikri.
Bazinis adresas: https://p48demo-apskaita.per48h.lt. Mašinai skaitoma specifikacija:
/openapi.json (OpenAPI 3.1).
Autentifikacija
Kiekviena /api/* užklausa siunčia API raktą antraštėje:
X-Api-Key: <API raktas>
Raktą išduoda apskaitos administratorius. Be rakto arba su neteisingu raktu: 401.
POST /api/invoices
Išrašo pardavimo sąskaitą faktūrą ir suteikia jai serijos numerį (TST-000001, ...).
Suma apskaičiuojama: eilučių quantity × price suma.
| Laukas | Tipas | Aprašymas |
|---|---|---|
external_id | string, privalomas | Unikalus jūsų sistemos įrašo ID (iki 100 simbolių), pvz. užsakymo numeris |
buyer.name | string, privalomas | Pirkėjo pavadinimas arba vardas, pavardė |
buyer.email | string, privalomas | El. paštas |
buyer.code | string arba null | Įmonės kodas; privačiam asmeniui null arba nenurodoma |
lines[].description | string, privalomas | Eilutės aprašymas |
lines[].quantity | number, privalomas | Kiekis > 0, iki 3 skaitmenų po kablelio |
lines[].price | number, privalomas | Vieneto kaina su PVM, iki 2 skaitmenų po kablelio |
currency | string, privalomas | Valiuta, pvz. EUR |
curl -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
https://p48demo-apskaita.per48h.lt/api/invoices -d '{
"external_id": "EP-10001",
"buyer": { "name": "UAB Medis", "email": "buhalterija@medis.lt", "code": "304123456" },
"lines": [ { "description": "Kavos pupelės „Rytas“, 250 g", "quantity": 4, "price": 6.90 } ],
"currency": "EUR"
}'
Atsakymas 201:
{
"id": 7,
"series_number": "TST-000007",
"external_id": "EP-10001",
"created_at": "2026-10-05T08:20:11Z",
"buyer": { "name": "UAB Medis", "email": "buhalterija@medis.lt", "code": "304123456" },
"lines": [ { "description": "Kavos pupelės „Rytas“, 250 g", "quantity": 4, "price": 6.9 } ],
"total": 27.6,
"currency": "EUR"
}
Pakartotinis siuntimas. Jei sąskaita su tokiu external_id jau yra, nauja
nesukuriama: atsakymas 409 su esama sąskaita.
{
"error": "duplicate_external_id",
"message": "An invoice with this external_id already exists.",
"invoice": { "id": 7, "series_number": "TST-000007", ... }
}
GET /api/invoices?external_id=...
Sąskaitos paieška pagal jūsų ID: {"invoices": [ ... ]} su viena sąskaita arba tuščias sąrašas.
Be external_id: naujausios sąskaitos (limit 1-500, numatyta 100).
curl -H "X-Api-Key: $KEY" "https://p48demo-apskaita.per48h.lt/api/invoices?external_id=EP-10001"
GET /api/invoices/{id}
Viena sąskaita. Nėra tokios: 404.
Klaidos
Klaidos grąžinamos JSON: {"error": "kodas", "message": "aprašymas", "details": [...]}.
| Būsena | Kada |
|---|---|
| 400 | invalid_json, invalid_limit |
| 401 | unauthorized: nėra rakto arba jis neteisingas |
| 404 | not_found |
| 405 | method_not_allowed |
| 409 | duplicate_external_id: lauke invoice esama sąskaita |
| 411, 413 | Nėra Content-Length; per didelis kūnas (daugiau nei 256 KB) |
| 422 | validation_failed: details išvardija netinkamus laukus |
| 500 | internal_error |