arazzo: 1.0.1 info: title: Adobe Export PDF To Another Format summary: Upload a PDF, export it to DOCX/PPTX/XLSX/RTF/image, poll the job, and fetch the result. description: >- Drives the Adobe PDF Services asynchronous export pipeline that converts a PDF into another format such as DOCX, PPTX, XLSX, RTF, JPEG, or PNG. The workflow registers the source PDF by requesting a pre-signed upload URI and asset ID, submits an exportPDF job targeting the desired format, polls the job until it reports done, and resolves a download URI for the converted output. Each step spells out its request inline. The polling job identifier is supplied as a workflow input because the submit response exposes only an opaque Location header. version: 1.0.0 sourceDescriptions: - name: pdfServicesApi url: ../openapi/adobe-pdf-services-api-openapi.yml type: openapi workflows: - workflowId: export-pdf summary: Convert an uploaded PDF into a target document or image format. description: >- Requests an upload slot for the source PDF, submits an exportPDF job to the chosen target format, polls job status until conversion finishes, and retrieves the download URI for the exported file. inputs: type: object required: - accessToken - targetFormat - jobID properties: accessToken: type: string description: OAuth 2.0 bearer access token from Adobe IMS. targetFormat: type: string description: Desired output format (docx, doc, pptx, xlsx, rtf, jpeg, or png). ocrLanguage: type: string description: Language for OCR processing during export (e.g. en-US). default: en-US jobID: type: string description: The job identifier taken from the exportPDF response Location header, used to poll status. steps: - stepId: requestUpload description: >- Request a pre-signed upload URI and asset ID for the source PDF, which is then PUT to the returned uploadUri out of band. operationId: uploadAsset parameters: - name: Authorization in: header value: "Bearer $inputs.accessToken" requestBody: contentType: application/json payload: mediaType: application/pdf successCriteria: - condition: $statusCode == 200 outputs: assetID: $response.body#/assetID uploadUri: $response.body#/uploadUri - stepId: submitExport description: >- Submit an asynchronous exportPDF job that converts the uploaded PDF into the requested target format. Returns 201 with an in-progress job status. operationId: exportPDF parameters: - name: Authorization in: header value: "Bearer $inputs.accessToken" requestBody: contentType: application/json payload: assetID: $steps.requestUpload.outputs.assetID targetFormat: $inputs.targetFormat ocrLanguage: $inputs.ocrLanguage successCriteria: - condition: $statusCode == 201 outputs: status: $response.body#/status - stepId: pollStatus description: >- Poll the exportPDF job until it is no longer in progress, looping back while the status remains "in progress". operationId: getJobStatus parameters: - name: Authorization in: header value: "Bearer $inputs.accessToken" - name: operationType in: path value: exportpdf - name: jobID in: path value: $inputs.jobID successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status outputAssetID: $response.body#/asset/assetID onSuccess: - name: stillRunning type: goto stepId: pollStatus criteria: - context: $response.body condition: $.status == "in progress" type: jsonpath - name: finished type: goto stepId: getOutput criteria: - context: $response.body condition: $.status == "done" type: jsonpath - stepId: getOutput description: >- Resolve a pre-signed download URI for the exported output asset. operationId: getAsset parameters: - name: Authorization in: header value: "Bearer $inputs.accessToken" - name: assetID in: path value: $steps.pollStatus.outputs.outputAssetID successCriteria: - condition: $statusCode == 200 outputs: downloadUri: $response.body#/downloadUri outputs: sourceAssetID: $steps.requestUpload.outputs.assetID outputAssetID: $steps.pollStatus.outputs.outputAssetID downloadUri: $steps.getOutput.outputs.downloadUri