Appearance
/document
Кінцева точка /document відповідає за роботу з документами.
Методи
- /document/index - завантажити перелік документів
- /document/load - завантажити документ
- /document/update - створити або оновити документ
- /document/setdone - провести або розпровести документ
- /document/getdone - перевірити проведеність документа
- /document/linkto - пов'язати два документи
- /document/pdf - отримати друковану форму документа (PDF)
GET /document/index/?{from}&{to}&{pageSize=100}&{offset=0}
Завантажує перелік документів за період.
Параметри запиту:
- from - початок періоду (дата документа), формат
2026-01-01. Обов'язковий. - to - кінець періоду. Обов'язковий.
- pageSize - розмір сторінки (1-100).
- offset - зміщення ( > 0)
- dateModified - необов'язковий фільтр: тільки документи, змінені починаючи з вказаної дати/часу. Зручно для інкрементальної синхронізації.
- agent - необов'язковий фільтр: UID контрагента. Повертаються тільки документи цього контрагента. Якщо контрагента з таким UID немає - повертається пустий перелік.
Приклад: /document/index?from=2026-09-01&to=2026-09-30&agent=d362cdfd-72d5-4906-889c-44152121c8b4
Повертає стандартну відповідь для індексу об'єктів Document (без рядків документів).
javascript
{
"success" : true,
"totalCount": 10,
"data": [ /* Document */
{ "uid": "...." }
]
};{
"success" : true,
"totalCount": 10,
"data": [ /* Document */
{ "uid": "...." }
]
};Зверніть увагу, що поле totalCount поверне загальну кількість документів за період (з урахуванням фільтрів dateModified та agent).
GET /document/load/{uid}
Завантажує документ по його UID.
Параметри запиту:
- uid - UID документа (в URL)
Повертає стандартну відповідь з об'єктом Document, включно з рядками (details), складами (storeIn, storeOut), ознакою проведеності (done), прапорцем «ПДВ в т.ч.» (vatInPrice), зв'язком з батьківським документом (parent), якщо він встановлений, та показниками paid / shipped (оплачено / відвантажено за пов'язаними проведеними документами).
json
{
"success" : true,
"data": { /* Document */
"uid": "...."
}
};{
"success" : true,
"data": { /* Document */
"uid": "...."
}
};POST /document/update
Створює або оновлює властивості документа.
Тіло запита має бути обєктом Document:
json
{
"uid":"C259B17B-BFC8-48B9-A6A7-CEB1FD054413",
"date":"2023-02-23",
"type": "Invoice",
"no":"string",
"sum": 100,
"vatCode": "20",
"vatInPrice": true,
"memo": "string",
"agent": {
"uid": "d362cdfd-72d5-4906-889c-44152121c8b4",
"name": "string",
},
"details": [
{
"uid": "334D0E63-3091-4C94-AB1D-0B240B43BBC5",
"entity":{
"uid": "374BA375-75CF-4C94-BBF7-51C3F8F81534",
"kind": "goods",
"name": "string"
},
"qty":"1",
"price":"10",
"sum": "10",
"memo": "string"
}
]
}{
"uid":"C259B17B-BFC8-48B9-A6A7-CEB1FD054413",
"date":"2023-02-23",
"type": "Invoice",
"no":"string",
"sum": 100,
"vatCode": "20",
"vatInPrice": true,
"memo": "string",
"agent": {
"uid": "d362cdfd-72d5-4906-889c-44152121c8b4",
"name": "string",
},
"details": [
{
"uid": "334D0E63-3091-4C94-AB1D-0B240B43BBC5",
"entity":{
"uid": "374BA375-75CF-4C94-BBF7-51C3F8F81534",
"kind": "goods",
"name": "string"
},
"qty":"1",
"price":"10",
"sum": "10",
"memo": "string"
}
]
}Зверніть увагу:
Непередані властивості не змінюються (див. Особливості оновлення). Зокрема, якщо не передати sum або details - сума та рядки документа залишаться без змін. Явно переданий пустий масив
"details": []видаляє всі рядки.Прапорець vatInPrice визначає, як трактуються ціни та суми (price, sum):
- vatInPrice: true - «ПДВ в т.ч.»: ціни та суми передаються З ПДВ. Система сама виділяє суму ПДВ за ставкою vatCode (наприклад, sum 100 з vatCode "20" - це 83.33 без ПДВ + 16.67 ПДВ, разом 100).
- vatInPrice: false або відсутній - ціни та суми передаються без ПДВ, сума ПДВ нараховується зверху за ставкою vatCode.
Відповіді (load, index) симетричні: для документа з «ПДВ в т.ч.» суми повертаються з ПДВ - що передали, те й отримаєте.
Властивість done в цьому методі ігнорується. Для проведення документа використовуйте /document/setdone.
Проведений документ не можна оновлювати. Спочатку розпроведіть його.
Повертає стандартну відповідь з об'єктом Document.
json
{
"success" : true,
"data": { /* Document */
"uid": "...."
}
}{
"success" : true,
"data": { /* Document */
"uid": "...."
}
}Виготовлення
Документ «Виготовлення» (type: "manufacture", розділ «Запаси») має два види рядків в одному масиві details - їх розрізняє властивість kind:
- "product" - готова продукція, оприбутковується на склад storeIn;
- "material" - сировина, списується зі складу storeOut, або послуга, вартість якої включається до собівартості продукції.
json
{
"uid":"C259B17B-BFC8-48B9-A6A7-CEB1FD054413",
"date":"2026-09-30",
"type": "manufacture",
"storeOut": { "uid": "0E0B4E2C-6B0B-4B37-9C6A-6F3C0C1B7A11" },
"storeIn": { "uid": "0E0B4E2C-6B0B-4B37-9C6A-6F3C0C1B7A11" },
"details": [
{
"kind": "product",
"entity": { "uid": "374BA375-75CF-4C94-BBF7-51C3F8F81534", "kind": "product", "name": "string" },
"qty": 2
},
{
"kind": "material",
"entity": { "uid": "9F3A1D52-3C0E-4E0A-8C55-2B7E1A0D4F10" },
"qty": 4
}
]
}{
"uid":"C259B17B-BFC8-48B9-A6A7-CEB1FD054413",
"date":"2026-09-30",
"type": "manufacture",
"storeOut": { "uid": "0E0B4E2C-6B0B-4B37-9C6A-6F3C0C1B7A11" },
"storeIn": { "uid": "0E0B4E2C-6B0B-4B37-9C6A-6F3C0C1B7A11" },
"details": [
{
"kind": "product",
"entity": { "uid": "374BA375-75CF-4C94-BBF7-51C3F8F81534", "kind": "product", "name": "string" },
"qty": 2
},
{
"kind": "material",
"entity": { "uid": "9F3A1D52-3C0E-4E0A-8C55-2B7E1A0D4F10" },
"qty": 4
}
]
}Зверніть увагу:
- kind обов'язковий для кожного рядка; рядок без нього не приймається.
- У відповіді рядки впорядковані: спочатку готова продукція, потім сировина.
- agent, contract, vatCode, vatInPrice для цього документа не використовуються.
- Ціни та суми розраховуються при проведенні, передавати їх не обов'язково: сировина списується за собівартістю партій, а сума документа та готової продукції дорівнює сумі списаної сировини і послуг. Значення price / sum, передані в запиті, після проведення будуть замінені розрахованими.
- Для проведення мають бути вказані обидва склади (storeOut та storeIn; це може бути один і той самий склад), хоча б один рядок сировини, кількість готової продукції більша за нуль, а сировини на складі storeOut має вистачати. Один об'єкт обліку не може повторюватись серед рядків одного виду.
POST /document/setdone
Проводить (done: true) або розпроводить (done: false) документ.
Виконується та сама операція, що й кнопки «Провести» / «Розпровести» в інтерфейсі, з тими самими наслідками: для видаткової накладної - списання залишків складу та рух по регістрах, для рахунку - встановлення статусу, перерахунок показників «оплачено/відвантажено» пов'язаного рахунку тощо.
Тіло запита:
json
{
"uid":"c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": true
}{
"uid":"c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": true
}Повертає стандартну відповідь з поточним станом документа:
json
{
"success" : true,
"data": {
"uid": "c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": true
}
}{
"success" : true,
"data": {
"uid": "c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": true
}
}Зверніть увагу:
- Метод ідемпотентний: повторний виклик для документа, який вже знаходиться в потрібному стані, не є помилкою.
- Документ без рядків провести не можна.
- Не можна розпровести документ, у якого є проведені дочірні документи.
- Для проведення та розпроведення користувачу API потрібні ролі з відповідними правами. Ролі призначає адміністратор облікового запису в особистому кабінеті: Логіни → (користувач для API) → Фірми та дозволи.
GET /document/getdone/{uid}
Перевіряє проведеність документа по його UID.
Параметри запиту:
- uid - UID документа (в URL)
json
{
"success" : true,
"data": {
"uid": "c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": false
}
}{
"success" : true,
"data": {
"uid": "c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"done": false
}
}POST /document/linkto
Пов'язує два документа. Зверніть увагу, що звязувати можна як звичайні (Document), так і платіжні документи (PayDocument).
Тіло запита має бути обєктом DocumentLink:
json
{
"uid":"c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"parent":"d362cdfd-72d5-4906-889c-44152121c8b4"
}{
"uid":"c259b17b-bfc8-48b9-a6a7-ceb1fd054413",
"parent":"d362cdfd-72d5-4906-889c-44152121c8b4"
}Напрямок зв'язку: uid - дочірній документ, parent - батьківський. Наприклад, для пари «рахунок → видаткова накладна» батьківським є рахунок:
json
{
"uid":"<uid видаткової накладної>",
"parent":"<uid рахунку>"
}{
"uid":"<uid видаткової накладної>",
"parent":"<uid рахунку>"
}Зверніть увагу:
- Метод ідемпотентний: повторний виклик для тієї ж пари не створює дубль.
- Документ має одного батька: виклик з іншим parent перезаписує зв'язок.
- Встановлений зв'язок повертається у властивості parent дочірнього документа в /document/load.
- Після зв'язування перераховуються показники paid / shipped батьківського документа (а при перелінковці - і попереднього). Тому порядок викликів setdone та linkto не має значення: статуси рахунку («Очікує оплати» / «Очікує відвантаження») оновляться в обох випадках.
Повертає стандартну відповідь з пустим об'єктом даних
json
{
"success" : true,
"data": {
}
}{
"success" : true,
"data": {
}
}GET /document/pdf/{uid}?{form}
Повертає друковану форму документа у форматі PDF - той самий файл, що формується в інтерфейсі командою «Експортувати → … Adobe PDF».
Параметри запиту:
- uid - UID документа (в URL)
- form - код друкованої форми (необов'язковий). Без цього параметра повертається основна форма виду документа (для рахунку - рахунок, для видаткової накладної - видаткова накладна). Для видаткової накладної також доступна складська накладна:
?form=WBWH.
Відповідь - файл application/pdf (без стандартного JSON-конверта).
У випадку помилки повертається JSON з відповідним HTTP-статусом:
- 404 - документ або друкована форма не знайдені
- 502 - помилка сервісу друкованих форм
json
{
"success" : false,
"errors": [ "..." ]
}{
"success" : false,
"errors": [ "..." ]
}