---
title: "Update a running signing process (ADMIN-only)."
method: PATCH
path: "/epost/signing/processes/{processId}"
tags: ["ePost Sign"]
---

# Update a running signing process (ADMIN-only).

`PATCH /epost/signing/processes/{processId}`

## Request

- Base URL: `https://api.klara.ch`
- URL: `https://api.klara.ch/epost/signing/processes/{processId}`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer

ADMIN-only update of a running signing process. Callable by the process creator or by <strong>any active participant that holds the <code>ADMIN</code> role</strong> (LUZ-158618). All fields on the body are optional; only the fields the caller wishes to change need to be sent. Fields set to <code>null</code> are treated as &quot;no change&quot;.<br/><br/><strong>Editable fields</strong>: <code>title</code>, <code>description</code>, <code>deadline</code> (must be strictly in the future), <code>documentHandling.allowPrint</code> / <code>documentHandling.allowSave</code>. Field-level diffing is applied and an audit trail entry (<code>PROCESS_UPDATED</code>) is written only when at least one value actually changed.<br/><br/><strong>Locked at creation</strong> (never patchable through this endpoint): <code>signatureType</code>, <code>mode</code>, <code>participants</code> (participants have their own PATCH endpoint), <code>forceOnboarding</code>, <code>billToCompanyTenantId</code>.<br/><br/><strong>Lifecycle</strong>: only <code>status = CANCELLED</code> is accepted &mdash; deactivates the process (SwissSign <code>signaturesCancelProcessing</code>), records a <code>PROCESS_CANCELLED</code> audit trail entry, schedules the process for deletion, delivers the partially-signed document to <code>RECEIVER</code> participants and notifies <code>SIGNER</code> / <code>ADMIN</code> participants. Any other status value is rejected with HTTP 400. Updates against a process in <code>COMPLETED</code>, <code>CANCELLED</code> or <code>EXPIRED</code> are rejected with HTTP 409. Callers that are not an <code>ADMIN</code> participant of this process receive HTTP 404 (the existence of the process is not disclosed). Access requires the ePost Sign widget subscription.

## Path parameters

- `processId` string, uuid, required

## Request body

- SigningProcessUpdate
  - `title` string: New title shown to participants in the signing room and in the process list. Omit to keep the current title.
  - `description` string: New free-form description. Omit to keep the current description; send an empty string to clear it.
  - `deadline` string, date: New absolute deadline (ISO 8601). Must be strictly in the future. Omit to keep the current deadline.
  - `documentHandling` object: New document-handling restrictions. Omit to keep the current values; when supplied, replaces the current values as a whole.
    - `allowPrint` boolean: Whether participants may print the document from the signing room. Defaults to <code>false</code>.
    - `allowSave` boolean: Whether participants may download / save the document from the signing room. Defaults to <code>false</code>.
  - `status` object: Only <code>CANCELLED</code> is accepted &mdash; deactivates the process (SwissSign <code>signaturesCancelProcessing</code>). Any other value results in HTTP 400.

## Response `200`

Updated signing process.

- SigningProcess
  - `processId` string, uuid: Unique identifier of the signing process.
  - `title` string: Title of the signing request.
  - `description` string, nullable: Optional description.
  - `submittedBy` object: Who the signing request came from.
    - `pid` string, nullable: Internal ePost id of the resolved tenant. <code>null</code> while the tenant cannot yet be resolved (e.g. forced onboarding pending).
    - `name` string, nullable: Name as used within the signing process / signature itself (verified name applied at signing). <code>null</code> while unresolved.
  - `signatureType` object: Chosen signature type. Locked at creation.
  - `mode` object: Signing order strategy. Locked at creation.
  - `deadline` string, date: Signing deadline (ISO 8601).
  - `documentHandling` object: Restrictions applied to the document during the process.
    - `allowPrint` boolean: Whether participants may print the document from the signing room. Defaults to <code>false</code>.
    - `allowSave` boolean: Whether participants may download / save the document from the signing room. Defaults to <code>false</code>.
  - `forceOnboarding` boolean: Whether forced onboarding was requested for unresolved email participants.
  - `status` object: Current lifecycle status.
  - `deliveryState` object: Delivery/orchestration state of the process side effects (independent of <code>status</code>). Non-terminal values are retryable via <code>POST /signing/processes/{processId}/retry-delivery</code>.
  - `signedCount` integer: Number of participants that have already signed.
  - `pendingCount` integer: Number of participants still outstanding (<code>PENDING</code> / <code>FORCED_ONBOARDING</code>).
  - `participants` object[]: Participants with their current signing status.
    - `internalTrackingId` string, uuid: Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant on <code>PATCH</code>.
    - `participantId` string, nullable: Internal ePost id of the resolved tenant. <code>null</code> while the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).
    - `name` string, nullable: Name as used within the signing process / signature itself. <code>null</code> while unresolved. Per CISO, no additional profile data from ePost is exposed here.
    - `roles` string[]: Role(s) held by this participant within the process.
    - `status` object: Current signing status of this participant.
    - `deliveryStatus` object, nullable: Delivery progress of the initial document to this participant, independent of the signing <code>status</code> above.
    - `hashedPrimaryValue` string, nullable: Correlates the returned participant with the hash the caller submitted.
    - `signedByUserEmail` string, nullable: Email of the ePost account in whose name the signature was made (account owner). <code>null</code> before signing.
    - `effectiveSignerUserEmail` string, nullable: Email of the user who actually signed (e.g. a shared-account user). <code>null</code> before signing.
    - `sequenceIndex` integer, nullable: 1-based order (<code>SEQUENTIAL</code> mode). <code>null</code> in <code>PARALLEL</code> mode.
    - `rejectedReason` string, nullable: Reason provided when the participant refused to sign. <code>null</code> otherwise.
    - `signedAt` string, date-time, nullable: Timestamp at which the participant signed (ISO 8601). <code>null</code> before signing.
    - `occupied` boolean: Whether the signing room is currently held (locked) by this participant.
  - `document` object: Metadata of the submitted document (never the payload).
    - `fileName` string: Original file name of the uploaded document.
    - `contentType` string: MIME type of the document.
    - `sizeBytes` integer: Size of the document in bytes.
    - `currentVersion` integer: Current document version. Increments with each collected signature.
  - `createdAt` string, date-time: Creation timestamp (ISO 8601).
  - `completedAt` string, date-time, nullable: Timestamp at which every required signature was collected. <code>null</code> while incomplete.
  - `deleteAt` string, date-time, nullable: When the process/document will be finally deleted. Retention per CISO: open + signed documents 90 days; cancelled/deactivated processes 30 days; audit/process metadata 12 months.

## Other responses

- `400`: Body invalid, or <code>status</code> supplied but not equal to <code>CANCELLED</code>.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `401`: No Authorization header found or invalid token<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `403`: ePost Sign widget not subscribed, or caller is not an <code>ADMIN</code> of this process.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `404`: Resource not found<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `409`: Process is in a terminal status (<code>COMPLETED</code>, <code>CANCELLED</code> or <code>EXPIRED</code>) and cannot be updated.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `422`: Validation failed on the request body (e.g. <code>deadline</code> not strictly in the future).<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `429`: API rate limit exceeded<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `500`: Something went wrong on our side while processing the request. Please kindly contact our support.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.

---

[API](https://skmtc.dev/klara/apis/klara-public-api.md) · [All operations](https://skmtc.dev/klara/apis/klara-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/klara/apis/klara-public-api/revisions/490b1a879fc2?raw)
