Skip to main content
Skip table of contents

26.0.0 API Changelog

Breaking changes

Document

  • Added the submittedFiles property to documents. These serve as field-driven, immutable attachments.

    • In the sharing flow, the annotation signature fields now support a new subtype: annotation_submitted_file. When specified, it requires the recipient to submit a file attachment.

    • The share right uploadAttachment has been replaced by uploadFiles.

    • The endpoint POST /share/upload/attachment has been replaced by POST /share/upload/submittedFile and the attachments properties in several share endpoints were replaced by submittedFiles. When the recipient has the uploadFiles share right, it can be used for document-level (non-field-bound) file uploads.

  • In document properties file and pdfFile, the field _content_type was renamed to mimetype, and the fields description and fileType were removed.

Settings

  • The endpoint PUT /settings/property has been renamed to PUT /settings/properties and its schema has been updated.

Share

  • The endpoint PUT /share/{shareId}/recipient has been removed and its functionality was transferred to the bulk endpoint PUT /share.

Non-breaking changes

Documents

  • Added a new array field customFields to the document model. Custom fields allow enriching the document with external data that is not part of the standard metadata definition. During the sharing flow, the creator can place imported fields in the UI based on the custom fields attached to the document.

  • Added possibility to use new provider for signatures and sealing (datasure). You can now specify it in PUT /documents/seal/{version} endpoint.

Settings

  • Added Collabora as a newly supported WOPI client. If configured on our side, it can be enabled via a new settings property wopiClient (configurable per organization by the organization administrator). Supported values are microsoft and collabora.

  • Added a new settings property disabledLanguages (configurable per organization by the organization administrator). Specified languages will be filtered out in the frontend UI.

  • The settings response now explicitly returns a boolean property isLlmEnabled to indicate whether the AI is enabled.

Share

  • The signatureFields array now supports a new property readOnly. If set to true, the predefined text property cannot be rewritten, and the document will always be annotated with its predefined value.

Two step sign

Version 26.0.0 introduces a brand-new two-step signing flow to support ICA Qualified Electronic Signatures using hardware-backed private keys — i.e. a USB dongle (PC) or NFC smart card (mobile). Because the private key never leaves the hardware device, the backend cannot sign directly. Instead, the flow is split into two phases:

  1. Start — backend prepares the document (applies visual signatures, annotations, images) and returns either a digest (hash to be signed) or a prepared file, along with a session token.

  2. Finish — the client submits back the hardware-signed output (signed digest or signed file), and the backend embeds it into the document and finalises the signing.

All four endpoints below are new in 26.0.0 — they did not exist in 25.3.0.

User certificates

Property certificates was added to user object. Its used to manage personal qualified certificates that are used for two step signing.

  • POST /users/{id}/certificate - upload new certificate

  • DELETE /users/{id}/certificate/{certificate} - delete existing certificate

Start sign

POST /documents/sign/{version}/start/digest

Prepares a document for qualified signing via digest (hash) signing. The backend annotates the document with all visual elements and returns a SHA digest per file that must be signed by the client using the hardware key (NFC).

POST /documents/sign/{version}/start/file

Prepares a document for qualified signing via full-file signing. The backend returns the full prepared file (as a hash reference) which the client must sign in its entirety using the hardware key (USB).

Example :

POST /documents/sign/5/start/digest

JSON
{
  "certificateHash": "hxgjc03ktav4ma5ifjb9wcrnaobi6yfnltflyewp3ac7a6smom8339e5rhn0q8yd",
  "signatureProvider": "internalNfc",
  "id": "86d0b371-3db1-4d68-8b54-c7b9c452e2a2",
  "digestAlgorithm": "SHA-512",
  "signatures": [
    {
      "comment": "",
      "position": {
        "percentHeight": 0.1,
        "percentWidth": 0.1,
        "percentX": 0.5360005040322581,
        "percentY": 0.032483143054172076
      },
      "pages": [
        1
      ],
      "blob": "71kj5vos8q4uci8fdy394kkfaqnijlsx74l2jhpekjx8bmss67waq346j3ass440",
      "decorationType": "empty",
      "type": "signature",
      "timestamp": false
    }
  ]
}

Response:

CODE
{
    "files": [
        {
            "digest": "1618417FA75B3F29D3899D4727D81DB6EFE805EAC5795E1FE98AB3DB8A94BCD3F15172762CC8375B40B56B967A8A47464E3425C46700EC6757A3B2C918844DFC",
            "preparedFile": "djkvosq9equzxjq34hdda0tl1tgemnseitrl1s3op2potjailbev4yv3vdzaqjz9"
        }
    ],
    "sessionId": "f38d20305ac6fcbb4eb256033380e79c24e83d85ff5b235a1a15e5ff74844f741d0b117c78d8f6ac0af741b483556f37431f380807aa6e2d99c0b37dba3ca7b2be9125ed833ae826906043d4753599d5d79d61542b334e2c1818f903841bd5132889bae188edb39b6ddd6f0d413ffbe80ccac6cf8e1d063ee1458d7085df98d6e37c3160aff12ca12fb677b40fa17a7f4edb289cfba129e21e5a279a60189e4ffe97872787e2121a31cf9ed348378bafca4541f3a32ea50c7412611a79d10e4b544bfd135808b06fb6a124946cd1762f",
    "sessionExpiration": "2026-03-23T12:42:25.886Z"
}

Finish sign

PUT /documents/sign/finish/digest

Finalises the digest signing session. The client submits the hardware-signed digests back to the backend, which then embeds them into the prepared document and marks it as signed.

PUT /documents/sign/finish/file

Finalises the full-file signing session. The client submits the hardware-signed file(s) back to the backend.

Example:

PUT /documents/sign/finish/digest

JSON
{
  "sessionId": "f38d20305ac6fcbb4eb256033380e79c24e83d85ff5b235a1a15e5ff74844f741d0b117c78d8f6ac0af741b483556f37431f380807aa6e2d99c0b37dba3ca7b2be9125ed833ae826906043d4753599d5d79d61542b334e2c1818f903841bd5132889bae188edb39b6ddd6f0d413ffbe80ccac6cf8e1d063ee1458d7085df98d6e37c3160aff12ca12fb677b40fa17a7f4edb289cfba129e21e5a279a60189e4ffe97872787e2121a31cf9ed348378bafca4541f3a32ea50c7412611a79d10e4b544bfd135808b06fb6a124946cd1762f",
  "signedDigests": [
    {
      "originalDigest": "1618417FA75B3F29D3899D4727D81DB6EFE805EAC5795E1FE98AB3DB8A94BCD3F15172762CC8375B40B56B967A8A47464E3425C46700EC6757A3B2C918844DFC",
      "signedDigest": "992BE0BC7C21B4A2C32A8C961E1ED147850F81113B4781B6C8725264AEC18B042110880CE8E1DBDDADA6414F043568D816C5CFF9C4081E5CF4042ED68B089AF2BBA79CC44B8BF4C1073AD185DB7E96451BF77AF16DE09ED9C8FBA0E21934FF2534302B131FD87E1C32C0F3DAB0D2819808B54A779EF11703DD05BA7AC882090392F6349ABDD649FC1113A8F7684A33746DCDDF6BD51FFE4A3D0E63962AF417A5C4E92D440EBAFA0FCDC84A52ABC47B163F5B3CB608FAC3E951A110B9191EE3E649FC17ECC4ED5B6E1F26FD493E4E77BAA1235EEDDEB4399E17129BF04C240D1427E766CC001D13A9A9B8161E7407C98151E034A29161A50CF4F1F76554AF1362"
    }
  ]
}

Two step signature provider values

  • internalUsb - ICA qualified sign via USB hardware dongle (PC)

  • internalNfc - ICA qualified sign via NFC smart card (mobile)

These providers are only valid for the two-step endpoints. The existing POST /documents/sign/{version} endpoint still uses the original providers.

Complete Two-Step Sign Flow

CODE
Client (HW key: USB/NFC)                       Backend
        │                                          │
        │  POST /documents/sign/{v}/start/digest   │
        │  { id, signatureProvider: "internalUsb"  │
        │    signatures, digestAlgorithm }         │
        │ ──────────────────────────────────────────> │
        │                                          │ Annotate doc
        │                                          │ Prepare PDF
        │                                          │ Compute digest
        │  { sessionId, sessionExpiration,         │
        │    files: [{ digest, preparedFile }] }   │
        │ <────────────────────────────────────────   │
        │                                          │
        │  [Client signs `digest` with HW key]     │
        │                                          │
        │  PUT /documents/sign/finish/digest       │
        │  { sessionId,                            │
        │    signedDigests: [{                     │
        │      originalDigest, signedDigest }] }   │
        │ ────────────────────────────────────────>   │
        │                                          │ Embed signature
        │                                          │ Mark as signed
        │  { status: "ok" }                        │
        │ <────────────────────────────────────────   │

The /start/file + /finish/file flow is identical, replacing the digest pair with full file hashes.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.