openapi: 3.2.0 info: title: 'Swisscom Sign Integration Process: read API' description: "# Purpose\n\nThe Swisscom Sign *Integration API* enables backend systems to create, configure, release, and monitor digital signing processes end-to-end with minimal manual interaction.\n\n**Designed for** system-to-system integrations: line-of-business applications, backend services, and automated jobs.\n\n# Main Capabilities & Flow\n\n| Action | Endpoint |\n|--------|----------|\n| Create a process | `POST /api/process` |\n| Find all processes | `GET /api/process` |\n| Retrieve process details | `GET /api/process/{processId}` |\n| Attach documents | `POST /api/process/{processId}/attach` |\n| Release process (non-interactive) | `POST /api/process/{processId}/release` |\n| Handover to UI for completion | `POST /api/process/{processId}/setup` |\n| Monitor progress | `GET /api/process/{processId}/status` |\n| Retrieve signing record | `GET /api/process/{processId}/record` |\n| Download documents (Base64 JSON) | `GET /api/process/{processId}/file/{fileId}` |\n| Download document content (binary) | `GET /api/process/{processId}/file/{fileId}/content` |\n| Generate user-specific redirect URL | `POST /api/process/{processId}/open/{personId}` |\n\n# Samples\n\nRequest examples on the endpoints are only provided where a sample deviates from the standard flow (Sample 1).\n\n| # | Scenario | Key Feature |\n|---|----------|-------------|\n| 1 | Standard invite | Invite signer via deep link, release via API |\n| 2 | Invite with GwG identification | Online identification (GwG) before QES signing |\n| 3 | Delegated signing | System acts on behalf of user, user signs |\n| 4 | Draft with UI setup | Create draft, finalize in Swisscom Sign UI |\n| 5 | One-shot signing (OSS) | Single signer with on-the-fly authentication |\n\n
\nSample 1 – Standard invite\n\n**Summary**\n\nStart a signing process programmatically and invite a person to sign.\n\n**Description**\n\nA backend system creates a new signing process and defines a single signer (invitee). The invitee receives a personalized deep link to complete the signing in Swisscom Sign. This is the most common integration pattern\nfor automated business workflows.\n\n**Typical flow**\n\n1. `POST /api/process` → create process\n2. `POST /api/process/{processId}/attach` → attach document\n3. `POST /api/process/{processId}/release` → release process\n4. `POST /api/process/{processId}/open/{personId}` → generate redirect URL for invitee\n\n
\n\n
\nSample 2 – Invite with GwG identification\n\n**Summary**\n\nStart a GwG-compliant signing process with mandatory online identification.\n\n**Description**\n\nThe signer must complete online identification (GwG) before signing. Upon successful identification, the entire process is signed in a GwG-compliant manner. If identification is rejected, signing cannot proceed. Identification results are exposed read-only via the API.\n\n**Typical flow**\n\n1. `POST /api/process` → create process (with verification on signer)\n2. `POST /api/process/{processId}/attach` → attach document\n3. `POST /api/process/{processId}/release` → release process\n4. `POST /api/process/{processId}/open/{personId}` → generate redirect URL for invitee\n\n
\n\n
\nSample 3 – Delegated signing\n\n**Summary**\n\nCreate a signing process on behalf of another user who becomes the signer.\n\n**Description**\n\nA system or representative (e.g., service desk) initiates a process on behalf of a user. The initiator acts as delegate, while the end user signs. Common in enterprise integrations where the application acts for the employee but the signature must come from the individual.\n\n**Typical flow**\n\n1. `POST /api/process` → create process (with initiator set to delegated user)\n2. `POST /api/process/{processId}/attach` → attach document(s)\n3. `POST /api/process/{processId}/release` → release process\n4. `POST /api/process/{processId}/open/{personId}` → generate redirect URL for signer\n\n
\n\n
\nSample 4 – Draft with UI setup\n\n**Summary**\n\nCreate a draft process and modify it before release.\n\n**Description**\n\nA process is created in draft mode without immediate release. Documents can be attached or replaced, signer details updated, or properties modified before finalizing. Useful when human validation or business logic must occur before release.\n\n**Typical flow**\n\n1. `POST /api/process` → create draft\n2. `POST /api/process/{processId}/attach` → attach document(s)\n3. `POST /api/process/{processId}/setup` → finalize process\n\n
\n\n
\nSample 5 – One-shot signing (OSS) for a single signer\n\n**Summary**\n\nRelease a process that uses One-Shot Signing (OSS) so the signer completes the signature in a single step without a pre-registered authentication device.\n\n**Description**\n\nOSS (One-Shot Signing) allows a signer to complete an advanced or qualified electronic signature without prior device registration (no Mobile ID app, no SMS OTP, no Passkey). The signer authenticates on-the-fly during the signing ceremony. This is ideal for one-time or infrequent signers. OSS is supported for `ADVANCED`, `ADVANCED_EU`, `QUALIFIED`, and `QUALIFIED_EU` signature levels.\n\nTo use OSS, pass `signatureMethods: [\"OSS\"]` in the release request. If multiple methods are provided alongside OSS, the signer can choose between them.\n\n**Typical flow**\n\nSteps 1, 2 and 4 are identical to Sample 1 — only the release request differs.\n\n1. `POST /api/process` → create process with a single signer\n2. `POST /api/process/{processId}/attach` → attach document\n3. `POST /api/process/{processId}/release` → release with `{ \"notification\": { \"locale\": \"de-CH\" }, \"signatureMethods\": [\"OSS\"] }`\n4. `POST /api/process/{processId}/open/{personId}` → generate redirect URL for signer\n\n
\n\n\n# Authentication & Authorization\n\nAll API access requires a **Bearer token** obtained via **OAuth 2.0 Client Credentials**.\n\n**Scopes**\n\n| Scope | Description |\n|-------|-------------|\n| `sswp:process:create` | Create and release processes |\n| `sswp:process:read` | Read own processes, status, records, files |\n| `sswp:process:read:all` | Read all processes (included for Organizations, on request for Corporates) |\n\n**Client Types**\n\n| Type | Issued by | Access | `read:all` |\n|------|-----------|--------|------------|\n| **Organization** | Self-service | Own organization | ✅ Included |\n| **Corporate** | Provider | Entire tenant | ⚠️ On request |\n\nAccess is restricted by the optional `organization_id` token claim. If present, access is limited to that organization.\n\n
\nToken example\n\n```json\n{\n \"iss\": \"https://iam.example.com/\",\n \"sub\": \"client-123\",\n \"aud\": \"swisscom-sign-system-api\",\n \"scope\": \"sswp:process:create sswp:process:read\",\n \"organization_id\": \"7f0b2f2a-1e6e-4b30-9f0c-1c9a9b3d1234\",\n \"exp\": 1735660800,\n \"iat\": 1735657200\n}\n```\n\n
\n\n\n# API Conventions\n\n| Aspect | Convention |\n|--------|------------|\n| **Content-Type** | `application/json` (files as Base64-encoded strings); `GET .../file/{fileId}/content` returns raw binary (`application/pdf` or `application/zip`) |\n| **Timestamps** | ISO-8601 with offset (`2026-03-12T14:30:00+01:00`) |\n| **IDs** | UUIDs, stable and reusable across requests |\n| **Pagination** | Query params: `page`, `size`, `sort` |\n\n**HTTP Status Codes**\n\n| Code | Meaning |\n|------|---------|\n| `200` | Success |\n| `201` | Created |\n| `208` | Already reported (idempotent create) |\n| `400` | Bad request (validation error) |\n| `401` | Unauthorized (invalid/missing token) |\n| `403` | Forbidden (insufficient scope) |\n| `404` | Resource not found |\n| `409` | Conflict (e.g., process already released) |\n\n# Versioning & Compatibility\n\n## Versioning Scheme\n\nThis API follows **Semantic Versioning** (MAJOR.MINOR.PATCH):\n\n| Change Type | Version Impact | Example |\n|-------------|----------------|---------|\n| Breaking changes | MAJOR ↑ | `2.0.0` → `3.0.0` |\n| New features (backward-compatible) | MINOR ↑ | `2.11.0` → `2.12.0` |\n| Bug fixes | PATCH ↑ | `2.12.0` → `2.12.1` |\n\n## Deprecation Policy\n\n- Deprecated fields remain functional for **at least 2 minor versions**\n- Deprecated features are marked with `⚠️ Deprecated` in the schema documentation\n- Migration guidance is provided in the changelog\n\n## API Versions\n\n| Version | Status |\n|--------|--------------|\n| `v2` | `✅ Current`|\n| `v1` | `⚠️ Deprecated`|\n \n**⚠️ Migration Notice**\n\nThe `v1` API is **deprecated** and will reach end of life.\nPlease migrate to the `v2` API. **New credentials are required**.\n\n\n## Change Log\n\n
\n2.19.0 – Binary file download, signature methods & OSS sample\n\n**✨ New Features**\n- **Binary file download**: New `GET /api/process/{processId}/file/{fileId}/content` endpoint returns the raw binary content of a process file instead of a Base64-encoded JSON document\n - The `Content-Type` reflects the actual file type: `application/pdf` for documents, `application/zip` for verification documents\n - The response includes a `Content-Disposition` header with the original filename\n - Authorization and error semantics are identical to the existing `GET /api/process/{processId}/file/{fileId}` endpoint, which remains unchanged\n- **Signature methods**: Release endpoint now accepts optional `signatureMethods` to restrict allowed methods (`APP`, `CLICK`, `OSS`, `PASSKEY`, `SMS`) per process. Methods are validated against the document's signature level.\n- **New signature methods**: Added `PASSKEY` (WebAuthn passkey authentication) and `OSS` (One-Shot Signing without prior device registration), both for corporate tenants only\n- **Sample 5 (OSS)**: New integration sample demonstrating One-Shot Signing for a single signer without prior device registration\n\n**\U0001F4D6 Documentation**\n- **SignatureMethod descriptions**: Each signature method now includes a detailed description in the schema documentation\n\n
\n\n
\n2.18.0 – Stable pagination response\n\n**\U0001F504 Changed**\n- **Process listing**: `GET /api/process` now returns a stable `page` object with `totalElements`, `totalPages`, `size`, and `number`\n\n**⚠️ Deprecated**\n- Root-level fields `totalElements`, `totalPages`, `number`, `size`, `first`, `last` → migrate to `page.totalElements`, `page.totalPages`, `page.number`, `page.size`\n\n
\n\n
\n2.17.0 – Automatic Reminders\n\n**✨ New Features**\n- **Reminders**: Release endpoint now allows an optional configuration of automatic reminders in the `notification` node.\n- **Reminders**: There are two ways to define reminders, and they can be used independently of each other or even combined:\n - `interval` – Define a fixed interval, at which the reminders will be sent.\n - `beforeExpiry` – Define a list of durations to send reminders a certain amount of time before the expiration date.\n
\n\n
\n2.16.0 – Prevent Organization clients from using GWG\n\n**⚠️ Breaking Changes**\n- **GWG**: Prevent clients of type `Organization` from creating processes that would use the `GWG` flow.\n
\n\n
\n2.15.0 – Tag-based signature positioning\n\n**✨ New Features**\n- **Tag-based signature positioning**: Attach endpoint now accepts `\"locator\": \"TAG\"` on signature positions to resolve placement at runtime by searching for a tag string embedded in the PDF (e.g. `\\s1\\` for the first signer, `\\s2\\` for the second, etc.)\n- The tag marks the upper-left corner of the visual signature field\n- Optional `offsetX` / `offsetY` (PDF points, range −200 to 200) allow fine-tuning the position relative to the tag\n- Coordinates (`positionX`, `positionY`, `pageNumber`) are not required when `locator` is `TAG`\n- Default behaviour (omitting `locator` or using `\"locator\": \"COORDINATES\"`) is fully backward-compatible\n\n
\n\n
\n2.14.0 – Process listing filters\n\n**✨ New Features**\n- **Process listing**: Added optional `teamId` filter parameter to `GET /api/process` for filtering processes by team\n- **Process listing**: Added optional `validUntilWithin` filter parameter (ISO 8601 duration, e.g. `P30D`) to `GET /api/process` for filtering processes whose `validUntil` falls within the given duration\n\n\n
\n\n
\n2.13.0 – Extended signer statuses\n\n**✨ New Features**\n- **Signer status**: Added new status values to `SignerStatus`:\n - `WAITING` – Signer has not been invited to the process yet\n - `DECLINED` – Signer has declined the signature process\n - `REMOVED` – Signer has been removed from the signature process\n - `REPLACED` – Signer has been replaced with a new signer\n\n
\n\n
\n2.12.0 – Process expiration & notification settings\n\n**✨ New Features**\n- **Process expiration**: Release endpoint now accepts optional `validUntil` to set process expiration date\n\n**\U0001F504 Changed**\n- **Notification settings**: Introduced new `notification` object with:\n - `locale` – language for notifications\n - `suppress` – opt-out control for notification types (`INVITE`, `COMPLETION`, `ALL`)\n\n**⚠️ Deprecated**\n- `language` field on Release request → use `notification.locale` instead\n\n
\n\n
\n2.11.0 – Process listing\n\n**✨ New Features**\n- **Process listing**: New `GET /api/process` endpoint with:\n - Filter by `status`\n - Sort by `createdDate`\n - Pagination support\n\n
\n\n
\n2.10.0 – Signer status rename\n\n**\U0001F504 Changed**\n- **Signer status**: Renamed status value `DISCONTINUED` → `CANCELED` for clarity\n- **Timestamp field**: New attribute `canceledOn` replaces `discontinuedOn`\n\n**⚠️ Deprecated**\n- `discontinuedOn` → use `canceledOn` instead\n\n
\n\n
\n2.9.0 – Team support\n\n**✨ New Features**\n- Added optional `teamId` on `Process` for team-based organization\n\n
\n\n
\n2.8.0 – Partner tracking\n\n**✨ New Features**\n- Added optional `partnerId` on `Process` for partner management and tracking\n\n
\n\n
\n2.7.0 – Authorization options\n\n**✨ New Features**\n- Added optional `authorization` on `Process` (write-only)\n- Default: `CODE` for backwards-compatibility\n\n
\n\n
\n2.6.0 – Verification cleanup\n\n**\U0001F5D1️ Removed**\n- Removed `domicile` on `Verification`\n\n
\n\n
\n2.5.0 – Custom signature stickers\n\n**✨ New Features**\n- **Signature sticker rendering**: New field `stickerProvider` on `FileSignaturePosition`\n - `VISUAL_SIGNATURE_PROVIDER` – classic rendering (default)\n - `CUSTOM_VISUAL_SIGNATURE_PROVIDER` – user-drawn signature support\n\n
\n\n
\n2.4.0 – Validation improvements\n\n**\U0001F512 Validation**\n- Email length restricted to max `254` characters\n- `externalIdentifier` character set restricted for URL-encoding conformity\n\n
\n\n
\n2.3.0 – Authentication rename\n\n**\U0001F504 Renamed**\n- `pairing` → `authentication`\n- `pairing.userId` → `authentication.identity`\n- `pairing.app` → `authentication.namespace`\n\n
\n\n
\n2.2.0 – Mandatory fields & scope/mode\n\n**✨ New Features**\n- Added `scope` and `mode` to Setup and Open requests\n- Process creation now returns full `Process` schema\n\n**⚠️ Breaking Changes**\n- `Signer.firstName` and `Signer.lastName` are now **mandatory**\n- `NonPerson.name` is now **mandatory**\n- Process-wide `email` validation on `Participants`\n\n**\U0001F41B Bug Fixes**\n- Fixed: `externalIdentifier` was not accepted in Open request\n\n
\n\n
\n2.1.0 – Signer status fields\n\n**✨ New Features**\n- Added to `Signer` schema:\n - `status` – current signer state\n - `signedOn` – signature timestamp\n - `discontinuedOn` – cancellation timestamp\n\n
\n\n
\n2.0.0 – Major release\n\n**\U0001F680 Major Release**\n- Complete REST API refactoring\n\n
\n" termsOfService: https://sign.swisscom.ch/api-docs contact: name: Support url: https://digitaltrust.swisscom.ch/en/ version: 2.19.0 x-changelog: 2.19.0: New `GET /api/process/{processId}/file/{fileId}/content` endpoint returns the raw binary content of a process file instead of a Base64-encoded JSON document. The `Content-Type` reflects the actual file type (`application/pdf` for documents, `application/zip` for verification documents). The response includes a `Content-Disposition` header with the original filename. Authorization and error semantics are identical to the existing file endpoint, which remains unchanged. Release endpoint now accepts optional `signatureMethods` to restrict the allowed signature methods (`APP`, `CLICK`, `OSS`, `PASSKEY`, `SMS`) per process. Methods are validated against the document's signature level. Added the two new signature methods `PASSKEY` (WebAuthn passkey authentication) and `OSS` (One-Shot Signing without prior device registration), both for corporate tenants only. Added Sample 5 (OSS single signer). Enhanced `signatureMethods` documentation with detailed descriptions for each method. 2.18.0: The `GET /api/process` response now includes a stable `page` object containing `totalElements`, `totalPages`, `size`, and `number`. The root-level fields `totalElements`, `totalPages`, `number`, `size`, `first`, and `last` are deprecated and will be removed in a future version. Please migrate to `page.totalElements`, `page.totalPages`, `page.size`, and `page.number`. 2.17.0: Release endpoint now allows an optional configuration of automatic reminders in the `notification` node. Reminders can be defined with an `interval` or `beforeExpiry` configuration. 2.16.0: GwG online identity verification (`signer.verification`) is now restricted to corporate tenants. Submitting a `verification` object on a signer for a non-corporate tenant will be rejected with a `400 Bad Request` validation error. 2.15.0: 'Attach endpoint now accepts `locator: TAG` on signature positions to resolve placement at runtime by searching for a tag string embedded in the PDF (`\s1\` for index 0, `\s2\` for index 1, etc.). The tag marks the upper-left corner of the signature field. Optional `offsetX` / `offsetY` (PDF points, −200 to 200) allow fine-tuning. Coordinates are not required when using TAG. Default behaviour (omitting `locator` or using COORDINATES) is fully backward-compatible.' 2.14.0: Added optional `teamId` filter parameter to `GET /api/process` for filtering processes by team. Added optional `validUntilWithin` filter parameter (ISO 8601 duration) to `GET /api/process` for filtering processes whose `validUntil` falls within the given duration. 2.13.0: 'Added new signer status values: `WAITING` (not yet invited), `DECLINED` (signer declined), `REMOVED` (signer removed), and `REPLACED` (signer replaced with a new signer).' 2.12.0: Release endpoint now accepts optional `validUntil` to set process expiration. Replaced `language` field with new `notification` object containing `locale` and `suppress` for opt-out control of notification types (`INVITE`, `COMPLETION`, `ALL`). The `language` field is now deprecated. 2.11.0: New findAll service added for processes with filter (`status`), sorting (`createdDate`), and paging. 2.10.0: Signer.status has been renamed from `DISCONTINUED` to `CANCELED` for better clarity. New attribute `canceledOn` replaces `discontinuedOn`, which has been set to deprecated. 2.9.0: Added optional `teamId` on `Process`. 2.8.0: Added optional `partnerId` to `Process` for enhanced partner management and tracking. 2.7.0: Added optional `authorization` on `Process` as write-only. Defaults to CODE for backwards-compatability when no authorization value is provided. 2.6.0: Removed `domicile` on `Verification`. 2.5.0: Added new field `stickerProvider` to `FileSignaturePosition`. This new field determines how signature stickers are rendered. Currently, two choices are available, the classic `VISUAL_SIGNATURE_PROVIDER` for backwards-compatibility, and a new `CUSTOM_VISUAL_SIGNATURE_PROVIDER`. If `CUSTOM_VISUAL_SIGNATURE_PROVIDER` is selected, users can manually draw a signature, which will be incorporated into the sticker. 2.4.0: Restricted email length to `254` characters. Restricted `externalIdentifier` characters to strengthen url-encoding conformity. 2.3.0: Renamed `pairing` and its fields `pairing.userId` and `pairing.app` to `authentication`, `authentication.identity` and `authentication.namespace`. 2.2.0: '- Added `scope` and `mode` to Setup and Open requests. - `Signer.firstName` and `Signer.lastName` are now mandatory. - `NonPerson.name` is now mandatory. - Added process wide `email` validation on `Participants`. - Process creation now returns `Process` scheme. - Fixed a bug where the `externalIdentifier` was not accepted in the Open request. ' 2.1.0: Added `signer.status`, `signer.signedOn` and `signer.discontinuedOn` to `Signer` schema. 2.0.0: 'Major refactoring of the REST API. The API is now structured around a single `/processes` endpoint, which allows for more flexible and efficient process management. ' x-last-updated: last-updated: '2026-07-16' servers: - url: https://sign.swisscom.ch/system description: Productive Server security: - SwisscomSignOAuth2: [] tags: - name: 'Process: read' description: Access process information and download signed or original documents once the signing is complete. paths: /api/process: get: tags: - 'Process: read' summary: Get all processes (paginated) description: 'Returns a paginated list of processes. Supports optional filtering by `status`, `teamId`, and `validUntilWithin` (ISO 8601 duration). The page size is limited to a maximum of 20 items. Sorting is strictly performed on ''createdDate'', but the direction (ASC/DESC) can be defined. ' operationId: findAll parameters: - name: status in: query description: Filter by status. required: false schema: type: string description: 'Lifecycle states: * `CREATED` – Process object exists; configuration may continue. * `PENDING` – Process released; waiting for signatures.. * `COMPLETED` – All required signatures done. * `EXPIRED` – Automatically set when `validUntil` is reached. ' enum: - CREATED - PENDING - COMPLETED - EXPIRED example: PENDING example: PENDING - name: teamId in: query description: Filter by team ID. required: false schema: type: string format: uuid example: 6f1a5c4d-2d9a-4f12-a1c5-bc6e2bcb2d6a - name: validUntilWithin in: query description: Filter by validUntil within the given ISO 8601 duration (e.g. P30D, PT12H). required: false schema: type: string example: P30D - name: page in: query description: Zero-based page index (0..N) required: false schema: type: integer default: 0 minimum: 0 - name: size in: query description: The size of the page to be returned required: false schema: type: integer default: 20 minimum: 1 - name: sort in: query description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.' required: false schema: type: array default: - createdDate,DESC items: type: string responses: '200': description: Returns a page of processes. content: application/json: schema: $ref: '#/components/schemas/ProcessPage' '400': description: Invalid pagination parameters (e.g. size > 20) or invalid sort direction. '401': description: Authorization information is missing or invalid. security: - SwisscomSignOAuth2: - sswp:process:read:all /api/process/{processId}/open/{personId}: post: tags: - 'Process: read' summary: Generate participant access URL description: 'Generate an URL for a specific participant that can be used to open the process in the Swisscom Sign UI. Optional return URLs can be used to redirect the user back to the calling third party system. If an unreleased process is opened, an error is returned. For unreleased processes, /process/{processId}/setup can be used. Preconditions: * The service can only be used if the process has already been released via /processId/{processId}/release.' operationId: open parameters: - name: processId in: path required: true schema: type: string format: uuid - name: personId in: path description: The system-assigned identifier or the external reference from your system can be used to identify the person. required: true schema: type: string description: The system-assigned identifier or the external reference from your system can be used to identify the person. requestBody: description: 'Defines how the Swisscom Sign UI should behave when the process is opened for a person. Typical use cases: - Control the language of the UI. - Configure redirect URLs (back, success). - Skip authorization for trusted environments. - Provide pairing information (App-only, temporary). ' content: application/json: schema: $ref: '#/components/schemas/ProcessOpenRequest' examples: (1) Standard invite (suppress authorization): description: (1) Standard invite (suppress authorization) value: language: en-GB skipAuthorization: true (3) Delegated signing (with authorization): description: (3) Delegated signing (with authorization) value: language: en-GB skipAuthorization: false required: true responses: '200': description: You receive an URL specific to the subscriber with a defined validity period. content: application/json: schema: $ref: '#/components/schemas/ProcessOpenResponse' '401': description: Authorization information is missing or invalid. '409': description: Occurs when there is a general error. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read /api/process/{processId}: get: tags: - 'Process: read' summary: Get process details description: 'Returns the full process object including participants, documents, properties, and current status. Can only be accessed if the process has been initiated and the caller is authorized. ' operationId: getProcess parameters: - name: processId in: path description: Unique identifier of the process. required: true schema: type: string format: uuid example: 6f1a5c4d-2d9a-4f12-a1c5-bc6e2bcb2d6a responses: '200': description: Returns the full document. content: application/json: schema: $ref: '#/components/schemas/Process' '401': description: Authorization information is missing or invalid. '404': description: Process not found. '409': description: Occurs when there is a general error. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read /api/process/{processId}/status: get: tags: - 'Process: read' summary: Get process status description: Returns the current status of the process. Requires that the process exists and the caller is authorized. operationId: getStatus parameters: - name: processId in: path required: true schema: type: string format: uuid responses: '200': description: Returns the state of the desired document. content: application/json: schema: $ref: '#/components/schemas/ProcessStatusResponse' '401': description: Authorization information is missing or invalid. '404': description: Process not found. content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Occurs when there is a general error. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read /api/process/{processId}/record: get: tags: - 'Process: read' summary: Get auditing records description: This service can be used only with a valid process. All created auditing records are returned in descending order of creation date. Thus, the first record is the most recent. operationId: getRecords parameters: - name: processId in: path description: Unique identifier of the process. required: true schema: type: string format: uuid example: 6f1a5c4d-2d9a-4f12-a1c5-bc6e2bcb2d6a responses: '200': description: Returns a list of auditing records. content: application/json: schema: $ref: '#/components/schemas/AuditSuccessRecordResponse' '401': description: Authorization information is missing or invalid. '409': description: Occurs when there is a general error or the process is missing. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read /api/process/{processId}/file/{fileId}: get: tags: - 'Process: read' summary: Download process file description: 'Retrieves a file that belongs to the specified process. Possible file types: - Attached original documents - Signed or partially signed documents (available as soon as at least one signer has signed) - Verification documents (if online verification was performed) Files are only available until the process has been archived (archivedOn is set). ' operationId: getFile parameters: - name: processId in: path description: System-assigned process identifier (UUID). required: true schema: type: string format: uuid example: 6f1a5c4d-2d9a-4f12-a1c5-bc6e2bcb2d6a - name: fileId in: path description: 'Identifier of the file within the process. Can be either: - The internal UUID assigned by the system - The externalIdentifier provided during upload ' required: true schema: type: string examples: Internal UUID: description: Internal UUID value: d7bde7d1-1234-4abc-8f1a-42c1e3b2c9b5 External Identifier: description: External Identifier value: file:offer-2025-001 responses: '200': description: Returns a file attached to the document. content: application/json: schema: $ref: '#/components/schemas/FileAttachment' '401': description: Authorization information is missing or invalid. '409': description: Occurs when there is a general error. content: application/json: schema: $ref: '#/components/schemas/Error' '410': description: The document process was archived and the file has been deleted. content: application/json: schema: $ref: '#/components/schemas/Error' '412': description: The file cannot be downloaded yet because the document is not in the appropriate state. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read /api/process/{processId}/file/{fileId}/content: get: tags: - 'Process: read' summary: Download process file content description: 'Retrieves the raw binary content of a file that belongs to the specified process. Unlike the parent resource, which returns the file as Base64 within a JSON document, this endpoint streams the file content directly as binary data. Possible file types: - Attached original documents (PDF) - Signed or partially signed documents (PDF, available as soon as at least one signer has signed) - Verification documents (ZIP, if online verification was performed) The Content-Type of the response reflects the actual file type. Files are only available until the process has been archived (archivedOn is set). ' operationId: getFileContent parameters: - name: processId in: path description: System-assigned process identifier (UUID). required: true schema: type: string format: uuid example: 6f1a5c4d-2d9a-4f12-a1c5-bc6e2bcb2d6a - name: fileId in: path description: 'Identifier of the file within the process. Can be either: - The internal UUID assigned by the system - The externalIdentifier provided during upload ' required: true schema: type: string examples: Internal UUID: description: Internal UUID value: d7bde7d1-1234-4abc-8f1a-42c1e3b2c9b5 External Identifier: description: External Identifier value: file:offer-2025-001 responses: '200': description: Returns the raw binary content of the file. content: application/pdf: schema: type: string format: binary application/zip: schema: type: string format: binary '401': description: Authorization information is missing or invalid. '409': description: Occurs when there is a general error. content: application/json: schema: $ref: '#/components/schemas/Error' '410': description: The document process was archived and the file has been deleted. content: application/json: schema: $ref: '#/components/schemas/Error' '412': description: The file cannot be downloaded yet because the document is not in the appropriate state. content: application/json: schema: $ref: '#/components/schemas/Error' security: - SwisscomSignOAuth2: - sswp:process:read components: schemas: FileSignaturePositionInput: description: "Polymorphic signature position for the attach request (write-only).\n\nThe 'locator' field selects the concrete shape:\n - COORDINATES (default): place the signature at an explicit page and coordinate.\n - TAG: resolve the position at runtime by searching for a tag string in the PDF\n (e.g. \\s1\\ for the first signer).\n\nWhen 'locator' is omitted the request is treated as COORDINATES.\n" discriminator: propertyName: locator mapping: COORDINATES: '#/components/schemas/CoordinateSignaturePosition' TAG: '#/components/schemas/TagSignaturePosition' properties: locator: type: string required: - locator CoordinateSignaturePosition: allOf: - $ref: '#/components/schemas/FileSignaturePositionInput' - type: object properties: signer: type: string description: Identifier of the signer (UUID or externalIdentifier). example: 02c2f3cc-e263-40c9-b458-79c014a153a2 maxLength: 128 minLength: 0 locator: type: string description: Discriminator. Omit or set to 'COORDINATES'. enum: - COORDINATES - TAG example: COORDINATES pageNumber: type: integer format: int32 description: 'Zero-based page index. Negative values count from the end: -1 = last page.' example: -1 positionX: type: integer format: int32 description: X-coordinate in PDF points from the left edge of the page. example: 150 minimum: 0 positionY: type: integer format: int32 description: Y-coordinate in PDF points from the top edge of the page. example: 300 minimum: 0 stickerProvider: type: string description: 'Sticker renderer to use. Default: VISUAL_SIGNATURE_PROVIDER.' enum: - VISUAL_SIGNATURE_PROVIDER - CUSTOM_VISUAL_SIGNATURE_PROVIDER example: CUSTOM_VISUAL_SIGNATURE_PROVIDER description: Signature position defined by explicit page and coordinates (PDF points). Default when 'locator' is absent. required: - pageNumber - positionX - positionY - signer title: CoordinateSignaturePosition AuditSuccessRecordResponse: type: object description: Response containing a list of auditing records for a process properties: records: type: array description: Audit records ordered by creation date descending. items: $ref: '#/components/schemas/AuditRecord' Signer: type: object description: Human participant who signs. The 'type' discriminator must be 'SIGNER'. properties: type: type: string default: SIGNER description: Discriminator value. Must be 'SIGNER'. example: SIGNER identification: type: string format: uuid description: System-assigned identifier of this signer. readOnly: true externalIdentifier: type: string description: External reference from your system. example: crm-4711 maxLength: 50 minLength: 0 pattern: '[a-zA-Z0-9._~-]+' firstName: type: string description: First name. example: John maxLength: 64 minLength: 0 lastName: type: string description: Last name. example: Doe maxLength: 64 minLength: 0 email: type: string format: email description: Email address (RFC 5322). example: john.doe@example.com maxLength: 254 minLength: 0 mobile: type: string description: 'Mobile number in E.164 format (no spaces or dashes). - Authorization behavior: If a mobile number is provided, the fallback code authorization uses an SMS code. - Signing behavior: If the number is a Swiss mobile (+41…), it will be preselected for ADVANCED signatures and cannot be changed in the UI. ' example: '+41791234567' maxLength: 16 role: type: string description: Role or function of the signer. example: Chief Signing Officer (CSO) maxLength: 256 minLength: 0 verification: $ref: '#/components/schemas/Verification' description: 'Optional online identity verification requirement (GwG). If provided when creating the process, the signer must complete an online identification step before signing. Verification results (payload/files/timestamps) are generated by the system and are read-only. Only available for corporate tenants. Providing this attribute on a non-corporate tenant will cause the create request to be rejected with a validation error. ' status: type: string description: Current signer status. enum: - WAITING - PENDING - SIGNED - CANCELED - DECLINED - REMOVED - REPLACED example: PENDING readOnly: true signedOn: type: string format: date-time description: Timestamp when the signer completed signing (UTC). Only present if status is SIGNED. example: '2025-09-24T14:32:07Z' readOnly: true discontinuedOn: type: string format: date-time deprecated: true description: 'Timestamp when the signer has been discontinued (UTC). Only present if status is `CANCELED`. Deprecated: use `canceledOn` instead.' example: '2025-09-24T14:32:07Z' readOnly: true canceledOn: type: string format: date-time description: Timestamp when the signer has been canceled (UTC). Only present if status is `CANCELED`. example: '2025-09-24T14:32:07Z' readOnly: true certificateName: type: string description: Full name extracted from the signing certificate. This field is populated only after the signer has successfully signed the process.It is absent if the signer has not signed yet or if the signing was performed without authentication or using mobile OTP authentication. readOnly: true certificateMatch: type: string description: Outcome of the comparison between the signer's declared full name and the name contained in the signing certificate. This field is populated only after the signer has successfully signed the process. If the signing was performed without authentication or using mobile OTP authentication, the value is set to `UNCHECKED`. Otherwise, the result is either `MATCH` or `MISMATCH`, depending on the comparison outcome. enum: - UNCHECKED - MATCH - MISMATCH example: MATCH readOnly: true required: - firstName - lastName - type title: Signer Process: type: object description: 'A process represents an end-to-end signing flow with 1..n signers over 1..n documents. The initiator can optionally sign; additional signers are listed in `invitees`. ' example: signatureLevel: QUALIFIED initiator: type: NON_PERSON externalIdentifier: ext-systems_oms-42 name: Swisscom Sign Orchestrator invitees: personalMessage: Hello, please sign. Thank you! signers: - type: SIGNER firstName: John lastName: Doe email: john.doe@example.com status: PENDING properties: - key: contractType value: NDA - key: department value: Legal payload: '{ "caseId": "ABC-42", "priority": "HIGH" }' validUntil: '2025-12-31T23:59:59Z' properties: id: type: string format: uuid description: System-assigned process identifier. readOnly: true status: type: string description: Current lifecycle state of the process. enum: - CREATED - PENDING - COMPLETED - EXPIRED example: PENDING readOnly: true signatureLevel: type: string default: QUALIFIED description: Legal quality of the signature(s). enum: - SIMPLE - ADVANCED - ADVANCED_EU - QUALIFIED - QUALIFIED_EU example: QUALIFIED initiator: description: 'Identifies the process initiator. One of: * NonPerson – technical/app initiator (no signature). * Person – human initiator (no signature). Either the email address or the first and last name must be specified. * Signer – initiator is also a signer. ' oneOf: - $ref: '#/components/schemas/NonPerson' - $ref: '#/components/schemas/Person' - $ref: '#/components/schemas/Signer' invitees: $ref: '#/components/schemas/Invitees' description: Additional signers to invite (initiator not repeated here). teamId: type: string format: uuid description: Optional identifier of an existing team to which the process will be assigned. The team must be created in the cockpit beforehand and the teamId can be retrieved there. If provided, the process will be visible to all members of the specified team. The team assignment cannot be modified after the process is created. properties: type: array description: Optional custom metadata as key/value pairs attached to the process. Keys must be unique. Maximum of 8 entries. items: $ref: '#/components/schemas/Property' description: Optional custom metadata as key/value pairs attached to the process. Keys must be unique. Maximum of 8 entries. maxItems: 8 minItems: 0 payload: type: string description: Optional opaque application payload for correlation/auditing. May contain a JSON string. example: caseId: ABC-42 priority: HIGH maxLength: 8192 minLength: 0 validUntil: type: string format: date-time description: 'Expiration timestamp of the process. After this point in time, the system automatically transitions the process status to `EXPIRED`. ' example: '2025-12-31T23:59:59Z' readOnly: true createdDate: type: string format: date-time description: Creation timestamp (UTC). readOnly: true lastModifiedDate: type: string format: date-time description: Last modification timestamp (UTC). readOnly: true archiveOn: type: string format: date-time description: Scheduled archival time, if any (UTC). readOnly: true archivedOn: type: string format: date-time description: Actual time when archival happened, if archived (UTC). readOnly: true fileReferences: type: array description: Uploaded files incl. visual signature positions (read-only). items: $ref: '#/components/schemas/FileReference' description: Uploaded files incl. visual signature positions (read-only). readOnly: true partnerId: type: string description: Optional partner identifier. If provided, it must reference an existing partner. example: d290f1ee-6c54-4b01-90e6-d701748f0851 authorization: type: string default: CODE description: 'Authorization requirements for accessing the process. ' enum: - CODE - ACCOUNT example: CODE writeOnly: true required: - initiator AuditRecord: type: object description: A single audit trail entry describing an action that occurred at a specific time. properties: id: type: string format: uuid description: Unique identifier of this audit record. example: d8b1c0a1-2b9d-4e77-8f7e-1a2b3c4d5e6f createdDate: type: string format: date-time description: Timestamp when the record was created (UTC). example: '2025-01-22T13:45:12Z' action: type: string description: 'Action label describing what happened. Common values include: * `sign` – A signature was performed. * `email` – An email was sent. * `payment` – A payment was successfully processed. * `identification` – A verification or onboarding step was completed. * `transaction` – The process completed (fully signed or discontinued). ' example: sign status: type: string description: Result of the action. enum: - INITIALIZE - ABORT - FAIL - SUCCESS - UNKNOWN example: SUCCESS extras: type: object additionalProperties: type: string description: 'Additional action-specific data as key/value pairs. Values may be primitives or small JSON objects depending on the action. Example keys: * `extras.sign_signatureLevel` : "QUALIFIED" * `extras.email_type` : "INVITE" ' TagSignaturePosition: allOf: - $ref: '#/components/schemas/FileSignaturePositionInput' - type: object properties: signer: type: string description: Identifier of the signer (UUID or externalIdentifier). example: 02c2f3cc-e263-40c9-b458-79c014a153a2 maxLength: 128 minLength: 0 locator: type: string description: Discriminator. Must be 'TAG'. enum: - COORDINATES - TAG example: TAG offsetX: type: integer format: int32 description: 'Optional X offset in PDF points applied to the resolved tag position. Positive = shift right, negative = shift left. Range: -200 to 200.' example: 0 maximum: 200 minimum: -200 offsetY: type: integer format: int32 description: 'Optional Y offset in PDF points applied to the resolved tag position. Positive = shift down, negative = shift up. Range: -200 to 200.' example: 0 maximum: 200 minimum: -200 stickerProvider: type: string description: 'Sticker renderer to use. Default: VISUAL_SIGNATURE_PROVIDER.' enum: - VISUAL_SIGNATURE_PROVIDER - CUSTOM_VISUAL_SIGNATURE_PROVIDER example: CUSTOM_VISUAL_SIGNATURE_PROVIDER description: Signature position located by searching for a default tag string in the PDF (\s1\ for index 0, \s2\ for index 1, etc.). The tag marks the upper-left corner of the signature field. required: - signer title: TagSignaturePosition Participant: description: Polymorphic participant. The 'type' discriminator selects the concrete shape. discriminator: propertyName: type mapping: NON_PERSON: '#/components/schemas/NonPerson' PERSON: '#/components/schemas/Person' SIGNER: '#/components/schemas/Signer' properties: type: type: string required: - type PageMetadata: type: object description: Stable pagination metadata. properties: totalElements: type: integer format: int64 description: Total number of matching processes across all pages. totalPages: type: integer format: int32 description: Total number of pages. size: type: integer format: int32 description: Number of processes per page. number: type: integer format: int32 description: Zero-based index of the current page. FileReference: type: object description: Reference to an uploaded file with its versions and signature positions. properties: externalIdentifier: type: string description: External reference identifier provided by the client system for correlation. example: contract-2025-Q1 maxLength: 50 minLength: 0 pattern: '[a-zA-Z0-9._~-]+' initialFileId: type: string format: uuid description: System-generated UUID of the initial file uploaded to the process. example: 11111111-2222-3333-4444-555555555555 lastSignedFileId: type: string format: uuid description: System-generated UUID of the last signed file (after the most recent signature). example: 66666666-7777-8888-9999-aaaaaaaaaaaa signaturePositions: type: array description: List of positions where signatures are placed in the file. example: - signer: 02c2f3cc-e263-40c9-b458-79c014a153a2 pageNumber: -1 positionX: 150 positionY: 300 items: $ref: '#/components/schemas/FileSignaturePosition' Error: type: object description: Error object returned in case of an unsuccessful request. properties: id: type: string format: uuid description: Unique identifier of this error for log correlation. example: b4a7e3c4-1234-4a12-9c3d-5df1f7b2c8f4 timestamp: type: string format: date-time description: Timestamp of the error (UTC, ISO 8601). example: '2025-09-24T14:32:07Z' name: type: string description: Logical error name derived from the thrown exception class name (without 'Exception' suffix). example: OrganizationNotFound message: type: string description: Human-readable explanation of the error. example: The requested organization does not exist. path: type: string description: Path of the request that caused the error. example: /api/process httpStatus: type: integer format: int32 description: HTTP status code of the error. example: 409 clientSubject: type: string description: Short subject/title of the error for client display. example: Organization not found clientBody: type: string description: Detailed description of the error for client display. example: The requested organization could not be located. Please verify the ID. ProcessPage: type: object description: Paginated list of processes. properties: content: type: array description: List of processes on the current page. items: $ref: '#/components/schemas/Process' page: $ref: '#/components/schemas/PageMetadata' description: Pagination metadata. totalElements: type: integer format: int64 deprecated: true description: 'Deprecated: use page.totalElements instead.' totalPages: type: integer format: int32 deprecated: true description: 'Deprecated: use page.totalPages instead.' number: type: integer format: int32 deprecated: true description: 'Deprecated: use page.number instead.' size: type: integer format: int32 deprecated: true description: 'Deprecated: use page.size instead.' first: type: boolean deprecated: true description: 'Deprecated: use page.number == 0 instead.' last: type: boolean deprecated: true description: 'Deprecated: use page.number == page.totalPages - 1 instead.' Invitees: type: object description: 'Invitees represent the **additional** signers to be invited for this process. The process `initiator` may optionally sign as well; if the initiator is a signer, they are **not** listed here again. ' properties: personalMessage: type: string description: 'Personal message included in invitation emails. Plain text only: HTML tags are stripped. Use \n for line breaks. ' example: Hello,\nplease review and sign the documents. Thank you! maxLength: 8192 minLength: 0 signers: type: array description: Additional signers to invite (excluding the initiator if the initiator also signs). items: $ref: '#/components/schemas/Signer' description: Additional signers to invite (excluding the initiator if the initiator also signs). Property: type: object description: 'A single property (key/value) that can be attached to the process. Keys must be unique within the process. ' example: key: contractType value: NDA properties: key: type: string description: Unique property key (case-sensitive). example: contractType maxLength: 64 minLength: 0 value: type: string description: Property value. example: NDA maxLength: 64 minLength: 0 required: - key - value ProcessOpenResponse: type: object description: Response with the deep link to open the process in Swisscom Sign UI. properties: id: type: string format: uuid description: Process identifier. example: 21c2f3cc-e263-40c9-b458-79c014a153a1 readOnly: true url: type: string format: uri description: Participant-specific URL to open the process. example: https://test.sign.swisscom.ch/cockpit/process/21c2f3cc-e263-40c9-b458-79c014a153a1/person/02c2f3cc-e263-40c9-b458-79c014a153a2 readOnly: true ProcessStatusResponse: type: object description: Response object containing the status of a process. example: id: 4b2b6a3e-9c1d-41b5-87e1-2c7b1f9a7e21 status: PENDING properties: id: type: string format: uuid description: System-assigned process identifier. example: 4b2b6a3e-9c1d-41b5-87e1-2c7b1f9a7e21 readOnly: true status: type: string description: Current lifecycle state of the process. enum: - CREATED - PENDING - COMPLETED - EXPIRED example: PENDING readOnly: true FileAttachment: type: object description: Represents the configuration for attaching a PDF to a Process properties: id: type: string format: uuid description: Server-assigned file identifier. example: c9e8d8ed-8a0a-4f5b-8f18-2c95c8fa8d1e readOnly: true name: type: string description: Original filename of the PDF. example: contract.pdf maxLength: 255 minLength: 0 content: type: string format: byte description: 'Content of the PDF as Base64 (OpenAPI format: byte). Max 40 MiB raw.' example: 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 maxLength: 55924053 minLength: 0 contentType: type: string description: MIME type of the uploaded file. Must be 'application/pdf'. example: application/pdf maxLength: 50 minLength: 0 pattern: ^application/pdf$ externalIdentifier: type: string description: Optional client-defined identifier to reference this file. example: contract-2025-Q1 maxLength: 50 minLength: 0 pattern: '[a-zA-Z0-9._~-]+' signaturePositions: type: array description: Optional signature positions for this PDF (write-only). Each entry is either a CoordinateSignaturePosition or a TagSignaturePosition. Omitting 'locator' defaults to COORDINATES. items: oneOf: - $ref: '#/components/schemas/CoordinateSignaturePosition' - $ref: '#/components/schemas/TagSignaturePosition' writeOnly: true required: - content - contentType - name ProcessAuthentication: type: object description: 'INTERNAL ONLY: Authentication for the first-party namespace. Requests from other clients are ignored.' properties: identity: type: string format: uuid description: Caller-side user identifier (UUID). example: 69924099-a57a-44f8-8cf3-9324f4c93a92 namespace: type: string description: Logical namespace of the first-party application (restricted). enum: - MSA - MSAINT example: MSAINT required: - identity - namespace NonPerson: allOf: - $ref: '#/components/schemas/Participant' - type: object properties: type: type: string default: NON_PERSON description: Discriminator value. Must be 'NON_PERSON'. example: NON_PERSON identification: type: string format: uuid description: System-assigned identifier of this participant. readOnly: true externalIdentifier: type: string description: External reference from your system for correlation. example: ext-crm maxLength: 50 minLength: 0 pattern: '[a-zA-Z0-9._~-]+' name: type: string description: Display name of the technical system. example: Swisscom Sign Orchestrator maxLength: 50 minLength: 0 description: Technical participant (non-human). The 'type' discriminator must be 'NON_PERSON'. required: - name - type title: NonPerson ProcessOpenRequest: type: object description: Request to open a signing process for a specific participant. properties: language: type: string description: 'Preferred UI language (BCP-47). Allowed: en-GB, de-CH, fr-CH, it-CH.' example: en-GB lifecycle: type: string default: TEMPORARY description: 'Controls how parameters (e.g., language, URLs, authorization settings) are applied when opening the process: * `PERMANENT` – Configuration is saved to the process and reused. * `TEMPORARY` – Configuration only applies to this request. ' enum: - PERMANENT - TEMPORARY example: TEMPORARY skipAuthorization: type: boolean default: false description: 'If `true`, the response URL includes a short-lived one-time code that is redeemed immediately when opening the URL (valid for ~15 minutes, single use). This bypasses the usual pre-step challenge but **still enforces full authorization** by the system. If `false` (default), the user must pass the standard authorization flow after opening the URL. ' example: false backUrl: type: string description: Back URL to the calling application. When set, the UI displays a Home button in the navigation that redirects the user to this URL. example: https://customer.example/app/back maxLength: 2048 minLength: 0 successUrl: type: string description: Success URL invoked via GET after the signing succeeded. Query parameters (e.g., process and participant identifiers) are appended by the system. The endpoint should respond with an HTTP redirect suitable for browsers. example: https://customer.example/app/success?process={processId}&participant={personId} maxLength: 2048 minLength: 0 authentication: $ref: '#/components/schemas/ProcessAuthentication' description: Authentication information (temporary App-only feature). Ignored for all other clients. scope: type: string description: 'Scope: defines the scopes that are requested on the token.' example: openid sswp:process:create sswp:process:execute sswp:process:manage sswp:process:read sswp:user:read sswp:user:write maxLength: 2048 minLength: 0 mode: type: string default: DEFAULT description: 'Mode: defines the display mode of the process page.' enum: - DEFAULT - EMBEDDED example: DEFAULT FileSignaturePosition: type: object description: Represents the position of a signature in a file attachment. properties: signer: type: string description: 'Identifier of the signer. Either: - the internal `identification` (UUID as string), e.g. `02c2f3cc-e263-40c9-b458-79c014a153a2` - or the `externalIdentifier` from your system (string, up to 128 characters) ' example: 02c2f3cc-e263-40c9-b458-79c014a153a2 maxLength: 128 minLength: 0 pageNumber: type: integer format: int32 description: 'Zero-based index of the page. Negative values count backwards. Examples: - `0` = first page - `1` = second page - `2` = third page - ... - `-2` = second to last page - `-1` = last page ' example: -1 positionX: type: integer format: int32 description: X-coordinate (in pixels) of the top-left corner of the signature field. example: 150 minimum: 0 positionY: type: integer format: int32 description: Y-coordinate (in pixels) of the top-left corner of the signature field. example: 300 minimum: 0 stickerProvider: type: string description: Specifies which sticker renderer to use for this signature position. Default is VISUAL_SIGNATURE_PROVIDER. enum: - VISUAL_SIGNATURE_PROVIDER - CUSTOM_VISUAL_SIGNATURE_PROVIDER example: CUSTOM_VISUAL_SIGNATURE_PROVIDER required: - pageNumber - positionX - positionY - signer Person: allOf: - $ref: '#/components/schemas/Participant' - type: object properties: type: type: string default: PERSON description: Discriminator value. Must be 'PERSON'. example: PERSON identification: type: string format: uuid description: System-assigned identifier of this participant. readOnly: true externalIdentifier: type: string description: External reference from your system. example: crm-4711 maxLength: 50 minLength: 0 pattern: '[a-zA-Z0-9._~-]+' firstName: type: string description: First name. example: John maxLength: 64 minLength: 0 lastName: type: string description: Last name. example: Doe maxLength: 64 minLength: 0 email: type: string format: email description: Email address (RFC 5322). example: john.doe@example.com maxLength: 254 minLength: 0 mobile: type: string description: Mobile number in E.164 format. example: '+41791234567' maxLength: 16 description: Human participant who does not sign. The 'type' discriminator must be 'PERSON'. required: - type title: Person Verification: type: object description: "Online identity verification (GwG) for a signer.\n\nOnly available for clients of type `Corporate`. Providing this object in non-corporate context will cause\nthe create request to be rejected with a validation error.\n\nUsage (input):\n- To enforce GwG identification, include this object in the signer when creating the process.\n Presence of this object (even as an empty object) enables the online identification requirement.\n- `residentPermit` configures the verification flow. If omitted, the system defaults to `true`.\n\nOutcome (read-only):\n- Pending: both `verifiedOn` and `rejectedOn` are null.\n- Approved: `verifiedOn` is set and result artifacts may be available.\n- Rejected: `rejectedOn` is set. In this case, typically only `payload` is present.\n\nResult artifacts (read-only):\n- `payload` contains the provider result as a JSON string (system integrators only).\n- `files` may contain references to a PDF report and a ZIP bundle provided by the verification provider.\n Files can be downloaded via `GET /api/process/{processId}/file/{fileId}`.\n The PDF is additionally attached to the process as a document and must be signed together with the other documents.\n" properties: processId: type: string description: Verification process identifier at the provider (read-only). example: 43c2f3cc-e263-40c9-b458-79c014a153a1 maxLength: 36 minLength: 0 readOnly: true verifiedOn: type: string format: date-time description: Timestamp when verification was approved (UTC, read-only). Mutually exclusive with `rejectedOn`. example: '2025-09-24T14:32:07Z' readOnly: true rejectedOn: type: string format: date-time description: Timestamp when verification was rejected (UTC, read-only). Mutually exclusive with `verifiedOn`. example: '2025-09-24T15:10:22Z' readOnly: true payload: type: string description: 'Provider result payload as JSON string (read-only). Present for approved or rejected verifications. Intended for system integrators. ' example: result: APPROVED score: 0.98 maxLength: 20000 minLength: 0 readOnly: true files: type: array description: 'File references created by the verification provider (read-only), e.g. PDF report and/or ZIP bundle. Download via `GET /api/process/{processId}/file/{fileId}`. ' items: type: string format: uuid description: File identifier (UUID) provided by the verification provider. example: 4ac2f3cc-e263-40c9-b458-79c014a153a1 readOnly: true readOnly: true residentPermit: type: boolean default: true description: 'Whether a Swiss residence permit is required for the signer. Input parameter used to configure the online identification flow. If omitted, the system defaults to `true`. ' example: true title: Verification securitySchemes: SwisscomSignOAuth2: type: oauth2 description: OAuth 2.0 Client Credentials flow for accessing the Swisscom Sign Integration API. flows: clientCredentials: tokenUrl: https://sign.swisscom.ch/realms/swisscom-public/protocol/openid-connect/token scopes: sswp:process:create: Create, configure, and submit a new signature process including documents, invitees, and signature options. sswp:process:read: Read process metadata or download associated documents. sswp:process:read:all: Read metadata of all processes within the organization, with optional filtering. x-token-url: https://sign.swisscom.ch/realms/swisscom-public/protocol/openid-connect/token x-issuer: https://sign.swisscom.ch/realms/swisscom-public x-jwks-uri: https://sign.swisscom.ch/realms/swisscom-public/protocol/openid-connect/certs x-claims: - organization_id x-scopes: sswp:process:create: Create, configure, and submit a new signature process. sswp:process:read:all: Read metadata of all processes within the organization, with optional filtering. sswp:process:read: Read process metadata or download associated documents. x-audience: swisscom-sign-api externalDocs: description: Service description url: https://www.swisscom.ch/sign