Формат відповіді: JSON. Аутентифікація не потрібна. CORS дозволено (для фронтенда).
Призначення: отримання довідників, розрахунок вартості, опційне збереження прорахунку з поверненням id
, читання збереженого прорахунку.
Ця версія документа описує аліас-параметри (format_mm
, qty
, color_mode
, paper_block
, paper_cover
, binding
, cover_lam
, copies
). У відповідях для calc
та get
присутній блок input_aliases
з віддзеркаленням цих значень.
Параметри запиту
Параметр | Допустимі значення | Обов’язково | Примітка |
---|---|---|---|
format_mm |
a4_205x290 | a5_145x205 | a6_105x145 |
так | Формат книги. |
qty |
ціле > 0 | так | Кількість сторінок (синонім «pages»). |
color_mode |
bw_1+1 | color_4+4 | color_full |
так | Кольоровість блоку. |
paper_block |
offset80 |
ні | Не впливає на ціну; відображається в calc_text . |
paper_cover |
200gramm | 250gramm | 300gramm | 350gramm |
для binding=case_kbs_glue |
Для твердої палітури (case_7bc_sewn) можна не передавати. |
binding |
case_kbs_glue | case_7bc_sewn |
так | М’яка палітура (термоклей) або тверда (7БЦ). |
cover_lam |
gloss | matt | not |
так | Для твердої палітури значення not автоматично нормалізується до gloss . |
copies |
ціле ≥ 50 | так | Тираж. |
save |
0 | 1 |
ні | Якщо 1 — зберегти прорахунок у БД і повернути saved.id /saved.url . |
Ендпоїнти
GET /?action=options — довідники
Повертає доступні значення для полів. Також може містити newParamHints
— підказки по аліасах.
GET /?action=calc — розрахунок
Варіант #1
А5, м’яка (клей), глянець, ч/б, 120 стр., 200 екз. …?action=calc&format_mm=a5_145x205&qty=120&color_mode=bw_1+1&paper_block=offset80&paper_cover=300gramm&binding=case_kbs_glue&cover_lam=gloss&copies=200
А5, м’яка (клей), глянець, ч/б, 120 стр., 200 екз. …?action=calc&format_mm=a5_145x205&qty=120&color_mode=bw_1+1&paper_block=offset80&paper_cover=300gramm&binding=case_kbs_glue&cover_lam=gloss&copies=200
Варіант #2
А5, тверда (7БЦ, шитво), 160 стр., 300 екз., глянець, збереження …?action=calc&format_mm=a5_145x205&qty=160&color_mode=color_4+4&paper_block=offset80&binding=case_7bc_sewn&cover_lam=gloss&copies=300&save=1
А5, тверда (7БЦ, шитво), 160 стр., 300 екз., глянець, збереження …?action=calc&format_mm=a5_145x205&qty=160&color_mode=color_4+4&paper_block=offset80&binding=case_7bc_sewn&cover_lam=gloss&copies=300&save=1
Варіант #3
А4, м’яка (клей), 240 стр., 120 екз., повноколір, матова …?action=calc&format_mm=a4_205x290&qty=240&color_mode=color_full&paper_block=offset80&paper_cover=250gramm&binding=case_kbs_glue&cover_lam=matt&copies=120
А4, м’яка (клей), 240 стр., 120 екз., повноколір, матова …?action=calc&format_mm=a4_205x290&qty=240&color_mode=color_full&paper_block=offset80&paper_cover=250gramm&binding=case_kbs_glue&cover_lam=matt&copies=120
Варіант #4
А6, тверда (7БЦ, шитво), 96 стр., 500 екз., not → глянець …?action=calc&format_mm=a6_105x145&qty=96&color_mode=bw_1+1&paper_block=offset80&binding=case_7bc_sewn&cover_lam=not&copies=500
А6, тверда (7БЦ, шитво), 96 стр., 500 екз., not → глянець …?action=calc&format_mm=a6_105x145&qty=96&color_mode=bw_1+1&paper_block=offset80&binding=case_7bc_sewn&cover_lam=not&copies=500
Варіант #5
А5, м’яка (клей), 80 стр., 50 екз., 4+4, глянець, 200g …?action=calc&format_mm=a5_145x205&qty=80&color_mode=color_4+4&paper_block=offset80&paper_cover=200gramm&binding=case_kbs_glue&cover_lam=gloss&copies=50
А5, м’яка (клей), 80 стр., 50 екз., 4+4, глянець, 200g …?action=calc&format_mm=a5_145x205&qty=80&color_mode=color_4+4&paper_block=offset80&paper_cover=200gramm&binding=case_kbs_glue&cover_lam=gloss&copies=50
Варіант #6
А4, тверда (7БЦ, шитво), 300 стр., 400 екз., повноколір, збереження …?action=calc&format_mm=a4_205x290&qty=300&color_mode=color_full&paper_block=offset80&binding=case_7bc_sewn&cover_lam=gloss&copies=400&save=1
А4, тверда (7БЦ, шитво), 300 стр., 400 екз., повноколір, збереження …?action=calc&format_mm=a4_205x290&qty=300&color_mode=color_full&paper_block=offset80&binding=case_7bc_sewn&cover_lam=gloss&copies=400&save=1
POST /?action=calc — розрахунок (JSON)
Ті самі аліаси в тілі application/json
:
{ "format_mm": "a5_145x205", "qty": 120, "color_mode": "bw_1+1", "paper_block": "offset80", "paper_cover": "300gramm", "binding": "case_kbs_glue", "cover_lam": "gloss", "copies": 200, "save": true }
curl -X POST 'https://ice-print.com.ua/api/v1/api_calc_books.php?action=calc' \ -H 'Content-Type: application/json' \ -d '{"format_mm":"a5_145x205","qty":120,"color_mode":"bw_1+1","paper_block":"offset80","paper_cover":"300gramm","binding":"case_kbs_glue","cover_lam":"gloss","copies":200,"save":true}'
GET /?action=get&n=ID — читання збереженого прорахунку
GET …/api_calc_books.php?action=get&n=123 (приклад; підставте справжній ID)
Структура відповіді
Успіх (calc)
{ "ok": true, "input": { "type": "A5", "bind": "flex", "cover": "C300", "lam": "gloss", "color": "1", "pages": 120, "copies": 200 }, "input_aliases": { "format_mm": "a5_145x205", "pages": 120, "qty": 120, "color_mode": "bw_1+1", "paper_block": "offset80", "paper_cover": "300gramm", "binding": "case_kbs_glue", "cover_lam": "gloss", "copies": 200 }, "result": { "cost_total": 17161, "cost_per_copy": 85.805 }, "saved": { "id": 456, "url": "https://ice-print.com.ua/calc_books.php?n=456" } }
Примітка:
cost_total
та cost_per_copy
у гривнях. Через округлення копійок можливі невеликі відхилення у середній ціні — остаточною є загальна сума.Успіх (get)
{ "ok": true, "id": 789, "input": { "type": "A5", "bind": "7bc", "cover": "", "lam": "gloss", "color": "4", "pages": 160, "copies": 300 }, "input_aliases": { "format_mm": "a5_145x205", "pages": 160, "qty": 160, "color_mode": "color_4+4", "paper_block": "offset80", "paper_cover": "", "binding": "case_7bc_sewn", "cover_lam": "gloss", "copies": 300 }, "result": { "cost_total": 35000, "cost_per_copy": 116.67 }, "calc_text": "ДРУК КНИГ (прорахунок № 789) …" }
Помилка валідації
{ "ok": false, "error": "validation_error", "fields": { "copies": "min_50" }, "messages": [ "Мінімальний тираж цього виду продукції - 50 екземплярів" ] }
Примітки
- Для твердої палітури (
binding=case_7bc_sewn
) значенняcover_lam=not
автоматично змінюється наgloss
. - У діапазоні 200–299 застосовується «плавний» перехід ціни до ставок для 300 екз.
- Для м’якої палітури (
binding=case_kbs_glue
) полеpaper_cover
є обов’язковим.
Швидкі посилання
Ендпоїнт API
https://ice-print.com.ua/api/v1/api_calc_books.php
Опції (GET)
Довідники та підказки до аліасів
SSR-сторінка розрахунку
Онлайн-калькулятор друку книг
Swagger UI
(інтерактивна дока)
(інтерактивна дока)
Тестування запитів у браузері
OpenAPI JSON
Машиночитна специфікація (
application/vnd.oai.openapi+json
)