openapi: 3.1.0 info: title: Adobe PDF Services Accessibility Auto-Tag Protect PDF API description: The Adobe PDF Services API enables developers to create, convert, manipulate, and extract content from PDF documents programmatically. The API uses an asynchronous job-based model where you submit a job, poll for its status, and retrieve the result. Operations include creating PDFs from various formats, exporting PDFs to other formats, combining and splitting PDFs, compressing, OCR processing, protecting with passwords, extracting structured content, auto-tagging for accessibility, and generating documents from templates. Authentication uses OAuth 2.0 with client credentials (server-to-server). version: 4.0.0 contact: name: Adobe Developer Support url: https://developer.adobe.com/document-services/ email: pdfsvcops@adobe.com license: name: Adobe Terms of Service url: https://www.adobe.com/legal/terms.html termsOfService: https://www.adobe.com/legal/terms.html servers: - url: https://pdf-services-ue1.adobe.io description: Adobe PDF Services API - US East Production - url: https://pdf-services.adobe.io description: Adobe PDF Services API - Default Production security: - bearerAuth: [] tags: - name: Protect PDF description: Add password protection and encryption to PDF documents. paths: /operation/protectpdf: post: operationId: protectPDF summary: Adobe Protect a Pdf description: Add password protection and set permissions on a PDF document. Supports setting user passwords (to open), owner passwords (to edit/print), and encryption algorithms (AES-128 or AES-256). tags: - Protect PDF requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectPDFRequest' examples: ProtectpdfRequestExample: summary: Default protectPDF request x-microcks-default: true value: assetID: '500123' passwordProtection: userPassword: example_value ownerPassword: example_value encryptionAlgorithm: AES_128 permissions: printQuality: NONE editContent: true copyContent: true editAnnotations: true fillForms: true assembleDocument: true responses: '201': description: Job created successfully. headers: Location: description: URL to poll for job status. schema: type: string format: uri x-request-id: $ref: '#/components/headers/x-request-id' content: application/json: schema: $ref: '#/components/schemas/JobStatusResponse' examples: Protectpdf201Example: summary: Default protectPDF 201 response x-microcks-default: true value: status: in progress asset: assetID: '500123' downloadUri: https://www.example.com metadata: type: example_value size: 10 error: code: example_value message: example_value status: 10 '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: ErrorResponse: type: object description: Error response returned when a request fails. properties: error: type: object properties: code: type: string description: A machine-readable error code. examples: - INVALID_ASSET_ID - BAD_REQUEST - UNAUTHORIZED - RATE_LIMIT_EXCEEDED message: type: string description: A human-readable error message. status: type: integer description: The HTTP status code. examples: - 400 - 401 - 404 - 429 example: example_value ProtectPDFRequest: type: object required: - assetID - passwordProtection properties: assetID: type: string description: The asset ID of the PDF to protect. example: '500123' passwordProtection: type: object required: - userPassword properties: userPassword: type: string description: Password required to open the PDF. ownerPassword: type: string description: Password required to change permissions or remove protection. example: example_value encryptionAlgorithm: type: string description: The encryption algorithm to use. enum: - AES_128 - AES_256 default: AES_256 example: AES_128 permissions: type: object description: Permissions to set on the protected document. properties: printQuality: type: string description: Print permission level. enum: - NONE - LOW_QUALITY - HIGH_QUALITY default: NONE editContent: type: boolean description: Whether editing content is allowed. default: false copyContent: type: boolean description: Whether copying content is allowed. default: false editAnnotations: type: boolean description: Whether editing annotations is allowed. default: false fillForms: type: boolean description: Whether filling forms is allowed. default: false assembleDocument: type: boolean description: Whether assembling the document (inserting, rotating, deleting pages) is allowed. default: false example: example_value JobStatusResponse: type: object description: The status and result of an asynchronous PDF operation job. properties: status: type: string description: The current status of the job. enum: - in progress - done - failed example: in progress asset: type: object description: The output asset information, available when status is done. properties: assetID: type: string description: The asset ID of the output file. downloadUri: type: string format: uri description: The pre-signed download URI for the output file. metadata: type: object description: Metadata about the output asset. properties: type: type: string description: The MIME type of the output file. size: type: integer description: The size of the output file in bytes. example: example_value error: type: object description: Error information, available when status is failed. properties: code: type: string description: A machine-readable error code. message: type: string description: A human-readable error message. status: type: integer description: The HTTP status code associated with the error. example: example_value headers: x-request-id: description: A unique identifier for the request, useful for debugging and support. schema: type: string responses: BadRequest: description: The request was malformed or contained invalid parameters. Check the error message for details. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Authentication failed. The access token is missing, expired, or invalid. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' TooManyRequests: description: Rate limit exceeded. Wait before retrying. Check Retry-After header for guidance. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 access token obtained via client credentials grant from Adobe Identity Management Service (IMS). Generate credentials in the Adobe Developer Console and exchange them for an access token at https://ims-na1.adobelogin.com/ims/token/v3.