Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization required, Bearer, issuer https://account.carbone.io
Authorization required, Bearer, issuer https://account.carbone.io
Certificate changed, valid to 2027-01-13
Authorization not required → required, Bearer, issuer https://account.carbone.io
Added "inspect_template"; changed the definition of "convert_document", "delete_template", "download_template" and 7 more (11 tools before, 12 now)
Convertanya document to another format without storing a template.Supports 100+ input/output formatPurecombinationsconversion:Office documents, PDFs, images, web pages, spreadsheets, and more. The source file can be a localnopath,dataaisURLsent,or a base64 string.so Carbone tagsare PRESERVED, not resolved: converting a template keeps
Certificate changed, valid to 2027-01-10
Certificate recorded, valid to 2026-11-04
Authorization not required
First tool surface recorded: 11 tools (server version 1.6.0)
Showing the latest 9 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"asAttachment":{"description": ⟨25 unchanged words⟩ binary outputs (PDF, Office, …) aresaved to a temp file in stdio mode (pathreturned),or returnedas anattachment in HTTP mode.attachment. Ignored when outputPath or returnLink is set.", ⟨5 unchanged words⟩ ":["pdf","docx","doc","odt","ott","rtf","epub","xlsx","xls","pptxods","pptots","odtcsv","odsdbf","dif","pptx","ppt","odp","otp","odg","html","xhtml","txt","csv","md","xml","rtfidml","png","jpg","jpeg","webp","svggif","tiff","bmp","gif","zipsvg","idmlemf","epubwmf","cdreps"],"type":"string"},{"properties" ⟨6 unchanged words⟩ ":["pdf","docx","doc","odt","ott","rtf","epub","xlsx","xls","pptxods","pptots","odtcsv","odsdbf","dif","pptx","ppt","odp","otp","odg","html","xhtml","txt","csv","md","xml","rtfidml","png","jpg","jpeg","webp","svggif","tiff","bmp","gif","zipsvg","idmlemf","epubwmf","cdreps"],"type":"string"},"formatOptions":{"additionalProperties":{},"description":"Advanced format optionsFormat-specificobject.options. Examplesby format: PDF—password: { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\s3cr3t\" }; PDF permissions: { \"RestrictPermissions\": true, \"DocumentPermissionPassword\PermissionPassword\": \"owner\" }password-protect;; PDF—watermarks (max 4): { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\size\":0.260, \"rotation\opacity\":-450.2, \"fontsize\rotation\":60-45 }] }up to 5;watermarks;PDF/A—only): { \"SelectPdfVersion\":12 }PDF/A-1b compliance(use2for=PDF/A-2PDF/A-2b, 3for=PDF/A-3PDF/A-3b, 4 = PDF/A-4);—selection (L only): { \"PageRange\": \"1-3,5\1-5\" }export specific pages;only;accessibility—only): { \"ConvertSlideshow\UseTaggedPDF\": true} convert each slide to a,separate\"PDFUACompliance\":page;};ImagesJPG/PNG:(PNG/JPG/WEBP){—\"PixelWidth\":{1200, \"Quality\PixelHeight\":90630 }set,compressionJPG quality0-100; Images —: { \"density\Quality\":15080 }set DPI for rasterisation(default 961-100); CSV—: { \"fieldSeparator\": \";\" }.customAllcolumnoptions:separator.https://carbone.io/documentation/developer/http-api/generate-reports.html#pdf-options","propertyNames":{"type":"string"}, ⟨5 unchanged words⟩ object"}],"description":"Target output format.DocumentsValid:outputs\"pdf\",depend\"docx\",on\"xlsx\",the\"pptx\",input\"odt\",format\"ods\",(e.g.\"odp\",HTML\"odg\",converts\"rtf\",to\"epub\"pdf,plus the legacydocx\"doc\",or\"xls\"png,\"ppt\" (output only — Carbone writes thembutcannot read themnotbackxlsx). Web/text :;\"html\",see\"xhtml\",the\"txt\",conversion\"csv\",matrix:\"md\",https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type. \"xml\doc\", \"idml\xls\".Images : \"png\",and \"jpg\ppt\",\"jpeg\",are\"webp\",output\"svg\",formats;\"tiff\",as\"bmp\"input,\"gif\".useArchive :DOCX,\"zip\"XLSX(batchoroutput).PPTX. Simple usage: \"pdf\".AdvancedWithusageoptions: { \"formatName\": \"pdf\", \"formatOptions\": {\"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\"... } }."},"converter":{"description":"Converterengine. Onlyengine,relevantusedwhenwheneverconvertTotheisformat\"pdf\"changes (ornotanonlyimageforformatPDF).rasterisedIffromomitted,a\"L\"document).is used. \"L\"—LibreOffice(default):best all-round engine forDOCX, XLSX, PPTX, ODT, ODS,ODP. \"O\" — OnlyOffice: highest fidelity rendering for Microsoft Office formats (DOCXODP,XLSXODG,PPTX). \"C\" — Chromium: bestMD,forPDF;HTML,theCSS,onlyJavaScriptconverter—supportingfullallbrowserPDFrendering.options. \"I\"—Carbone ICE(Instant Converter Engine, Carbone 5.14.0+): DOCX→andONLY,tonoPDF;third-partyCarbone'sconverterown—engine,up3x to60x300x fasterthan,LibreOfficerecommendedonovera\"O\"1000-pagefor DOCX(3x onfromav5.15.0.one-pageItdocument).convertsAnyallothercontentinputexceptorWEBPoutputandformatEMF/WMFisimages,REJECTEDSmartArt—andusecomplexanotherchartsconverter(bar,forline,those.area,options:andonlydoughnutWatermarkscharts areapplied. EncryptFiledrawn),DocumentOpenPasswordcomments,RestrictPermissions andtrackedthechanges,otherformsecurityfieldsoptionsandareequations:SILENTLYkeepIGNOREDthe—defaultthe\"L\"comesdocumentsbackwithreadablethose.byAanyone,missingwithfontnoiserrorreplaced—bysoNotoNEVERSanspick(https://carbone.io/documentation/developer/http-api/generate-reports.html#converters-carbone-ice-limitations). \"I\O\"when the request needs aOnlyOffice:passwordDOCX,orXLSX,restrictedPPTXpermissions;tousePDF. \"L\C\"for those. Also unsupportedChromium:WEBP andHTMLEMF/WMFtoimagesPDF,table of contentsJPG,SmartArtPNG,complex charts,WEBPfootnotes/endnotes,withcomments,fulltrackedCSS/JS;changes,100formMBfields,max.equations,PDFbookmarksoptions:and\"L\"links;supportsaallmissingoffontthem;falls\"O\",back\"C\"toandNoto\"I\"Sans.applyIfSecurityomitted(passwords,LibreOfficepermissions)isandusedWatermarks.byDocs:default.https://carbone.io/documentation/developer/http-api/generate-reports.html#converters","enum":["L","CO","OC","I"],"type":"string"}, ⟨44 unchanged words⟩ Only the authorization header can be customised; max512511 characters.","maxLength":512511,"type":"string"},"file":{" ⟨85 unchanged words⟩ HTML, XHTML, XML, SVG, IDML,Markdown (MD), TXT, CSV, RTF,PDF, PNG and JPG.PDF. Carbone reads XML-based and text-based documentsonly,(plussoPDF): the legacyBINARYbinary Office formats DOC, XLS and PPT areREJECTEDrejected as input— Carbone can produce them as,outputalthoughbuttheycannotarereadvalidthem.outputs. Re-save such a file asDOCX/XLSX/PPTXDOCX, XLSX or PPTX first. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.md//carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type","minLength":1,"type":"string"},"hardRefresh":{"description":"ForcesIfCarbonetrue,toCarbonerunruns the converter even when the output formatalready matchesequals the inputformat.format,Onlyandusefulrecomputes pagination and the table of contents at the end of the conversion. Needed for PDF:converting→ PDF:→without it Carbone returns the PDFtounchangedAPPLYand formatOptions (watermarkpassword,passwordpermissions,PDF/Awatermarks,pagePDF/A,range…).WithoutareitNOTCarboneapplied.mayThispassserver sets it automatically when thefileinputstraightisthroughaandPDF,noneconvertToofisthose\"pdf\"optionsandtakeformatOptionseffect.areLeavegiven;unsetpassforfalseanytoformat-changingoptconversionout. Example (DOCXPDF →PDF,PDF/A-4):XLSX{→\"hardRefresh\":CSVtrue,…)\"convertTo\": { \"formatName\": \"pdf\",where\"formatOptions\":the{converter\"SelectPdfVersion\":runs4anyway.} } }.","type":"boolean"},"outputPath":{ ⟨43 unchanged words⟩ :"string"},"reportName":{"description":"Filename (WITHOUT extension)Nameforof theconverteddelivereddocumentfile,returned in the Content-Disposition header. Carbone appends theWITHOUT extensionmatching(e.g.convertTo\"contract\",so\"2026-invoice\").doThenotdocumentincludeisonedelivered—as \"report.pdf\<reportName>.<ext>\",yieldswith\"report.pdf.pdf\".theExamples:extension\"contract\"of convertTo,\"2026-invoice\".usedUnlikeasrender_document,theCarboneattachmenttagsname.areThisNOTserverresolvednamesherethe(conversionfiledoesitself:notarunconversion has no templating)pass,sowhichpassisawhereliteralCarbonenameresolvesratherreportName.thanUsedaliterally:patternCarboneliketags\"such as {d.id}\"— a pattern wouldarecomenotbackresolvedverbatim.here. Ignoredwhenwith returnLinkis set, which returns(a download URLrather,thannot a namedfile.file).","type":"string"},"returnLink":{ ⟨68 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true}
Delete a stored Carbone template.This is aTakessofteffectdeleteimmediately: the template ismarkednoforlongergarbagelisted,collectiondownloadableandorremovedrenderable (404); the file itself is purged afterathe retention delay (defaultCarbone Cloud: 24 hours). You can delete by Template ⟨7 unchanged words⟩ ID (removes only that specific version).For immediateToorschedulescheduleda deletion instead, use update_template_metadata with expireAt= 42000000000 (NOW)setorto a future Unix timestamp.
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"templateId":{"description": ⟨48 unchanged words⟩
⟨45 unchanged words⟩ ID to download a specific version. Set sample: true tofetchget the JSON sample dataset stored with the template instead of the templatefile itself.file.
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"asAttachment":{"description": ⟨60 unchanged words⟩ outputPath is rejected. Use asAttachment to receive thebytes, or returnLink for a one-time download URL.bytes.","type":"string"},"sample":{ ⟨16 unchanged words⟩ passed to upload_template) instead of the templatefile.file,Returnsreturned as inline JSON text by default, of the form [{ \"data\": { ⟨6 unchanged words⟩ ...}, \"enum\": {...} }] (each key optional). Use it to recover the example data a template expects— handybefore callingrender_document against an unfamiliar template.render_document. Errors if the template was uploaded without a ⟨52 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true}
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"message" ⟨23 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"categories" ⟨15 unchanged words⟩
⟨19 unchanged words⟩ "sales", "billing", "v2").Note: the Carbone API doesTonotfindsupportthefilteringtemplateslist_templateswithbya tag— use this tool to discover available tags,thencall list_templates andfilterkeep the resultsmanually.whose `tags` include it.
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"tags" ⟨15 unchanged words⟩
⟨28 unchanged words⟩ each template. Supports cursor-based pagination for large collections.Note:Eachfilteringresultbycarriestagsitsis`tags`:nottosupportedfind templates by tag, keep theCarboneresultsAPIwhose—`tags`useinclude it (list_tagstolistsdiscoverthe tags,then filter resultsinmanually.use). Note: templates uploaded with versioning disabled appear ⟨25 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"category":{"description": ⟨67 unchanged words⟩ of results to return, between 1 and100.100 (Carbone API limit). Default: 100. Use cursor to page beyond that. ⟨6 unchanged words⟩ "origin":{"description":"Filter by uploadorigin.origin: 0 = API, 1 = Carbone Studio, 2 = Salesforce integration, 3 = Odoo integration, 4 =HubSpot.HubSpot integration. Templatescreateduploaded through this MCP server are origin 0.","maximum":9007199254740991,"minimum ⟨34 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"hasMore" ⟨45 unchanged words⟩
⟨19 unchanged words⟩ previously uploaded template; (2) pass template (fileanpath,HTTPS URL,orbase64a base64-encoded string (local file paths are not accepted over HTTP)) to upload and render in a single request ⟨16 unchanged words⟩ PDF options (watermark, password, PDF/A). Without data, every tag resolves to empty; to keep the tags as written, pass keepTags: true (e.g. to proof a stored template), or use convert_document for a file. Async mode: passwebhookUrlwebhookUrl.toThisrendertoolasynchronouslythen—returnsCarboneonlywillCarbone'sPOSTacceptance message, never the document: Carbone POSTs { "success": true, "data": { "renderId": "..." } } toyourtheURLwebhook,whenwhose server downloads the documentisitselfready.fromAsyncGETmode/render/{renderId}is(one-time,requirednowhenauth).usingYoubatchcannot fetch it from here. Batch generation (batchSplitBy).is always delivered this way.
before
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"asAttachment":{"description":"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are saved to a temp file in stdio mode (path returned), or returned as an attachment in HTTP mode. Ignored when outputPath or returnLink is set.","type":"boolean"},"batchOutput":{"description":"How the batch result is packaged. Defaults to \"zip\". \"zip\" — every generated document is bundled into a single ZIP archive (use batchReportName to name each entry). \"pdf\" — all documents are CONCATENATED into one continuous PDF instead of being zipped; this requires convertTo to be \"pdf\" as well. Must be used together with batchSplitBy.","enum":["zip","pdf"],"type":"string"},"batchReportName":{"description":"Filename pattern for each individual document inside the batch ZIP. Supports Carbone tags. Tags are resolved against the item's data (relative path) or the full dataset (absolute path). Examples: \"invoice-{d.id}.pdf\", \"{d.client.name}-{d.date}.docx\". Carbone sanitises the result — path separators, \"..\", Windows-forbidden and control characters each become an underscore — and appends an index to duplicates (\"report_1.pdf\", \"report_2.pdf\"), so a pattern that resolves to the same name for several items will not silently drop documents. Only meaningful with batchOutput: \"zip\"; a concatenated \"pdf\" batch is a single file. Must be used together with batchSplitBy.","type":"string"},"batchSplitBy":{"description":"JSON path to the array in your data that drives batch generation. One document is generated per element of the array. Two forms: \"d\" when data itself IS the array (one report per top-level element), or \"d.arrayName\" to split on a child array. Example: \"d.invoices\" — produces one PDF per item in data.invoices. Example: \"d.employees\" — produces one contract per employee. Carbone Cloud allows 1 to 100 objects per batch (on-premise follows the nbReportMaxPerBatch setting). Batch is ALWAYS asynchronous — webhookUrl is required. Pair with batchOutput to choose ZIP or a single concatenated PDF, and batchReportName to name each document.","type":"string"},"complement":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }. Like data, may instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."},"convertTo":{"anyOf":[{"enum":["pdf","docx","doc","xlsx","xls","pptx","ppt","odt","ods","odp","odg","html","xhtml","txt","csv","md","xml","rtf","png","jpg","jpeg","webp","svg","tiff","bmp","gif","zip","idml","epub","cdr"],"type":"string"},{"properties":{"formatName":{"description":"Target format name.","enum":["pdf","docx","doc","xlsx","xls","pptx","ppt","odt","ods","odp","odg","html","xhtml","txt","csv","md","xml","rtf","png","jpg","jpeg","webp","svg","tiff","bmp","gif","zip","idml","epub","cdr"],"type":"string"},"formatOptions":{"additionalProperties":{},"description":"Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.","propertyNames":{"type":"string"},"type":"object"}},"required":["formatName"],"type":"object"}],"description":"Output format. If omitted, the output matches the template format. Documents : \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"odt\", \"ods\", \"odp\", \"odg\", \"rtf\", \"epub\". Web/text : \"html\", \"xhtml\", \"txt\", \"csv\", \"md\", \"xml\", \"idml\". Images : \"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"tiff\", \"bmp\", \"gif\". Archive : \"zip\" (use with batchSplitBy for batch output). Simple usage: \"pdf\". Advanced usage: { \"formatName\": \"pdf\", \"formatOptions\": { ... } } for PDF-specific options."},"converter":{"description":"Converter engine. Only relevant when convertTo is \"pdf\" (or an image rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML/CSS/JS templates — full browser rendering. \"I\" — Carbone ICE (Instant Converter Engine, Carbone 5.14.0+): DOCX → PDF ONLY, no third-party converter — up to 60x faster than LibreOffice on a 1000-page DOCX (3x on a one-page document). Any other input or output format is REJECTED — use another converter for those. PDF options: only Watermarks are applied. EncryptFile, DocumentOpenPassword, RestrictPermissions and the other security options are SILENTLY IGNORED — the PDF comes back readable by anyone, with no error — so NEVER pick \"I\" when the request needs a password or restricted permissions; use \"L\" for those. Also unsupported: WEBP and EMF/WMF images, table of contents, SmartArt, complex charts, footnotes/endnotes, comments, tracked changes, form fields, equations, bookmarks and links; a missing font falls back to Noto Sans. If omitted, LibreOffice is used by default.","enum":["L","C","O","I"],"type":"string"},"currencyRates":{"anyOf":[{"additionalProperties":{"type":"number"},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."},"currencySource":{"description":"ISO 4217 currency code of the monetary amounts in the JSON data. Used by the :formatC formatter as the conversion source. Must be set together with currencyTarget and currencyRates. Example: \"EUR\" if all prices in your data are in euros.","type":"string"},"currencyTarget":{"description":"ISO 4217 currency code of the output document. The :formatC formatter converts amounts from currencySource to this currency using currencyRates. Must be set together with currencySource and currencyRates. Example: \"USD\" to display prices in US dollars. Documentation: https://carbone.io/documentation.html#formatc-precisionorformat-","type":"string"},"data":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"items":{},"type":"array"},{"type":"string"}],"description":"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. Optional — if omitted, defaults to an empty object {} so the template is simply converted (tags resolve to empty). Useful to convert a stored template by templateId without data injection. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP) — it is read and parsed server-side."},"egressAuthorization":{"description":"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests while rendering — fetching external images ({d.imageUrl}), external PDFs (:appendFile / :attachFile), and calling webhooks. For example \"Bearer abc123\" or \"my-secret\" makes Carbone send `authorization: <value>` to those hosts. Only the authorization header can be customised; max 512 characters. For webhook calls specifically, webhookHeaders.authorization (if set) overrides this value.","maxLength":512,"type":"string"},"enum":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#convenum-type-"},"hardRefresh":{"description":"If true, Carbone recomputes pagination and refreshes the table of contents after rendering. Requires convertTo to be defined. Use this for DOCX/ODT templates that contain a TOC field or cross-references that need updating after data injection.","type":"boolean"},"keepTags":{"description":"If true, SKIP templating entirely and leave every Carbone tag in the document exactly as written — {d.customer} comes out as the literal text \"{d.customer}\", formatters included. Use it to proof a stored template in another format (e.g. render templateId to PDF to check the tag layout), or to convert a template between formats while it stays a template. Mutually exclusive with data — passing both is rejected, because data would have nothing to fill. Note the difference from omitting data: no data renders the template with an EMPTY dataset, so every tag resolves to an empty string; keepTags leaves the tags themselves in place. Requires Carbone 5.9.0+ (carbone-version: 5).","type":"boolean"},"lang":{"description":"Locale of the generated document. Affects three things: (1) {t(key)} translation tags — selects the matching translation from the translations map. (2) :formatN number formatter — applies locale-specific thousand/decimal separators. (3) :formatC currency formatter — applies locale-specific currency symbols and formatting. Format: BCP-47 lowercase, e.g. \"fr-fr\", \"en-us\", \"de-de\", \"es-es\", \"pt-br\", \"zh-cn\", \"ja-jp\". Full list: https://github.com/carboneio/carbone/blob/master/formatters/_locale.js","type":"string"},"outputPath":{"description":"NOT AVAILABLE on this server, which is reached over HTTP: the generated document would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL. Ignored for async/webhook renders (no document is returned inline).","type":"string"},"reportName":{"description":"Filename (WITHOUT extension) for the generated document, returned in the Content-Disposition header. Carbone automatically appends the extension that matches convertTo, so do not include one — passing \"invoice.pdf\" yields \"invoice.pdf.pdf\". Supports Carbone tags resolved against the data at render time. Examples: \"invoice\" (static), \"{d.type}-{d.id}\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}\".","type":"string"},"returnLink":{"description":"If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath, asAttachment, and webhookUrl (async).","type":"boolean"},"template":{"description":"Inline template for one-shot render without storing a template first. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Mutually exclusive with templateId — provide exactly one, never both.","minLength":1,"type":"string"},"templateId":{"description":"The ID of a previously uploaded template to render. Two ID formats are accepted: (1) Template ID (64-bit) — stable identifier shared across versions; Carbone automatically uses the deployed version. (2) Version ID (SHA-256) — pins rendering to a specific version regardless of deployment status. Both are returned by upload_template. Mutually exclusive with template — provide exactly one, never both.","minLength":1,"type":"string"},"timezone":{"description":"IANA timezone used to convert dates in the rendered document. Default: \"Europe/Paris\". Applied when templates use the :formatD formatter, e.g. {d.date:formatD(YYYY-MM-DD HH:mm)}. Common values: \"UTC\", \"America/New_York\", \"America/Los_Angeles\", \"Europe/London\", \"Europe/Paris\", \"Europe/Berlin\", \"Asia/Tokyo\", \"Asia/Shanghai\", \"Australia/Sydney\". Full list (TZ identifier column): https://en.wikipedia.org/wiki/List_of_tz_database_time_zones","type":"string"},"translations":{"anyOf":[{"additionalProperties":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#translations"},"variableStr":{"description":"Carbone alias expressions evaluated once before rendering, available everywhere in the template. Used to pre-compute reusable values or shorten repetitive paths. Syntax: \"{#aliasName = expression}\". Example: \"{#fullName = d.firstName + \\\" \\\" + d.lastName}{#total = d.price * d.qty}\". Aliases are then used in the template as {#fullName}, {#total}. Documentation: https://carbone.io/documentation.html#alias","type":"string"},"webhookHeaders":{"additionalProperties":{"type":"string"},"description":"Custom headers Carbone will include when POSTing to your webhookUrl. Pass plain header names as keys — the prefix \"carbone-webhook-header-\" is added automatically before sending to Carbone, and Carbone forwards the original header names to your webhook endpoint. Example: { \"authorization\": \"my-secret\", \"custom-id\": \"12345\", \"custom-name\": \"Jane Doe\" } — Carbone will call your URL with headers: authorization: my-secret, custom-id: 12345, custom-name: Jane Doe. Requires webhookUrl to be set.","propertyNames":{"type":"string"},"type":"object"},"webhookUrl":{"description":"Webhook URL to enable asynchronous rendering. When provided, Carbone returns immediately and POSTs { \"success\": true, \"data\": { \"renderId\": \"...\" } } to this URL when the document is ready. The default render timeout is extended to 5 minutes on Carbone Cloud (vs 60 s for synchronous requests). Download the document with GET /render/:renderId once the webhook is received. Required when using batchSplitBy (batch generation is always asynchronous). Example: \"https://your-server.com/carbone-webhook\".","format":"uri","type":"string"}},"type":"object"}{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true}
Update the metadata ofaONE stored template version: name, comment, category, tags, deploymenttimestamp(deployedAt), scheduled deletion (expireAt), orexpiration.theUseTemplatedeployedAtID it belongs toactivate(moveToTemplateId). With aspecificTemplate ID, Carbone patches its currently deployed versionforonly;rendering.with a Version ID, that exact version. UseexpireAtdeployedAt toschedulechooseorthetriggerversionimmediateuseddeletion.when rendering by Template ID. Returns the patched versionId and the updated fields, as echoed back by Carbone. To delete a template now, use delete_template.
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"category":{"description":"Newcategory.category, max 200 characters.","maxLength":200,"type":"string"},"comment":{"description":"New free-textcomment.comment, max 200 characters.","maxLength":200,"type":"string"},"deployedAt":{"description" ⟨14 unchanged words⟩ the version with the most recent deployedAt whenrendering.rendering by Template ID. Use 42000000000 to deploy immediately (special \"NOW\" value). Future values are not allowed, and the deployed version's deployedAt cannot move back in time.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"expireAt":{"description":"Schedule deletion of the patched version at a UTC Unix timestamp (seconds).atAfterwhichthatthistime
before
—after
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"category":{"description":"Category, returned if updated.","type":"string"},"comment":{"description":"Comment, returned if updated.","type":"string"},"deployedAt":{"description":"Deployment timestamp, returned if updated.","type":"number"},"expireAt":{"description":"Deletion timestamp (0 = never expires), returned if updated.","type":"number"},"id":{"description":"Template ID the version now belongs to (returned when moveToTemplateId was used).","type":"string"},"name":{"description":"Name, returned if updated.","type":"string"},"tags":{"description":"Tags, returned if updated.","items":{"type":"string"},"type":"array"},"versionId":{"description":"Version ID of the patched version.","type":"string"}},"required":["versionId"],"type":"object"}⟨26 unchanged words⟩ live under a single stable Template ID, and rendering by Template ID uses the version with the most recent deployedAt. A result deployedAtcontrollingofwhich0 means the version isactive.not explicitly deployed: if another version of the same Template ID is deployed, renders by Template ID keep using that one. Accepted formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML,IDMLXML,XMLSVG, IDML, Markdown,more.PDF (not the legacy binary DOC, XLS or PPT).
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","properties":{"category":{"description":"Group templates into folders/categories, max 200 characters (e.g. \"invoices\", \"legal\", \"hr\").","maxLength":200,"type":"string"},"comment":{"description":"Free-text comment to describe the template version or itspurpose.purpose, max 200 characters.","maxLength":200,"type":"string"},"deployedAt":{"description" ⟨31 unchanged words⟩ immediately (special \"NOW\" sentinel value). Future values are not allowed.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"expireAt":{"description":"Schedule deletion at a UTC Unix timestamp (seconds);at0which(default)thismeans the templatewillnever
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"createdAt":{"description":"UTC Unix timestamp (seconds) of the upload.","type":"number"},"deployedAt":{"description":"UTC Unix timestamp of deployment; 0 means this version is not explicitly deployed.","type":"number"},"id":{"description":"Stable Template ID ( ⟨7 unchanged words⟩ },"name":{"description":"Template displayname.name, when one was given.","type":"string"},"size":{"description":"Template size in bytes.","type":"number"},"templateExtension":{"description":"Detected file extension, e.g. \"docx\" (legacy/non-versioned mode).","type":"string"},"templateId":{"description":"Template ID returned in ⟨18 unchanged words⟩ this uploaded version.","type":"string"}},"required":["name"],"type":"object"}
Inspect Template — List the Carbone tags a template uses and return a sample JSON dataset matching its structure. Call it before render_document when you do not know which data a template expects. Pass exactly one of templateId (a stored template: Template ID or Version ID) or template: an HTTPS URL or a base64-encoded string (local file paths are not accepted over HTTP). It runs one render on the Carbone account and discards the document. {t()} translation tags are not listed.
after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"asAttachment":{"description":"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are returned as an attachment. Ignored when outputPath or returnLink is set.","type":"boolean"},"batchOutput":{"description":"Batch result type, with batchSplitBy. \"zip\" (default): an archive of all generated documents. \"pdf\": the generated PDFs concatenated into one file; requires convertTo \"pdf\".","enum":["zip","pdf"],"type":"string"},"batchReportName":{"description":"Name of each file inside the batch ZIP, WITHOUT extension (Carbone appends it). Carbone tags are resolved against each batch item, e.g. \"invoice-{d.id}\". Ignored when batchOutput is \"pdf\". From v5.14, an index is appended to every file as soon as two names collide (invoice_1.pdf, invoice_2.pdf). Requires batchSplitBy.","type":"string"},"batchSplitBy":{"description":"Batch generation: one document per object of an array. Use \"d\" when data itself is an array, or \"d.items\" for a direct child array of data. Requires webhookUrl (batch is always asynchronous: the result goes to the webhook, not to this tool). At most 100 objects on Carbone Cloud. Combine with batchOutput and batchReportName. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#batch-processing","type":"string"},"complement":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }. Like data, may instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."},"convertTo":{"anyOf":[{"enum":["pdf","docx","doc","odt","ott","rtf","epub","xlsx","xls","ods","ots","csv","dbf","dif","pptx","ppt","odp","otp","odg","html","xhtml","txt","md","xml","idml","png","jpg","jpeg","webp","gif","tiff","bmp","svg","emf","wmf","eps"],"type":"string"},{"properties":{"formatName":{"description":"Target format name.","enum":["pdf","docx","doc","odt","ott","rtf","epub","xlsx","xls","ods","ots","csv","dbf","dif","pptx","ppt","odp","otp","odg","html","xhtml","txt","md","xml","idml","png","jpg","jpeg","webp","gif","tiff","bmp","svg","emf","wmf","eps"],"type":"string"},"formatOptions":{"additionalProperties":{},"description":"Format-specific options. Examples: PDF password: { \"EncryptFile\": true, \"DocumentOpenPassword\": \"s3cr3t\" }; PDF permissions: { \"RestrictPermissions\": true, \"PermissionPassword\": \"owner\" }; PDF watermarks (max 4): { \"Watermarks\": [{ \"text\": \"DRAFT\", \"size\": 60, \"opacity\": 0.2, \"rotation\": -45 }] }; PDF/A (L only): { \"SelectPdfVersion\": 2 } (2 = PDF/A-2b, 3 = PDF/A-3b, 4 = PDF/A-4); page selection (L only): { \"PageRange\": \"1-5\" }; accessibility (L only): { \"UseTaggedPDF\": true, \"PDFUACompliance\": true }; JPG/PNG: { \"PixelWidth\": 1200, \"PixelHeight\": 630 }, JPG quality: { \"Quality\": 80 } (1-100); CSV: { \"fieldSeparator\": \";\" }. All options: https://carbone.io/documentation/developer/http-api/generate-reports.html#pdf-options","propertyNames":{"type":"string"},"type":"object"}},"required":["formatName"],"type":"object"}],"description":"Output format. If omitted, the output keeps the template format. Valid outputs depend on the input format (e.g. HTML converts to pdf, docx or png, but not xlsx); see the conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type. \"doc\", \"xls\" and \"ppt\" are output formats; as input, use DOCX, XLSX or PPTX. Simple usage: \"pdf\". With options: { \"formatName\": \"pdf\", \"formatOptions\": { ... } }."},"converter":{"description":"Converter engine, used whenever the format changes (not only for PDF). If omitted, \"L\" is used. \"L\" LibreOffice: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, MD, PDF; the only converter supporting all PDF options. \"I\" Carbone ICE: DOCX and ODT to PDF; Carbone's own engine, 3x to 300x faster, recommended over \"O\" for DOCX from v5.15.0. It converts all content except WEBP and EMF/WMF images, SmartArt and complex charts (bar, line, area, pie and doughnut charts are drawn), comments, tracked changes, form fields and equations: keep the default \"L\" for documents with those. A missing font is replaced by Noto Sans (https://carbone.io/documentation/developer/http-api/generate-reports.html#converters-carbone-ice-limitations). \"O\" OnlyOffice: DOCX, XLSX, PPTX to PDF. \"C\" Chromium: HTML to PDF, JPG, PNG, WEBP with full CSS/JS; 100 MB max. PDF options: \"L\" supports all of them; \"O\", \"C\" and \"I\" apply Security (passwords, permissions) and Watermarks. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#converters","enum":["L","O","C","I"],"type":"string"},"currencyRates":{"anyOf":[{"additionalProperties":{"type":"number"},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."},"currencySource":{"description":"ISO 4217 currency code of the monetary amounts in the JSON data. Used by the :formatC formatter as the conversion source. Must be set together with currencyTarget and currencyRates. Example: \"EUR\" if all prices in your data are in euros.","type":"string"},"currencyTarget":{"description":"ISO 4217 currency code of the output document. The :formatC formatter converts amounts from currencySource to this currency using currencyRates. Must be set together with currencySource and currencyRates. Example: \"USD\" to display prices in US dollars. Documentation: https://carbone.io/documentation/design/formatters/currency.html#formatc-precisionorformat-targetcurrency","type":"string"},"data":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"items":{},"type":"array"},{"type":"string"}],"description":"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditions: {d.status:ifEQ(active):show(Yes):elseShow(No)}. Optional: if omitted, {} is sent, so every tag resolves to empty (\"Hello {d.name}!\" becomes \"Hello !\"). To keep the tags as written instead, pass keepTags: true (and no data). Instead of inlining a large dataset, you may pass a STRING reference to the JSON: an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP) — it is read and parsed server-side."},"egressAuthorization":{"description":"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests while rendering — fetching external images ({d.imageUrl}), external PDFs (:appendFile / :attachFile), and calling webhooks. For example \"Bearer abc123\" or \"my-secret\" makes Carbone send `authorization: <value>` to those hosts. Only the authorization header can be customised; max 511 characters. For webhook calls specifically, webhookHeaders.authorization (if set) overrides this value.","maxLength":511,"type":"string"},"enum":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation/design/advanced-features/key-value-mapping.html#convenum-type"},"failOn":{"description":"Conditions that stop the render and return an error (Carbone v5.15.0+). \"IMAGE_URL_ERROR\": an image that cannot be downloaded from its URL fails the render, instead of being replaced with the broken-image placeholder. Empty image values are skipped; base64 images, barcodes and charts are not concerned. Example: [\"IMAGE_URL_ERROR\"]. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#fail-on","items":{"enum":["IMAGE_URL_ERROR"],"type":"string"},"type":"array"},"hardRefresh":{"description":"If true, Carbone recomputes pagination and refreshes the table of contents after rendering. Requires convertTo to be defined. Use this for DOCX/ODT templates that contain a TOC field or cross-references that need updating after data injection.","type":"boolean"},"keepTags":{"description":"If true, SKIP templating entirely and leave every Carbone tag in the document exactly as written: {d.customer} comes out as the literal text \"{d.customer}\", formatters included. Use it to proof a stored template in another format (e.g. render templateId to PDF to check the tag layout), or to convert a template between formats while it stays a template. Mutually exclusive with data: passing both is rejected, because data would have nothing to fill. Not the same as omitting data: no data renders the template with an EMPTY dataset, so every tag resolves to an empty string; keepTags leaves the tags themselves in place.","type":"boolean"},"lang":{"description":"Locale of the generated document. Affects three things: (1) {t(key)} translation tags — selects the matching translation from the translations map. (2) :formatN number formatter — applies locale-specific thousand/decimal separators. (3) :formatC currency formatter — applies locale-specific currency symbols and formatting. Format: BCP-47 lowercase, e.g. \"fr-fr\", \"en-us\", \"de-de\", \"es-es\", \"pt-br\", \"zh-cn\", \"ja-jp\". Full list: https://github.com/carboneio/carbone/blob/master/formatters/_locale.js","type":"string"},"outputPath":{"description":"NOT AVAILABLE on this server, which is reached over HTTP: the generated document would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL. Ignored for async/webhook renders (no document is returned inline).","type":"string"},"preReleaseFeatureIn":{"description":"Pre-release feature level for this render only: features and fixes introduced up to this tag apply, later ones stay disabled. Overrides the server default; a tag set in the template overrides it. Example: 5000000. Docs: https://carbone.io/documentation/design/overview/version-lifecycle.html#pre-release-features","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reportName":{"description":"Filename (WITHOUT extension) for the generated document, returned in the Content-Disposition header. Carbone automatically appends the extension that matches convertTo, so do not include one — passing \"invoice.pdf\" yields \"invoice.pdf.pdf\". Supports Carbone tags resolved against the data at render time. Examples: \"invoice\" (static), \"{d.type}-{d.id}\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}\". With keepTags (no templating pass), this server names the file \"<reportName>.<ext>\" itself, literally (tags are not resolved).","type":"string"},"returnLink":{"description":"If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath and asAttachment. Ignored when webhookUrl is set (no link is returned).","type":"boolean"},"template":{"description":"Inline template for one-shot render without storing a template first. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, MD, TXT, CSV, RTF, PDF. Carbone reads XML-based and text-based documents (plus PDF): the legacy binary Office formats DOC, XLS and PPT are rejected as input, although they are valid outputs. Re-save such a file as DOCX, XLSX or PPTX first. Mutually exclusive with templateId — provide exactly one, never both.","minLength":1,"type":"string"},"templateId":{"description":"The ID of a previously uploaded template to render. Two ID formats are accepted: (1) Template ID (64-bit) — stable identifier shared across versions; Carbone automatically uses the deployed version. (2) Version ID (SHA-256) — pins rendering to a specific version regardless of deployment status. Both are returned by upload_template. Mutually exclusive with template — provide exactly one, never both.","minLength":1,"type":"string"},"timezone":{"description":"IANA timezone used to convert dates in the rendered document. Default: \"Europe/Paris\". Applied when templates use the :formatD formatter, e.g. {d.date:formatD(YYYY-MM-DD HH:mm)}. Common values: \"UTC\", \"America/New_York\", \"America/Los_Angeles\", \"Europe/London\", \"Europe/Paris\", \"Europe/Berlin\", \"Asia/Tokyo\", \"Asia/Shanghai\", \"Australia/Sydney\". Full list (TZ identifier column): https://en.wikipedia.org/wiki/List_of_tz_database_time_zones","type":"string"},"translations":{"anyOf":[{"additionalProperties":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},{"type":"string"}],"description":"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation/design/advanced-features/translations-i18n.html"},"variableStr":{"description":"Carbone alias definitions applied to the whole template, as if written in it. An alias is a shortcut to a data path, not a variable: it stores no value and computes nothing (no arithmetic, no concatenation). Define with {#alias = d.path}, optionally with $parameters: {#mealOf($weekday) = d[weekday = $weekday]}. Use them in the template with {$alias}, e.g. {$mealOf(2).name}. Example: \"{#buyer = d.order.customer}\", then {$buyer.name} in the template renders d.order.customer.name. To store a computed value, use the :set formatter instead. Documentation: https://carbone.io/documentation/design/substitutions/aliases.html#alias","type":"string"},"webhookHeaders":{"additionalProperties":{"type":"string"},"description":"Custom headers Carbone will include when POSTing to your webhookUrl. Pass plain header names as keys — the prefix \"carbone-webhook-header-\" is added automatically before sending to Carbone, and Carbone forwards the original header names to your webhook endpoint. Example: { \"authorization\": \"my-secret\", \"custom-id\": \"12345\", \"custom-name\": \"Jane Doe\" } — Carbone will call your URL with headers: authorization: my-secret, custom-id: 12345, custom-name: Jane Doe. Requires webhookUrl to be set.","propertyNames":{"type":"string"},"type":"object"},"webhookUrl":{"description":"Webhook URL that enables asynchronous rendering (render timeout raised to 5 minutes). This tool then returns only Carbone's acceptance message, never the document. When the document is ready, Carbone POSTs { \"success\": true, \"data\": { \"renderId\": \"...\" } } to this URL; the server behind it must download the document itself with GET /render/{renderId} on the Carbone API (one-time, no auth). You cannot fetch it from here. Required for batchSplitBy: batch output is always delivered this way. outputPath, asAttachment and returnLink are ignored in this mode. Example: \"https://your-server.com/carbone-webhook\".","format":"uri","type":"string"}},"type":"object"}