{"openapi":"3.1.0","info":{"title":"RenoMeasure and PDF Editor Agent API","version":"1.0.0","description":"Identity-verified keys required. Each account: 30 requests/minute, 500 calculations/UTC day, 20 PDF upload/export operations/UTC day. Site caps: 120 requests/minute, 5000 calculations and 100 PDF operations/UTC day. Failed authenticated requests consume quota. Respect 429 Retry-After. No automatic charges. Fetch catalog first; send every field with explicit unit and locale. Currency follows locale (en=USD, zh-TW=TWD), with no conversion. Results are rounded display strings."},"servers":[{"url":"https://renomeasure.com"}],"components":{"securitySchemes":{"AgentKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"security":[{"AgentKey":[]}],"paths":{"/api/v1/calculators":{"get":{"security":[],"operationId":"listCalculators","summary":"Get calculators, field limits, units, and example inputs; cache for one hour","responses":{"200":{"description":"Calculator catalog","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string"},"calculators":{"type":"array","items":{"type":"object"}}}}}}}}}},"/api/v1/calculate":{"post":{"operationId":"calculateMaterials","summary":"Calculate material quantities using the website formulas","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["tile-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","tileLength","tileWidth","waste","perBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"tileLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Tile length (cm). ","example":60},"tileWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Tile width (cm). ","example":30},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"perBox":{"type":"integer","minimum":1,"maximum":1000000,"description":"Tiles per box (pcs). ","example":8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["tile-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","tileLength","tileWidth","waste","perBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"tileLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"磁磚長度 (cm). ","example":60},"tileWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"磁磚寬度 (cm). ","example":30},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"perBox":{"type":"integer","minimum":1,"maximum":1000000,"description":"每箱片數 (pcs). ","example":8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["tile-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","tileLength","tileWidth","waste","perBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"tileLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Tile length (in). ","example":24},"tileWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Tile width (in). ","example":12},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"perBox":{"type":"integer","minimum":1,"maximum":1000000,"description":"Tiles per box (pcs). ","example":8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["tile-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","tileLength","tileWidth","waste","perBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"tileLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"磁磚長度 (in). ","example":24},"tileWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"磁磚寬度 (in). ","example":12},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"perBox":{"type":"integer","minimum":1,"maximum":1000000,"description":"每箱片數 (pcs). ","example":8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["flooring-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","waste","coveragePerBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"coveragePerBox":{"type":"number","minimum":0.01,"maximum":1000000,"description":"Coverage per box (m²). ","example":2.2},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["flooring-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","waste","coveragePerBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"coveragePerBox":{"type":"number","minimum":0.01,"maximum":1000000,"description":"每包覆蓋面積 (m²). ","example":2.2},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["flooring-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","waste","coveragePerBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"coveragePerBox":{"type":"number","minimum":0.01,"maximum":1000000,"description":"Coverage per box (sq ft). ","example":23.8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["flooring-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","waste","coveragePerBox","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"coveragePerBox":{"type":"number","minimum":0.01,"maximum":1000000,"description":"每包覆蓋面積 (sq ft). ","example":23.8},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["paint-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","coats","coverage","canSize","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (m²). ","example":4},"coats":{"type":"integer","minimum":1,"maximum":8,"description":"Number of coats (coats). ","example":2},"coverage":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Coverage per unit (m²/L). ","example":10},"canSize":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Can size (L). ","example":5},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["paint-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","coats","coverage","canSize","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (m²). ","example":4},"coats":{"type":"integer","minimum":1,"maximum":8,"description":"塗刷層數 (coats). ","example":2},"coverage":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每單位覆蓋面積 (m²/L). ","example":10},"canSize":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每桶容量 (L). ","example":5},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["paint-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","coats","coverage","canSize","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (sq ft). ","example":42},"coats":{"type":"integer","minimum":1,"maximum":8,"description":"Number of coats (coats). ","example":2},"coverage":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Coverage per unit (sq ft/gal). ","example":350},"canSize":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Can size (gal). ","example":1},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["paint-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","coats","coverage","canSize","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (sq ft). ","example":42},"coats":{"type":"integer","minimum":1,"maximum":8,"description":"塗刷層數 (coats). ","example":2},"coverage":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每單位覆蓋面積 (sq ft/gal). ","example":350},"canSize":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每桶容量 (gal). ","example":1},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["concrete-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","waste","bagYield","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Slab depth (cm). ","example":10},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"bagYield":{"type":"number","minimum":0.001,"maximum":1000000,"description":"Yield per bag (m³). ","example":0.012},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["concrete-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","waste","bagYield","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (cm). ","example":10},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"bagYield":{"type":"number","minimum":0.001,"maximum":1000000,"description":"每袋可施工體積 (m³). ","example":0.012},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["concrete-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","waste","bagYield","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Slab depth (in). ","example":4},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"bagYield":{"type":"number","minimum":0.001,"maximum":1000000,"description":"Yield per bag (ft³). ","example":0.6},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["concrete-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","waste","bagYield","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (in). ","example":4},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"bagYield":{"type":"number","minimum":0.001,"maximum":1000000,"description":"每袋可施工體積 (ft³). ","example":0.6},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["drywall-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","sheetArea","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (m²). ","example":4},"sheetArea":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Area per sheet (m²). ","example":2.88},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["drywall-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","sheetArea","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (m²). ","example":4},"sheetArea":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每片板材面積 (m²). ","example":2.88},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["drywall-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","sheetArea","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (sq ft). ","example":42},"sheetArea":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Area per sheet (sq ft). ","example":32},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["drywall-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","sheetArea","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (sq ft). ","example":42},"sheetArea":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每片板材面積 (sq ft). ","example":32},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["wallpaper-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","rollLength","rollWidth","repeat","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (m²). ","example":4},"rollLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Roll length (m). ","example":10},"rollWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Roll width (cm). ","example":53},"repeat":{"type":"number","minimum":0,"maximum":1000000,"description":"Pattern repeat (cm). ","example":0},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["wallpaper-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","rollLength","rollWidth","repeat","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (m²). ","example":4},"rollLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每卷長度 (m). ","example":10},"rollWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每卷寬度 (cm). ","example":53},"repeat":{"type":"number","minimum":0,"maximum":1000000,"description":"花紋重複間距 (cm). ","example":0},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["wallpaper-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","rollLength","rollWidth","repeat","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (sq ft). ","example":42},"rollLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Roll length (ft). ","example":33},"rollWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Roll width (in). ","example":20.5},"repeat":{"type":"number","minimum":0,"maximum":1000000,"description":"Pattern repeat (in). ","example":0},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["wallpaper-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings","rollLength","rollWidth","repeat","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (sq ft). ","example":42},"rollLength":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每卷長度 (ft). ","example":33},"rollWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每卷寬度 (in). ","example":20.5},"repeat":{"type":"number","minimum":0,"maximum":1000000,"description":"花紋重複間距 (in). ","example":0},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["mulch-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","bagVolume","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material depth (cm). ","example":7.5},"bagVolume":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Volume per bag (L). ","example":50},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["mulch-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","bagVolume","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (cm). ","example":7.5},"bagVolume":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每袋容量 (L). ","example":50},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["mulch-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","bagVolume","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material depth (in). ","example":3},"bagVolume":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Volume per bag (ft³). ","example":2},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per package ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["mulch-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","bagVolume","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (in). ","example":3},"bagVolume":{"type":"number","minimum":0.1,"maximum":1000000,"description":"每袋容量 (ft³). ","example":2},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每包／單位價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["gravel-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","density","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material depth (cm). ","example":7.5},"density":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material density (t/m³). ","example":1.68},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per tonne (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["gravel-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","density","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (cm). ","example":7.5},"density":{"type":"number","minimum":0.1,"maximum":1000000,"description":"材料密度 (t/m³). ","example":1.68},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每公噸價格 (NT$). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["gravel-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","density","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material depth (in). ","example":3},"density":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Material density (tons/yd³). ","example":1.4},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per ton ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["gravel-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","depth","density","waste","price"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"depth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"鋪設厚度 (in). ","example":3},"density":{"type":"number","minimum":0.1,"maximum":1000000,"description":"材料密度 (tons/yd³). ","example":1.4},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"price":{"type":"number","minimum":0,"maximum":1000000,"description":"每公噸價格 ($). ","example":35}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["fence-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","postSpacing","rails","boardWidth","gap","waste","postPrice","boardPrice"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"postSpacing":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Post spacing (m). ","example":2.4},"rails":{"type":"integer","minimum":1,"maximum":10,"description":"Rails per section (pcs). ","example":2},"boardWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Board width (cm). ","example":14},"gap":{"type":"number","minimum":0,"maximum":1000000,"description":"Gap between boards (cm). ","example":1},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"postPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per post (NT$). ","example":18},"boardPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per board (NT$). ","example":4.5}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["fence-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","postSpacing","rails","boardWidth","gap","waste","postPrice","boardPrice"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"postSpacing":{"type":"number","minimum":0.1,"maximum":1000000,"description":"立柱間距 (m). ","example":2.4},"rails":{"type":"integer","minimum":1,"maximum":10,"description":"每段橫樑數 (pcs). ","example":2},"boardWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"圍籬板寬度 (cm). ","example":14},"gap":{"type":"number","minimum":0,"maximum":1000000,"description":"板材間隙 (cm). ","example":1},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"postPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"每根立柱價格 (NT$). ","example":18},"boardPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"每片板材價格 (NT$). ","example":4.5}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["fence-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","postSpacing","rails","boardWidth","gap","waste","postPrice","boardPrice"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"postSpacing":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Post spacing (ft). ","example":8},"rails":{"type":"integer","minimum":1,"maximum":10,"description":"Rails per section (pcs). ","example":2},"boardWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Board width (in). ","example":5.5},"gap":{"type":"number","minimum":0,"maximum":1000000,"description":"Gap between boards (in). ","example":0.5},"waste":{"type":"number","minimum":0,"maximum":50,"description":"Waste allowance (%). Adds material for cuts, breakage, and matching.","example":10},"postPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per post ($). ","example":18},"boardPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"Price per board ($). ","example":4.5}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["fence-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","postSpacing","rails","boardWidth","gap","waste","postPrice","boardPrice"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"postSpacing":{"type":"number","minimum":0.1,"maximum":1000000,"description":"立柱間距 (ft). ","example":8},"rails":{"type":"integer","minimum":1,"maximum":10,"description":"每段橫樑數 (pcs). ","example":2},"boardWidth":{"type":"number","minimum":0.1,"maximum":1000000,"description":"圍籬板寬度 (in). ","example":5.5},"gap":{"type":"number","minimum":0,"maximum":1000000,"description":"板材間隙 (in). ","example":0.5},"waste":{"type":"number","minimum":0,"maximum":50,"description":"預留耗損 (%). 包含裁切、破損與花紋對齊所需餘量。","example":10},"postPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"每根立柱價格 ($). ","example":18},"boardPrice":{"type":"number","minimum":0,"maximum":1000000,"description":"每片板材價格 ($). ","example":4.5}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["room-area-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (m²). ","example":4}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["room-area-calculator"]},"unit":{"type":"string","enum":["metric"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (m). ","example":4},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (m). ","example":3},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (m). ","example":2.6},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (m²). ","example":4}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["room-area-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["en"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project length (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"Project width (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"Wall height (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"Doors & windows area (sq ft). ","example":42}}}}},{"type":"object","additionalProperties":false,"required":["slug","unit","locale","values"],"properties":{"slug":{"type":"string","enum":["room-area-calculator"]},"unit":{"type":"string","enum":["imperial"]},"locale":{"type":"string","enum":["zh-TW"]},"values":{"type":"object","additionalProperties":false,"required":["length","width","height","openings"],"properties":{"length":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工長度 (ft). ","example":12},"width":{"type":"number","minimum":0.1,"maximum":10000,"description":"施工寬度 (ft). ","example":10},"height":{"type":"number","minimum":0.1,"maximum":1000000,"description":"牆面高度 (ft). ","example":8},"openings":{"type":"number","minimum":0,"maximum":1000000,"description":"門窗總面積 (sq ft). ","example":42}}}}}]}}}},"responses":{"200":{"description":"Calculation with inputs, source, currency, and limitations","content":{"application/json":{"schema":{"type":"object","required":["slug","unit","locale","currency","values","result","source","limitations"],"properties":{"slug":{"type":"string"},"unit":{"type":"string"},"locale":{"type":"string"},"currency":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"number"}},"source":{"type":"string","format":"uri"},"limitations":{"type":"string"},"result":{"type":"object","properties":{"formula":{"type":"string"},"warning":{"type":"string"},"items":{"type":"array","items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"},"note":{"type":"string"},"primary":{"type":"boolean"}}}}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"401":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"413":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"415":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"429":{"description":"Quota exhausted; respect Retry-After header","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/api/agent/usage":{"get":{"operationId":"getAgentUsage","responses":{"200":{"description":"Account quotas and UTC daily usage","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/pdf/upload":{"post":{"operationId":"uploadPdfForEditing","summary":"Upload one text-based PDF (10 MB, 50 pages maximum)","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"file_id, metadata, pages and editable block IDs; expires in about 10 minutes","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"401":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"413":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"429":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/pdf/generate":{"post":{"operationId":"exportEditedPdf","summary":"Export edits for an account-owned file; consumes the editing session","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["file_id","edits"],"properties":{"file_id":{"type":"string","format":"uuid"},"edits":{"type":"array","maxItems":500,"items":{"type":"object","required":["page_num","block_id","new_text"],"properties":{"page_num":{"type":"integer","minimum":1,"maximum":50},"block_id":{"type":"string"},"new_text":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"Edited PDF; review every page","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"401":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"410":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"413":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"429":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}}}}