{"openapi":"3.1.0","info":{"title":"RPK Lux Expo Signage Calculator API","version":"2026-08-21","description":"Расчёт вывесок, параметры и SVG-визуализация. Цены в RUB с НДС.","contact":{"name":"RPK Lux Expo","url":"https://rpkluxexpo.ru","email":"kp@rpkluxexpo.ru"}},"servers":[{"url":"https://calc.rpkluxexpo.ru"}],"paths":{"/api/ai/v1/capabilities":{"get":{"operationId":"getSignCalculatorCapabilities","summary":"Получить возможности и каталог","responses":{"200":{"description":"Каталог"}}}},"/api/ai/v1/calculate":{"post":{"operationId":"calculateSign","summary":"Рассчитать вывеску","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text","heightCm"],"properties":{"text":{"type":"string","maxLength":500,"examples":["ШАУРМА"]},"heightCm":{"type":"number","minimum":8,"maximum":1000,"examples":[50]},"widthCm":{"type":"number","minimum":1,"maximum":10000,"description":"Общая ширина; иначе рассчитывается по тексту."},"quantity":{"type":"integer","minimum":1,"maximum":10000,"default":1},"productId":{"type":"string","pattern":"^p([1-9]|[1-4][0-9]|50)$"},"lighting":{"type":"string","enum":["front","both","back","side","side-front","pixels","none","neon"],"default":"front"},"construction":{"type":"string","enum":["vol","flat"],"default":"vol"},"material":{"type":"string","enum":["aluminum","pvc","acrylic","akp","steel"],"default":"aluminum"},"mount":{"type":"string","enum":["frame","sub","acrylic","dist"],"default":"frame"},"led":{"type":"string","enum":["neutral","cold","warm","rgb"],"default":"neutral"},"service":{"type":"string","enum":["pickup","mkad","mo","delivery"],"default":"pickup"},"fontFamily":{"type":"string","default":"Montserrat"},"substrateId":{"type":"string"},"complexityPct":{"type":"integer","enum":[0,20,30,50,100],"default":0},"faceFinish":{"type":"string","enum":["standard","film","print","paint"],"default":"standard"},"sideFinish":{"type":"string","enum":["standard","film","paint"],"default":"standard"},"faceColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"sideColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"substrateColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"bracketSideColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"bracketFrameColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"customFilms":{"type":"array","maxItems":30,"items":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},"operatingVoltage":{"type":"string","examples":["12 В"]},"powerSupply":{"type":"string","examples":["Герметичный блок питания 12 В, мощность по расчёту"]},"ledModule":{"type":"string","examples":["LED-модуль 2 линзы, нейтральный белый"]},"cableLengthM":{"type":"number","minimum":0,"maximum":1000,"examples":[5]},"customer":{"type":"string"},"installationAddress":{"type":"string"},"productionNotes":{"type":"string","maxLength":1000},"sourceFileName":{"type":"string"},"logoEnabled":{"type":"boolean","default":false},"logoSizeCm":{"type":"number"},"logoLight":{"type":"boolean","default":true},"bracketEnabled":{"type":"boolean","default":false},"bracketSizeCm":{"type":"number"},"bracketLight":{"type":"boolean","default":true},"elements":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"label":{"type":"string"},"widthCm":{"type":"number"},"heightCm":{"type":"number"},"greaterSideCm":{"type":"number"}}}}}}}}},"responses":{"200":{"description":"Расчёт и URL визуализации"},"422":{"description":"Нужен технолог"}}}},"/api/ai/v1/visualization.svg":{"get":{"operationId":"visualizeSign","summary":"Получить SVG с размерами","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","maxLength":500,"examples":["ШАУРМА"]}},{"name":"heightCm","in":"query","required":true,"schema":{"type":"number","minimum":8,"maximum":1000,"examples":[50]}},{"name":"widthCm","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":10000,"description":"Общая ширина; иначе рассчитывается по тексту."}},{"name":"quantity","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","pattern":"^p([1-9]|[1-4][0-9]|50)$"}},{"name":"lighting","in":"query","required":false,"schema":{"type":"string","enum":["front","both","back","side","side-front","pixels","none","neon"],"default":"front"}},{"name":"construction","in":"query","required":false,"schema":{"type":"string","enum":["vol","flat"],"default":"vol"}},{"name":"material","in":"query","required":false,"schema":{"type":"string","enum":["aluminum","pvc","acrylic","akp","steel"],"default":"aluminum"}},{"name":"mount","in":"query","required":false,"schema":{"type":"string","enum":["frame","sub","acrylic","dist"],"default":"frame"}},{"name":"led","in":"query","required":false,"schema":{"type":"string","enum":["neutral","cold","warm","rgb"],"default":"neutral"}},{"name":"service","in":"query","required":false,"schema":{"type":"string","enum":["pickup","mkad","mo","delivery"],"default":"pickup"}},{"name":"fontFamily","in":"query","required":false,"schema":{"type":"string","default":"Montserrat"}},{"name":"substrateId","in":"query","required":false,"schema":{"type":"string"}},{"name":"complexityPct","in":"query","required":false,"schema":{"type":"integer","enum":[0,20,30,50,100],"default":0}},{"name":"faceFinish","in":"query","required":false,"schema":{"type":"string","enum":["standard","film","print","paint"],"default":"standard"}},{"name":"sideFinish","in":"query","required":false,"schema":{"type":"string","enum":["standard","film","paint"],"default":"standard"}},{"name":"faceColor","in":"query","required":false,"schema":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},{"name":"sideColor","in":"query","required":false,"schema":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},{"name":"substrateColor","in":"query","required":false,"schema":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},{"name":"bracketSideColor","in":"query","required":false,"schema":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},{"name":"bracketFrameColor","in":"query","required":false,"schema":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},{"name":"customFilms","in":"query","required":false,"schema":{"type":"array","maxItems":30,"items":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}}},{"name":"operatingVoltage","in":"query","required":false,"schema":{"type":"string","examples":["12 В"]}},{"name":"powerSupply","in":"query","required":false,"schema":{"type":"string","examples":["Герметичный блок питания 12 В, мощность по расчёту"]}},{"name":"ledModule","in":"query","required":false,"schema":{"type":"string","examples":["LED-модуль 2 линзы, нейтральный белый"]}},{"name":"cableLengthM","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":1000,"examples":[5]}},{"name":"customer","in":"query","required":false,"schema":{"type":"string"}},{"name":"installationAddress","in":"query","required":false,"schema":{"type":"string"}},{"name":"productionNotes","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"sourceFileName","in":"query","required":false,"schema":{"type":"string"}},{"name":"logoEnabled","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"logoSizeCm","in":"query","required":false,"schema":{"type":"number"}},{"name":"logoLight","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"bracketEnabled","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"bracketSizeCm","in":"query","required":false,"schema":{"type":"number"}},{"name":"bracketLight","in":"query","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"SVG","content":{"image/svg+xml":{"schema":{"type":"string","contentMediaType":"image/svg+xml"}}}}}}},"/api/ai/v1/visualize":{"post":{"operationId":"visualizeSignFromJson","summary":"Получить SVG по JSON","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text","heightCm"],"properties":{"text":{"type":"string","maxLength":500,"examples":["ШАУРМА"]},"heightCm":{"type":"number","minimum":8,"maximum":1000,"examples":[50]},"widthCm":{"type":"number","minimum":1,"maximum":10000,"description":"Общая ширина; иначе рассчитывается по тексту."},"quantity":{"type":"integer","minimum":1,"maximum":10000,"default":1},"productId":{"type":"string","pattern":"^p([1-9]|[1-4][0-9]|50)$"},"lighting":{"type":"string","enum":["front","both","back","side","side-front","pixels","none","neon"],"default":"front"},"construction":{"type":"string","enum":["vol","flat"],"default":"vol"},"material":{"type":"string","enum":["aluminum","pvc","acrylic","akp","steel"],"default":"aluminum"},"mount":{"type":"string","enum":["frame","sub","acrylic","dist"],"default":"frame"},"led":{"type":"string","enum":["neutral","cold","warm","rgb"],"default":"neutral"},"service":{"type":"string","enum":["pickup","mkad","mo","delivery"],"default":"pickup"},"fontFamily":{"type":"string","default":"Montserrat"},"substrateId":{"type":"string"},"complexityPct":{"type":"integer","enum":[0,20,30,50,100],"default":0},"faceFinish":{"type":"string","enum":["standard","film","print","paint"],"default":"standard"},"sideFinish":{"type":"string","enum":["standard","film","paint"],"default":"standard"},"faceColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"sideColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"substrateColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"bracketSideColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"bracketFrameColor":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"customFilms":{"type":"array","maxItems":30,"items":{"type":"object","description":"Точный цвет для производственного ТЗ. Не подбирайте код самостоятельно.","properties":{"palette":{"type":"string","examples":["ORACAL 8500"]},"code":{"type":"string","examples":["8500-025"]},"name":{"type":"string","examples":["Brimstone Yellow"]},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}}},"operatingVoltage":{"type":"string","examples":["12 В"]},"powerSupply":{"type":"string","examples":["Герметичный блок питания 12 В, мощность по расчёту"]},"ledModule":{"type":"string","examples":["LED-модуль 2 линзы, нейтральный белый"]},"cableLengthM":{"type":"number","minimum":0,"maximum":1000,"examples":[5]},"customer":{"type":"string"},"installationAddress":{"type":"string"},"productionNotes":{"type":"string","maxLength":1000},"sourceFileName":{"type":"string"},"logoEnabled":{"type":"boolean","default":false},"logoSizeCm":{"type":"number"},"logoLight":{"type":"boolean","default":true},"bracketEnabled":{"type":"boolean","default":false},"bracketSizeCm":{"type":"number"},"bracketLight":{"type":"boolean","default":true},"elements":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"label":{"type":"string"},"widthCm":{"type":"number"},"heightCm":{"type":"number"},"greaterSideCm":{"type":"number"}}}}}}}}},"responses":{"200":{"description":"SVG","content":{"image/svg+xml":{"schema":{"type":"string","contentMediaType":"image/svg+xml"}}}}}}}}}