{
  "openapi": "3.0.1",
  "info": {
    "title": "PDF/UA Auto-Tagger with veraPDF Check",
    "description": "Adds accessibility tags (headings, paragraphs, lists, tables, figures, links), language and title to untagged born-digital PDFs, then checks the input and output with veraPDF's PDF/UA-1 profile. Returns the tagged PDF and a before/after report.",
    "version": "0.1",
    "x-build-id": "2hI7kdBewdN9VckXa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/madrasco~pdf-ua-auto-tagger/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-madrasco-pdf-ua-auto-tagger",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/madrasco~pdf-ua-auto-tagger/runs": {
      "post": {
        "operationId": "runs-sync-madrasco-pdf-ua-auto-tagger",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/madrasco~pdf-ua-auto-tagger/run-sync": {
      "post": {
        "operationId": "run-sync-madrasco-pdf-ua-auto-tagger",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "pdfs"
        ],
        "properties": {
          "pdfs": {
            "title": "PDF links",
            "minItems": 1,
            "maxItems": 10,
            "type": "array",
            "description": "Direct links to untagged, born-digital PDFs (exported from a word processor, HTML-to-PDF tool, LaTeX, groff and similar). The links must be reachable from the internet, for example a signed link from your storage. Scanned PDFs need OCR first; already-tagged PDFs get only their document-level metadata finished (see 'Already-tagged PDFs'). Up to 10 files per run; very long PDFs may need a longer run timeout (about 0.7 s per page measured: 9 RFCs, 714 pages, 488 s).",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Document language",
            "type": "string",
            "description": "BCP 47 language tag written into every output PDF, for example en, en-AU, de, fr-CA. For already-tagged PDFs it is used only if the file declares no language; a language the file already declares is kept.",
            "default": "en"
          },
          "title": {
            "title": "Document title",
            "type": "string",
            "description": "Title shown in the viewer's title bar. Leave empty to keep the PDF's own title, or use the file name if it has none. Applies to every file in the run."
          },
          "alreadyTagged": {
            "title": "Already-tagged PDFs",
            "enum": [
              "finish",
              "leave"
            ],
            "type": "string",
            "description": "What to do with PDFs that already have a tag structure. 'Finish' never touches the existing tags or page content: it only adds the PDF/UA-1 identifier to the XMP metadata, copies the file's own title into the XMP title (or uses 'Document title' if you give one), sets the document language if the file declares none (from 'Document language'), and turns on DisplayDocTitle and MarkInfo Marked where missing. A file with no title of its own gets no invented title; the report asks for one. Finished files are not charged. The existing tags are not checked or repaired.",
            "default": "finish"
          },
          "altTexts": {
            "title": "Image alt texts",
            "type": "array",
            "description": "Alt text for images and embedded vector graphics that contain text (charts, diagrams), in the order they appear in the document (first page first). Figures without one are tagged as figures with no alt text and reported, and the PDF/UA-1 check will fail on them. Best used with one file per run.",
            "items": {
              "type": "string"
            }
          },
          "artifactPatterns": {
            "title": "Page furniture patterns",
            "type": "array",
            "description": "Regular expressions for text lines that are page furniture (running headers, page numbers) and should not be read aloud. Default: 'Page 3', 'Page 3 of 10' and '- 3 -'.",
            "items": {
              "type": "string"
            }
          },
          "validate": {
            "title": "Run veraPDF check",
            "type": "boolean",
            "description": "Validate each input and output PDF with veraPDF's PDF/UA-1 profile and report the result.",
            "default": true
          },
          "maxFileSizeMb": {
            "title": "Maximum file size (MB)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Larger files are reported as a download failure.",
            "default": 100
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}