import "./chunk-YPSWSI3M.js";

// src/definitions/document.json
var openapi = "3.0.2";
var info = {
  title: "Document API",
  version: "1.0.0",
  description: "A document generation API that allows you to generate documents from templates with variables.\n\n[Feature Documentation](https://docs.epilot.io/docs/files/document-generation)\n"
};
var tags = [
  {
    name: "Documents",
    description: "Document Generation"
  }
];
var security = [
  {
    EpilotAuth: []
  }
];
var paths = {
  "/v2/documents:meta": {
    post: {
      operationId: "getTemplateMeta",
      summary: "getTemplateMeta",
      description: "Get metadata for a document template\n\nSupported input document types:\n- .docx\n",
      tags: ["Documents"],
      requestBody: {
        content: {
          "application/json": {
            schema: {
              $ref: "#/components/schemas/DocumentMetaRequest"
            }
          }
        }
      },
      responses: {
        "200": {
          description: "Document metadata",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/DocumentMetaResponse"
              }
            }
          }
        },
        "400": {
          description: "Bad request",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/ErrorOutput"
              }
            }
          }
        },
        "403": {
          description: "Forbidden",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/ErrorOutput"
              }
            }
          }
        },
        "415": {
          description: "Unsupported media type",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/ErrorOutput"
              }
            }
          }
        }
      }
    }
  },
  "/v2/documents:generate": {
    post: {
      operationId: "generateDocumentV2",
      summary: "generateDocumentV2",
      description: "Generates documents from templates with variables.\n\nSupported document types as input:\n- .docx\n- .ics\n\nSupported document types as output:\n- .pdf\n- .docx but limited to only text based variables\n- .ics\n\nUses [Template Variables API](https://docs.epilot.io/api/template-variables) to replace variables in the input document.\n",
      parameters: [
        {
          in: "query",
          name: "job_id",
          description: "Job ID for tracking the status of document generation action",
          schema: {
            type: "string"
          }
        },
        {
          in: "query",
          name: "mode",
          description: "Type of mode used for document generation flow:\n- partial_generation will have a intermediate step for users to validate and replace the variable values before generating the final document.\n- full_generation, goes through all the steps for the full generation of final document\n",
          schema: {
            type: "string",
            enum: ["partial_generation", "full_generation"],
            default: "full_generation"
          }
        },
        {
          in: "query",
          name: "preview_mode",
          description: "Type of mode used for document generation preview:\n- open - preview_url provides a link to open the file in a browser\n- download - preview_url provides a link to download the file\n",
          schema: {
            type: "string",
            enum: ["open", "download"],
            default: "open"
          }
        }
      ],
      tags: ["Documents"],
      requestBody: {
        content: {
          "application/json": {
            schema: {
              $ref: "#/components/schemas/DocumentGenerationV2Request"
            }
          }
        }
      },
      responses: {
        "200": {
          description: "Generated document output",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/DocumentGenerationV2Response"
              }
            }
          }
        }
      }
    }
  },
  "/v2/documents:convert": {
    post: {
      operationId: "convertDocument",
      summary: "convertDocument",
      description: "Converts a document to a different format.\n\nSupported input document types:\n- .docx\n\nSupported output document types:\n- .pdf\n",
      tags: ["Documents"],
      requestBody: {
        content: {
          "application/json": {
            schema: {
              $ref: "#/components/schemas/ConvertDocumentRequest"
            }
          }
        }
      },
      responses: {
        "200": {
          description: "Conversion job output",
          content: {
            "application/json": {
              schema: {
                $ref: "#/components/schemas/ConvertDocumentResponse"
              }
            }
          }
        }
      }
    }
  }
};
var components = {
  securitySchemes: {
    EpilotAuth: {
      type: "http",
      scheme: "bearer",
      description: "Authorization header with epilot OAuth2 bearer token",
      bearerFormat: "JWT"
    }
  },
  schemas: {
    S3Reference: {
      type: "object",
      properties: {
        bucket: {
          type: "string",
          example: "document-api-prod"
        },
        key: {
          type: "string",
          example: "uploads/my-template.pdf"
        }
      },
      required: ["bucket", "key"]
    },
    ErrorOutput: {
      type: "object",
      properties: {
        error_message: {
          description: "Error message",
          type: "string"
        },
        error_code: {
          $ref: "#/components/schemas/ErrorCode"
        },
        error_details: {
          anyOf: [
            {
              $ref: "#/components/schemas/InvalidCustomVariableErrorDetails"
            },
            {
              $ref: "#/components/schemas/InternalErrorDetails"
            },
            {
              $ref: "#/components/schemas/DocxTemplaterErrorDetails"
            }
          ]
        }
      }
    },
    InvalidCustomVariableErrorDetails: {
      description: "Error details for invalid custom variables. This error will appear under 'PARSE_ERROR' error code.",
      type: "array",
      items: {
        $ref: "#/components/schemas/InvalidCustomVariableErrorDetail"
      }
    },
    InvalidCustomVariableErrorDetail: {
      type: "object",
      additionalProperties: true,
      properties: {
        explanation: {
          description: "Explanation for the error",
          type: "string"
        },
        context: {
          description: "Context for the error",
          type: "object",
          properties: {
            invalid_variables: {
              description: "List of invalid variables",
              type: "array",
              items: {
                type: "object",
                description: "Invalid variable",
                properties: {
                  variable: {
                    description: "Variable name",
                    type: "string"
                  },
                  error: {
                    description: "Explanation for the error",
                    type: "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    InternalErrorDetails: {
      description: "Error details for internal error. This error will appear under 'INTERNAL_ERROR' error code.",
      type: "array",
      items: {
        type: "object",
        properties: {
          items: {
            $ref: "#/components/schemas/InternalErrorDetail"
          }
        }
      }
    },
    InternalErrorDetail: {
      type: "object",
      description: "Internal error detail",
      properties: {
        name: {
          description: "Name of the error",
          type: "string"
        },
        message: {
          description: "Error message",
          type: "string"
        },
        stack: {
          description: "Stack trace",
          type: "string"
        },
        cause: {
          description: "Cause of the error",
          type: "string"
        }
      }
    },
    DocxTemplaterErrorDetails: {
      description: "Error details for DocxTemplater error. This error will appear under 'PARSE_ERROR' error code.\nSee https://docxtemplater.com/docs/errors/#error-schema for more details.\n",
      type: "array",
      items: {
        $ref: "#/components/schemas/DocxTemplaterErrorDetail"
      }
    },
    DocxTemplaterErrorDetail: {
      type: "object",
      description: "DocxTemplater error detail",
      properties: {
        id: {
          description: "Id of the error",
          type: "string"
        },
        context: {
          description: "Context of the error",
          type: "string"
        },
        explanation: {
          description: "Explanation of the error",
          type: "string"
        }
      }
    },
    ErrorCode: {
      description: "Error codes for document generation:\n- PARSE_ERROR - Error while parsing the document. Normally related with a bad template using the wrong DocxTemplater syntax.\n- DOC_TO_PDF_CONVERT_ERROR - Error while converting the document to PDF. Normally related with a ConvertAPI failure.\n- INTERNAL_ERROR - Internal error. Please contact support.\n- INVALID_TEMPLATE_FORMAT - Invalid template format (only .docx is supported). This can happen due to a bad word file or an unsupported file extension.\n",
      type: "string",
      enum: ["PARSE_ERROR", "DOC_TO_PDF_CONVERT_ERROR", "INTERNAL_ERROR", "INVALID_TEMPLATE_FORMAT"]
    },
    TemplateSettings: {
      type: "object",
      description: "Template Settings for document generation",
      properties: {
        custom_margins: {
          description: "Custom margins for the document",
          type: "object",
          properties: {
            top: {
              description: "Top margin in cm",
              type: "number",
              example: 2.54
            },
            bottom: {
              description: "Bottom margin in cm",
              type: "number",
              example: 2.54
            }
          }
        },
        suggested_margins: {
          description: "Suggested margins for the document",
          type: "object",
          properties: {
            top: {
              description: "Top margin in cm",
              type: "number",
              example: 2.54
            },
            bottom: {
              description: "Bottom margin in cm",
              type: "number",
              example: 2.54
            }
          }
        },
        display_margin_guidelines: {
          description: "Display margin guidelines (applicable to partial generation only)",
          type: "boolean",
          example: true
        },
        enable_data_table_margin_autofix: {
          description: "Enable data table margin autofix",
          type: "boolean",
          example: false
        },
        template_with_datatable: {
          description: "A flag that indicates whether the template has 1 or more data tables in it",
          type: "boolean",
          example: false
        },
        enabled_template_settings_persistence: {
          description: "Enables the persistance of template settings",
          type: "boolean",
          example: false
        },
        misconfigured_margins: {
          description: "An indication that the page margins are misconfigured",
          type: "boolean",
          example: false
        },
        file_entity_id: {
          description: "The file entity id, used when persisting a new template version with updated settings",
          type: "string",
          format: "uuid",
          example: "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
        }
      }
    },
    DocumentMetaRequest: {
      type: "object",
      properties: {
        template_document: {
          description: "Input template document",
          type: "object",
          properties: {
            s3ref: {
              $ref: "#/components/schemas/S3Reference"
            }
          }
        }
      }
    },
    DocumentMetaResponse: {
      type: "object",
      properties: {
        page_margins: {
          description: "Page margins for the document",
          type: "object",
          properties: {
            top: {
              description: "Top margin in cm",
              type: "number",
              example: 2.54
            },
            bottom: {
              description: "Bottom margin in cm",
              type: "number",
              example: 2.54
            },
            left: {
              description: "Left margin in cm",
              type: "number",
              example: 2.54
            },
            right: {
              description: "Right margin in cm",
              type: "number",
              example: 2.54
            },
            header: {
              description: "Header margin in cm",
              type: "number",
              example: 2.54
            },
            footer: {
              description: "Footer margin in cm",
              type: "number",
              example: 2.54
            }
          }
        },
        variables: {
          description: "List of variables in the document",
          type: "array",
          items: {
            type: "string"
          },
          example: [
            "order.billing_contact.0.salutation",
            "order.billing_contact.0.title",
            "order_table",
            "stayHardStatic",
            "opportunity[attribute_name]",
            'opportunity["attribute_name"]',
            "opportunity.[attribute_name]",
            "attribute_name",
            "opportunities.0.attribute_name",
            "opportunities[0].attribute_name",
            "contact.opportunities[0].attribute_name",
            "opportunities[Primary].attribute_name"
          ]
        }
      }
    },
    DocumentGenerationV2Request: {
      type: "object",
      properties: {
        template_document: {
          description: "Input template document",
          type: "object",
          properties: {
            filename: {
              type: "string",
              description: "Document original filename",
              example: "my-template-{{order.order_number}}.docx"
            },
            s3ref: {
              $ref: "#/components/schemas/S3Reference"
            }
          }
        },
        context_entity_id: {
          type: "string",
          format: "uuid",
          description: "Entity to use for variable context",
          example: "bcd0aab9-b544-42b0-8bfb-6d449d02eacc"
        },
        user_id: {
          type: "string",
          description: "User Id for variable context",
          example: 100321
        },
        language: {
          type: "string",
          description: "Language",
          example: "de"
        },
        variable_payload: {
          description: "Custom values for variables in the template. Takes the higher precedence than others.",
          type: "object",
          properties: {
            additionalProperties: {
              type: "string"
            }
          }
        },
        context_data: {
          description: "Custom values for variables in the template. Takes the higher precedence than others.",
          type: "object",
          properties: {
            additionalProperties: {
              type: "string"
            }
          }
        },
        template_settings: {
          $ref: "#/components/schemas/TemplateSettings"
        }
      },
      required: ["template_document"]
    },
    DocumentGenerationV2Response: {
      type: "object",
      properties: {
        job_id: {
          type: "string",
          format: "uuid"
        },
        job_status: {
          description: "Status of the job",
          type: "string",
          enum: ["STARTED", "PROCESSING", "SUCCESS", "FAILED"]
        },
        message: {
          description: "A message explaining the progress",
          type: "string"
        },
        ics_output: {
          type: "object",
          properties: {
            output_document: {
              type: "object",
              properties: {
                filename: {
                  description: "Generated document filename for ICS",
                  type: "string",
                  example: "my-appointment-OR-001.ics"
                },
                s3ref: {
                  $ref: "#/components/schemas/S3Reference"
                }
              },
              example: {
                s3ref: {
                  bucket: "document-api-preview-prod",
                  key: "preview/my-appointment.ics"
                }
              }
            }
          }
        },
        pdf_output: {
          type: "object",
          properties: {
            preview_url: {
              description: "Pre-signed S3 GET URL for PDF preview",
              type: "string",
              example: "https://document-api-prod.s3.eu-central-1.amazonaws.com/preview/my-template-OR-001.pdf"
            },
            output_document: {
              type: "object",
              properties: {
                filename: {
                  description: "Generated document filename for PDF",
                  type: "string",
                  example: "my-template-OR-001.pdf"
                },
                s3ref: {
                  $ref: "#/components/schemas/S3Reference"
                }
              },
              example: {
                s3ref: {
                  bucket: "document-api-preview-prod",
                  key: "preview/my-template.pdf"
                }
              }
            }
          }
        },
        docx_output: {
          type: "object",
          properties: {
            preview_url: {
              description: "Pre-signed S3 GET URL for DOCX preview",
              type: "string",
              example: "https://document-api-prod.s3.eu-central-1.amazonaws.com/preview/my-template-OR-001.docx"
            },
            output_document: {
              type: "object",
              properties: {
                filename: {
                  description: "Generated document filename for DOCX",
                  type: "string",
                  example: "my-template-OR-001.docx"
                },
                s3ref: {
                  $ref: "#/components/schemas/S3Reference"
                }
              },
              example: {
                s3ref: {
                  bucket: "document-api-preview-prod",
                  key: "preview/my-template.docx"
                }
              }
            }
          }
        },
        xlsx_output: {
          type: "object",
          properties: {
            preview_url: {
              description: "Pre-signed S3 GET URL for XLSX preview",
              type: "string",
              example: "https://document-api-prod.s3.eu-central-1.amazonaws.com/preview/my-template-OR-001.xlsx"
            },
            output_document: {
              type: "object",
              properties: {
                filename: {
                  description: "Generated document filename for XLSX",
                  type: "string",
                  example: "my-template-OR-001.xlsx"
                },
                s3ref: {
                  $ref: "#/components/schemas/S3Reference"
                }
              },
              example: {
                s3ref: {
                  bucket: "document-api-preview-prod",
                  key: "preview/my-template.xlsx"
                }
              }
            }
          }
        },
        error_output: {
          $ref: "#/components/schemas/ErrorOutput"
        },
        variable_payload: {
          description: "List of variables and its corresponding replaced values from the document template",
          type: "object",
          properties: {
            additionalProperties: {
              type: "string"
            }
          }
        },
        template_settings: {
          $ref: "#/components/schemas/TemplateSettings"
        }
      }
    },
    ConvertDocumentRequest: {
      type: "object",
      properties: {
        language: {
          type: "string",
          description: "Language",
          example: "de"
        },
        input_document: {
          description: "Input document",
          type: "object",
          properties: {
            s3ref: {
              $ref: "#/components/schemas/S3Reference"
            }
          },
          required: ["s3ref"]
        },
        output_format: {
          description: "Output format of the document",
          type: "string",
          enum: ["pdf"]
        },
        output_filename: {
          description: "Filename of the output document (optional)",
          type: "string",
          example: "converted.pdf"
        }
      },
      required: ["input_document", "output_format"]
    },
    ConvertDocumentResponse: {
      type: "object",
      properties: {
        output_document: {
          type: "object",
          properties: {
            preview_url: {
              description: "Pre-signed URL for the converted document",
              type: "string",
              example: "https://document-api-prod.s3.eu-central-1.amazonaws.com/preview/converted.pdf"
            },
            s3ref: {
              $ref: "#/components/schemas/S3Reference"
            }
          }
        }
      }
    }
  }
};
var servers = [
  {
    url: "https://document.sls.epilot.io"
  }
];
var document_default = {
  openapi,
  info,
  tags,
  security,
  paths,
  components,
  servers
};
export {
  components,
  document_default as default,
  info,
  openapi,
  paths,
  security,
  servers,
  tags
};
