﻿openapi: 3.1.0
info:
  title: Stirling PDF API
  description: |-
    API documentation for all Server-Side processing.
    Please note some functionality might be UI only and missing from here.
  termsOfService: 'https://www.stirlingpdf.com/terms'
  contact:
    name: Stirling Software
    url: 'https://www.stirlingpdf.com'
    email: contact@stirlingpdf.com
  license:
    name: MIT
    url: >-
      https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/refs/heads/main/LICENSE
    identifier: MIT
  version: 1.2.0
servers:
  - url: 'https://stirlingpdf.io'
    description: Generated server url
tags:
  - name: Filter
    description: Filter APIs
  - name: Admin Settings
    description: Admin-only Settings Management APIs
  - name: Security
    description: Security APIs
  - name: Pipeline
    description: Pipeline APIs
  - name: Analysis
    description: Analysis APIs
  - name: Misc
    description: Miscellaneous PDF APIs
  - name: Misc
    description: Miscellaneous APIs
  - name: Info
    description: Info APIs
  - name: Convert
    description: Convert APIs
  - name: General
    description: General APIs
paths:
  /api/v1/admin/settings:
    get:
      tags:
        - Admin Settings
      summary: Get all application settings
      description: >-
        Retrieve all current application settings. Use includePending=true to
        include settings that will take effect after restart. Admin access
        required.
      operationId: getSettings
      parameters:
        - name: includePending
          in: query
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Settings retrieved successfully
          content:
            '*/*':
              schema:
                type: object
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: object
    put:
      tags:
        - Admin Settings
      summary: Update application settings (delta updates)
      description: >-
        Update specific application settings using dot notation keys. Only sends
        changed values. Changes take effect on restart. Admin access required.
      operationId: updateSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSettingsRequest'
        required: true
      responses:
        '200':
          description: Settings updated successfully
          content:
            '*/*':
              schema:
                type: string
        '400':
          description: Invalid setting key or value
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Failed to save settings to configuration file
          content:
            '*/*':
              schema:
                type: string
  '/api/v1/admin/settings/section/{sectionName}':
    get:
      tags:
        - Admin Settings
      summary: Get specific settings section
      description: >-
        Retrieve settings for a specific section (e.g., security, system, ui).
        Admin access required.
      operationId: getSettingsSection
      parameters:
        - name: sectionName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Section settings retrieved successfully
          content:
            '*/*':
              schema:
                type: object
        '400':
          description: Invalid section name
          content:
            '*/*':
              schema:
                type: object
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: object
    put:
      tags:
        - Admin Settings
      summary: Update specific settings section
      description: Update all settings within a specific section. Admin access required.
      operationId: updateSettingsSection
      parameters:
        - name: sectionName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: {}
        required: true
      responses:
        '200':
          description: Section settings updated successfully
          content:
            '*/*':
              schema:
                type: string
        '400':
          description: Invalid section name or data
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Failed to save settings
          content:
            '*/*':
              schema:
                type: string
  '/api/v1/admin/settings/key/{key}':
    get:
      tags:
        - Admin Settings
      summary: Get specific setting value
      description: >-
        Retrieve value for a specific setting key using dot notation. Admin
        access required.
      operationId: getSettingValue
      parameters:
        - name: key
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Setting value retrieved successfully
          content:
            '*/*':
              schema:
                type: object
        '400':
          description: Invalid setting key
          content:
            '*/*':
              schema:
                type: object
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: object
    put:
      tags:
        - Admin Settings
      summary: Update specific setting value
      description: >-
        Update value for a specific setting key using dot notation. Admin access
        required.
      operationId: updateSettingValue
      parameters:
        - name: key
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSettingValueRequest'
        required: true
      responses:
        '200':
          description: Setting updated successfully
          content:
            '*/*':
              schema:
                type: string
        '400':
          description: Invalid setting key or value
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Failed to save setting
          content:
            '*/*':
              schema:
                type: string
  /api/v1/security/validate-signature:
    post:
      tags:
        - Security
      summary: Validate PDF Digital Signature
      description: >-
        Validates the digital signatures in a PDF file against default or custom
        certificates. Input:PDF Output:JSON Type:SISO
      operationId: validateSignature
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SignatureValidationRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SignatureValidationResult'
  /api/v1/security/sanitize-pdf:
    post:
      tags:
        - Security
      summary: Sanitize a PDF file
      description: >-
        This endpoint processes a PDF file and removes specific elements based
        on the provided options. Input:PDF Output:PDF Type:SISO
      operationId: sanitizePDF
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SanitizePdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/remove-password:
    post:
      tags:
        - Security
      summary: Remove password from a PDF file
      description: >-
        This endpoint removes the password from a protected PDF file. Users need
        to provide the existing password. Input:PDF Output:PDF Type:SISO
      operationId: removePassword
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/remove-cert-sign:
    post:
      tags:
        - Security
      summary: Remove digital signature from PDF
      description: >-
        This endpoint accepts a PDF file and returns the PDF file without the
        digital signature. Input:PDF, Output:PDF Type:SISO
      operationId: removeCertSignPDF
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/redact:
    post:
      tags:
        - Security
      summary: Redacts areas and pages in a PDF document
      description: >-
        This operation takes an input PDF file with a list of areas, page
        number(s)/range(s)/function(s) to redact. Input:PDF, Output:PDF,
        Type:SISO
      operationId: redactPDF
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ManualRedactPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/get-info-on-pdf:
    post:
      tags:
        - Security
      summary: Summary here
      description: 'desc. Input:PDF Output:JSON Type:SISO'
      operationId: getPdfInfo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/cert-sign:
    post:
      tags:
        - Security
      summary: Sign PDF with a Digital Certificate
      description: >-
        This endpoint accepts a PDF file, a digital certificate and related
        information to sign the PDF. It then returns the digitally signed PDF
        file. Input:PDF Output:PDF Type:SISO
      operationId: signPDFWithCert
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SignPDFWithCertRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SignPDFWithCertRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/auto-redact:
    post:
      tags:
        - Security
      summary: Redacts listOfText in a PDF document
      description: >-
        This operation takes an input PDF file and redacts the provided
        listOfText. Input:PDF, Output:PDF, Type:SISO
      operationId: redactPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RedactPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/add-watermark:
    post:
      tags:
        - Security
      summary: Add watermark to a PDF file
      description: >-
        This endpoint adds a watermark to a given PDF file. Users can specify
        the watermark type (text or image), rotation, opacity, width spacer, and
        height spacer. Input:PDF Output:PDF Type:SISO
      operationId: addWatermark
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AddWatermarkRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/security/add-password:
    post:
      tags:
        - Security
      summary: Add password to a PDF file
      description: >-
        This endpoint adds password protection to a PDF file. Users can specify
        a set of permissions that should be applied to the file. Input:PDF
        Output:PDF
      operationId: addPassword
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AddPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/pipeline/handleData:
    post:
      tags:
        - Pipeline
      operationId: handleData
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/HandleDataRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/update-metadata:
    post:
      tags:
        - Misc
      summary: Update metadata of a PDF file
      description: >-
        This endpoint allows you to update the metadata of a given PDF file. You
        can add, modify, or delete standard and custom metadata fields.
        Input:PDF Output:PDF Type:SISO
      operationId: metadata
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MetadataRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/unlock-pdf-forms:
    post:
      tags:
        - Misc
      summary: Remove read-only property from form fields
      description: >-
        Removing read-only property from form fields making them
        fillableInput:PDF, Output:PDF. Type:SISO
      operationId: unlockPDFForms
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/show-javascript:
    post:
      tags:
        - Misc
      summary: Grabs all JS from a PDF and returns a single JS file with all code
      description: 'desc. Input:PDF Output:JS Type:SISO'
      operationId: extractHeader
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/scanner-effect:
    post:
      tags:
        - Misc
      summary: Apply scanner effect to PDF
      description: >-
        Applies various effects to simulate a scanned document, including
        rotation, noise, and edge softening. Input:PDF Output:PDF Type:SISO
      operationId: scannerEffect
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ScannerEffectRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/replace-invert-pdf:
    post:
      tags:
        - Misc
      summary: Replace-Invert Color PDF
      description: >-
        This endpoint accepts a PDF file and option of invert all colors or
        replace text and background colors. Input:PDF Output:PDF Type:SISO
      operationId: replaceAndInvertColor
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReplaceAndInvertColorRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: binary
  /api/v1/misc/repair:
    post:
      tags:
        - Misc
      summary: Repair a PDF file
      description: >-
        This endpoint repairs a given PDF file by running Ghostscript (primary),
        qpdf (fallback), or PDFBox (if no external tools available). The PDF is
        first saved to a temporary location, repaired, read back, and then
        returned as a response. Input:PDF Output:PDF Type:SISO
      operationId: repairPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/remove-blanks:
    post:
      tags:
        - Misc
      summary: Remove blank pages from a PDF file
      description: >-
        This endpoint removes blank pages from a given PDF file. Users can
        specify the threshold and white percentage to tune the detection of
        blank pages. Input:PDF Output:PDF Type:SISO
      operationId: removeBlankPages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RemoveBlankPagesRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/ocr-pdf:
    post:
      tags:
        - Misc
      summary: Process a PDF file with OCR
      description: >-
        This endpoint processes a PDF file using OCR (Optical Character
        Recognition). Users can specify languages, sidecar, deskew, clean,
        cleanFinal, ocrType, ocrRenderType, and removeImagesAfter options. Uses
        OCRmyPDF if available, falls back to Tesseract. Input:PDF Output:PDF
        Type:SI-Conditional
      operationId: processPdfWithOCR
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ProcessPdfWithOcrRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/flatten:
    post:
      tags:
        - Misc
      summary: Flatten PDF form fields or full page
      description: >-
        Flattening just PDF form fields or converting each page to images to
        make text unselectable. Input:PDF, Output:PDF. Type:SISO
      operationId: flatten
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FlattenRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/extract-images:
    post:
      tags:
        - Misc
      summary: Extract images from a PDF file
      description: >-
        This endpoint extracts images from a given PDF file and returns them in
        a zip file. Users can specify the output image format. Input:PDF
        Output:IMAGE/ZIP Type:SIMO
      operationId: extractImages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFExtractImagesRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/extract-image-scans:
    post:
      tags:
        - Misc
      summary: Extract image scans from an input file
      description: >-
        This endpoint extracts image scans from a given file based on certain
        parameters. Users can specify angle threshold, tolerance, minimum area,
        minimum contour area, and border size. Input:PDF Output:IMAGE/ZIP
        Type:SIMO
      operationId: extractImageScans
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ExtractImageScansRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/decompress-pdf:
    post:
      tags:
        - Misc
      summary: Decompress PDF streams
      description: Fully decompresses all PDF streams including text content
      operationId: decompressPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/compress-pdf:
    post:
      tags:
        - Misc
      summary: Optimize PDF file
      description: >-
        This endpoint accepts a PDF file and optimizes it based on the provided
        parameters. Input:PDF Output:PDF Type:SISO
      operationId: optimizePdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OptimizePdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/auto-split-pdf:
    post:
      tags:
        - Misc
      summary: Auto split PDF pages into separate documents
      description: >-
        This endpoint accepts a PDF file, scans each page for a specific QR
        code, and splits the document at the QR code boundaries. The output is a
        zip file containing each separate PDF document. Input:PDF Output:ZIP-PDF
        Type:SISO
      operationId: autoSplitPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AutoSplitPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/auto-rename:
    post:
      tags:
        - Misc
      summary: Extract header from PDF file
      description: >-
        This endpoint accepts a PDF file and attempts to extract its title or
        header based on heuristics. Input:PDF Output:PDF Type:SISO
      operationId: extractHeader_1
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ExtractHeaderRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/add-stamp:
    post:
      tags:
        - Misc
      summary: Add stamp to a PDF file
      description: >-
        This endpoint adds a stamp to a given PDF file. Users can specify the
        stamp type (text or image), rotation, opacity, width spacer, and height
        spacer. Input:PDF Output:PDF Type:SISO
      operationId: addStamp
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AddStampRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/add-page-numbers:
    post:
      tags:
        - Misc
      summary: Add page numbers to a PDF document
      description: >-
        This operation takes an input PDF file and adds page numbers to it.
        Input:PDF Output:PDF Type:SISO
      operationId: addPageNumbers
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AddPageNumbersRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/add-image:
    post:
      tags:
        - Misc
      summary: Overlay image onto a PDF file
      description: >-
        This endpoint overlays an image onto a PDF file at the specified
        coordinates. The image can be overlaid on every page of the PDF if
        specified.  Input:PDF/IMAGE Output:PDF Type:SISO
      operationId: overlayImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OverlayImageRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/misc/add-attachments:
    post:
      tags:
        - Misc
      summary: Add attachments to PDF
      description: 'This endpoint adds attachments to a PDF. Input:PDF, Output:PDF Type:MISO'
      operationId: addAttachments
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AddAttachmentRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/split-pdf-by-sections:
    post:
      tags:
        - General
      summary: Split PDF pages into smaller sections
      description: >-
        Split each page of a PDF into smaller sections based on the user's
        choice (halves, thirds, quarters, etc.), both vertically and
        horizontally. Input:PDF Output:ZIP-PDF Type:SISO
      operationId: splitPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SplitPdfBySectionsRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/split-pdf-by-chapters:
    post:
      tags:
        - General
      summary: Split PDFs by Chapters
      description: Splits a PDF into chapters and returns a ZIP file.
      operationId: splitPdf_1
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SplitPdfByChaptersRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/split-pages:
    post:
      tags:
        - General
      summary: Split a PDF file into separate documents
      description: >-
        This endpoint splits a given PDF file into separate documents based on
        the specified page numbers or ranges. Users can specify pages using
        individual numbers, ranges, or 'all' for every page. Input:PDF
        Output:PDF Type:SIMO
      operationId: splitPdf_2
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFWithPageNums'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/split-by-size-or-count:
    post:
      tags:
        - General
      summary: Auto split PDF pages into separate documents based on size or count
      description: "split PDF into multiple paged documents based on size/count, ie if 20 pages and split into 5, it does 5 documents each 4 pages\r\n if 10MB and each page is 1MB and you enter 2MB then 5 docs each 2MB (rounded so that it accepts 1.9MB but not 2.1MB) Input:PDF Output:ZIP-PDF Type:SISO"
      operationId: autoSplitPdf_1
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SplitPdfBySizeOrCountRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/send-email:
    post:
      tags:
        - General
      summary: Send an email with an attachment
      description: >-
        This endpoint sends an email with an attachment. Input:PDF
        Output:Success/Failure Type:MISO
      operationId: sendEmailWithAttachment
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Email'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
  /api/v1/general/scale-pages:
    post:
      tags:
        - General
      summary: Change the size of a PDF page/document
      description: >-
        This operation takes an input PDF file and the size to scale the pages
        to in the output PDF file. Input:PDF Output:PDF Type:SISO
      operationId: scalePages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ScalePagesRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/rotate-pdf:
    post:
      tags:
        - General
      summary: Rotate a PDF file
      description: >-
        This endpoint rotates a given PDF file by a specified angle. The angle
        must be a multiple of 90. Input:PDF Output:PDF Type:SISO
      operationId: rotatePDF
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RotatePDFRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/remove-pages:
    post:
      tags:
        - General
      summary: Remove pages from a PDF file
      description: >-
        This endpoint removes specified pages from a given PDF file. Users can
        provide a comma-separated list of page numbers or ranges to delete.
        Input:PDF Output:PDF Type:SISO
      operationId: deletePages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFWithPageNums'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/remove-image-pdf:
    post:
      tags:
        - General
      summary: Remove images from file to reduce the file size.
      description: >-
        This endpoint remove images from file to reduce the file size.Input:PDF
        Output:PDF Type:MISO
      operationId: removeImages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/rearrange-pages:
    post:
      tags:
        - General
      summary: Rearrange pages in a PDF file
      description: >-
        This endpoint rearranges pages in a given PDF file based on the
        specified page order or custom mode. Users can provide a page order as a
        comma-separated list of page numbers or page ranges, or a custom mode.
        Input:PDF Output:PDF
      operationId: rearrangePages
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RearrangePagesRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/pdf-to-single-page:
    post:
      tags:
        - General
      summary: Convert a multi-page PDF into a single long page PDF
      description: >-
        This endpoint converts a multi-page PDF document into a single paged PDF
        document. The width of the single page will be same as the input's
        width, but the height will be the sum of all the pages' heights.
        Input:PDF Output:PDF Type:SISO
      operationId: pdfToSinglePage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/overlay-pdfs:
    post:
      tags:
        - General
      summary: Overlay PDF files in various modes
      description: >-
        Overlay PDF files onto a base PDF with different modes: Sequential,
        Interleaved, or Fixed Repeat. Input:PDF Output:PDF Type:MIMO
      operationId: overlayPdfs
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OverlayPdfsRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/multi-page-layout:
    post:
      tags:
        - General
      summary: Merge multiple pages of a PDF document into a single page
      description: >-
        This operation takes an input PDF file and the number of pages to merge
        into a single sheet in the output PDF file. Input:PDF Output:PDF
        Type:SISO
      operationId: mergeMultiplePagesIntoOne
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MergeMultiplePagesRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/merge-pdfs:
    post:
      tags:
        - General
      summary: Merge multiple PDF files into one
      description: >-
        This endpoint merges multiple PDF files into a single PDF file. The
        merged file will contain all pages from the input files in the order
        they were provided. Input:PDF Output:PDF Type:MISO
      operationId: mergePdfs
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MergePdfsRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/extract-bookmarks:
    post:
      tags:
        - General
      summary: Extract PDF Bookmarks
      description: Extracts bookmarks/table of contents from a PDF document as JSON.
      operationId: extractBookmarks
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
              required:
                - file
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: {}
  /api/v1/general/edit-table-of-contents:
    post:
      tags:
        - General
      summary: Edit Table of Contents
      description: Add or edit bookmarks/table of contents in a PDF document.
      operationId: editTableOfContents
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EditTableOfContentsRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/general/crop:
    post:
      tags:
        - General
      summary: Crops a PDF document
      description: >-
        This operation takes an input PDF file and crops it according to the
        given coordinates. Input:PDF Output:PDF Type:SISO
      operationId: cropPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CropPdfForm'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-page-size:
    post:
      tags:
        - Filter
      summary: Checks if a PDF is of a certain size
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: pageSize
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PageSizeRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-page-rotation:
    post:
      tags:
        - Filter
      summary: Checks if a PDF is of a certain rotation
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: pageRotation
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PageRotationRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-page-count:
    post:
      tags:
        - Filter
      summary: 'Checks if a PDF is greater, less or equal to a setPageCount'
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: pageCount
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFComparisonAndCount'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-file-size:
    post:
      tags:
        - Filter
      summary: Checks if a PDF is a set file size
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: fileSize
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FileSizeRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-contains-text:
    post:
      tags:
        - Filter
      summary: 'Checks if a PDF contains set text, returns true if does'
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: containsText
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ContainsTextRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/filter/filter-contains-image:
    post:
      tags:
        - Filter
      summary: Checks if a PDF contains an image
      description: 'Input:PDF Output:Boolean Type:SISO'
      operationId: containsImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFWithPageNums'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/url/pdf:
    post:
      tags:
        - Convert
      summary: Convert a URL to a PDF
      description: >-
        This endpoint fetches content from a URL and converts it to a PDF
        format. Input:N/A Output:PDF Type:SISO
      operationId: urlToPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UrlToPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/xml:
    post:
      tags:
        - Convert
      summary: Convert PDF to XML
      description: >-
        This endpoint converts a PDF file to an XML file. Input:PDF Output:XML
        Type:SISO
      operationId: processPdfToXML
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/word:
    post:
      tags:
        - Convert
      summary: Convert PDF to Word document
      description: >-
        This endpoint converts a given PDF file to a Word document format.
        Input:PDF Output:WORD Type:SISO
      operationId: processPdfToWord
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PdfToWordRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/text:
    post:
      tags:
        - Convert
      summary: Convert PDF to Text or RTF format
      description: >-
        This endpoint converts a given PDF file to Text or RTF format. Input:PDF
        Output:TXT Type:SISO
      operationId: processPdfToRTForTXT
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PdfToTextOrRTFRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/presentation:
    post:
      tags:
        - Convert
      summary: Convert PDF to Presentation format
      description: >-
        This endpoint converts a given PDF file to a Presentation format.
        Input:PDF Output:PPT Type:SISO
      operationId: processPdfToPresentation
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PdfToPresentationRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/pdfa:
    post:
      tags:
        - Convert
      summary: Convert a PDF to a PDF/A
      description: >-
        This endpoint converts a PDF file to a PDF/A file using LibreOffice.
        PDF/A is a format designed for long-term archiving of digital documents.
        Input:PDF Output:PDF Type:SISO
      operationId: pdfToPdfA
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PdfToPdfARequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/markdown:
    post:
      tags:
        - Convert
      summary: Convert PDF to Markdown
      description: >-
        This endpoint converts a PDF file to Markdown format. Input:PDF
        Output:Markdown Type:SISO
      operationId: processPdfToMarkdown
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/img:
    post:
      tags:
        - Convert
      summary: Convert PDF to image(s)
      description: >-
        This endpoint converts a PDF file to image(s) with the specified image
        format, color type, and DPI. Users can choose to get a single image or
        multiple images.  Input:PDF Output:Image Type:SI-Conditional
      operationId: convertToImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConvertToImageRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/html:
    post:
      tags:
        - Convert
      summary: Convert PDF to HTML
      description: >-
        This endpoint converts a PDF file to HTML format. Input:PDF Output:HTML
        Type:SISO
      operationId: processPdfToHTML
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/pdf/csv:
    post:
      tags:
        - Convert
      summary: Extracts a CSV document from a PDF
      description: >-
        This operation takes an input PDF file and returns CSV file of whole
        page. Input:PDF Output:CSV Type:SISO
      operationId: pdfToCsv
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFWithPageNums'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/convert/markdown/pdf:
    post:
      tags:
        - Convert
      summary: Convert a Markdown file to PDF
      description: >-
        This endpoint takes a Markdown file input, converts it to HTML, and then
        to PDF format. Input:MARKDOWN Output:PDF Type:SISO
      operationId: markdownToPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GeneralFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/img/pdf:
    post:
      tags:
        - Convert
      summary: Convert images to a PDF file
      description: >-
        This endpoint converts one or more images to a PDF file. Users can
        specify whether to stretch the images to fit the PDF page, and whether
        to automatically rotate the images. Input:Image Output:PDF Type:MISO
      operationId: convertToPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConvertToPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/html/pdf:
    post:
      tags:
        - Convert
      summary: Convert an HTML or ZIP (containing HTML and CSS) to PDF
      description: >-
        This endpoint takes an HTML or ZIP file input and converts it to a PDF
        format. Input:HTML Output:PDF Type:SISO
      operationId: HtmlToPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/HTMLToPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/file/pdf:
    post:
      tags:
        - Convert
      summary: Convert a file to a PDF using LibreOffice
      description: >-
        This endpoint converts a given file to a PDF using LibreOffice API 
        Input:ANY Output:PDF Type:SISO
      operationId: processFileToPDF
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GeneralFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/convert/eml/pdf:
    post:
      tags:
        - Convert
      summary: Convert EML to PDF
      description: >-
        This endpoint converts EML (email) files to PDF format with extensive
        customization options. Features include font settings, image
        constraints, display modes, attachment handling, and HTML debug output.
        Input: EML file, Output: PDF or HTML file. Type: SISO
      operationId: convertEmlToPdf
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EmlToPdfRequest'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: byte
  /api/v1/analysis/security-info:
    post:
      tags:
        - Analysis
      summary: Get security information
      description: >-
        Returns encryption and permission details. Input:PDF Output:JSON
        Type:SISO
      operationId: getSecurityInfo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/analysis/page-dimensions:
    post:
      tags:
        - Analysis
      summary: Get page dimensions for all pages
      description: 'Returns width and height of each page. Input:PDF Output:JSON Type:SISO'
      operationId: getPageDimensions
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  type: object
                  additionalProperties:
                    type: number
                    format: float
  /api/v1/analysis/page-count:
    post:
      tags:
        - Analysis
      summary: Get PDF page count
      description: 'Returns total number of pages in PDF. Input:PDF Output:JSON Type:SISO'
      operationId: getPageCount
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties:
                  type: integer
                  format: int32
  /api/v1/analysis/form-fields:
    post:
      tags:
        - Analysis
      summary: Get form field information
      description: >-
        Returns count and details of form fields. Input:PDF Output:JSON
        Type:SISO
      operationId: getFormFields
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/analysis/font-info:
    post:
      tags:
        - Analysis
      summary: Get font information
      description: >-
        Returns list of fonts used in the document. Input:PDF Output:JSON
        Type:SISO
      operationId: getFontInfo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/analysis/document-properties:
    post:
      tags:
        - Analysis
      summary: Get PDF document properties
      description: 'Returns title, author, subject, etc. Input:PDF Output:JSON Type:SISO'
      operationId: getDocumentProperties
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties:
                  type: string
  /api/v1/analysis/basic-info:
    post:
      tags:
        - Analysis
      summary: Get basic PDF information
      description: 'Returns page count, version, file size. Input:PDF Output:JSON Type:SISO'
      operationId: getBasicInfo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/analysis/annotation-info:
    post:
      tags:
        - Analysis
      summary: Get annotation information
      description: 'Returns count and types of annotations. Input:PDF Output:JSON Type:SISO'
      operationId: getAnnotationInfo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PDFFile'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/admin/job/cleanup:
    post:
      tags:
        - admin-job-controller
      operationId: cleanupOldJobs
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /audit/types:
    get:
      tags:
        - audit-dashboard-controller
      operationId: getAuditTypes
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  type: string
  /audit/stats:
    get:
      tags:
        - audit-dashboard-controller
      operationId: getAuditStats
      parameters:
        - name: days
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 7
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /audit/data:
    get:
      tags:
        - audit-dashboard-controller
      operationId: getAuditData
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 30
        - name: type
          in: query
          required: false
          schema:
            type: string
        - name: principal
          in: query
          required: false
          schema:
            type: string
        - name: startDate
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: endDate
          in: query
          required: false
          schema:
            type: string
            format: date
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
                additionalProperties: {}
  /api/v1/info/uptime:
    get:
      tags:
        - Info
      operationId: getUptime
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/status:
    get:
      tags:
        - Info
      summary: Application status and version
      description: >-
        This endpoint returns the status of the application and its version
        number.
      operationId: getStatus
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/requests:
    get:
      tags:
        - Info
      summary: POST request count
      description: >-
        This endpoint returns the total count of POST requests for a specific
        endpoint or all endpoints.
      operationId: getTotalRequests
      parameters:
        - name: endpoint
          in: query
          description: endpoint
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/requests/unique:
    get:
      tags:
        - Info
      summary: Unique users count for POST requests
      description: >-
        This endpoint returns the count of unique users for POST requests for a
        specific endpoint or all endpoints.
      operationId: getUniqueTotalRequests
      parameters:
        - name: endpoint
          in: query
          description: endpoint
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/requests/all:
    get:
      tags:
        - Info
      summary: POST requests count for all endpoints
      description: This endpoint returns the count of POST requests for each endpoint.
      operationId: getAllPostRequests
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/requests/all/unique:
    get:
      tags:
        - Info
      summary: Unique users count for POST requests for all endpoints
      description: >-
        This endpoint returns the count of unique users for POST requests for
        each endpoint.
      operationId: getAllUniquePostRequests
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/load:
    get:
      tags:
        - Info
      summary: GET request count
      description: >-
        This endpoint returns the total count of GET requests for a specific
        endpoint or all endpoints.
      operationId: getPageLoads
      parameters:
        - name: endpoint
          in: query
          description: endpoint
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/load/unique:
    get:
      tags:
        - Info
      summary: Unique users count for GET requests
      description: >-
        This endpoint returns the count of unique users for GET requests for a
        specific endpoint or all endpoints.
      operationId: getUniquePageLoads
      parameters:
        - name: endpoint
          in: query
          description: endpoint
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/load/all:
    get:
      tags:
        - Info
      summary: GET requests count for all endpoints
      description: This endpoint returns the count of GET requests for each endpoint.
      operationId: getAllEndpointLoads
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/info/load/all/unique:
    get:
      tags:
        - Info
      summary: Unique users count for GET requests for all endpoints
      description: >-
        This endpoint returns the count of unique users for GET requests for
        each endpoint.
      operationId: getAllUniqueEndpointLoads
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  '/api/v1/general/job/{jobId}':
    get:
      tags:
        - job-controller
      operationId: getJobStatus
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
    delete:
      tags:
        - job-controller
      operationId: cancelJob
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  '/api/v1/general/job/{jobId}/result':
    get:
      tags:
        - job-controller
      operationId: getJobResult
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  '/api/v1/general/job/{jobId}/result/files':
    get:
      tags:
        - job-controller
      operationId: getJobFiles
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  '/api/v1/general/files/{fileId}':
    get:
      tags:
        - job-controller
      operationId: downloadFile
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  '/api/v1/general/files/{fileId}/metadata':
    get:
      tags:
        - job-controller
      operationId: getFileMetadata
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /api/v1/admin/settings/delta:
    get:
      tags:
        - Admin Settings
      summary: Get pending settings changes
      description: >-
        Retrieve settings that have been modified but not yet applied (require
        restart). Admin access required.
      operationId: getSettingsDelta
      responses:
        '200':
          description: Pending changes retrieved successfully
          content:
            '*/*':
              schema:
                type: object
        '403':
          description: Access denied - Admin role required
          content:
            '*/*':
              schema:
                type: object
  /api/v1/admin/job/stats:
    get:
      tags:
        - admin-job-controller
      operationId: getJobStats
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/JobStats'
  /api/v1/admin/job/queue/stats:
    get:
      tags:
        - admin-job-controller
      operationId: getQueueStats
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
components:
  schemas:
    UpdateSettingsRequest:
      type: object
      description: Request to update multiple application settings using delta updates
      properties:
        settings:
          type: object
          additionalProperties: {}
          description: >-
            Map of setting keys to their new values using dot notation. Only
            changed values need to be included for delta updates.
          example:
            system.enableAnalytics: false
            ui.appName: My PDF Tool
          minProperties: 1
      required:
        - settings
    UpdateSettingValueRequest:
      type: object
      description: Request to update a single setting value
      properties:
        value:
          description: The new value for the setting
          example: false
      required:
        - value
    SignatureValidationRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        certFile:
          type: string
          format: binary
          description: (Optional) file to compare PDF cert signatures against x.509 format
    SignatureValidationResult:
      type: object
      properties:
        valid:
          type: boolean
        signerName:
          type: string
        signatureDate:
          type: string
        reason:
          type: string
        location:
          type: string
        errorMessage:
          type: string
        chainValid:
          type: boolean
        trustValid:
          type: boolean
        notExpired:
          type: boolean
        notRevoked:
          type: boolean
        issuerDN:
          type: string
        subjectDN:
          type: string
        serialNumber:
          type: string
        validFrom:
          type: string
        validUntil:
          type: string
        signatureAlgorithm:
          type: string
        keySize:
          type: integer
          format: int32
        version:
          type: string
        keyUsages:
          type: array
          items:
            type: string
        selfSigned:
          type: boolean
    SanitizePdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        removeJavaScript:
          type: boolean
          default: true
          description: Remove JavaScript actions from the PDF
        removeEmbeddedFiles:
          type: boolean
          default: true
          description: Remove embedded files from the PDF
        removeXMPMetadata:
          type: boolean
          default: false
          description: Remove XMP metadata from the PDF
        removeMetadata:
          type: boolean
          default: false
          description: Remove document info metadata from the PDF
        removeLinks:
          type: boolean
          default: false
          description: Remove links from the PDF
        removeFonts:
          type: boolean
          default: false
          description: Remove fonts from the PDF
      required:
        - removeEmbeddedFiles
        - removeFonts
        - removeJavaScript
        - removeLinks
        - removeMetadata
        - removeXMPMetadata
    PDFPasswordRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        password:
          type: string
          format: password
          description: The password of the PDF file
    PDFFile:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
    ManualRedactPdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        redactions:
          type: array
          description: A list of areas that should be redacted
          items:
            $ref: '#/components/schemas/RedactionArea'
        convertPDFToImage:
          type: boolean
          default: false
          description: Convert the redacted PDF to an image
        pageRedactionColor:
          type: string
          default: '#000000'
          description: The color used to fully redact certain pages
      required:
        - convertPDFToImage
        - pageNumbers
        - pageRedactionColor
        - redactions
    RedactionArea:
      type: object
      properties:
        x:
          type: number
          format: double
          description: The left edge point of the area to be redacted.
        'y':
          type: number
          format: double
          description: The top edge point of the area to be redacted.
        height:
          type: number
          format: double
          description: The height of the area to be redacted.
        width:
          type: number
          format: double
          description: The width of the area to be redacted.
        page:
          type: integer
          format: int32
          description: The page on which the area should be redacted.
        color:
          type: string
          description: The color used to redact the specified area.
    SignPDFWithCertRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        certType:
          type: string
          description: The type of the digital certificate
          enum:
            - PEM
            - PKCS12
            - JKS
        privateKeyFile:
          type: string
          format: binary
          description: >-
            The private key for the digital certificate (required for PEM type
            certificates)
        certFile:
          type: string
          format: binary
          description: The digital certificate (required for PEM type certificates)
        p12File:
          type: string
          format: binary
          description: The PKCS12 keystore file (required for PKCS12 type certificates)
        jksFile:
          type: string
          format: binary
          description: The JKS keystore file (Java Key Store)
        password:
          type: string
          format: password
          description: The password for the keystore or the private key
        showSignature:
          type: boolean
          default: false
          description: Whether to visually show the signature in the PDF file
        reason:
          type: string
          default: Signed by SPDF
          description: The reason for signing the PDF
        location:
          type: string
          default: SPDF
          description: The location where the PDF is signed
        name:
          type: string
          default: SPDF
          description: The name of the signer
        pageNumber:
          type: integer
          format: int32
          default: 1
          description: >-
            The page number where the signature should be visible. This is
            required if showSignature is set to true
        showLogo:
          type: boolean
          default: true
          description: Whether to visually show a signature logo along with the signature
      required:
        - certType
        - showLogo
        - showSignature
    RedactPdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        listOfText:
          type: string
          default: 'text,text2'
          description: List of text to redact from the PDF
        useRegex:
          type: boolean
          default: false
          description: Whether to use regex for the listOfText
        wholeWordSearch:
          type: boolean
          default: false
          description: Whether to use whole word search
        redactColor:
          type: string
          default: '#000000'
          description: The color for redaction
        customPadding:
          type: number
          description: Custom padding for redaction
        convertPDFToImage:
          type: boolean
          default: false
          description: Convert the redacted PDF to an image
      required:
        - convertPDFToImage
        - customPadding
        - listOfText
        - redactColor
        - useRegex
        - wholeWordSearch
    AddWatermarkRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        watermarkType:
          type: string
          description: The watermark type (text or image)
          enum:
            - text
            - image
        watermarkText:
          type: string
          default: Stirling Software
          description: The watermark text
        watermarkImage:
          type: string
          format: binary
          description: The watermark image
        alphabet:
          type: string
          default: roman
          description: The selected alphabet
          enum:
            - roman
            - arabic
            - japanese
            - korean
            - chinese
        fontSize:
          type: number
          format: float
          default: 30
          description: The font size of the watermark text
        rotation:
          type: number
          format: float
          default: 0
          description: The rotation of the watermark in degrees
        opacity:
          type: number
          format: float
          default: '0.5'
          description: The opacity of the watermark (0.0 - 1.0)
        widthSpacer:
          type: integer
          format: int32
          default: 50
          description: The width spacer between watermark elements
        heightSpacer:
          type: integer
          format: int32
          default: 50
          description: The height spacer between watermark elements
        customColor:
          type: string
          default: '#d3d3d3'
          description: The color for watermark
        convertPDFToImage:
          type: boolean
          default: false
          description: Convert the redacted PDF to an image
      required:
        - convertPDFToImage
        - watermarkType
    AddPasswordRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        ownerPassword:
          type: string
          format: password
          description: >-
            The owner password to be added to the PDF file (Restricts what can
            be done with the document once it is opened)
        password:
          type: string
          format: password
          description: >-
            The password to be added to the PDF file (Restricts the opening of
            the document itself.)
        keyLength:
          type: integer
          format: int32
          default: 256
          description: The length of the encryption key
          enum:
            - '40'
            - '128'
            - '256'
        preventAssembly:
          type: boolean
          default: false
          description: Whether document assembly is prevented
        preventExtractContent:
          type: boolean
          default: false
          description: Whether content extraction is prevented
        preventExtractForAccessibility:
          type: boolean
          default: false
          description: Whether content extraction for accessibility is prevented
        preventFillInForm:
          type: boolean
          default: false
          description: Whether form filling is prevented
        preventModify:
          type: boolean
          default: false
          description: Whether document modification is prevented
        preventModifyAnnotations:
          type: boolean
          default: false
          description: Whether modification of annotations is prevented
        preventPrinting:
          type: boolean
          default: false
          description: Whether printing of the document is prevented
        preventPrintingFaithful:
          type: boolean
          default: false
          description: Whether faithful printing is prevented
      required:
        - keyLength
    HandleDataRequest:
      type: object
      properties:
        fileInput:
          type: array
          description: The input files
          items:
            type: string
            format: binary
        json:
          type: string
          default: '{}'
          description: JSON String
      required:
        - fileInput
        - json
    MetadataRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        deleteAll:
          type: boolean
          default: false
          description: Delete all metadata if set to true
        author:
          type: string
          default: author
          description: The author of the document
        creationDate:
          type: string
          default: '2023/10/01 12:00:00'
          description: 'The creation date of the document (format: yyyy/MM/dd HH:mm:ss)'
          pattern: 'yyyy/MM/dd HH:mm:ss'
        creator:
          type: string
          default: creator
          description: The creator of the document
        keywords:
          type: string
          default: keywords
          description: The keywords for the document
        modificationDate:
          type: string
          default: '2023/10/01 12:00:00'
          description: 'The modification date of the document (format: yyyy/MM/dd HH:mm:ss)'
          pattern: 'yyyy/MM/dd HH:mm:ss'
        producer:
          type: string
          default: producer
          description: The producer of the document
        subject:
          type: string
          default: subject
          description: The subject of the document
        title:
          type: string
          default: title
          description: The title of the document
        trapped:
          type: string
          default: 'False'
          description: The trapped status of the document
          enum:
            - 'True'
            - 'False'
            - Unknown
        allRequestParams:
          type: object
          additionalProperties:
            type: string
          description: >-
            Map list of key and value of custom parameters. Note these must
            start with customKey and customValue if they are non-standard
      required:
        - deleteAll
    ScannerEffectRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          description: PDF file to process
        quality:
          type: string
          description: Scan quality preset
          enum:
            - low
            - medium
            - high
          example: high
        rotation:
          type: string
          description: Rotation preset
          enum:
            - none
            - slight
            - moderate
            - severe
          example: none
        colorspace:
          type: string
          description: Colorspace for output image
          enum:
            - grayscale
            - color
          example: grayscale
        border:
          type: integer
          format: int32
          description: Border thickness in pixels
          example: 20
        rotate:
          type: integer
          format: int32
          description: Base rotation in degrees
          example: 0
        rotateVariance:
          type: integer
          format: int32
          description: Random rotation variance in degrees
          example: 2
        brightness:
          type: number
          format: float
          description: Brightness multiplier (1.0 = no change)
          example: 1
        contrast:
          type: number
          format: float
          description: Contrast multiplier (1.0 = no change)
          example: 1
        blur:
          type: number
          format: float
          description: 'Blur amount (0 = none, higher = more blur)'
          example: 1
        noise:
          type: number
          format: float
          description: 'Noise amount (0 = none, higher = more noise)'
          example: 8
        yellowish:
          type: boolean
          description: Simulate yellowed paper
          example: false
        resolution:
          type: integer
          format: int32
          description: Rendering resolution in DPI
          example: 300
        advancedEnabled:
          type: boolean
          description: Whether advanced settings are enabled
          example: false
        qualityValue:
          type: integer
          format: int32
        rotationValue:
          type: integer
          format: int32
      required:
        - fileInput
        - quality
        - rotation
    ReplaceAndInvertColorRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        replaceAndInvertOption:
          type: string
          default: HIGH_CONTRAST_COLOR
          description: Replace and Invert color options of a pdf.
          enum:
            - HIGH_CONTRAST_COLOR
            - CUSTOM_COLOR
            - FULL_INVERSION
        highContrastColorCombination:
          type: string
          default: WHITE_TEXT_ON_BLACK
          description: >-
            If HIGH_CONTRAST_COLOR option selected, then pick the default color
            option for text and background.
          enum:
            - WHITE_TEXT_ON_BLACK
            - BLACK_TEXT_ON_WHITE
            - YELLOW_TEXT_ON_BLACK
            - GREEN_TEXT_ON_BLACK
        backGroundColor:
          type: string
          description: >-
            If CUSTOM_COLOR option selected, then pick the custom color for
            background. Expected color value should be 24bit decimal value of a
            color
        textColor:
          type: string
          description: >-
            If CUSTOM_COLOR option selected, then pick the custom color for
            text. Expected color value should be 24bit decimal value of a color
      required:
        - highContrastColorCombination
        - replaceAndInvertOption
    RemoveBlankPagesRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        threshold:
          type: integer
          format: int32
          default: 10
          description: The threshold value to determine blank pages
          maximum: 255
          minimum: 0
        whitePercent:
          type: number
          format: float
          default: '99.9'
          description: The percentage of white color on a page to consider it as blank
          maximum: 100
          minimum: 0.1
      required:
        - threshold
        - whitePercent
    ProcessPdfWithOcrRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        languages:
          type: array
          default: '["eng"]'
          description: 'List of languages to use in OCR processing, e.g., ''eng'', ''deu'''
          items:
            type: string
        sidecar:
          type: boolean
          description: Include OCR text in a sidecar text file if set to true
        deskew:
          type: boolean
          description: Deskew the input file if set to true
        clean:
          type: boolean
          description: Clean the input file if set to true
        cleanFinal:
          type: boolean
          description: Clean the final output if set to true
        ocrType:
          type: string
          description: 'Specify the OCR type, e.g., ''skip-text'', ''force-ocr'', or ''Normal'''
          enum:
            - skip-text
            - force-ocr
            - Normal
        ocrRenderType:
          type: string
          default: hocr
          description: 'Specify the OCR render type, either ''hocr'' or ''sandwich'''
          enum:
            - hocr
            - sandwich
        removeImagesAfter:
          type: boolean
          description: Remove images from the output PDF if set to true
      required:
        - languages
        - ocrRenderType
        - ocrType
    FlattenRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        flattenOnlyForms:
          type: boolean
          default: false
          description: >-
            True to flatten only the forms, false to flatten full PDF (Convert
            page to image)
      required:
        - flattenOnlyForms
    PDFExtractImagesRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        format:
          type: string
          default: png
          description: 'The output image format e.g., ''png'', ''jpeg'', or ''gif'''
          enum:
            - png
            - jpeg
            - gif
        allowDuplicates:
          type: boolean
          default: false
          description: >-
            Boolean to enable/disable the saving of duplicate images, true to
            enable duplicates
      required:
        - format
    ExtractImageScansRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          description: The input file containing image scans
        angleThreshold:
          type: integer
          format: int32
          default: 5
          description: The angle threshold for the image scan extraction
        tolerance:
          type: integer
          format: int32
          default: 20
          description: The tolerance for the image scan extraction
        minArea:
          type: integer
          format: int32
          default: 8000
          description: The minimum area for the image scan extraction
        minContourArea:
          type: integer
          format: int32
          default: 500
          description: The minimum contour area for the image scan extraction
        borderSize:
          type: integer
          format: int32
          default: 1
          description: The border size for the image scan extraction
      required:
        - angleThreshold
        - borderSize
        - fileInput
        - minArea
        - minContourArea
        - tolerance
    OptimizePdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        optimizeLevel:
          type: integer
          format: int32
          default: 5
          description: >-
            The level of optimization to apply to the PDF file. Higher values
            indicate greater compression but may reduce quality.
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
            - '8'
            - '9'
        expectedOutputSize:
          type: string
          default: 25KB
          description: 'The expected output size, e.g. ''100MB'', ''25KB'', etc.'
        linearize:
          type: boolean
          default: false
          description: >-
            Whether to linearize the PDF for faster web viewing. Default is
            false.
        normalize:
          type: boolean
          default: false
          description: >-
            Whether to normalize the PDF content for better compatibility.
            Default is false.
        grayscale:
          type: boolean
          default: false
          description: Whether to convert the PDF to grayscale. Default is false.
      required:
        - expectedOutputSize
        - grayscale
        - linearize
        - normalize
        - optimizeLevel
    AutoSplitPdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        duplexMode:
          type: boolean
          default: false
          description: >-
            Flag indicating if the duplex mode is active, where the page after
            the divider also gets removed.
    ExtractHeaderRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        useFirstTextAsFallback:
          type: boolean
          default: false
          description: >-
            Flag indicating whether to use the first text as a fallback if no
            suitable title is found. Defaults to false.
    AddStampRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        stampType:
          type: string
          description: The stamp type (text or image)
          enum:
            - text
            - image
        stampText:
          type: string
          default: Stirling Software
          description: The stamp text
        stampImage:
          type: string
          format: binary
          description: The stamp image
        alphabet:
          type: string
          default: roman
          description: The selected alphabet of the stamp text
          enum:
            - roman
            - arabic
            - japanese
            - korean
            - chinese
        fontSize:
          type: number
          format: float
          default: 30
          description: The font size of the stamp text and image
        rotation:
          type: number
          format: float
          default: 0
          description: The rotation of the stamp in degrees
        opacity:
          type: number
          format: float
          default: '0.5'
          description: The opacity of the stamp (0.0 - 1.0)
        position:
          type: integer
          format: int32
          default: 5
          description: >-
            Position for stamp placement based on a 1-9 grid (1: bottom-left, 2:
            bottom-center, 3: bottom-right, 4: middle-left, 5: middle-center, 6:
            middle-right, 7: top-left, 8: top-center, 9: top-right)
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
            - '8'
            - '9'
        overrideX:
          type: number
          format: float
          default: -1
          description: >-
            Override X coordinate for stamp placement. If set, it will override
            the position-based calculation. Negative value means no override.
        overrideY:
          type: number
          format: float
          default: -1
          description: >-
            Override Y coordinate for stamp placement. If set, it will override
            the position-based calculation. Negative value means no override.
        customMargin:
          type: string
          default: medium
          description: Specifies the margin size for the stamp.
          enum:
            - small
            - medium
            - large
            - x-large
        customColor:
          type: string
          default: '#d3d3d3'
          description: The color of the stamp text
      required:
        - customMargin
        - fontSize
        - opacity
        - overrideX
        - overrideY
        - pageNumbers
        - position
        - rotation
        - stampType
    AddPageNumbersRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        customMargin:
          type: string
          default: medium
          description: 'Custom margin: small/medium/large/x-large'
          enum:
            - small
            - medium
            - large
            - x-large
        fontSize:
          type: number
          format: float
          default: 12
          description: Font size for page numbers
          minimum: 1
        fontType:
          type: string
          description: Font type for page numbers
          enum:
            - helvetica
            - courier
            - times
        position:
          type: integer
          format: int32
          default: 8
          description: >-
            Position: 1-9 representing positions on the page (1=top-left,
            2=top-center, 3=top-right, 4=middle-left, 5=middle-center,
            6=middle-right, 7=bottom-left, 8=bottom-center, 9=bottom-right)
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
            - '8'
            - '9'
        startingNumber:
          type: integer
          format: int32
          default: 1
          description: Starting number for page numbering
          minimum: 1
        pagesToNumber:
          type: string
          default: all
          description: 'Which pages to number (e.g. ''1,3-5,7'' or ''all'')'
        customText:
          type: string
          default: '{n}'
          description: >-
            Custom text pattern. Available variables: {n}=current page number,
            {total}=total pages, {filename}=original filename
          example: 'Page {n} of {total}'
      required:
        - fontSize
        - fontType
        - pageNumbers
        - position
        - startingNumber
    OverlayImageRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        imageFile:
          type: string
          format: binary
          description: The image file to be overlaid onto the PDF.
        x:
          type: number
          format: float
          default: 0
          description: The x-coordinate at which to place the top-left corner of the image.
        'y':
          type: number
          format: float
          default: 0
          description: The y-coordinate at which to place the top-left corner of the image.
        everyPage:
          type: boolean
          default: false
          description: Whether to overlay the image onto every page of the PDF.
      required:
        - everyPage
        - imageFile
        - x
        - 'y'
    AddAttachmentRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        attachments:
          type: array
          format: binary
          description: The image file to be overlaid onto the PDF.
          items:
            type: string
            format: binary
      required:
        - attachments
    SplitPdfBySectionsRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        horizontalDivisions:
          type: integer
          format: int32
          default: 0
          description: Number of horizontal divisions for each PDF page
          minimum: 0
        verticalDivisions:
          type: integer
          format: int32
          default: 1
          description: Number of vertical divisions for each PDF page
          minimum: 0
        merge:
          type: boolean
          default: true
          description: Merge the split documents into a single PDF
      required:
        - horizontalDivisions
        - merge
        - verticalDivisions
    SplitPdfByChaptersRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        includeMetadata:
          type: boolean
          default: true
          description: Whether to include Metadata or not
        allowDuplicates:
          type: boolean
          default: true
          description: Whether to allow duplicates or not
        bookmarkLevel:
          type: integer
          format: int32
          default: 2
          description: Maximum bookmark level required
          minimum: 0
      required:
        - allowDuplicates
        - bookmarkLevel
        - includeMetadata
    PDFWithPageNums:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
      required:
        - pageNumbers
    SplitPdfBySizeOrCountRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        splitType:
          type: integer
          format: int32
          default: 0
          description: >-
            Determines the type of split: 0 for size, 1 for page count, 2 for
            document count
        splitValue:
          type: string
          default: 10MB
          description: >-
            Value for split: size in MB (e.g., '10MB') or number of pages (e.g.,
            '5')
    Email:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          description: The input file
        to:
          type: string
          format: email
          description: The recipient's email address
        subject:
          type: string
          default: Stirling Software PDF Notification
          description: The subject of the email
        body:
          type: string
          default: >-
            This message was automatically generated by Stirling-PDF, an
            innovative solution from Stirling Software. For more information,
            visit our <a
            href="https://stirling-software.com">website</a>.<br><br>Please do
            not reply directly to this email.
          description: The body of the email
      required:
        - fileInput
        - to
    ScalePagesRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageSize:
          type: string
          description: >-
            The scale of pages in the output PDF. Acceptable values are A0-A6,
            LETTER, LEGAL, KEEP.
          enum:
            - A0
            - A1
            - A2
            - A3
            - A4
            - A5
            - A6
            - LETTER
            - LEGAL
            - KEEP
        scaleFactor:
          type: number
          format: float
          default: 1
          description: >-
            The scale of the content on the pages of the output PDF. Acceptable
            values are floats.
          minimum: 0
      required:
        - pageSize
        - scaleFactor
    RotatePDFRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        angle:
          type: integer
          format: int32
          default: 90
          description: >-
            The angle by which to rotate the PDF file. This should be a multiple
            of 90.
          enum:
            - '0'
            - '90'
            - '180'
            - '270'
      required:
        - angle
    RearrangePagesRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        customMode:
          type: string
          description: >
            The custom mode for page rearrangement. Valid values are:

            CUSTOM: Uses order defined in PageNums DUPLICATE: Duplicate pages n
            times (if Page order defined as 4, then duplicates each page 4
            times)REVERSE_ORDER: Reverses the order of all pages.

            DUPLEX_SORT: Sorts pages as if all fronts were scanned then all
            backs in reverse (1, n, 2, n-1, ...). BOOKLET_SORT: Arranges pages
            for booklet printing (last, first, second, second last, ...).

            ODD_EVEN_SPLIT: Splits and arranges pages into odd and even numbered
            pages.

            ODD_EVEN_MERGE: Merges pages and organises them alternately into odd
            and even pages.

            REMOVE_FIRST: Removes the first page.

            REMOVE_LAST: Removes the last page.

            REMOVE_FIRST_AND_LAST: Removes both the first and the last pages.
          enum:
            - CUSTOM
            - REVERSE_ORDER
            - DUPLEX_SORT
            - BOOKLET_SORT
            - SIDE_STITCH_BOOKLET_SORT
            - ODD_EVEN_SPLIT
            - ODD_EVEN_MERGE
            - REMOVE_FIRST
            - REMOVE_LAST
            - REMOVE_FIRST_AND_LAST
            - DUPLICATE
      required:
        - pageNumbers
    OverlayPdfsRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        overlayFiles:
          type: array
          description: >-
            An array of PDF files to be used as overlays on the base PDF. The
            order in these files is applied based on the selected mode.
          items:
            type: string
            format: binary
        overlayMode:
          type: string
          description: >-
            The mode of overlaying: 'SequentialOverlay' for sequential
            application, 'InterleavedOverlay' for round-robin application,
            'FixedRepeatOverlay' for fixed repetition based on provided counts
          enum:
            - SequentialOverlay
            - InterleavedOverlay
            - FixedRepeatOverlay
        counts:
          type: array
          description: >-
            An array of integers specifying the number of times each
            corresponding overlay file should be applied in the
            'FixedRepeatOverlay' mode. This should match the length of the
            overlayFiles array.
          items:
            type: integer
            format: int32
        overlayPosition:
          type: number
          description: 'Overlay position 0 is Foregound, 1 is Background'
          enum:
            - '0'
            - '1'
      required:
        - overlayFiles
        - overlayMode
        - overlayPosition
    MergeMultiplePagesRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pagesPerSheet:
          type: number
          default: 2
          description: The number of pages to fit onto a single sheet in the output PDF.
          enum:
            - '2'
            - '3'
            - '4'
            - '9'
            - '16'
        addBorder:
          type: boolean
          description: Boolean for if you wish to add border around the pages
      required:
        - pagesPerSheet
    MergePdfsRequest:
      type: object
      properties:
        fileInput:
          type: array
          description: The input PDF files
          items:
            type: string
            format: binary
        sortType:
          type: string
          default: orderProvided
          description: The type of sorting to be applied on the input files before merging.
          enum:
            - orderProvided
            - byFileName
            - byDateModified
            - byDateCreated
            - byPDFTitle
        removeCertSign:
          type: boolean
          default: true
          description: >-
            Flag indicating whether to remove certification signatures from the
            merged PDF. If true, all certification signatures will be removed
            from the final merged document.
        generateToc:
          type: boolean
          default: false
          description: >-
            Flag indicating whether to generate a table of contents for the
            merged PDF. If true, a table of contents will be created using the
            input filenames as chapter names.
      required:
        - fileInput
        - removeCertSign
        - sortType
    EditTableOfContentsRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        bookmarkData:
          type: string
          description: Bookmark structure in JSON format
          example:
            - title: Chapter 1
              pageNumber: 1
              children:
                - title: Section 1.1
                  pageNumber: 2
        replaceExisting:
          type: boolean
          description: Whether to replace existing bookmarks or append to them
          example: true
    CropPdfForm:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        x:
          type: number
          description: The x-coordinate of the top-left corner of the crop area
        'y':
          type: number
          description: The y-coordinate of the top-left corner of the crop area
        width:
          type: number
          description: The width of the crop area
        height:
          type: number
          description: The height of the crop area
    PageSizeRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        comparator:
          type: string
          description: 'The comparison type, accepts Greater, Equal, Less than'
          enum:
            - Greater
            - Equal
            - Less
        standardPageSize:
          type: string
          default: A4
          description: Standard Page Size
          enum:
            - A0
            - A1
            - A2
            - A3
            - A4
            - A5
            - A6
            - LETTER
            - LEGAL
      required:
        - comparator
        - standardPageSize
    PageRotationRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        comparator:
          type: string
          description: 'The comparison type, accepts Greater, Equal, Less than'
          enum:
            - Greater
            - Equal
            - Less
        rotation:
          type: integer
          format: int32
          default: 0
          description: Rotation in degrees
      required:
        - comparator
        - rotation
    PDFComparisonAndCount:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        comparator:
          type: string
          description: 'The comparison type, accepts Greater, Equal, Less than'
          enum:
            - Greater
            - Equal
            - Less
        pageCount:
          type: integer
          format: int32
          default: 0
          description: Count
      required:
        - comparator
        - pageCount
    FileSizeRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        comparator:
          type: string
          description: 'The comparison type, accepts Greater, Equal, Less than'
          enum:
            - Greater
            - Equal
            - Less
        fileSize:
          type: integer
          format: int64
          default: 0
          description: Size of the file in bytes
      required:
        - comparator
        - fileSize
    ContainsTextRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        text:
          type: string
          default: text
          description: The text to check for
      required:
        - pageNumbers
        - text
    UrlToPdfRequest:
      type: object
      properties:
        urlInput:
          type: string
          description: The input URL to be converted to a PDF file
      required:
        - urlInput
    PdfToWordRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        outputFormat:
          type: string
          description: The output Word document format
          enum:
            - doc
            - docx
            - odt
      required:
        - outputFormat
    PdfToTextOrRTFRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        outputFormat:
          type: string
          description: The output Text or RTF format
          enum:
            - rtf
            - txt
      required:
        - outputFormat
    PdfToPresentationRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        outputFormat:
          type: string
          description: The output Presentation format
          enum:
            - ppt
            - pptx
            - odp
      required:
        - outputFormat
    PdfToPdfARequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        outputFormat:
          type: string
          description: The output PDF/A type
          enum:
            - pdfa
            - pdfa-1
      required:
        - outputFormat
    ConvertToImageRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        pageNumbers:
          type: string
          default: all
          description: >-
            The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or
            functions in the format 'an+b' where 'a' is the multiplier of the
            page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')
        imageFormat:
          type: string
          default: png
          description: The output image format
          enum:
            - png
            - jpeg
            - jpg
            - gif
            - webp
        singleOrMultiple:
          type: string
          default: multiple
          description: >-
            Choose between a single image containing all pages or separate
            images for each page
          enum:
            - single
            - multiple
        colorType:
          type: string
          default: color
          description: The color type of the output image(s)
          enum:
            - color
            - greyscale
            - blackwhite
        dpi:
          type: integer
          format: int32
          default: 300
          description: The DPI (dots per inch) for the output image(s)
      required:
        - colorType
        - dpi
        - imageFormat
        - pageNumbers
        - singleOrMultiple
    GeneralFile:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          description: The input file
      required:
        - fileInput
    ConvertToPdfRequest:
      type: object
      properties:
        fileInput:
          type: array
          description: The input images to be converted to a PDF file
          items:
            type: string
            format: binary
        fitOption:
          type: string
          default: fillPage
          description: Option to determine how the image will fit onto the page
          enum:
            - fillPage
            - fitDocumentToImage
            - maintainAspectRatio
        colorType:
          type: string
          default: color
          description: The color type of the output image(s)
          enum:
            - color
            - greyscale
            - blackwhite
        autoRotate:
          type: boolean
          default: false
          description: >-
            Whether to automatically rotate the images to better fit the PDF
            page
      required:
        - autoRotate
        - colorType
        - fileInput
        - fitOption
    HTMLToPdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        zoom:
          type: number
          format: float
          default: 1
          description: Zoom level for displaying the website. Default is '1'.
      required:
        - zoom
    EmlToPdfRequest:
      type: object
      properties:
        fileInput:
          type: string
          format: binary
          contentMediaType: application/pdf
          description: The input PDF file
        fileId:
          type: string
          description: File ID for server-side files (can be used instead of fileInput)
          example: a1b2c3d4-5678-90ab-cdef-ghijklmnopqr
        includeAttachments:
          type: boolean
          description: Include email attachments in the PDF output
          example: false
        maxAttachmentSizeMB:
          type: integer
          format: int32
          description: >-
            Maximum attachment size in MB to include (default 10MB, range:
            1-100)
          example: 10
          maximum: 100
          minimum: 1
        downloadHtml:
          type: boolean
          description: Download HTML intermediate file instead of PDF
          example: false
        includeAllRecipients:
          type: boolean
          description: Include CC and BCC recipients in header (if available)
          example: true
    JobStats:
      type: object
      properties:
        totalJobs:
          type: integer
          format: int32
        activeJobs:
          type: integer
          format: int32
        completedJobs:
          type: integer
          format: int32
        failedJobs:
          type: integer
          format: int32
        successfulJobs:
          type: integer
          format: int32
        fileResultJobs:
          type: integer
          format: int32
        oldestActiveJobTime:
          type: string
          format: date-time
        newestActiveJobTime:
          type: string
          format: date-time
        averageProcessingTimeMs:
          type: integer
          format: int64
