API розрахунку друку книг

Базова URL: https://ice-print.com.ua/api/v1/api_calc_books.php

Формат відповіді: 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 — розрахунок

Варіант #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
Варіант #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
А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
А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 екземплярів" ]
}

Примітки

Швидкі посилання

Ендпоїнт API
https://ice-print.com.ua/api/v1/api_calc_books.php
Опції (GET)
Довідники та підказки до аліасів
SSR-сторінка розрахунку
Онлайн-калькулятор друку книг
Swagger UI
(інтерактивна дока)
Тестування запитів у браузері
OpenAPI JSON
Машиночитна специфікація (application/vnd.oai.openapi+json)