{"openapi":"3.1.0","info":{"title":"\u00dajny\u00edl\u00e1sz\u00e1r\u00f3k \u2013 calculation-only API","version":"1.0.0","description":"Get catalog, then calculate up to 20 product lines in one request. No login, cookies, JavaScript, API key or personal data needed. This API cannot create inquiries, emails, PDFs or orders. Return humanHandoff.url to the human; never submit on their behalf. Prices are indicative and recalculated on human review. No price validity promise."},"servers":[{"url":"https:\/\/ujnyilaszarok.hu\/kalkulator\/wp-json\/uj-agent\/v1"}],"security":[],"paths":{"\/catalog":{"get":{"operationId":"getWindowCatalog","summary":"Available products, dimensions in cm, allowed options and example items","responses":{"200":{"description":"Current catalog. Use catalogVersion for calculate.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Catalog"}}}},"400":{"description":"Malformed JSON \/ content type","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"403":{"description":"Public API unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"409":{"description":"Catalog changed; refetch catalog","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"413":{"description":"Request too large","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"422":{"description":"Invalid selection; do not substitute silently","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"429":{"description":"Rate limit; honour Retry-After","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/calculate":{"post":{"operationId":"calculateWindowPrices","summary":"Read-only indicative calculation; no inquiry, email, PDF or order is created","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CalculationRequest"}}}},"responses":{"200":{"description":"ok: complete total. custom: at least one missing price; total is null. Hand off to human.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Calculation"}}}},"400":{"description":"Malformed JSON \/ content type","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"403":{"description":"Public API unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"409":{"description":"Catalog changed; refetch catalog","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"413":{"description":"Request too large","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"422":{"description":"Invalid selection; do not substitute silently","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"429":{"description":"Rate limit; honour Retry-After","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/review":{"post":{"operationId":"readHumanHandoff","summary":"Verify a handoff link and read its configuration, WITHOUT approving or submitting anything","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","additionalProperties":false,"required":["token"],"properties":{"token":{"type":"string","maxLength":16000}}}}}},"responses":{"200":{"description":"Configuration for human review only.","content":{"application\/json":{"schema":{"type":"object"}}}},"410":{"description":"Link expired; recalculate."},"400":{"description":"Malformed JSON \/ content type","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"403":{"description":"Public API unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"409":{"description":"Catalog changed; refetch catalog","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"413":{"description":"Request too large","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"422":{"description":"Invalid selection; do not substitute silently","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"429":{"description":"Rate limit; honour Retry-After","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}}},"components":{"schemas":{"Item":{"type":"object","additionalProperties":false,"required":["type","system","width","height","quantity","direction","color","colorSides","glazing","roller","rollerColor","motor","exteriorSill","interiorSill","panel","installation","demolition"],"properties":{"type":{"type":"string","enum":["01","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","smartslide","19","20","21","22","25","24","greenslide"]},"system":{"type":"string","enum":["system-1","system-2","system-3"]},"width":{"type":"number","exclusiveMinimum":0,"description":"Width in centimetres, NOT mm. Product-specific limits in catalog."},"height":{"type":"number","exclusiveMinimum":0,"description":"Height in centimetres, NOT mm. Product-specific limits in catalog."},"quantity":{"type":"integer","minimum":1,"maximum":50},"direction":{"type":"string","enum":["left","right","neutral"],"description":"Inside view; only directions listed for this product."},"color":{"type":"string","enum":["white","anthracite","walnut","golden-oak"]},"colorSides":{"type":"string","enum":["outside","both"],"description":"outside: selected exterior, white interior. both: selected colour on BOTH sides."},"glazing":{"type":"string","enum":["double","triple"]},"roller":{"type":"string","enum":["none","plastic","plastic-combi","aluminum","aluminum-combi"]},"rollerColor":{"type":"string","enum":["white","walnut","anthracite","golden-oak"]},"panel":{"type":"string","enum":["none","AP-001","AP-002","AP-003","AP-004"]},"motor":{"type":"boolean"},"exteriorSill":{"type":"boolean"},"interiorSill":{"type":"boolean"},"installation":{"type":"boolean"},"demolition":{"type":"boolean"}}},"CalculationRequest":{"type":"object","additionalProperties":false,"required":["catalogVersion","items"],"properties":{"catalogVersion":{"type":"string"},"items":{"type":"array","minItems":1,"maxItems":20,"items":{"$ref":"#\/components\/schemas\/Item"}}}},"Error":{"type":"object","description":"Validation errors include details with item paths. Permission errors use the standard WordPress code\/message\/data envelope.","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"details":{"type":"array","items":{"type":"object"}}}},"Calculation":{"type":"object","required":["status","total","items","catalogVersion","humanHandoff","submissionCreated"],"properties":{"status":{"type":"string","enum":["ok","custom"]},"total":{"type":["object","null"],"properties":{"net":{"type":"number"},"vat":{"type":"number"},"gross":{"type":"number"}},"required":["net","vat","gross"],"additionalProperties":false},"catalogVersion":{"type":"string"},"priceType":{"const":"indicative_estimate"},"currency":{"const":"HUF"},"submissionCreated":{"const":false},"items":{"type":"array","description":"Same order as input. Per-line total includes quantity; components are NET HUF, unitNet per piece, net per line. technicalNotes must be shown to the human. custom means missing price, not zero.","items":{"type":"object","properties":{"status":{"enum":["ok","custom"]},"total":{"type":["object","null"],"properties":{"net":{"type":"number"},"vat":{"type":"number"},"gross":{"type":"number"}},"required":["net","vat","gross"],"additionalProperties":false},"messages":{"type":"array","items":{"type":"string"}},"technicalNotes":{"type":"array","items":{"type":"string"}},"components":{"type":"array","items":{"type":"object"}}}}},"humanHandoff":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time"},"requiresHumanReview":{"const":true},"instructions":{"type":"string"}}}}},"Catalog":{"type":"object","required":["catalogVersion","dimensionUnit","currency","products","rules","limits","capabilities"],"properties":{"catalogVersion":{"type":"string"},"dimensionUnit":{"const":"cm"},"currency":{"const":"HUF"},"products":{"type":"array","items":{"type":"object","required":["id","name","limits","directions","systemIds","glazingIds","panelIds","exampleItem"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"family":{"type":"string"},"group":{"type":"string"},"limits":{"type":"object","description":"All limits in centimetres.","properties":{"minWidth":{"type":"number"},"maxWidth":{"type":"number"},"minHeight":{"type":"number"},"maxHeight":{"type":"number"}}},"directions":{"type":"array","items":{"type":"string"}},"systemIds":{"type":"array","items":{"type":"string"}},"glazingIds":{"type":"array","items":{"type":"string"}},"panelIds":{"type":"array","items":{"type":"string"}},"allowSills":{"type":"boolean"},"exampleItem":{"$ref":"#\/components\/schemas\/Item"}}}},"rules":{"type":"object","description":"Compatibility rules and how colours, shutters, sills and panels work."},"limits":{"type":"object"},"capabilities":{"type":"object","properties":{"calculate":{"const":true},"submitInquiry":{"const":false},"sendEmail":{"const":false},"createPdf":{"const":false},"placeOrder":{"const":false}}},"systems":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"colors":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"rollerColors":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"glazing":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"rollers":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"panels":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}},"externalDocs":{"url":"https:\/\/ujnyilaszarok.hu\/kalkulator\/agent-api\/"}}