NISA API
REST API for POHODA accounting data of companies connected to NISA.
Getting started
Base URL
All endpoints are under http://0.0.0.0:1409/v1/. Requests and responses use UTF-8.
API key
NISA issues an API key for each integration. Request it at info@nisa.digital. Keep the key on your server and never put it into browser or mobile app code.
NISA enables API access for each company separately. Requests for a company without API access return 404.
Authorization
Send the API key in the Authorization header of every request. An unknown key returns 401.
Requests without the Authorization header read only the demo company. The examples on this page use it.
Authorization: Bearer <API key>
Company and accounting unit
A company has a company id (cid), which NISA sends together with the API key. Each accounting year of the company is a separate accounting unit with its own id (uid).
GET /v1/info/:cid lists the accounting units of the company with uid, year, id_number (IČO), valid_from and valid_to. Most endpoints take the uid as a path parameter.
curl -H "Authorization: Bearer <API key>" http://0.0.0.0:1409/v1/info/<cid> curl -H "Authorization: Bearer <API key>" http://0.0.0.0:1409/v1/accounts_chart/<uid>
Requests and responses
Each endpoint lists its method, path and query parameters, request body with the required Content-Type, and response. Responses are JSON unless the endpoint states otherwise.
Errors return one of the HTTP status codes below. The body is usually a short text message; some endpoints return an empty body or the POHODA XML response instead.
400 Bad Request: Your request doesn't meet the required input format 401 Not Authorized: Your request doesn't meet authorization requirements 404 Not Found: The entity you're looking for is missing 460 Request Error: Requested operation wasn't performed, or XML import failed 500 Internal Error: We encountered an internal server error 503 Not Available: Requested entity is offline and cannot be reached, try again later
Digitálny poštár
Endpoints under /v1/epostar/ use a separate API key (Authorization: Bearer ep_...), return errors as JSON and limit the number of requests per minute. The section /v1/epostar/ describes the details.
Documentation for language models
The complete documentation as one text file, for a language model (LLM) or a coding assistant: http://0.0.0.0:1409/guide, also available as http://0.0.0.0:1409/llms.txt.
Endpoints
Click an endpoint to show its parameters, request, response and a runnable example.
/v1/slovensko/ 2 endpoints
GET
/v1/slovensko/tax/:search
Lookup companies in the tax register.
GET
/v1/slovensko/vat/:search
Lookup companies in the VAT register.
/v1/info/ 1 endpoint
GET
/v1/info/:cid
List accounting units (years) for a company id prefix.
/v1/costcenter/ 1 endpoint
GET
/v1/costcenter/:uid
List cost centers for a unit.
/v1/activity/ 1 endpoint
GET
/v1/activity/:uid
List activities for a unit.
/v1/custom_order/ 1 endpoint
GET
/v1/custom_order/:uid
List custom orders for a unit.
/v1/vat/ 1 endpoint
GET
/v1/vat/:uid
List VAT mappings: pre-accounting, VAT breakdown, and KV DPH groups.
/v1/accounts_chart/ 1 endpoint
GET
/v1/accounts_chart/:uid
List chart of accounts for a unit.
/v1/accounting_journal/ 1 endpoint
GET
/v1/accounting_journal/:uid
List accounting journal entries for a unit.
/v1/invoice/ 9 endpoints
GET
/v1/invoice/numbering/:uid
List invoice numberings for a unit.
GET
/v1/invoice/export/pdf/:uid/:invoice_number
Export invoice PDF by number.
GET
/v1/invoice/companies/:uid
List companies referenced by unit invoices.
POST
/v1/invoice/list/:uid
List invoices with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc e.g. "Datum;ID"
desc?: string, // optional sort desc e.g. "Datum;ID"
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/invoice/by-number/:uid/:invoice_number
Get invoice detail by number.
POST
/v1/invoice/import/xml/:uid
Import invoice XML and return vendor response.
text/xml // body: XML conforming to Stormware invoice.xsd (SK/CZ) // either a single <inv:invoice> or a <dat:dataPack> wrapper
<dat:dataPack version="2.0" id="import" ico="12345678" application="API" note="optional">
<dat:dataPackItem id="1" version="2.0">
<inv:invoice version="2.0">...</inv:invoice>
</dat:dataPackItem>
</dat:dataPack>
POST
/v1/invoice/file/add/:uid
Attach a file to an invoice.
{
invoice: string, // invoice number
name: string, // file name including extension
content: string, // base64-encoded file content
type?: string, // MIME type, inferred from extension if omitted
size?: number // optional; normalized by API from base64 content
// API also sends originalSize to Pohoda agent, derived from decoded bytes
}
POST
/v1/invoice/import/isdoc/:uid
Import ISDOC/ISDOCX from PDF and return vendor response.
POST
/v1/invoice/facility/:uid
Update invoice or line facility (centre, activity, order).
{
invoice_id: number, // required invoice ID
invoice_item_id?: number, // optional: update single line if provided
refStr?: number, // optional: centre ID (stredisko)
refCin?: number, // optional: activity ID (cinnost)
cisloZAK?: string // optional: order number
}/v1/bank/ 6 endpoints
GET
/v1/bank/accounts/:uid
List bank accounts for a unit.
GET
/v1/bank/balance/:uid
Get bank account balance as of date.
GET
/v1/bank/balances/:uid
List bank balances as of date.
GET
/v1/bank/account/:uid/:id
Get bank account detail by ID.
GET
/v1/bank/list/:uid
List bank movements with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc e.g. "Datum;ID"
desc?: string, // optional sort desc e.g. "Datum;ID"
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
POST
/v1/bank/import/xml/:uid
Import bank movement XML and return vendor response.
text/xml // body: <dat:dataPack> conforming to Stormware data.xsd and bank.xsd (SK/CZ) // every <dat:dataPackItem> must contain one <bnk:bank>
<dat:dataPack version="2.0" id="import" ico="12345678" application="API" note="bank import"
xmlns:dat="http://www.stormware.cz/schema/version_2/data.xsd"
xmlns:bnk="http://www.stormware.cz/schema/version_2/bank.xsd"
xmlns:typ="http://www.stormware.cz/schema/version_2/type.xsd">
<dat:dataPackItem id="1" version="2.0">
<bnk:bank version="2.0">...</bnk:bank>
</dat:dataPackItem>
</dat:dataPack>/v1/storage/ 2 endpoints
GET
/v1/storage/:uid
List storages with total inventory value.
GET
/v1/storage/:uid/:id/items
List items for a specific storage.
/v1/cash/ 7 endpoints
GET
/v1/cash/accounts/:uid
List cash accounts for a unit.
POST
/v1/cash/list/:uid
List cash movements with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc e.g. "Datum;ID"
desc?: string, // optional sort desc e.g. "Datum;ID"
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/cash/balance/:uid/:id
Get cash register balance as of date.
GET
/v1/cash/balances/:uid
List cash register balances as of date.
GET
/v1/cash/list/:uid
List cash movements with server-side filtering and pagination.
{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/cash/numbering/:uid
List cash numberings for a unit.
POST
/v1/cash/import/xml/:uid
Import cash voucher XML and return vendor response.
text/xml // body: XML conforming to Stormware voucher.xsd (SK/CZ) // either a single <vch:voucher> or a <dat:dataPack> wrapper
<dat:dataPack version="2.0" id="import" application="API">
<dat:dataPackItem id="1" version="2.0">
<vch:voucher version="2.0">...</vch:voucher>
</dat:dataPackItem>
</dat:dataPack>/v1/personal/ 31 endpoints
GET
/v1/personal/employees/:uid
List employees for a unit.
GET
/v1/personal/employments/list/:uid
List employments with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
fields?: DField[] // optional filters and sort; see DField in Response below
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/personal/employments/:uid/:employee_id
List employments for one employee.
GET
/v1/personal/attendance/excel/:uid
Download the same Attendance Excel report as the HR Attendance page.
GET
/v1/personal/absence/excel/:uid
Download the same Absences Excel report as the HR Absences page.
GET
/v1/personal/attendance/:uid
Attendance report as JSON, same data as the HR Attendance Excel report.
GET
/v1/personal/absence/report/:uid
Absence report as JSON, same data as the HR Absences Excel report.
GET
/v1/personal/absence/:uid
List absences in a date range for optional employees.
POST
/v1/personal/absence/remove/:uid
Remove absences by IDs and return removed rows.
{ ids: number[] }
GET
/v1/personal/employee/:uid/:id
Get employee by ID.
GET
/v1/personal/employment/person/:uid/:pomer_id
Get employee by employment relationship ID.
GET
/v1/personal/info/:uid/:employee_id
Get employee info with employments.
GET
/v1/personal/employee/by-email/:uid/:email
Get employee by email.
POST
/v1/personal/password_update/:uid
Update employee password and optionally email.
{ id: number, pwd: string, email: string }
POST
/v1/personal/contact_update/:uid
Update employee contact fields (password, email, phone).
{ id: number, pwd?: string, email?: string, number?: string }
GET
/v1/personal/profile/:uid/:employee_id
Get employee profile with children and additional info.
GET
/v1/personal/salary/:uid/:salary_id
Get a salary with items and deductions.
GET
/v1/personal/benefit/types/:uid
List benefit item types.
GET
/v1/personal/benefits/:uid
List benefits for optional employees.
{ employee_ids?: number[] }
POST
/v1/personal/benefit/:uid/:id
Remove a benefit item by ID.
POST
/v1/personal/benefit/:uid/:id/update
Update a benefit item.
{
DatOd?: string, // YYYY-MM-DD
DatDo?: string, // YYYY-MM-DD
RefAg?: number, // employment id
RefSlozky?: number, // benefit type id (sMZslozky.ID)
RelDruhSlozky?: number, // category code
Hod?: number,
Kc?: number,
Proc?: number,
Sazba?: number,
SText?: string,
Ucet?: string,
KodBanky?: string,
VarSym?: string,
SpecSym?: string,
KonstSym?: string
}
POST
/v1/personal/benefit/add/:uid
Add a benefit item.
{
RefAg: number, // required employment id
RefSlozky: number, // required benefit type id (sMZslozky.ID)
DatOd: string, // YYYY-MM-DD
DatDo: string, // YYYY-MM-DD
Hod?: number,
Kc?: number,
Proc?: number,
Sazba?: number,
SText?: string,
RelDruhSlozky?: number,
Ucet?: string,
KodBanky?: string,
VarSym?: string,
SpecSym?: string,
KonstSym?: string
}
GET
/v1/personal/deductions/:uid
List deductions for optional employees.
{ employee_ids?: number[] }
GET
/v1/personal/deductions/previous_month/:uid
List previous month deduction summary.
GET
/v1/personal/payslips/:uid
List payslips with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
fields?: DField[] // optional filters and sort
// default sort: { name: 'FilterDatum', sort: 'desc' }
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/personal/employees_status/:uid
List employment status in a date range.
GET
/v1/personal/access_list/:uid
List employees with basic contact for access control.
POST
/v1/personal/recruit/:uid
Create a new employee (recruit).
{
// Required basics
created_at: string, // ISO datetime
updated_at: string, // ISO datetime
company_ico: string,
party_id: string,
pracovny_stav: number,
titul_pred: string, // max 14
meno: string,
priezvisko: string,
titul_za: string, // max 14
email: string,
id_pracovna_pozicia: string,
pracovna_pozicia: string,
klasifikacia: string, // max 7 (SK ISCO)
popis_prace: string,
note?: string,
// Employment details (optional)
druh_pracovneho_pomeru?: number,
zaciatok_pracovneho_pomeru?: string, // ISO date
miesto_prace?: string,
miesto_prace_kod?: string, // max 6 (LAU/LSUJ)
stredisko?: string,
hruba_mzda?: number,
hruba_mzda_slovom?: string,
reldruhm?: number,
pracovny_fond?: number,
pracovny_fond_den?: number,
praca_na_dobu_urcitu?: string, // ISO date
date_sent?: string, // ISO date
pohlavie?: number,
// Personal data
datum_narodenia?: string, // ISO date
rodne_priezvisko: string,
rodne_cislo: string, // d{6}/d{3,4}
miesto_narodenia: string,
narodnost: string,
statna_prislusnost: string,
cislo_op: string,
rodinny_stav?: number,
// Foreign national
cudzinec: boolean,
krajina_narodenia: string, // 2-letter
cudzinec_op?: string,
cudzinec_adresa?: string,
cudzinec_doklad?: string,
cudzinec_poistovna?: string,
cudzinec_cssz?: string,
// Address
adresa_ulica: string,
adresa_cislo: string,
adresa_psc: string,
adresa_mesto: string,
adresa_stat: string, // 2-letter
kontakt_adresa_ulica: string,
kontakt_adresa_cislo: string,
kontakt_adresa_psc: string,
kontakt_adresa_mesto: string,
kontakt_adresa_stat: string, // 2-letter
kontakt_telefon?: string,
// Payments
iban: string,
swift_bic: string,
var_sym?: string,
zdravotna_poistovna?: number,
// Benefits/flags
ztp: boolean,
starobny_dochodok: boolean,
invalidny_dochodok: boolean,
vysluhovy_dochodok: boolean,
dochodca: boolean,
invalidita: string,
trvala_starostlivost_dieta: boolean,
nezdanitelna_cast: boolean,
dan_bonus: boolean,
// Children
deti: { meno: string, rodne_cislo: string }[],
// Attachments
files: ({ name: string, type: string, size: number, content: string }|
{ id: number, name: string, type: string, size: number, content?: string })[],
// Consent + token
gdpr: boolean,
token?: string
}
GET
/v1/personal/health_insurance/:uid
List health insurance companies for a unit.
GET
/v1/personal/pension_funds/:uid
List pension funds for a unit.
GET
/v1/personal/insurers/:uid
List life insurers for a unit.
/v1/property/ 6 endpoints
GET
/v1/property/assets/:uid
List investment assets with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/property/small_assets/:uid
List small assets with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/property/depreciations/:uid
List asset depreciations with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/property/tax_depreciation/:uid/:id
List tax depreciations for an asset.
GET
/v1/property/book_depreciation/:uid/:id
List book depreciations for an asset.
GET
/v1/property/vehicles/:uid
List motor vehicles with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}/v1/orders/ 2 endpoints
GET
/v1/orders/list/:uid
List orders with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/commissions/list/:uid
List commissions with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}/v1/contracts/ 1 endpoint
GET
/v1/contracts/list/:uid
List contracts with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional restrict to IDs
asc?: string, // optional sort asc
desc?: string, // optional sort desc
on?: string[] // optional filters: tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}/v1/reports/ 14 endpoints
GET
/v1/reports/general_ledger/:uid
List general ledger summary.
GET
/v1/reports/general_ledger/:uid/:account
List general ledger entries for an account.
POST
/v1/reports/journal/:uid
List journal entries with server-side filtering and pagination.
{
from?: number, // default 0
size?: number, // default 30
ids?: number[], // optional: restrict to IDs
asc?: string, // optional: sort asc, e.g. "Datum;ID"
desc?: string, // optional: sort desc, e.g. "Datum;ID"
on?: string[] // optional filters, tokens "Field;search;from;to"
}{
total: number,
filtered: number,
fields: DField[],
data: any[],
summary: { [key: string]: number },
query: DQuery
}
DField = {
name: string,
text?: string,
sort?: 'asc'|'desc'|'',
// simple values (one of these may be present)
string?: string|null,
number?: number|null,
numbers?: number[],
date?: string|null, // ISO YYYY-MM-DD
checkbox?: boolean|null,
select?: { // select-like inputs
type: 'number'|'date'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkbuttons?: { // select-like inputs
type: 'number'|'string',
value?: any|null,
options: { value: any, text: string }[]
},
checkboxes?: { // select-like inputs
type: 'number'|'date'|'string'|'number[]'|'string[]',
values?: any[],
options: { value: any, text: string }[],
classInput?: string
},
range?: { // ranges and validity
type: 'number'|'date',
nullable?: boolean,
from?: number|string|Date|null,
to?: number|string|Date|null
},
valid_until?: {
type: 'date',
nullable?: boolean,
value?: string|Date|null
}
}
DQuery = {
from: number,
size: number,
init?: number,
fields: DField[]
}
GET
/v1/reports/costs_revenues_by_account/:uid
List costs and revenues by account.
POST
/v1/reports/monthly_statement/:uid
Compute monthly statement for selected accounts.
{
from?: string, // ISO date YYYY-MM-DD
to?: string, // ISO date YYYY-MM-DD
ucty: string[], // required: account numbers/prefixes
stredisko?: number, // optional: centre ID
cinnost?: number, // optional: activity ID
zakazka?: string // optional: order number
}
GET
/v1/reports/highest_bank/:uid
Get bank summary for current and previous month.
GET
/v1/reports/highest_cash/:uid
Get cash summary for current and previous month.
GET
/v1/reports/statistics/:uid
Get company statistics.
GET
/v1/reports/income_tax/:uid
List corporate income tax inputs.
GET
/v1/reports/income_tax/:uid/:account
List corporate income tax entries for an account.
POST
/v1/reports/overview/:uid
Compute profitability overview.
{
centre?: number, // optional: centre ID
cinnost?: number, // optional: activity ID
cislo_zak?: string, // optional: order number
RelTpFak?: number[], // optional: invoice types [1,2,3,4,5,6,11,12,13,14,15,16]
InvoiceType?: number, // optional: one of RelTpFak (affects sign)
dateTo?: string, // optional: ISO date YYYY-MM-DD
dateFrom?: string, // optional: ISO date YYYY-MM-DD
from?: number, // optional: days lower bound, default 0
to?: number // optional: days upper bound, default 100
}
POST
/v1/reports/overview/:uid/items
List items contributing to profitability overview.
{
centre?: number,
cinnost?: number,
cislo_zak?: string,
RelTpFak?: number[],
InvoiceType?: number,
dateTo?: string, // ISO date YYYY-MM-DD
dateFrom?: string, // ISO date YYYY-MM-DD
percentage: string // one of: '30','360','720','1080'
}
POST
/v1/reports/selected_services/:uid
Compute KPIs for selected services.
{
centre?: number,
cinnost?: number,
cislo_zak?: string,
RelTpFak?: number[], // invoice types [1,2,3,4,5,6,11,12,13,14,15,16]
InvoiceType?: number,
dateTo?: string, // ISO date YYYY-MM-DD
dateFrom?: string, // ISO date YYYY-MM-DD
type: 'N'|'P'|'S'|'C'|'l' // required: service code
}
POST
/v1/reports/selected_services/:uid/items
List items for selected services KPIs.
{
centre?: number,
cinnost?: number,
cislo_zak?: string,
RelTpFak?: number[],
InvoiceType?: number,
dateTo?: string, // ISO date YYYY-MM-DD
dateFrom?: string, // ISO date YYYY-MM-DD
type: 'N'|'P'|'S'|'C'|'l' // required: service code
}