{"openapi":"3.1.0","info":{"title":"Report Designer Render API","version":"1.0.4","description":"Stateless rendering of report templates (from the <report-designer> component) plus JSON data into PDF documents. Nothing is stored. Rendering is never refused for licensing: without a valid paid license the PDFs carry a watermark (TRIAL, EXPIRED or UNLICENSED); see X-License-Status and GET /v1/info. The server also hosts static, non-API content: the developer portal at /, the user guide at /help/ (both disabled by RD_SERVE_DOCS=false) and the designer SDK at /sdk/<version>/ and /sdk/latest/."},"paths":{"/api/v1/render":{"post":{"summary":"Render a template with data to PDF","operationId":"render","parameters":[{"name":"format","in":"query","required":false,"description":"`pdf` (default) returns application/pdf; `json` returns the PDF base64-encoded with warnings.","schema":{"type":"string","enum":["pdf","json"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderRequest"}}}},"responses":{"200":{"description":"The rendered document","headers":{"X-Page-Count":{"schema":{"type":"integer"},"description":"Pages in the PDF"},"X-Render-Warnings":{"schema":{"type":"integer"},"description":"Non-fatal problems (missing images, unknown fonts, expression errors)"},"X-License-Status":{"schema":{"$ref":"#/components/schemas/LicenseStatus"}},"Content-Disposition":{"schema":{"type":"string"}}},"content":{"application/pdf":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"$ref":"#/components/schemas/RenderJsonResponse"}}}},"400":{"description":"Malformed request, unknown locale, or template validation errors (`issues`)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request body larger than RD_BODY_LIMIT_MB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"415":{"description":"Body is not application/json","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Render failed, e.g. the document exceeds RD_MAX_PAGES","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"All workers busy and queue full; honor Retry-After","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"504":{"description":"Render exceeded RD_RENDER_TIMEOUT_MS","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/validate":{"post":{"summary":"Validate a template without rendering","operationId":"validate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["template"],"properties":{"template":{"type":"object"}}}}}},"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ValidationIssue"}}}}}}},"400":{"description":"Malformed request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/fonts":{"get":{"summary":"List bundled and server-installed fonts","operationId":"fonts","responses":{"200":{"description":"Font families","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/info":{"get":{"summary":"Name, version, license state and SDK of this installation (never the license key or why it was rejected)","operationId":"info","responses":{"200":{"description":"Installation info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Info"}}}}}}},"/health":{"get":{"summary":"Liveness probe","responses":{"200":{"description":"Process is up"}}}},"/ready":{"get":{"summary":"Readiness probe","responses":{"200":{"description":"Accepting requests"},"503":{"description":"Shutting down"}}}}},"components":{"schemas":{"RenderRequest":{"type":"object","required":["template"],"properties":{"template":{"type":"object","description":"Template JSON produced by the designer (see SPEC.md / @rd/core types)"},"data":{"description":"Any JSON value; the root scope for {{ expressions }}. Defaults to {}."},"options":{"type":"object","additionalProperties":false,"properties":{"filename":{"type":"string","maxLength":200,"description":"Download name; defaults to template.name"},"disposition":{"type":"string","enum":["inline","attachment"],"default":"inline"},"locale":{"type":"string","description":"BCP 47 locale for number/date formatting; default en-US"},"now":{"type":"string","format":"date-time","description":"Fixed \"now\" for deterministic output"}}}}},"RenderJsonResponse":{"type":"object","properties":{"pdfBase64":{"type":"string"},"pageCount":{"type":"integer"},"warnings":{"type":"array","items":{"type":"object","properties":{"elementId":{"type":"string"},"message":{"type":"string"}}}},"license":{"$ref":"#/components/schemas/LicenseStatus"},"watermark":{"$ref":"#/components/schemas/Watermark"}}},"ValidationIssue":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["error","warning"]}}},"LicenseStatus":{"type":"string","enum":["valid","trial","expired","missing","invalid"],"description":"valid = paid license (no watermark); trial = valid trial license; expired, missing, invalid: PDFs are watermarked"},"Watermark":{"type":["string","null"],"enum":["trial","expired","unlicensed",null],"description":"The watermark on every page; null = none"},"Info":{"type":"object","properties":{"name":{"type":"string","example":"reportdesigner"},"version":{"type":"string"},"license":{"$ref":"#/components/schemas/LicenseInfo"},"sdk":{"type":["object","null"],"properties":{"version":{"type":"string"},"url":{"type":"string"},"latest":{"type":"string"}}}}},"LicenseInfo":{"type":"object","required":["status","trial","watermark","products"],"properties":{"status":{"type":"string","enum":["valid","expired","missing","invalid"]},"trial":{"type":"boolean"},"source":{"type":"string","enum":["configured","bundled","development"],"description":"configured = LICENSE_KEY / LICENSE_FILE; bundled = the evaluation license of the release"},"watermark":{"$ref":"#/components/schemas/Watermark"},"products":{"type":"array","items":{"type":"string","enum":["reportdesigner"]}},"licensee":{"type":"string"},"id":{"type":"string"},"expires":{"type":"string","format":"date","description":"Last valid day (UTC)"},"daysLeft":{"type":"integer","description":"Days until the license expires (the expiry day counts)"},"maxInstances":{"type":"integer","description":"Installations allowed by the license terms (not enforced)"},"instanceId":{"type":"string","description":"This installation's id"}}},"Problem":{"type":"object","description":"RFC 9457 problem details","properties":{"type":{"type":"string","example":"/problems/invalid-template"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"},"requestId":{"type":"string"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ValidationIssue"}}}}}}}