{"components":{"responses":{},"schemas":{"pdf_base64":{"description":"The rendered PDF file encoded as a base64 string.","properties":{"data":{"description":"The rendered PDF file encoded as a base64 string.","format":"base64","type":"string"},"encoding":{"description":"The encoding of the PDF file.","enum":["base64"],"type":"string"}},"required":["data","encoding"],"title":"pdf_base64","type":"object"},"set_cookie":{"additionalProperties":false,"description":"Sets a cookie before rendering, useful for authenticated content or personalized views.","properties":{"domain":{"description":"Cookie domain (must match the domain of the URL being rendered)","type":"string"},"name":{"description":"Cookie name","type":"string"},"value":{"description":"Cookie value","type":"string"}},"required":["name","value","domain"],"title":"set_cookie","type":"object"},"sync_render_options":{"additionalProperties":false,"allOf":[{"description":"Common options for configuring PDF rendering behavior, applicable to both synchronous and asynchronous rendering.","properties":{"emulate_media_type":{"default":"print","description":"Emulates the specified media type during rendering. Use 'screen' for web display styles or 'print' for print-optimized styles. Particularly useful for pages with different CSS for screen and print media queries.","enum":["screen","print"],"title":"emulate_media_type","type":"string"},"evaluate_js":{"additionalProperties":false,"description":"Evaluates a JavaScript expression in the page context before rendering. Useful for manipulating the DOM, triggering actions, or waiting for dynamic content to load. If the expression returns a Promise, rendering will wait for it to resolve.","properties":{"expression":{"description":"The JavaScript expression to evaluate in the page context.","title":"expression","type":"string"}},"required":["expression"],"title":"evaluate_js","type":"object"},"footer_template":{"description":"HTML template for the page footer. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"footer_template","type":"string"},"header_template":{"description":"HTML template for the page header. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"header_template","type":"string"},"include_backgrounds":{"default":true,"description":"Whether to include background images and colors in the rendered PDF. Set to false to optimize for printing or reduce file size.","title":"include_backgrounds","type":"boolean"},"margin":{"additionalProperties":false,"default":{"bottom":0,"left":0,"right":0,"top":0,"unit":"mm"},"description":"Document margins specification with unit. Controls the space between the page edges and content.","example":{"bottom":10,"left":10,"right":10,"top":10,"unit":"mm"},"properties":{"bottom":{"description":"Bottom margin in the specified unit","minimum":0,"type":"number"},"left":{"description":"Left margin in the specified unit","minimum":0,"type":"number"},"right":{"description":"Right margin in the specified unit","minimum":0,"type":"number"},"top":{"description":"Top margin in the specified unit","minimum":0,"type":"number"},"unit":{"default":"mm","description":"Measurement unit for margin dimensions","enum":["mm","cm","in","px"],"type":"string"}},"required":["top","right","bottom","left"],"title":"margin","type":"object"},"orientation":{"default":"portrait","description":"Page orientation for the PDF. 'portrait' is taller than wide, 'landscape' is wider than tall.","enum":["portrait","landscape"],"title":"orientation","type":"string"},"output_format":{"default":"pdf/a","description":"Output file format. 'pdf/a' is PDF/A-2b compliant for archiving, while 'pdf' is standard PDF.","enum":["pdf/a","pdf"],"title":"output_format","type":"string"},"pages":{"default":"","description":"Specifies which pages to include in the output using a comma-separated list of page ranges (e.g., '1-5, 8, 11-13'). Uses one-based indexing. Pages will be included in the document's natural order regardless of the specified range, and each page will only be included once. An empty string includes all pages.","pattern":"^$|^(\\d+(-\\d+)?)(,\\s*(\\d+(-\\d+)?))*$","title":"pages","type":"string"},"parts":{"description":"An array of content parts to render into a single PDF. Each part can be a URL string, HTML content string, or a structured content object with type and content.","example":["https://example.com","<h1>Hello World</h1>",{"content":"<div>Structured HTML content</div>","type":"html"},{"content":{"context":{"customer_name":"Acme Inc."},"template_id":"invoice_template"},"type":"template"}],"items":{"anyOf":[{"description":"A valid URL string that will be fetched and rendered into the PDF. The URL must be publicly accessible and return HTML content.","format":"uri","pattern":"^https?://\\S+","title":"url_string","type":"string"},{"description":"Raw HTML content to render directly into the PDF. Must start with a valid HTML tag. Can include CSS styles inline or via <style> tags.","pattern":"^\\s*<[^>]+>","title":"html_string","type":"string"},{"additionalProperties":false,"description":"A structured part of content to render in the PDF. Allows explicitly specifying the content type and value.","example":{"content":"https://example.com","type":"url"},"properties":{"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"}},"required":["type","content"],"title":"content_part","type":"object"}],"description":"A content part that can be a URL string, HTML string, or a structured content object."},"maxItems":50,"minItems":1,"title":"content_parts","type":"array"},"prefer_css_page_size":{"default":false,"description":"Whether to prioritize page size defined in CSS using @page rules. When true, CSS page size takes precedence over the 'size' parameter. When false, content will be scaled to fit the specified paper size.","title":"prefer_css_page_size","type":"boolean"},"render_header_footer":{"default":false,"description":"Whether to render the header and footer templates on each page. Must be true for header_template and footer_template to take effect.","title":"render_header_footer","type":"boolean"},"scale":{"default":1.0,"description":"Scale factor for the webpage rendering. Values below 1.0 reduce size, above 1.0 enlarge content.","maximum":2.0,"minimum":0.1,"title":"scale","type":"number"},"set_cookie":{"additionalProperties":false,"description":"Sets a cookie before rendering, useful for authenticated content or personalized views.","properties":{"domain":{"description":"Cookie domain (must match the domain of the URL being rendered)","type":"string"},"name":{"description":"Cookie name","type":"string"},"value":{"description":"Cookie value","type":"string"}},"required":["name","value","domain"],"title":"set_cookie","type":"object"},"size":{"default":"a4","example":"a4","oneOf":[{"description":"Standard document size preset name.","enum":["a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","letter","legal","tabloid","ledger"],"title":"size_preset","type":"string"},{"additionalProperties":false,"description":"Custom document size dimensions with unit.","properties":{"height":{"description":"Document height in the specified unit.","type":"number"},"unit":{"default":"mm","description":"Measurement unit for dimensions.","enum":["mm","cm","in","px"],"type":"string"},"width":{"description":"Document width in the specified unit.","type":"number"}},"required":["width","height"],"title":"size_custom","type":"object"}]},"wait_for":{"additionalProperties":false,"description":"Waits for a specific element attribute to be set before rendering, useful for ensuring dynamic content is fully loaded.","properties":{"attribute":{"description":"The attribute name to wait for on the selected element. Rendering will proceed once this attribute exists on the element.","title":"attribute","type":"string"},"selector":{"description":"CSS selector for the element to wait for (e.g., '#content' or '.ready').","title":"selector","type":"string"}},"required":["selector","attribute"],"title":"wait_for","type":"object"}},"required":["parts"],"title":"render_options_common","type":"object"},{"properties":{"output_encoding":{"default":"binary","description":"Specifies how the PDF should be encoded in the response. 'binary' returns raw bytes, while 'base64' returns a base64-encoded string.","enum":["binary","base64"],"title":"output_encoding","type":"string"}},"type":"object"}],"description":"Options for synchronous PDF rendering, where the PDF is returned directly in the API response.","title":"sync_render_options","type":"object"},"output_format":{"default":"pdf/a","description":"Output file format. 'pdf/a' is PDF/A-2b compliant for archiving, while 'pdf' is standard PDF.","enum":["pdf/a","pdf"],"title":"output_format","type":"string"},"header_template":{"description":"HTML template for the page header. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"header_template","type":"string"},"render_options_common":{"description":"Common options for configuring PDF rendering behavior, applicable to both synchronous and asynchronous rendering.","properties":{"emulate_media_type":{"default":"print","description":"Emulates the specified media type during rendering. Use 'screen' for web display styles or 'print' for print-optimized styles. Particularly useful for pages with different CSS for screen and print media queries.","enum":["screen","print"],"title":"emulate_media_type","type":"string"},"evaluate_js":{"additionalProperties":false,"description":"Evaluates a JavaScript expression in the page context before rendering. Useful for manipulating the DOM, triggering actions, or waiting for dynamic content to load. If the expression returns a Promise, rendering will wait for it to resolve.","properties":{"expression":{"description":"The JavaScript expression to evaluate in the page context.","title":"expression","type":"string"}},"required":["expression"],"title":"evaluate_js","type":"object"},"footer_template":{"description":"HTML template for the page footer. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"footer_template","type":"string"},"header_template":{"description":"HTML template for the page header. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"header_template","type":"string"},"include_backgrounds":{"default":true,"description":"Whether to include background images and colors in the rendered PDF. Set to false to optimize for printing or reduce file size.","title":"include_backgrounds","type":"boolean"},"margin":{"additionalProperties":false,"default":{"bottom":0,"left":0,"right":0,"top":0,"unit":"mm"},"description":"Document margins specification with unit. Controls the space between the page edges and content.","example":{"bottom":10,"left":10,"right":10,"top":10,"unit":"mm"},"properties":{"bottom":{"description":"Bottom margin in the specified unit","minimum":0,"type":"number"},"left":{"description":"Left margin in the specified unit","minimum":0,"type":"number"},"right":{"description":"Right margin in the specified unit","minimum":0,"type":"number"},"top":{"description":"Top margin in the specified unit","minimum":0,"type":"number"},"unit":{"default":"mm","description":"Measurement unit for margin dimensions","enum":["mm","cm","in","px"],"type":"string"}},"required":["top","right","bottom","left"],"title":"margin","type":"object"},"orientation":{"default":"portrait","description":"Page orientation for the PDF. 'portrait' is taller than wide, 'landscape' is wider than tall.","enum":["portrait","landscape"],"title":"orientation","type":"string"},"output_format":{"default":"pdf/a","description":"Output file format. 'pdf/a' is PDF/A-2b compliant for archiving, while 'pdf' is standard PDF.","enum":["pdf/a","pdf"],"title":"output_format","type":"string"},"pages":{"default":"","description":"Specifies which pages to include in the output using a comma-separated list of page ranges (e.g., '1-5, 8, 11-13'). Uses one-based indexing. Pages will be included in the document's natural order regardless of the specified range, and each page will only be included once. An empty string includes all pages.","pattern":"^$|^(\\d+(-\\d+)?)(,\\s*(\\d+(-\\d+)?))*$","title":"pages","type":"string"},"parts":{"description":"An array of content parts to render into a single PDF. Each part can be a URL string, HTML content string, or a structured content object with type and content.","example":["https://example.com","<h1>Hello World</h1>",{"content":"<div>Structured HTML content</div>","type":"html"},{"content":{"context":{"customer_name":"Acme Inc."},"template_id":"invoice_template"},"type":"template"}],"items":{"anyOf":[{"description":"A valid URL string that will be fetched and rendered into the PDF. The URL must be publicly accessible and return HTML content.","format":"uri","pattern":"^https?://\\S+","title":"url_string","type":"string"},{"description":"Raw HTML content to render directly into the PDF. Must start with a valid HTML tag. Can include CSS styles inline or via <style> tags.","pattern":"^\\s*<[^>]+>","title":"html_string","type":"string"},{"additionalProperties":false,"description":"A structured part of content to render in the PDF. Allows explicitly specifying the content type and value.","example":{"content":"https://example.com","type":"url"},"properties":{"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"}},"required":["type","content"],"title":"content_part","type":"object"}],"description":"A content part that can be a URL string, HTML string, or a structured content object."},"maxItems":50,"minItems":1,"title":"content_parts","type":"array"},"prefer_css_page_size":{"default":false,"description":"Whether to prioritize page size defined in CSS using @page rules. When true, CSS page size takes precedence over the 'size' parameter. When false, content will be scaled to fit the specified paper size.","title":"prefer_css_page_size","type":"boolean"},"render_header_footer":{"default":false,"description":"Whether to render the header and footer templates on each page. Must be true for header_template and footer_template to take effect.","title":"render_header_footer","type":"boolean"},"scale":{"default":1.0,"description":"Scale factor for the webpage rendering. Values below 1.0 reduce size, above 1.0 enlarge content.","maximum":2.0,"minimum":0.1,"title":"scale","type":"number"},"set_cookie":{"additionalProperties":false,"description":"Sets a cookie before rendering, useful for authenticated content or personalized views.","properties":{"domain":{"description":"Cookie domain (must match the domain of the URL being rendered)","type":"string"},"name":{"description":"Cookie name","type":"string"},"value":{"description":"Cookie value","type":"string"}},"required":["name","value","domain"],"title":"set_cookie","type":"object"},"size":{"default":"a4","example":"a4","oneOf":[{"description":"Standard document size preset name.","enum":["a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","letter","legal","tabloid","ledger"],"title":"size_preset","type":"string"},{"additionalProperties":false,"description":"Custom document size dimensions with unit.","properties":{"height":{"description":"Document height in the specified unit.","type":"number"},"unit":{"default":"mm","description":"Measurement unit for dimensions.","enum":["mm","cm","in","px"],"type":"string"},"width":{"description":"Document width in the specified unit.","type":"number"}},"required":["width","height"],"title":"size_custom","type":"object"}]},"wait_for":{"additionalProperties":false,"description":"Waits for a specific element attribute to be set before rendering, useful for ensuring dynamic content is fully loaded.","properties":{"attribute":{"description":"The attribute name to wait for on the selected element. Rendering will proceed once this attribute exists on the element.","title":"attribute","type":"string"},"selector":{"description":"CSS selector for the element to wait for (e.g., '#content' or '.ready').","title":"selector","type":"string"}},"required":["selector","attribute"],"title":"wait_for","type":"object"}},"required":["parts"],"title":"render_options_common","type":"object"},"url_string":{"description":"A valid URL string that will be fetched and rendered into the PDF. The URL must be publicly accessible and return HTML content.","format":"uri","pattern":"^https?://\\S+","title":"url_string","type":"string"},"prefer_css_page_size":{"default":false,"description":"Whether to prioritize page size defined in CSS using @page rules. When true, CSS page size takes precedence over the 'size' parameter. When false, content will be scaled to fit the specified paper size.","title":"prefer_css_page_size","type":"boolean"},"pdf_binary":{"description":"Binary PDF file","format":"binary","title":"pdf_binary","type":"string"},"async_render_options":{"additionalProperties":false,"allOf":[{"description":"Common options for configuring PDF rendering behavior, applicable to both synchronous and asynchronous rendering.","properties":{"emulate_media_type":{"default":"print","description":"Emulates the specified media type during rendering. Use 'screen' for web display styles or 'print' for print-optimized styles. Particularly useful for pages with different CSS for screen and print media queries.","enum":["screen","print"],"title":"emulate_media_type","type":"string"},"evaluate_js":{"additionalProperties":false,"description":"Evaluates a JavaScript expression in the page context before rendering. Useful for manipulating the DOM, triggering actions, or waiting for dynamic content to load. If the expression returns a Promise, rendering will wait for it to resolve.","properties":{"expression":{"description":"The JavaScript expression to evaluate in the page context.","title":"expression","type":"string"}},"required":["expression"],"title":"evaluate_js","type":"object"},"footer_template":{"description":"HTML template for the page footer. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"footer_template","type":"string"},"header_template":{"description":"HTML template for the page header. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"header_template","type":"string"},"include_backgrounds":{"default":true,"description":"Whether to include background images and colors in the rendered PDF. Set to false to optimize for printing or reduce file size.","title":"include_backgrounds","type":"boolean"},"margin":{"additionalProperties":false,"default":{"bottom":0,"left":0,"right":0,"top":0,"unit":"mm"},"description":"Document margins specification with unit. Controls the space between the page edges and content.","example":{"bottom":10,"left":10,"right":10,"top":10,"unit":"mm"},"properties":{"bottom":{"description":"Bottom margin in the specified unit","minimum":0,"type":"number"},"left":{"description":"Left margin in the specified unit","minimum":0,"type":"number"},"right":{"description":"Right margin in the specified unit","minimum":0,"type":"number"},"top":{"description":"Top margin in the specified unit","minimum":0,"type":"number"},"unit":{"default":"mm","description":"Measurement unit for margin dimensions","enum":["mm","cm","in","px"],"type":"string"}},"required":["top","right","bottom","left"],"title":"margin","type":"object"},"orientation":{"default":"portrait","description":"Page orientation for the PDF. 'portrait' is taller than wide, 'landscape' is wider than tall.","enum":["portrait","landscape"],"title":"orientation","type":"string"},"output_format":{"default":"pdf/a","description":"Output file format. 'pdf/a' is PDF/A-2b compliant for archiving, while 'pdf' is standard PDF.","enum":["pdf/a","pdf"],"title":"output_format","type":"string"},"pages":{"default":"","description":"Specifies which pages to include in the output using a comma-separated list of page ranges (e.g., '1-5, 8, 11-13'). Uses one-based indexing. Pages will be included in the document's natural order regardless of the specified range, and each page will only be included once. An empty string includes all pages.","pattern":"^$|^(\\d+(-\\d+)?)(,\\s*(\\d+(-\\d+)?))*$","title":"pages","type":"string"},"parts":{"description":"An array of content parts to render into a single PDF. Each part can be a URL string, HTML content string, or a structured content object with type and content.","example":["https://example.com","<h1>Hello World</h1>",{"content":"<div>Structured HTML content</div>","type":"html"},{"content":{"context":{"customer_name":"Acme Inc."},"template_id":"invoice_template"},"type":"template"}],"items":{"anyOf":[{"description":"A valid URL string that will be fetched and rendered into the PDF. The URL must be publicly accessible and return HTML content.","format":"uri","pattern":"^https?://\\S+","title":"url_string","type":"string"},{"description":"Raw HTML content to render directly into the PDF. Must start with a valid HTML tag. Can include CSS styles inline or via <style> tags.","pattern":"^\\s*<[^>]+>","title":"html_string","type":"string"},{"additionalProperties":false,"description":"A structured part of content to render in the PDF. Allows explicitly specifying the content type and value.","example":{"content":"https://example.com","type":"url"},"properties":{"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"}},"required":["type","content"],"title":"content_part","type":"object"}],"description":"A content part that can be a URL string, HTML string, or a structured content object."},"maxItems":50,"minItems":1,"title":"content_parts","type":"array"},"prefer_css_page_size":{"default":false,"description":"Whether to prioritize page size defined in CSS using @page rules. When true, CSS page size takes precedence over the 'size' parameter. When false, content will be scaled to fit the specified paper size.","title":"prefer_css_page_size","type":"boolean"},"render_header_footer":{"default":false,"description":"Whether to render the header and footer templates on each page. Must be true for header_template and footer_template to take effect.","title":"render_header_footer","type":"boolean"},"scale":{"default":1.0,"description":"Scale factor for the webpage rendering. Values below 1.0 reduce size, above 1.0 enlarge content.","maximum":2.0,"minimum":0.1,"title":"scale","type":"number"},"set_cookie":{"additionalProperties":false,"description":"Sets a cookie before rendering, useful for authenticated content or personalized views.","properties":{"domain":{"description":"Cookie domain (must match the domain of the URL being rendered)","type":"string"},"name":{"description":"Cookie name","type":"string"},"value":{"description":"Cookie value","type":"string"}},"required":["name","value","domain"],"title":"set_cookie","type":"object"},"size":{"default":"a4","example":"a4","oneOf":[{"description":"Standard document size preset name.","enum":["a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","letter","legal","tabloid","ledger"],"title":"size_preset","type":"string"},{"additionalProperties":false,"description":"Custom document size dimensions with unit.","properties":{"height":{"description":"Document height in the specified unit.","type":"number"},"unit":{"default":"mm","description":"Measurement unit for dimensions.","enum":["mm","cm","in","px"],"type":"string"},"width":{"description":"Document width in the specified unit.","type":"number"}},"required":["width","height"],"title":"size_custom","type":"object"}]},"wait_for":{"additionalProperties":false,"description":"Waits for a specific element attribute to be set before rendering, useful for ensuring dynamic content is fully loaded.","properties":{"attribute":{"description":"The attribute name to wait for on the selected element. Rendering will proceed once this attribute exists on the element.","title":"attribute","type":"string"},"selector":{"description":"CSS selector for the element to wait for (e.g., '#content' or '.ready').","title":"selector","type":"string"}},"required":["selector","attribute"],"title":"wait_for","type":"object"}},"required":["parts"],"title":"render_options_common","type":"object"},{"properties":{"callback":{"additionalProperties":false,"description":"Callback configuration for notification when the asynchronous rendering is complete.","properties":{"headers":{"additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the callback request, useful for authentication or request identification.","title":"headers","type":"object"},"url":{"description":"URL that will receive a POST request when rendering is complete, including status and file location information.","format":"uri","title":"url","type":"string"}},"required":["url"],"title":"callback","type":"object"},"destination":{"additionalProperties":false,"description":"Configuration specifying where the rendered PDF should be stored when using asynchronous rendering.","example":{"bucket":"my-bucket","path":"pdfs/document.pdf","provider":"aws_s3"},"properties":{"bucket":{"description":"The storage bucket name where the PDF will be stored.","title":"bucket","type":"string"},"path":{"description":"Storage path within the bucket, including the filename (e.g., 'pdfs/document.pdf').","title":"path","type":"string"},"provider":{"description":"The cloud storage provider to use for storing the generated PDF.","enum":["aws_s3","google_cloud_storage"],"title":"provider","type":"string"}},"required":["provider","bucket","path"],"title":"cloud_destination","type":"object"}},"type":"object"}],"description":"Options for asynchronous PDF rendering, where the rendering happens in the background and the result is stored in the specified destination.","title":"async_render_options","type":"object"},"callback":{"additionalProperties":false,"description":"Callback configuration for notification when the asynchronous rendering is complete.","properties":{"headers":{"additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the callback request, useful for authentication or request identification.","title":"headers","type":"object"},"url":{"description":"URL that will receive a POST request when rendering is complete, including status and file location information.","format":"uri","title":"url","type":"string"}},"required":["url"],"title":"callback","type":"object"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"},"content_part":{"additionalProperties":false,"description":"A structured part of content to render in the PDF. Allows explicitly specifying the content type and value.","example":{"content":"https://example.com","type":"url"},"properties":{"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"}},"required":["type","content"],"title":"content_part","type":"object"},"credits_usage_response":{"description":"Current credits usage information","properties":{"data":{"properties":{"credits_total":{"description":"Total credits available in the plan","type":"integer"},"credits_used":{"description":"Credits used in the current billing period","type":"number"},"period_end":{"description":"End date of the current billing period","format":"date-time","nullable":true,"type":"string"},"period_start":{"description":"Start date of the current billing period","format":"date-time","nullable":true,"type":"string"},"plan_name":{"description":"Name of the user's current plan","type":"string"},"usage_details":{"description":"Detailed breakdown of credits usage","items":{"$ref":"#/components/schemas/usage_detail"},"type":"array"}},"required":["plan_name","credits_total","credits_used","usage_details"],"type":"object"}},"required":["data"],"title":"credits_usage_response","type":"object"},"template":{"description":"A template object","example":{"content":"<h1>Invoice</h1><p>This is a sample invoice template</p>","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","inserted_at":"2020-01-01T00:00:00Z","name":"Invoice Template","preview_context":{"amount":1000,"customer":"Acme Inc."},"updated_at":"2020-01-01T00:00:00Z"},"properties":{"content":{"description":"The HTML content of the template","type":"string"},"id":{"description":"Template ID","format":"uuid","type":"string"},"inserted_at":{"description":"Creation timestamp","format":"date-time","type":"string"},"name":{"description":"The name of the template","type":"string"},"preview_context":{"description":"JSON context for template preview","type":"object"},"updated_at":{"description":"Update timestamp","format":"date-time","type":"string"}},"required":["id","name","content","inserted_at","updated_at"],"title":"template","type":"object"},"path":{"description":"Storage path within the bucket, including the filename (e.g., 'pdfs/document.pdf').","title":"path","type":"string"},"render_response":{"description":"Response from a synchronous render request, containing the generated PDF file.","example":{"data":"JVBERi0xLjcKJeLj+C...","encoding":"base64"},"oneOf":[{"description":"Binary PDF file","format":"binary","title":"pdf_binary","type":"string"},{"description":"The rendered PDF file encoded as a base64 string.","properties":{"data":{"description":"The rendered PDF file encoded as a base64 string.","format":"base64","type":"string"},"encoding":{"description":"The encoding of the PDF file.","enum":["base64"],"type":"string"}},"required":["data","encoding"],"title":"pdf_base64","type":"object"}],"title":"render_response"},"auth_error_response":{"description":"Response when authentication or authorization fails","example":{"error":"unauthorized","message":"Authentication required to access this resource"},"properties":{"error":{"description":"Error message describing the authentication or authorization failure","enum":["unauthorized","forbidden","invalid_token","expired_token","insufficient_permissions"],"type":"string"},"message":{"description":"A more detailed message explaining the error","type":"string"}},"required":["error"],"title":"auth_error_response","type":"object"},"evaluate_js":{"additionalProperties":false,"description":"Evaluates a JavaScript expression in the page context before rendering. Useful for manipulating the DOM, triggering actions, or waiting for dynamic content to load. If the expression returns a Promise, rendering will wait for it to resolve.","properties":{"expression":{"description":"The JavaScript expression to evaluate in the page context.","title":"expression","type":"string"}},"required":["expression"],"title":"evaluate_js","type":"object"},"size_preset":{"description":"Standard document size preset name.","enum":["a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","letter","legal","tabloid","ledger"],"title":"size_preset","type":"string"},"render_header_footer":{"default":false,"description":"Whether to render the header and footer templates on each page. Must be true for header_template and footer_template to take effect.","title":"render_header_footer","type":"boolean"},"template_update_request":{"description":"PATCH body for updating a template","properties":{"template":{"example":{"content":"<h1>Invoice</h1><p>This is a sample invoice template</p>","name":"Invoice Template","preview_context":{"amount":1000,"customer":"Acme Inc."}},"properties":{"content":{"description":"The HTML content of the template","type":"string"},"name":{"description":"The name of the template","minLength":1,"type":"string"},"preview_context":{"description":"JSON context for template preview","type":"object"}},"type":"object"}},"required":["template"],"title":"template_update_request","type":"object"},"margin":{"additionalProperties":false,"default":{"bottom":0,"left":0,"right":0,"top":0,"unit":"mm"},"description":"Document margins specification with unit. Controls the space between the page edges and content.","example":{"bottom":10,"left":10,"right":10,"top":10,"unit":"mm"},"properties":{"bottom":{"description":"Bottom margin in the specified unit","minimum":0,"type":"number"},"left":{"description":"Left margin in the specified unit","minimum":0,"type":"number"},"right":{"description":"Right margin in the specified unit","minimum":0,"type":"number"},"top":{"description":"Top margin in the specified unit","minimum":0,"type":"number"},"unit":{"default":"mm","description":"Measurement unit for margin dimensions","enum":["mm","cm","in","px"],"type":"string"}},"required":["top","right","bottom","left"],"title":"margin","type":"object"},"wait_for":{"additionalProperties":false,"description":"Waits for a specific element attribute to be set before rendering, useful for ensuring dynamic content is fully loaded.","properties":{"attribute":{"description":"The attribute name to wait for on the selected element. Rendering will proceed once this attribute exists on the element.","title":"attribute","type":"string"},"selector":{"description":"CSS selector for the element to wait for (e.g., '#content' or '.ready').","title":"selector","type":"string"}},"required":["selector","attribute"],"title":"wait_for","type":"object"},"JsonErrorResponse":{"properties":{"errors":{"items":{"properties":{"detail":{"example":"null value where string expected","type":"string"},"source":{"properties":{"pointer":{"example":"/data/attributes/petName","type":"string"}},"required":["pointer"],"type":"object"},"title":{"example":"Invalid value","type":"string"}},"required":["title","source","detail"],"type":"object"},"type":"array"}},"required":["errors"],"title":"JsonErrorResponse","type":"object"},"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"template_content":{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"},"template_response":{"description":"Response schema for a single template","properties":{"data":{"$ref":"#/components/schemas/template"}},"required":["data"],"title":"template_response","type":"object"},"template_create_request":{"description":"POST body for creating a template","properties":{"template":{"example":{"content":"<h1>Invoice</h1><p>This is a sample invoice template</p>","name":"Invoice Template","preview_context":{"amount":1000,"customer":"Acme Inc."}},"properties":{"content":{"description":"The HTML content of the template","type":"string"},"name":{"description":"The name of the template","type":"string"},"preview_context":{"description":"JSON context for template preview","type":"object"}},"required":["name","content"],"type":"object"}},"required":["template"],"title":"template_create_request","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"},"templates_response":{"description":"Response schema for multiple templates","properties":{"data":{"items":{"$ref":"#/components/schemas/template"},"type":"array"}},"required":["data"],"title":"templates_response","type":"object"},"size_custom":{"additionalProperties":false,"description":"Custom document size dimensions with unit.","properties":{"height":{"description":"Document height in the specified unit.","type":"number"},"unit":{"default":"mm","description":"Measurement unit for dimensions.","enum":["mm","cm","in","px"],"type":"string"},"width":{"description":"Document width in the specified unit.","type":"number"}},"required":["width","height"],"title":"size_custom","type":"object"},"provider":{"description":"The cloud storage provider to use for storing the generated PDF.","enum":["aws_s3","google_cloud_storage"],"title":"provider","type":"string"},"pages":{"default":"","description":"Specifies which pages to include in the output using a comma-separated list of page ranges (e.g., '1-5, 8, 11-13'). Uses one-based indexing. Pages will be included in the document's natural order regardless of the specified range, and each page will only be included once. An empty string includes all pages.","pattern":"^$|^(\\d+(-\\d+)?)(,\\s*(\\d+(-\\d+)?))*$","title":"pages","type":"string"},"emulate_media_type":{"default":"print","description":"Emulates the specified media type during rendering. Use 'screen' for web display styles or 'print' for print-optimized styles. Particularly useful for pages with different CSS for screen and print media queries.","enum":["screen","print"],"title":"emulate_media_type","type":"string"},"error_response":{"description":"Response when an error occurs","properties":{"error":{"properties":{"message":{"description":"Error message","type":"string"}},"required":["message"],"type":"object"}},"required":["error"],"title":"error_response","type":"object"},"headers":{"additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the callback request, useful for authentication or request identification.","title":"headers","type":"object"},"cloud_destination":{"additionalProperties":false,"description":"Configuration specifying where the rendered PDF should be stored when using asynchronous rendering.","example":{"bucket":"my-bucket","path":"pdfs/document.pdf","provider":"aws_s3"},"properties":{"bucket":{"description":"The storage bucket name where the PDF will be stored.","title":"bucket","type":"string"},"path":{"description":"Storage path within the bucket, including the filename (e.g., 'pdfs/document.pdf').","title":"path","type":"string"},"provider":{"description":"The cloud storage provider to use for storing the generated PDF.","enum":["aws_s3","google_cloud_storage"],"title":"provider","type":"string"}},"required":["provider","bucket","path"],"title":"cloud_destination","type":"object"},"url":{"description":"URL that will receive a POST request when rendering is complete, including status and file location information.","format":"uri","title":"url","type":"string"},"include_backgrounds":{"default":true,"description":"Whether to include background images and colors in the rendered PDF. Set to false to optimize for printing or reduce file size.","title":"include_backgrounds","type":"boolean"},"success_response":{"description":"Standard success response","example":{"status":"success"},"properties":{"status":{"description":"Status of the operation","enum":["success"],"type":"string"}},"required":["status"],"title":"success_response","type":"object"},"output_encoding":{"default":"binary","description":"Specifies how the PDF should be encoded in the response. 'binary' returns raw bytes, while 'base64' returns a base64-encoded string.","enum":["binary","base64"],"title":"output_encoding","type":"string"},"health_response":{"description":"Response from the health check endpoint","example":{"current_user":{"email":"user@example.com","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"status":"operational"},"properties":{"current_user":{"description":"Information about the authenticated user","properties":{"email":{"description":"The current user email","format":"email","type":"string"},"id":{"description":"The current user ID","format":"uuid","type":"string"}},"required":["id","email"],"type":"object"},"status":{"description":"The current health status of the API","enum":["operational","degraded","major"],"type":"string"}},"required":["status","current_user"],"title":"health_response","type":"object"},"footer_template":{"description":"HTML template for the page footer. Supports special classes like 'date', 'title', 'url', 'pageNumber', and 'totalPages' for dynamic content.","title":"footer_template","type":"string"},"content_parts":{"description":"An array of content parts to render into a single PDF. Each part can be a URL string, HTML content string, or a structured content object with type and content.","example":["https://example.com","<h1>Hello World</h1>",{"content":"<div>Structured HTML content</div>","type":"html"},{"content":{"context":{"customer_name":"Acme Inc."},"template_id":"invoice_template"},"type":"template"}],"items":{"anyOf":[{"description":"A valid URL string that will be fetched and rendered into the PDF. The URL must be publicly accessible and return HTML content.","format":"uri","pattern":"^https?://\\S+","title":"url_string","type":"string"},{"description":"Raw HTML content to render directly into the PDF. Must start with a valid HTML tag. Can include CSS styles inline or via <style> tags.","pattern":"^\\s*<[^>]+>","title":"html_string","type":"string"},{"additionalProperties":false,"description":"A structured part of content to render in the PDF. Allows explicitly specifying the content type and value.","example":{"content":"https://example.com","type":"url"},"properties":{"content":{"description":"The content to render - either a URL string when type is 'url', HTML markup when type is 'html', or a template specification object when type is 'template'.","oneOf":[{"type":"string"},{"additionalProperties":false,"description":"Template specification with context data for rendering into HTML","example":{"context":{"customer_name":"Acme Inc.","invoice_number":"INV-2023-001","items":[{"description":"Product A","price":100,"quantity":2},{"description":"Product B","price":50,"quantity":1}]},"template_id":"invoice_template"},"properties":{"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"template_id":{"description":"Unique identifier for the template to use","title":"template_id","type":"string"}},"required":["template_id"],"title":"template_content","type":"object"}],"title":"content"},"type":{"description":"The type of content to render - 'url' for a web page, 'html' for raw HTML content, or 'template' for template-based rendering.","enum":["url","html","template"],"title":"type","type":"string"}},"required":["type","content"],"title":"content_part","type":"object"}],"description":"A content part that can be a URL string, HTML string, or a structured content object."},"maxItems":50,"minItems":1,"title":"content_parts","type":"array"},"expression":{"description":"The JavaScript expression to evaluate in the page context.","title":"expression","type":"string"},"orientation":{"default":"portrait","description":"Page orientation for the PDF. 'portrait' is taller than wide, 'landscape' is wider than tall.","enum":["portrait","landscape"],"title":"orientation","type":"string"},"context":{"additionalProperties":true,"description":"JSON object containing data to be inserted into the template","title":"context","type":"object"},"scale":{"default":1.0,"description":"Scale factor for the webpage rendering. Values below 1.0 reduce size, above 1.0 enlarge content.","maximum":2.0,"minimum":0.1,"title":"scale","type":"number"},"usage_detail":{"description":"Details of credits usage for a specific time period","properties":{"aggregated_value":{"description":"Number of credits used","type":"number"},"end_time":{"description":"The end time of the usage period","format":"date-time","type":"string"},"id":{"description":"The ID of the usage record","type":"string"},"livemode":{"description":"Whether this is a live meter or test","type":"boolean"},"meter":{"description":"The meter identifier","type":"string"},"start_time":{"description":"The start time of the usage period","format":"date-time","type":"string"}},"required":["id","aggregated_value","start_time","end_time","meter"],"title":"usage_detail","type":"object"},"bucket":{"description":"The storage bucket name where the PDF will be stored.","title":"bucket","type":"string"},"selector":{"description":"CSS selector for the element to wait for (e.g., '#content' or '.ready').","title":"selector","type":"string"},"attribute":{"description":"The attribute name to wait for on the selected element. Rendering will proceed once this attribute exists on the element.","title":"attribute","type":"string"},"html_string":{"description":"Raw HTML content to render directly into the PDF. Must start with a valid HTML tag. Can include CSS styles inline or via <style> tags.","pattern":"^\\s*<[^>]+>","title":"html_string","type":"string"}},"securitySchemes":{"authorization":{"description":"Manage your API keys at https://vortexpdf.com/api-keys","scheme":"bearer","type":"http"}}},"info":{"title":"Vortex PDF","version":"1.0"},"openapi":"3.0.0","paths":{"/api/v1/credits":{"get":{"callbacks":{},"description":"Get current credit usage for the authenticated user","operationId":"VortexWeb.API.V1.CreditsController.show","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credits_usage_response"}}},"description":"Credits usage response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Error response"}},"security":[{"authorization":[]}],"summary":"Get credits usage","tags":["Credits"]}},"/api/v1/health":{"get":{"callbacks":{},"description":"Returns the current health status of the API","operationId":"VortexWeb.HealthController.show","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/health_response"}}},"description":"Health status"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"}},"security":[{"authorization":[]}],"summary":"Health check","tags":["Vortex"]}},"/api/v1/renderers/pdf":{"post":{"callbacks":{},"description":"Generate a PDF from one or more content sources and return it directly in the response. Content can be provided as URLs to fetch, raw HTML strings, or a combination of both. The response will contain the generated PDF file. ","operationId":"VortexWeb.API.V1.RenderController.render_sync","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sync_render_options"}}},"description":"Render options","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/render_response"}}},"description":"Render succeeded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Resource not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}},"description":"Unprocessable Entity"}},"security":[{"authorization":[]}],"summary":"Create PDF synchronously","tags":["Renderers"]}},"/api/v1/renderers/pdf/async":{"post":{"callbacks":{"onRenderComplete":{"{$request.body#/callback/url}":{"post":{"callbacks":{},"deprecated":false,"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"properties":{"error":{"description":"Error message if the rendering failed","type":"string"},"result":{"properties":{"bucket":{"description":"The storage bucket name","type":"string"},"etag":{"description":"Entity tag for the stored object","type":"string"},"id":{"description":"Unique identifier for the stored object","type":"string"},"md5Hash":{"description":"MD5 hash of the file content","type":"string"},"mediaLink":{"description":"URL to download the generated PDF","type":"string"},"name":{"description":"The path to the generated PDF file","type":"string"},"size":{"description":"Size of the generated PDF file in bytes","type":"string"},"storageClass":{"description":"Storage class of the object","type":"string"},"timeCreated":{"description":"When the file was created in storage","format":"date_time","type":"string"}},"type":"object"},"status":{"description":"The final status of the rendering job","enum":["success","failed"],"type":"string"},"timestamp":{"description":"ISO8601 timestamp of when the job completed","format":"date_time","type":"string"}},"required":["status","timestamp"],"type":"object"}}},"description":"Callback payload with rendering job status","required":true},"responses":{"200":{"description":"Callback received successfully"}},"tags":[]}}}},"description":"Generate a PDF from one or more content sources in the background and store it in the specified cloud destination. Content can be provided as URLs to fetch, raw HTML strings, or a combination of both. This endpoint returns immediately with a success status while the rendering happens asynchronously. When rendering completes, the PDF will be uploaded to the specified destination, and an optional callback URL will be called. ","operationId":"VortexWeb.API.V1.RenderController.render_async","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/async_render_options"}}},"description":"Render async options","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/success_response"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Resource not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}},"description":"Unprocessable Entity"}},"security":[{"authorization":[]}],"summary":"Create PDF asynchronously","tags":["Renderers"]}},"/api/v1/templates":{"get":{"callbacks":{},"description":"List all templates for the authenticated user","operationId":"VortexWeb.API.V1.TemplateController.index","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/templates_response"}}},"description":"Templates response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"}},"security":[{"authorization":[]}],"summary":"List templates","tags":["Templates"]},"post":{"callbacks":{},"description":"Create a new template","operationId":"VortexWeb.API.V1.TemplateController.create","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/template_create_request"}}},"description":"Template params","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/template_response"}}},"description":"Template response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}},"description":"Unprocessable Entity"}},"security":[{"authorization":[]}],"summary":"Create template","tags":["Templates"]}},"/api/v1/templates/{id}":{"delete":{"callbacks":{},"description":"Delete a template","operationId":"VortexWeb.API.V1.TemplateController.delete","parameters":[{"description":"Template ID","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"No content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Not found"}},"security":[{"authorization":[]}],"summary":"Delete template","tags":["Templates"]},"get":{"callbacks":{},"description":"Get a template by ID","operationId":"VortexWeb.API.V1.TemplateController.show","parameters":[{"description":"Template ID","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/template_response"}}},"description":"Template response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Not found"}},"security":[{"authorization":[]}],"summary":"Get template","tags":["Templates"]},"patch":{"callbacks":{},"description":"Update an existing template","operationId":"VortexWeb.API.V1.TemplateController.update","parameters":[{"description":"Template ID","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/template_update_request"}}},"description":"Template params","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/template_response"}}},"description":"Template response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_error_response"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error_response"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}},"description":"Unprocessable Entity"}},"security":[{"authorization":[]}],"summary":"Update template","tags":["Templates"]}}},"security":[],"servers":[{"url":"https://vortexpdf.com","variables":{}}],"tags":[]}