openapi: 3.0.3 info: title: AEM Forms as a Cloud Service - DocAssurance Synchronous APIs description: | You can write to `mailto:aem-forms-ea@adobe.com` from your official email id to join the early adopter program and request access to the capability. # Introduction The DocAssurance service provides the ability to perform various digital signature or encryption operations with PDF documents, such as signing, certification, addition of signature fields, encryption, decryption etc. You can find out more information about DocAssurance at [Overview of AEM DocAssurance Services](https://experienceleague.adobe.com/docs/experience-manager-65/forms/use-document-services/overview-aem-document-services.html?lang=en#doc-assurance-service). Several APIs perform intricate operations on PDF documents and may employ specific terminology to accurately convey their intent. To understand these better, refer to the [PDF Specification](https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf). # Before you start Create a user account for your developer or technical account member in the forms-user group. If you do not have a technical account, make a call to AEM as a Cloud Service. When you use a service credential, a technical account is created on the first call. version: 0.0.1 externalDocs: description: Overview of AEM Document Services url: https://experienceleague.adobe.com/docs/experience-manager-65/forms/use-document-services/overview-aem-document-services.html?lang=en# servers: - url: /adobe/forms/document security: - BearerAuth: [] tags: - name: DocAssurance description: | Digital signature and encryption-related operations with PDF documents. paths: /assure/encrypt: put: tags: - DocAssurance summary: | Remove the Password based encryption from the supplied PDF document. requestBody: $ref: '#/components/requestBodies/DecryptRequest' responses: "200": description: | Operation successful. The decrypted PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' post: tags: - DocAssurance summary: | Encrypt the supplied PDF document using Password based encryption. requestBody: $ref: '#/components/requestBodies/EncryptRequest' responses: "200": description: | Operation successful. The encrypted PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' /assure/inspect: post: tags: - DocAssurance summary: | Fetch the type of security used in the supplied PDF document. requestBody: $ref: '#/components/requestBodies/SecurityRequest' responses: "200": description: | Operation successful. The security type used in the supplied PDF document is included in the response. content: application/json: schema: $ref: '#/components/schemas/SecurityInfo' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' /assure/sign: post: tags: - DocAssurance summary: | Sign the specified signature field in the supplied PDF document. requestBody: $ref: '#/components/requestBodies/SignRequest' responses: "200": description: | Operation successful. The signed PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' /assure/certify: post: tags: - DocAssurance summary: | Certify the supplied PDF document. requestBody: $ref: '#/components/requestBodies/CertifyRequest' responses: "200": description: | Operation successful. The certified PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' /assure/signfield: post: tags: - DocAssurance summary: | Add a signature field to the supplied PDF document. requestBody: $ref: '#/components/requestBodies/AddSignFieldRequest' responses: "200": description: | Operation successful. The signature field has been added and the updated PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' "202": description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' "400": description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' "500": description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' components: schemas: DecryptRequest: required: - config - document type: object properties: document: description: | A PDF document to be decrypted. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' config: type: string description: | Document open or permission password for removing encryption from the document format: password example: document: /content/dam/formsanddocuments/sample/sample.pdf config: openPassword InlineDocument: type: string description: | An inline document format: binary Error: type: object properties: type: type: string description: | A URI reference that identifies the problem type and points to human-readable documentation. title: type: string description: | A short, human-readable summary of the problem type. status: maximum: 599 minimum: 100 type: integer description: | The HTTP status code generated by the origin server. detail: type: string description: | A human-readable explanation of this occurrence. instance: type: string description: | A URI reference that identifies the specific occurrence of the problem. description: | RFC 7807 compliant problem details. EncryptRequest: required: - config - document type: object properties: document: description: | A PDF document to be encrypted. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' config: $ref: '#/components/schemas/EncryptConfig' options: $ref: '#/components/schemas/EncryptOptions' example: document: (... sample.pdf file contents ...) config: mode: ENCRYPT_WITH_PASSWORD params: openPassword: openPassword permPassword: permissionPassword permissions: - PRINT_HIGH - PRINT_LOW options: parts: ALL compatibility: ACROBAT_10 EncryptConfig: type: object properties: mode: $ref: '#/components/schemas/EncryptionMode' params: $ref: '#/components/schemas/PasswordEncrypt' description: | Specifies how to encrypt the document. example: mode: ENCRYPT_WITH_PASSWORD params: openPassword: openPassword permPassword: permissionPassword permissions: - PRINT_HIGH - PRINT_LOW PasswordEncrypt: type: object properties: openPassword: type: string description: "Specifies the password required to open the PDF document.\ \ \nThis should be different from `permPassword`.\n" format: password permPassword: type: string description: "Specifies the password required to modify or remove permissions\ \ from the PDF document. \nThis should be different from `openPassword`.\n" format: password permissions: type: array description: | Specifies the permissions granted to a user on opening an encrypted PDF document. items: $ref: '#/components/schemas/EncryptPermissions' description: | Specifies the password(s) and permission(s) to be used by password-based encryption. example: openPassword: openPassword permPassword: permissionPassword permissions: - PRINT_HIGH - PRINT_LOW EncryptOptions: type: object properties: parts: $ref: '#/components/schemas/PdfParts' compatibility: $ref: '#/components/schemas/AcrobatVersion' description: | Specifies miscellaneous encryption options. example: parts: ALL_EXCEPT_METADATA compatibility: ACROBAT_10 SecurityRequest: required: - document type: object properties: document: description: | A PDF document whose security type should be retrieved. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' example: document: (... acroform_sample.pdf file contents ...) SecurityInfo: type: object properties: mode: $ref: '#/components/schemas/SecurityMode' description: | Information about the security used in the PDF document. example: mode: NONE SignRequest: required: - credential - document - field type: object properties: document: description: | A PDF document to be signed. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' credential: $ref: '#/components/schemas/CredentialInfo' field: type: string description: "The name of the signature field to be signed. \n\nThe fully\ \ qualified name of the signature field should be specified. When using\ \ a PDF document that is based on an XFA form, then the partial name of\ \ the signature field can be used.\nFor example, `form1[0].#subform[1].SignatureField3[3]`\ \ can be specified as `SignatureField3[3]`.\n" options: $ref: '#/components/schemas/SignOptions' example: document: (... acroform_sample.pdf file contents ...) credential: alias: test_alias field: SignatureField1 options: reason: This document is signed pursuant to agreement on the contract between parties X and Y. location: "San Jose, California 95110" contact: test@adobe.com digestMethod: SHA256 revocation: order: OCSP_FIRST enforceEmbedding: false embed: true maxSize: 10 appearance: type: NAME signingFormat: CADES logo: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 graphic: pdf: (... Base64-encoded graphic.pdf file contents ...) display: name: true location: true dn: true reason: true date: true labels: true defaultLogo: false textDirection: AUTO unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword CertifyRequest: required: - credential - document - field type: object properties: document: description: | A PDF document to be certified. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' credential: $ref: '#/components/schemas/CredentialInfo' field: type: string description: | The name of the certifying signature field. The fully qualified name of the signature field should be specified. When using a PDF document that is based on an XFA form, then the partial name of the signature field can also be used. For example, `form1[0].#subform[1].SignatureField3[3]` can be specified as `SignatureField3[3]`. options: $ref: '#/components/schemas/CertifyOptions' example: document: /content/dam/formsanddocuments/sample/xfaform_sample.pdf credential: alias: testalias field: "data[0].form_name[0].Manager[0].team[0].signfield[0]" options: reason: This document is signed pursuant to agreement on the contract between parties X and Y. location: "San Jose, CA 95110-2704" contact: 408-536-6000 digestMethod: SHA256 revocation: order: CRL_FIRST enforceEmbedding: true embed: true maxSize: 10 appearance: type: NAME signingFormat: PKCS7_DETACHED logo: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 graphic: pdf: (... Base64-encoded graphic.pdf file contents ...) display: name: true location: true dn: true reason: true date: true labels: true defaultLogo: true textDirection: AUTO unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword legalAttestation: The undersigned witnesses testify that party X has submitted 16 annotations and party Y has submitted 11 media actions (7 movie actions + 4 sound actions) to the PDF document as supporting evidence respectively. lockField: true permissions: NO_CHANGES CertifyOptions: description: | Specific configuration to control certification behavior. allOf: - $ref: '#/components/schemas/SignOptions' - type: object properties: legalAttestation: type: string description: | An attestation explaining the presence of any entries in the legal attestation dictionary or content affecting the legal integrity of the document. lockField: type: boolean description: | Specifies whether the field should be locked after certification. default: false permissions: $ref: '#/components/schemas/MdpPermissions' example: reason: This document is signed pursuant to agreement on the contract between parties X and Y. location: "San Jose, CA 95110-2704" contact: test@adobe.com digestMethod: SHA256 revocation: order: OCSP_FIRST enforceEmbedding: false embed: true maxSize: 10 appearance: type: NAME signingFormat: PKCS7_DETACHED logo: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 graphic: pdf: (... Base64-encoded graphic.pdf file contents ...) display: name: true location: true dn: true reason: true date: true labels: true defaultLogo: true textDirection: AUTO unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword legalAttestation: The undersigned witnesses testify that party X has submitted 16 annotations and party Y has submitted 11 media actions (7 movie actions + 4 sound actions) to the PDF document as supporting evidence respectively. lockField: true permissions: NO_CHANGES AddSignFieldRequest: required: - document - field type: object properties: document: description: | A PDF document to which this signature field should be added. Use content-type as "text/plain" to specify a URL or a repository path. oneOf: - $ref: '#/components/schemas/HttpUrl' - $ref: '#/components/schemas/InlineDocument' - $ref: '#/components/schemas/RepoDocument' field: type: string description: | The name of the signature field to be added to the supplied PDF document. rectangle: $ref: '#/components/schemas/Rectangle' page: minimum: 1 type: integer description: | The page number of the supplied PDF document to which the visible signature field should be added. default: 1 options: $ref: '#/components/schemas/SignFieldOptions' example: document: crx:///content/dam/formsanddocuments/sample/sample.pdf field: "data[0].form_name[0].Manager[0].team[0].signfield[0]" rectangle: lowerLeftX: 0 lowerLeftY: 0 width: 0 height: 0 page: 1 options: seedValue: certSeedValue: flags: 0 issuerCerts: - (... Base64-encoded certificate1.cer file contents ...) - (... Base64-encoded certificate2.cer file contents ...) subjectCerts: - (... Base64-encoded certificate3.cer file contents ...) - (... Base64-encoded certificate4.cer file contents ...) objectIds: - 1.2.840.113549.1.9.16.2.14 keyUsageExtns: - digitalSignature - cRLSign subjects: - cn: test email: test@test.com filter: Adobe.PPKLite flags: 0 legalAttestations: - The undersigned witnesses testify that party X has submitted 16 annotations and party Y has submitted 11 media actions (7 movie actions + 4 sound actions) to the PDF document as supporting evidence respectively. permissions: NO_CHANGES reasons: - This document is signed pursuant to agreement on the contract between parties X and Y. subFilter: - adbe.pkcs7.detached timestamp: required: true url: https://timestamp.server.url digestMethod: SHA256 revocationCheck: true fieldMdp: filter: INCLUDE fields: - "data[0].form_name[0].Manager[0].team[0].signfield[0]" - "data[0].form_name[0].Manager[0].team[0].signfield[1]" unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword Rectangle: type: object properties: lowerLeftX: minimum: 0 type: integer description: | Defines the lower left x co-ordinate of the signature field. default: 0 lowerLeftY: minimum: 0 type: integer description: | Defines the lower left y co-ordinate of the signature field. default: 0 width: minimum: 0 type: integer description: | Defines the width of signature field. default: 0 height: minimum: 0 type: integer description: | Defines the height of signature field. default: 0 description: "Defines the co-ordinates of the signature field. \nThe default\ \ position indicates an invisible signature field.\n" example: lowerLeftX: 0 lowerLeftY: 0 width: 25 height: 30 SignFieldOptions: type: object properties: seedValue: $ref: '#/components/schemas/SeedValueOptions' fieldMdp: $ref: '#/components/schemas/MdpOptions' unlock: $ref: '#/components/schemas/UnlockOptions' description: | Options to control the behavior of the signature field modification operation. example: seedValue: certSeedValue: flags: 0 issuerCerts: - (... Base64-encoded certificate1.cer file contents ...) - (... Base64-encoded certificate2.cer file contents ...) subjectCerts: - (... Base64-encoded certificate3.cer file contents ...) - (... Base64-encoded certificate4.cer file contents ...) objectIds: - 1.2.840.113549.1.9.16.2.14 keyUsageExtns: - digitalSignature - cRLSign subjects: - cn: test email: test@test.com filter: Adobe.PPKLite flags: 0 legalAttestations: - The undersigned witnesses testify that party X has submitted 16 annotations and party Y has submitted 11 media actions (7 movie actions + 4 sound actions) to the PDF document as supporting evidence respectively. permissions: NO_CHANGES reasons: - This document is signed pursuant to agreement on the contract between parties X and Y. subFilter: - adbe.pkcs7.detached timestamp: required: true url: https://timestamp.server.url digestMethod: SHA256 revocationCheck: true fieldMdp: filter: EXCLUDE fields: - "data[0].form_name[0].Manager[0].team[0].signfield[0]" - "signfield[1]" unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword HttpUrl: pattern: "^(http:\\/\\/|https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*(\\.[a-z]{2,5})?(:[0-9]{1,5})?(\\\ /.*)?$" type: string description: | An HTTP/s URL. RepoDocument: oneOf: - $ref: '#/components/schemas/RepoPath' - $ref: '#/components/schemas/RepoUrl' RepoPath: pattern: "^(\\/content)(\\/[^/]+)+$" type: string description: | A repository path under /content. RepoUrl: pattern: "^(crx:\\/\\/)(\\/[^/]+)+$" type: string description: | A repository URL (e.g. crx:///path/to/object). EncryptionMode: type: string description: | Specifies the encryption mode to use for encrypting PDF document. example: ENCRYPT_WITH_PASSWORD enum: - ENCRYPT_WITH_PASSWORD EncryptPermissions: type: string description: "Defines the permissions that can be granted. \n\n`ALL_PERM` Specifies\ \ all permissions. \n`EDIT_ADD` Specifies the permission that enables users\ \ to add form data. \n`EDIT_ASSEMBLE` Specifies the permission that enables\ \ users to assemble PDF documents. \n`EDIT_COPY` Specifies the permission\ \ that enables users to copy form data. \n`EDIT_EXTRACT` Specifies the permission\ \ that enables users to extract data from forms. \n`EDIT_FORM_FILL` Specifies\ \ the permission that enables users to fill in forms. \n`EDIT_MODIFY` Specifies\ \ the permission that enables the users to edit the PDF document. \n`PRINT_HIGH`\ \ Allows high-resolution printing of documents. \n`PRINT_LOW` Allows low-resolution\ \ printing of documents. \n`PRINT_NONE` Does not allow printing of documents.\n" example: ALL_PERM enum: - ALL_PERM - EDIT_ADD - EDIT_COPY - EDIT_ASSEMBLE - EDIT_EXTRACT - EDIT_FORM_FILL - EDIT_MODIFY - PRINT_HIGH - PRINT_LOW - PRINT_NONE PdfParts: type: string description: "Specifies which parts (or resources) of the PDF document should\ \ be encrypted. \n\nYou can encrypt the entire PDF document (`ALL`) or everything\ \ except metadata (`ALL_EXCEPT_METADATA`) or only the attachments (`ATTACHMENTS_ONLY`).\n" example: ALL enum: - ALL - ALL_EXCEPT_METADATA - ATTACHMENTS_ONLY default: ALL AcrobatVersion: type: string description: | Specifies the earliest version of Acrobat with which the encryption is compatible. example: ACROBAT_10 enum: - ACROBAT_6 - ACROBAT_7 - ACROBAT_10 default: ACROBAT_7 SecurityMode: type: string description: "Specifies the security mode used in the PDF document. \n\nThe\ \ following are valid encryption type values: \n\n`PASSWORD` The PDF document\ \ is secured with a password. \n`POLICY_SERVER` The PDF document is secured\ \ with a Rights Management policy. \n`CERTIFICATE` The PDF document is secured\ \ with certificate-based encryption. \n`OTHER` The PDF document is secured\ \ with another type of encryption. \n`NONE` The PDF document is not secured.\n" example: NONE enum: - PASSWORD - POLICY_SERVER - CERTIFICATE - OTHER - NONE CredentialInfo: type: object properties: alias: type: string description: | The alias of a credential defined in AEM's HSM credential configuration. description: | Provides information about a credential. example: alias: testalias SignOptions: description: | Specifies configuration for signing and certification. example: reason: This document is signed pursuant to agreement on the contract between parties X and Y. location: "San Jose, California 95110" contact: test@adobe.com digestMethod: SHA256 revocation: order: OCSP_FIRST enforceEmbedding: false embed: true maxSize: 10 appearance: type: NAME signingFormat: PKCS7_DETACHED logo: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 graphic: pdf: (... Base64-encoded graphic.pdf file contents ...) display: name: true location: true dn: true reason: true date: true labels: true defaultLogo: true textDirection: AUTO unlock: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword allOf: - $ref: '#/components/schemas/SignCommon' - type: object properties: digestMethod: $ref: '#/components/schemas/DigestMethod' revocation: $ref: '#/components/schemas/RevocationConfig' appearance: $ref: '#/components/schemas/SignAppearance' unlock: $ref: '#/components/schemas/UnlockOptions' SignCommon: type: object properties: reason: type: string description: | The reason for signing the PDF document. location: type: string description: | The geographical location of the signing. contact: type: string description: | The contact information associated with the signature. example: reason: This document is signed pursuant to agreement on the contract between parties X and Y. location: "San Jose, California 95110" contact: test@adobe.com DigestMethod: type: string description: | Hashing algorithm for sign/certify. enum: - SHA256 - SHA384 - SHA512 default: SHA256 RevocationConfig: type: object properties: order: type: string enum: - OCSP_FIRST - CRL_FIRST default: OCSP_FIRST enforceEmbedding: type: boolean description: "Specifies whether a signing or certification operation will\ \ fail if valid revocation information is not embedded for all certificates.\ \ \n\nIf a certificate does not contain any CRL or OCSP information,\ \ it is considered valid even though no revocation information can be\ \ retrieved from it.\n" default: false embed: type: boolean description: | Specifies whether revocation information, if available, will be embedded with the signature. default: true maxSize: maximum: 10240 exclusiveMaximum: false minimum: 0 type: integer description: | Specifies the maximum size (in kilobytes) of the revocation information that can be embedded in a signature. default: 100 description: | Specifies revocation configuration for sign and certify operations. example: order: OCSP_FIRST enforceEmbedding: false embed: true maxSize: 10 SignAppearance: type: object properties: type: type: string description: | Specifies the visual appearance of a signature. enum: - NOGRAPHIC - GRAPHIC - NAME default: NAME signingFormat: type: string description: | Specifies the signing format for the digital signature. enum: - PKCS7_DETACHED - CADES default: PKCS7_DETACHED logo: $ref: '#/components/schemas/SignLogo' graphic: $ref: '#/components/schemas/SignGraphic' display: $ref: '#/components/schemas/SignDisplayOptions' textDirection: type: string description: | Specifies the direction of the signature's text. enum: - AUTO - LTR - RTL default: AUTO description: | Defines the appearance of a signature. example: type: NAME signingFormat: PKCS7_DETACHED logo: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 graphic: pdf: (... Base64-encoded graphic.pdf file contents ...) display: name: true location: true dn: true reason: true date: true labels: true defaultLogo: true textDirection: AUTO SignLogo: type: object properties: pdf: type: string description: | The signature's logo as a Base64-encoded PDF document. format: byte opacity: maximum: 1 exclusiveMaximum: false minimum: 0 type: number description: | Specifies the opacity of the signature's logo. format: double default: 0.5 description: | Specifies the look and feel of a signature's logo. example: pdf: (... Base64-encoded logo.pdf file contents ...) opacity: 0.5 SignGraphic: type: object properties: pdf: type: string description: | A graphical representation of the signature as a Base64-encoded PDF document. This is required if type is `GRAPHIC`, and is ignored otherwise. format: byte description: | Specifies the graphical representation of the signature. example: pdf: (... Base64-encoded graphic.pdf file contents ...) SignDisplayOptions: type: object properties: name: type: boolean description: | Specifies whether to show the name associated with the certificate. default: true location: type: boolean description: | Specifies whether to show the signing location. default: true dn: type: boolean description: | Specifies whether to show the subject and issuer distinguished names (DNs) contained within the certificate. default: true reason: type: boolean description: | Specifies whether to show the reason given for signing. default: true date: type: boolean description: | Specifies whether to show the signing date. default: true labels: type: boolean description: | Specifies whether to show the signature's label(s). default: true defaultLogo: type: boolean description: | Specifies whether to show the signature's default logo. default: true description: | Specifies the information to be displayed for a signature. example: name: true location: true dn: true reason: true date: false labels: false defaultLogo: true MdpPermissions: type: string description: | Specifies the DocMDP (Document Modification Detection and Prevention) permissions that define the operation(s) permitted after a document is certified. example: NO_CHANGES enum: - NO_CHANGES - FORM_CHANGES - ANNOTATION_FORM_CHANGES - NON_AUTHOR_SIGNATURE default: FORM_CHANGES SeedValueOptions: type: object properties: certSeedValue: $ref: '#/components/schemas/CertSeedValue' filter: type: string description: | Specifies a signature handler for the field. flags: type: integer description: | A set of bit flags specifying the interpretation of specific entries in this dictionary. format: int32 default: 0 legalAttestations: type: array description: | Specifies a list of legal attestations associated with this field. items: type: string permissions: $ref: '#/components/schemas/MdpPermissions' reasons: type: array description: | Specifies a list of possible reasons for signing the document. items: type: string subFilter: type: array description: | Specifies a list of encodings to use when signing. items: type: string timestamp: $ref: '#/components/schemas/Timestamp' digestMethod: type: array description: | Specifies a list of digest algorithms acceptable for signing. items: $ref: '#/components/schemas/DigestMethod' revocationCheck: type: boolean description: | Specifies whether to enable revocation checking and embed it when signing the field. default: false description: | Specifies entries for a signature field's Seed Value (SV) dictionary, which contains constraining information that shall be used when this field is signed. example: certSeedValue: flags: 0 issuerCerts: - (... Base64-encoded certificate1.cer file contents ...) - (... Base64-encoded certificate2.cer file contents ...) subjectCerts: - (... Base64-encoded certificate3.cer file contents ...) - (... Base64-encoded certificate4.cer file contents ...) objectIds: - 1.2.840.113549.1.9.16.2.14 keyUsageExtns: - digitalSignature - cRLSign subjects: - cn: test email: test@test.com filter: Adobe.PPKLite flags: 0 legalAttestations: - The undersigned witnesses testify that party X has submitted 16 annotations and party Y has submitted 11 media actions (7 movie actions + 4 sound actions) to the PDF document as supporting evidence respectively. permissions: NO_CHANGES reasons: - This document is signed pursuant to agreement on the contract between parties X and Y. subFilter: - ETSI.CAdES.detached timestamp: required: true url: https://timestamp.server.url digestMethod: SHA256 revocationCheck: true CertSeedValue: type: object properties: flags: type: integer description: | A set of bit flags specifying the interpretation of specific entries in this dictionary. format: int32 default: 0 issuerCerts: type: array description: | Specifies a list of Base64-encoded X.509v3 certificates of acceptable issuers. The signer's certificate must refer to any of these issuers for it to be considered acceptable for signing. This list may contain self-signed certificates. items: $ref: '#/components/schemas/InlineB64Document' subjectCerts: type: array description: | Specifies a list of Base64-encoded X.509v3 certificates that are acceptable for signing. items: $ref: '#/components/schemas/InlineB64Document' objectIds: type: array description: | Specifies a list of Object Identifiers (OIDs) of certificate policies that must be present in the signing certificate. This list is considered only when issuers is non-empty. items: type: string keyUsageExtns: type: array description: | Specifies a list of key-usage extensions that must be present in the signing certificate. items: type: string subjects: type: array description: | Specifies a list of dictionaries, each representing a Subject Distinguished Name (DN) that must be present in the signing certificate. The certificate used for the signature must contain all the attributes specified in the dictionary. items: type: object additionalProperties: type: string description: | Specifies entries for a signature field's certificate seed value (SVCert) dictionary, which contains information about the certificate that shall be used when this field is signed. example: flags: 0 issuerCerts: - (... Base64-encoded certificate1.cer file contents ...) - (... Base64-encoded certificate2.cer file contents ...) subjectCerts: - (... Base64-encoded certificate3.cer file contents ...) - (... Base64-encoded certificate4.cer file contents ...) objectIds: - 1.2.840.113549.1.9.16.2.14 keyUsageExtns: - digitalSignature - cRLSign subjects: - cn: test email: test@test.com Timestamp: type: object properties: required: type: boolean description: | Specifies whether the signature field must be timestamped. default: false url: type: string description: | The timestamp server URL. description: | Specifies time-stamping options associated with the signature field. MdpOptions: type: object properties: filter: type: string description: "Specifies the condition basis which fields should be considered\ \ for MDP. \n`ALL` considers all form fields. \n`INCLUDE` considers\ \ all form fields in the supplied list. \n`EXCLUDE` considers all form\ \ fields except those in the supplied list.\n" enum: - ALL - INCLUDE - EXCLUDE fields: type: array description: "Specifies a list of fully-qualified names of other form fields\ \ to be considered for MDP. Any form field, not necessarily a signature\ \ field, may be considered. Invalid names or those referring to non-existent\ \ fields are ignored. \n\nThe list can be null only if the action is\ \ `ALL`. \nIf action is `INCLUDE` or `EXCLUDE` and either the list is\ \ null or \nevaluates to null after removing the invalid entries, fields\ \ are not locked.\n" items: type: string description: | Specifies the options set in a signature field's lock dictionary, which contains a list of other fields that are locked once this field is signed. Any changes to the locked fields thereafter invalidates the signature. example: filter: EXCLUDE fields: - "data[0].form_name[0].Manager[0].team[0].signfield[0]" - "data[0].form_name[0].Manager[0].team[0].signfield[1]" UnlockOptions: type: object properties: encryption: type: string enum: - PASSWORD_BASED_ENCRYPT unlockWith: type: string description: | The Document Open password to unlock a password-encrypted PDF document. description: | Specifies how to unlock an encrypted PDF document. example: encryption: PASSWORD_BASED_ENCRYPT unlockWith: openPassword InlineB64Document: type: string description: | An inline Base64-encoded document. format: byte responses: DecryptSuccess: description: | Operation successful. The decrypted PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' Accepted: description: | The request is accepted and the result can be checked at the location specified in the header. headers: Location: $ref: '#/components/headers/Location' BadRequest: description: | Bad request. The request was invalid or cannot be served. content: application/problem+json: schema: $ref: '#/components/schemas/Error' InternalError: description: | Internal server error. The server has encountered an error and is unable to process your request at this time. content: application/problem+json: schema: $ref: '#/components/schemas/Error' EncryptSuccess: description: | Operation successful. The encrypted PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' SecuritySuccess: description: | Operation successful. The security type used in the supplied PDF document is included in the response. content: application/json: schema: $ref: '#/components/schemas/SecurityInfo' SignSuccess: description: | Operation successful. The signed PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' CertifySuccess: description: | Operation successful. The certified PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' AddSignFieldSuccess: description: | Operation successful. The signature field has been added and the updated PDF document is included in the response. content: application/pdf: schema: $ref: '#/components/schemas/InlineDocument' requestBodies: DecryptRequest: description: | A multipart request representing a PDF document decryption operation. content: multipart/form-data: schema: $ref: '#/components/schemas/DecryptRequest' required: true EncryptRequest: description: | A multipart request representing a PDF document encryption operation. content: multipart/form-data: schema: $ref: '#/components/schemas/EncryptRequest' required: true SecurityRequest: description: | A multipart request representing a PDF security type retrieval operation. content: multipart/form-data: schema: $ref: '#/components/schemas/SecurityRequest' required: true SignRequest: description: | A multipart request representing a sign operation. content: multipart/form-data: schema: $ref: '#/components/schemas/SignRequest' required: true CertifyRequest: description: | A multipart request representing a certification operation. content: multipart/form-data: schema: $ref: '#/components/schemas/CertifyRequest' required: true AddSignFieldRequest: description: | A multipart request representing a signature field addition operation. content: multipart/form-data: schema: $ref: '#/components/schemas/AddSignFieldRequest' required: true headers: Location: description: | Location of the response. schema: type: string securitySchemes: BearerAuth: type: http description: | In token-based authentication, an access token (Bearer authentication token) is required to make requests to AEM as a Cloud Service. AEM Forms as a Cloud Service provides APIs to securely retrieve the access token. The end-to-end workflow for retrieving and using the token to authenticate a request is: - [Retrieve AEM as a Cloud Service credentials](https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials.html?lang=en) from the Developer Console. - [Install AEM as a Cloud Service credentials](https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials.html?lang=en#install-the-service-credentials) in your environment. Application Server, Web Server, or other non-AEM servers need to be configured to send requests to the cloud service. - [Generate a JWT token and exchange it](https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials.html?lang=en#create-a-jwt-and-exchange-for-an-access-token) with Adobe IMS APIs for an access token. - Invoke the AEM API with the access token as a Bearer Authentication token. - [Set appropriate permissions for the technical account user](https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials.html?lang=en#configure-access-in-aem) in the AEM environment. scheme: bearer bearerFormat: JWT