Adobe Protect PDF API

Add password protection and encryption to PDF documents.

OpenAPI Specification

adobe-protect-pdf-api-openapi.yml Raw ↑
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.