> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sajn.se/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the form's template

> Read the template the form owns: its name, settings, fields and parties. Every document created from a submission is created from it. Field and party IDs belong to this form, not to the template it was copied from.



## OpenAPI

````yaml /api/openapi.json get /api/v1/forms/{id}/template
openapi: 3.1.0
info:
  title: sajn API
  version: 2026-10
  description: >-
    # sajn - API v1


    With the sajn REST API, you can add digital document signing to your own
    applications.


    ## Overview


    sajn is a Swedish digital document signing platform. With the API, you can:

    - Create and manage documents and templates

    - Add the parties who sign, review, or organize a document

    - Send documents for signing by email or SMS

    - Track document status and signatures

    - Manage contacts and companies

    - Organize documents with tags and custom fields

    - Verify identities with sajn ID, through BankID and other eIDs


    ## Authentication


    Every endpoint (except the health check) requires a bearer token in the
    Authorization header:


    ```

    Authorization: Bearer YOUR_TOKEN

    ```


    Two kinds of token are accepted:


    - **Personal API key** (`sajn_sk_...`) — generated from your workspace
    developer settings. Acts as the issuing user; can reach any endpoint the
    user's workspace role permits.

    - **OAuth 2.0 access token** — issued via the authorization-code flow (PKCE
    for public clients) to a connected application. Bound to one workspace and
    limited to the **scopes** the user granted at consent — effective access is
    *workspace role ∩ granted scopes*.


    Each operation lists the OAuth scopes it requires in its security section.
    The scopes are coarse and resource-oriented (e.g. `documents:read`,
    `documents:write`, `documents:delete`, `contacts:read`). Personal API keys
    are not scope-limited; OAuth tokens are.


    ## Rate Limiting


    Limits apply per organization and scale with the plan:


    | Plan | Per minute | Per day |

    |---|---|---|

    | Basic | 60 | 2 000 |

    | Solo | 120 | 10 000 |

    | Team | 600 | 100 000 |

    | Enterprise | 2 000 | 2 000 000 |

    | Sandbox | 60 | 2 000 |


    Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and
    `X-RateLimit-Reset` for the minute window, and `X-RateLimit-Daily-Limit`,
    `X-RateLimit-Daily-Remaining` and `X-RateLimit-Daily-Reset` for the daily
    quota. A `429` response includes `Retry-After` in seconds.


    ## Query parameters


    Query parameters are plain strings, such as
    `?externalId=12345&archived=false`:

    - Booleans are `true` or `false`.

    - Dates are ISO 8601 dates (`2026-10-01`) or date-times
    (`2026-10-01T08:00:00Z`). A date-time without an offset is UTC.

    - Filters that take several values accept a comma-separated list
    (`status=PENDING,COMPLETED`) or a repeated parameter
    (`status=PENDING&status=COMPLETED`).


    An unknown query parameter returns `400`, so a misspelled filter never
    silently returns everything.


    ## Pagination


    Every list returns `{ data, hasMore, nextCursor }`. To walk a list, pass
    `nextCursor` as `cursor` on the next request, keep the other parameters
    unchanged, and stop when `hasMore` is `false`. `limit` sets the page size,
    from 1 to 100, with a default of 25. To get the number of items that match
    the filters, pass `include=total`, and the response adds `total`.


    Lists sort newest first. To sort another way, pass `orderBy` and
    `orderDirection` where the list takes them. A list bounded by its parent,
    such as a document's parties, returns every item in one response, with
    `hasMore` set to `false` and `nextCursor` set to `null`.


    On the documents list, the cursor is keyset-based: it stays correct while
    documents are created and updated between requests. To mirror documents into
    your own system, sort by `updatedAt` and use the `updatedAfter` filter.


    ## Idempotent requests


    Send an `Idempotency-Key` header (any unique string up to 255 characters,
    for example a UUID) on `POST`, `PATCH` or `DELETE` requests to make retries
    safe. The first request runs normally and its response is stored for 24
    hours, errors included. A retry with the same key and the same method, path
    and body returns the stored response with the header `Idempotent-Replayed:
    true`. Reusing a key with a different request returns `400
    IDEMPOTENCY_KEY_REUSED`; retrying while the first request is still running
    returns `409 IDEMPOTENCY_KEY_IN_USE` with `Retry-After`. Responses with a
    `429` or `5xx` status aren't stored, so the retry runs again. Keys are
    scoped to the workspace.


    ## Versioning


    The API is versioned by date (`YYYY-MM`), and this reference documents
    version `2026-10`. To choose the version for a request, send the
    `Sajn-Version` header:


    ```

    Sajn-Version: 2026-10

    ```


    Without the header, a request uses your organization's default version. An
    organization without a default is pinned to the latest version by its first
    request. Every response returns the version that served it in
    `Sajn-Version`. On a deprecated version, responses also carry `Deprecation`
    and `Sunset` headers, and from the sunset date its requests return `400`.
    For details, see https://docs.sajn.se/api-reference/versioning.


    ## Webhooks


    Each webhook endpoint has its own API version, set when you create it, that
    decides the payload shape. Deliveries carry it in the `Sajn-Version` header.


    The delivery body is the event, `{ id, type, createdAt, apiVersion,
    workspaceId, environment, actor, data }`, signed according to [Standard
    Webhooks](https://www.standardwebhooks.com) in the `webhook-id`,
    `webhook-timestamp` and `webhook-signature` headers. Common document events:

    - `document.created` - A document is created.

    - `document.sent` - A document is sent for signing.

    - `document.party.opened` - A party opens the document.

    - `document.party.signed` - A party signs the document.

    - `document.fully_signed` - Every signer has signed, before the document is
    sealed.

    - `document.completed` - The document is sealed and complete.

    - `document.rejected` - A party rejects the document.


    For every event type, see `POST /api/v1/webhooks`.


    ## Error Handling


    Every error response has the same JSON shape:


    ```json

    {
      "code": "NOT_FOUND",
      "message": "Document not found",
      "userMessage": "Dokumentet hittades inte.",
      "requestId": "req_V1StGXR8Z5jdHi6BmyT2",
      "resource": "document"
    }

    ```


    - `code` is always present and comes from the closed list in the following
    table. Branch on it, not on the status or the message.

    - `message` is English text for developers. When the operation has no more
    specific text, it's the meaning of `code` from the following table. Its
    wording can change, so don't parse it.

    - `userMessage` is always present. It's text that is safe to show your
    users, usually in Swedish.

    - `requestId` identifies the request and matches the `Sajn-Request-Id`
    header, which every response carries. Quote it when you contact support. On
    a replayed idempotent response, it identifies the original request.


    A `400 VALIDATION_FAILED` lists every problem in `issues`: `[{ "path":
    "parties.0.email", "code": "INVALID_FORMAT", "message": "Invalid email
    address" }]`. An issue `code` is one of `INVALID_TYPE`, `INVALID_FORMAT`,
    `INVALID_VALUE`, `TOO_SMALL`, `TOO_BIG` or `UNRECOGNIZED_KEY`, and an issue
    that no single input caused has an empty `path`. A `404 NOT_FOUND` names the
    type of the missing resource in `resource`, such as `document` or `party`,
    or `null` when the API can't tell. A `403 INSUFFICIENT_SCOPE` includes
    `requiredScopes` and `grantedScopes`.


    A `401 UNAUTHORIZED` always means the credential itself is missing, invalid,
    expired or revoked. A valid token that isn't allowed to do something gets a
    `403`. A `409 INVALID_STATE` means the resource's state doesn't allow the
    operation; change the state first, then retry. A `503 UPSTREAM_UNAVAILABLE`
    is safe to retry with exponential backoff, and so is a `429` after
    `Retry-After` seconds.


    The API returns the following codes:


    | Code | Status | Meaning |

    |---|---|---|

    | `VALIDATION_FAILED` | 400 | The request failed validation. `issues` lists
    every problem. |

    | `INVALID_JSON` | 400 | The request body isn't valid JSON. |

    | `EXPIRED` | 400 | The link, code or resource has expired. |

    | `IDEMPOTENCY_KEY_REUSED` | 400 | The `Idempotency-Key` was already used
    with a different request. |

    | `INVALID_API_VERSION` | 400 | The `Sajn-Version` header names a version
    that doesn't exist. |

    | `API_VERSION_SUNSET` | 400 | The requested version, or your organization's
    default, is past its sunset date. |

    | `UNAUTHORIZED` | 401 | The API token is missing, invalid, expired or
    revoked. |

    | `PERMISSION_DENIED` | 403 | The token's user isn't allowed to perform the
    operation, for example because their workspace role lacks a permission. |

    | `INSUFFICIENT_SCOPE` | 403 | The OAuth token wasn't granted a scope the
    operation requires. See `requiredScopes` and `grantedScopes`. |

    | `PLAN_REQUIRED` | 403 | The organization's plan doesn't include API access
    or the feature. |

    | `ACCOUNT_INACTIVE` | 403 | The organization, user or membership behind the
    token is deactivated or suspended. |

    | `ACCOUNT_SETUP_REQUIRED` | 403 | The organization must finish its setup,
    such as verifying an accountable person, first. |

    | `LIMIT_EXCEEDED` | 403 | A plan limit was reached, such as the monthly
    number of sent documents. |

    | `APPROVAL_REQUIRED` | 409 | The operation needs an approval first, such as
    sending a document that the workspace requires an approval for. Request one
    with `POST /api/v1/approval-requests`. |

    | `NOT_FOUND` | 404 | The resource doesn't exist, or the token can't access
    it. `resource` names its type, such as `document`, or is `null` when the API
    can't tell. |

    | `ROUTE_NOT_FOUND` | 404 | No endpoint matches the method and path in the
    requested API version. |

    | `INVALID_STATE` | 409 | The resource's current state doesn't allow the
    operation, such as editing a document that was already sent or downloading a
    file that isn't produced yet. |

    | `ALREADY_EXISTS` | 409 | A resource with the same unique value, such as
    `externalId`, already exists. |

    | `IDEMPOTENCY_KEY_IN_USE` | 409 | A request with the same `Idempotency-Key`
    is still running. Retry after `Retry-After` seconds. |

    | `RATE_LIMITED` | 429 | The per-minute rate limit was reached. Retry after
    `Retry-After` seconds. |

    | `DAILY_QUOTA_EXCEEDED` | 429 | The daily request quota was reached. Retry
    after `Retry-After` seconds. |

    | `INTERNAL_ERROR` | 500 | Something went wrong on sajn's side. Quote
    `requestId` when you contact support. |

    | `UPSTREAM_UNAVAILABLE` | 503 | A service the operation depends on, such as
    an eID provider or a connected integration, failed or is unavailable. Retry
    with exponential backoff. |


    ## Support


    For API support, documentation, or questions:

    - Email: dev@sajn.se

    - Documentation: https://docs.sajn.se

    - Status: https://status.sajn.se
  contact:
    name: sajn Support
    email: dev@sajn.se
    url: https://www.sajn.se/support
  license:
    name: Policy
    url: https://www.sajn.se/allmanna-villkor
servers:
  - url: https://app.sajn.se
    description: Production server
security: []
tags:
  - name: Health
    description: API health and version information
  - name: Documents
    description: Create, manage, and send documents for signing
  - name: Templates
    description: Create and manage templates that can be used to spin up new documents
  - name: Parties
    description: Manage document parties (signers and other participants)
  - name: Contacts
    description: Manage contacts and contact information
  - name: Companies
    description: Manage companies and organizations
  - name: Fields
    description: Manage document fields and sections
  - name: Tags
    description: Organize documents with tags
  - name: Custom Fields
    description: Define and manage custom fields for documents
  - name: sajn ID
    description: Identity verification with Swedish BankID
  - name: Files
    description: >-
      Upload and manage files. `POST /api/v1/files` returns a presigned URL that
      you upload the bytes to.
  - name: Folders
    description: Organize documents and templates into hierarchical folders
  - name: Comments
    description: Thread-based discussion on documents
  - name: Reminders
    description: Send and inspect signing reminders on a document
  - name: Helpers
    description: 'Reference data: languages, countries, currencies, timezones'
  - name: Organization
    description: Authenticated organization metadata and branding
  - name: Webhook Deliveries
    description: Inspect and retry past webhook deliveries
  - name: Delegations
    description: Read-only access to signer delegation events on a document
  - name: Blocks
    description: Reusable library blocks for templates
paths:
  /api/v1/forms/{id}/template:
    get:
      summary: Get the form's template
      description: >-
        Read the template the form owns: its name, settings, fields and parties.
        Every document created from a submission is created from it. Field and
        party IDs belong to this form, not to the template it was copied from.
      operationId: getFormTemplate
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: The form ID.
          example: cm4k2x9p10023abcd1234efgh
        - name: Sajn-Version
          in: header
          required: false
          schema:
            type: string
            enum:
              - 2026-09
              - 2026-10
          description: >-
            API version for this request. Without it, the request uses the
            organization's default version; an organization without a default is
            pinned to the latest version by its first request.
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The form ID.
                  name:
                    type: string
                  templateMeta:
                    type:
                      - object
                      - 'null'
                    properties:
                      signingMode:
                        description: >-
                          If `PARALLEL`, every party can sign at once. If
                          `SEQUENTIAL`, the parties sign one at a time, in
                          `signingOrder`.
                        type:
                          - string
                          - 'null'
                        enum:
                          - PARALLEL
                          - SEQUENTIAL
                          - null
                      forceReadFullDocument:
                        description: >-
                          Whether signers must read the entire document before
                          signing
                        type:
                          - boolean
                          - 'null'
                      showChatToSigners:
                        description: Whether to show document chat to signers
                        type:
                          - boolean
                          - 'null'
                      language:
                        description: >-
                          Language of the signing page and the emails to the
                          parties, an ISO 639-1 code such as `sv`
                        type:
                          - string
                          - 'null'
                        enum:
                          - sv
                          - en
                          - 'no'
                          - da
                          - fi
                          - de
                          - is
                          - es
                          - fr
                          - it
                          - null
                      value:
                        description: >-
                          The document's value, such as a contract amount, as
                          free text. It isn't an amount of money in minor units.
                        type:
                          - string
                          - 'null'
                      signableAfterExpired:
                        description: >-
                          Whether documents created from this template remain
                          signable after expiration
                        type:
                          - boolean
                          - 'null'
                      sendPlainTextEmailOnly:
                        description: Send plain text email invitations only (no HTML)
                        type:
                          - boolean
                          - 'null'
                      allowDelegation:
                        description: Whether signers may delegate signing to another person
                        type:
                          - boolean
                          - 'null'
                      reminderIntervalDays:
                        description: >-
                          Days between automatic reminders. `0` turns them off,
                          and null uses the default of 3.
                        type:
                          - integer
                          - 'null'
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      responsibleUserId:
                        description: Default responsible user ID
                        type:
                          - string
                          - 'null'
                      accessVerification:
                        description: >-
                          Document-wide verification required to open the
                          document
                        type:
                          - string
                          - 'null'
                        enum:
                          - NONE
                          - SMS_BEFORE_SIGNING
                          - EMAIL_BEFORE_SIGNING
                          - PIN_BEFORE_SIGNING
                          - SE_BANKID_BEFORE_SIGNING
                          - NO_BANKID_BIOMETRIC_BEFORE_SIGNING
                          - NO_BANKID_HIGH_BEFORE_SIGNING
                          - DK_MITID_BEFORE_SIGNING
                          - DK_MITID_ERHVERV_BEFORE_SIGNING
                          - FI_FTN_BEFORE_SIGNING
                          - NL_IDIN_BEFORE_SIGNING
                          - null
                      internalRecipients:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                          format: email
                          pattern: >-
                            ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      visibility:
                        description: >-
                          Who can see documents created from this template:
                          EVERYONE, RESPONSIBLE, PERMISSION, or USER_SPECIFIC
                        type:
                          - string
                          - 'null'
                        enum:
                          - EVERYONE
                          - RESPONSIBLE
                          - PERMISSION
                          - USER_SPECIFIC
                          - null
                      selectedUserIds:
                        description: >-
                          User IDs granted access when visibility is
                          USER_SPECIFIC
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                      nationalIdDisplayMode:
                        description: >-
                          How national identity numbers are displayed to
                          signers: FULL, PARTIAL, or NONE. null inherits the
                          workspace default.
                        type:
                          - string
                          - 'null'
                        enum:
                          - FULL
                          - PARTIAL
                          - NONE
                          - null
                      sameDeviceSigning:
                        description: Whether all parties sign in sequence on one device
                        type:
                          - boolean
                          - 'null'
                      documentCategoryId:
                        description: >-
                          Document category (Dokumenttyp) applied to documents
                          created from this template. See GET
                          /api/v1/document-categories.
                        type:
                          - string
                          - 'null'
                    required:
                      - signingMode
                      - forceReadFullDocument
                      - showChatToSigners
                      - language
                      - value
                      - signableAfterExpired
                      - sendPlainTextEmailOnly
                      - allowDelegation
                      - reminderIntervalDays
                      - responsibleUserId
                      - accessVerification
                      - internalRecipients
                      - visibility
                      - selectedUserIds
                      - nationalIdDisplayMode
                      - sameDeviceSigning
                      - documentCategoryId
                    additionalProperties: false
                  fields:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique field identifier
                        documentId:
                          description: Document this field belongs to
                          type:
                            - string
                            - 'null'
                        templateId:
                          description: Template this field belongs to
                          type:
                            - string
                            - 'null'
                        type:
                          type: string
                          enum:
                            - TEXT
                            - HTML
                            - FORM
                            - PDF
                            - PRODUCT_TABLE
                            - TABLE
                            - SPACER
                            - PAGE_BREAK
                            - DURATION
                          description: Field type
                        position:
                          type: number
                          description: >-
                            0-based order of the field among the document's
                            content blocks
                        fieldMeta:
                          anyOf:
                            - oneOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - TEXT
                                    content:
                                      type: string
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - HTML
                                    content:
                                      type: string
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - PDF
                                    value:
                                      type: string
                                    numPages:
                                      type: number
                                    pageIndex:
                                      type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    instruction:
                                      type: string
                                    formFields:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          name:
                                            type: string
                                          type:
                                            type: string
                                            enum:
                                              - TEXT
                                              - CHECKBOX
                                              - DROPDOWN
                                              - RADIO
                                          page:
                                            type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                          rect:
                                            type: object
                                            properties:
                                              x:
                                                type: number
                                              'y':
                                                type: number
                                              width:
                                                type: number
                                              height:
                                                type: number
                                            required:
                                              - x
                                              - 'y'
                                              - width
                                              - height
                                            additionalProperties: false
                                          pageWidth:
                                            type: number
                                            exclusiveMinimum: 0
                                          pageHeight:
                                            type: number
                                            exclusiveMinimum: 0
                                          pageRotation:
                                            anyOf:
                                              - type: number
                                                enum:
                                                  - 0
                                              - type: number
                                                enum:
                                                  - 90
                                              - type: number
                                                enum:
                                                  - 180
                                              - type: number
                                                enum:
                                                  - 270
                                          options:
                                            type: array
                                            items:
                                              type: string
                                          required:
                                            type: boolean
                                          readOnly:
                                            type: boolean
                                          multiline:
                                            type: boolean
                                        required:
                                          - name
                                          - type
                                          - page
                                          - rect
                                          - pageWidth
                                          - pageHeight
                                        additionalProperties: false
                                    formValues:
                                      type: object
                                      additionalProperties:
                                        anyOf:
                                          - type: string
                                          - type: boolean
                                    placedFields:
                                      type: array
                                      items:
                                        oneOf:
                                          - type: object
                                            properties:
                                              id:
                                                type: string
                                                minLength: 1
                                              page:
                                                type: integer
                                                minimum: 0
                                                maximum: 9007199254740991
                                              rect:
                                                type: object
                                                properties:
                                                  x:
                                                    type: number
                                                  'y':
                                                    type: number
                                                  width:
                                                    type: number
                                                    exclusiveMinimum: 0
                                                  height:
                                                    type: number
                                                    exclusiveMinimum: 0
                                                required:
                                                  - x
                                                  - 'y'
                                                  - width
                                                  - height
                                                additionalProperties: false
                                              pageWidth:
                                                type: number
                                                exclusiveMinimum: 0
                                              pageHeight:
                                                type: number
                                                exclusiveMinimum: 0
                                              pageRotation:
                                                anyOf:
                                                  - type: number
                                                    enum:
                                                      - 0
                                                  - type: number
                                                    enum:
                                                      - 90
                                                  - type: number
                                                    enum:
                                                      - 180
                                                  - type: number
                                                    enum:
                                                      - 270
                                              name:
                                                type: string
                                              key:
                                                type: string
                                                pattern: ^[a-z0-9_-]*$
                                              locked:
                                                type: boolean
                                              style:
                                                type: object
                                                properties:
                                                  fontSize:
                                                    type: number
                                                    minimum: 6
                                                    maximum: 72
                                                  color:
                                                    type: string
                                                    pattern: ^#[0-9a-fA-F]{6}$
                                                  bold:
                                                    type: boolean
                                                  italic:
                                                    type: boolean
                                                  align:
                                                    type: string
                                                    enum:
                                                      - LEFT
                                                      - CENTER
                                                      - RIGHT
                                                additionalProperties: false
                                              kind:
                                                type: string
                                                enum:
                                                  - INPUT
                                              inputType:
                                                type: string
                                                enum:
                                                  - TEXT
                                                  - DATE
                                                  - CHECKBOX
                                                  - SELECT
                                                  - DRAW
                                                  - SIGNATURE
                                                  - INITIALS
                                              label:
                                                type: string
                                              fillSource:
                                                type: string
                                                enum:
                                                  - SIGNER
                                                  - FIXED
                                                  - NONE
                                                  - VARIABLE
                                              partyId:
                                                type: string
                                              variableId:
                                                type: string
                                              required:
                                                type: boolean
                                              options:
                                                type: array
                                                items:
                                                  type: string
                                              multiline:
                                                type: boolean
                                            required:
                                              - id
                                              - page
                                              - rect
                                              - pageWidth
                                              - pageHeight
                                              - kind
                                              - inputType
                                            additionalProperties: false
                                          - type: object
                                            properties:
                                              id:
                                                type: string
                                                minLength: 1
                                              page:
                                                type: integer
                                                minimum: 0
                                                maximum: 9007199254740991
                                              rect:
                                                type: object
                                                properties:
                                                  x:
                                                    type: number
                                                  'y':
                                                    type: number
                                                  width:
                                                    type: number
                                                    exclusiveMinimum: 0
                                                  height:
                                                    type: number
                                                    exclusiveMinimum: 0
                                                required:
                                                  - x
                                                  - 'y'
                                                  - width
                                                  - height
                                                additionalProperties: false
                                              pageWidth:
                                                type: number
                                                exclusiveMinimum: 0
                                              pageHeight:
                                                type: number
                                                exclusiveMinimum: 0
                                              pageRotation:
                                                anyOf:
                                                  - type: number
                                                    enum:
                                                      - 0
                                                  - type: number
                                                    enum:
                                                      - 90
                                                  - type: number
                                                    enum:
                                                      - 180
                                                  - type: number
                                                    enum:
                                                      - 270
                                              name:
                                                type: string
                                              key:
                                                type: string
                                                pattern: ^[a-z0-9_-]*$
                                              locked:
                                                type: boolean
                                              style:
                                                type: object
                                                properties:
                                                  fontSize:
                                                    type: number
                                                    minimum: 6
                                                    maximum: 72
                                                  color:
                                                    type: string
                                                    pattern: ^#[0-9a-fA-F]{6}$
                                                  bold:
                                                    type: boolean
                                                  italic:
                                                    type: boolean
                                                  align:
                                                    type: string
                                                    enum:
                                                      - LEFT
                                                      - CENTER
                                                      - RIGHT
                                                additionalProperties: false
                                              kind:
                                                type: string
                                                enum:
                                                  - STATIC
                                              content:
                                                type: string
                                              text:
                                                type: string
                                            required:
                                              - id
                                              - page
                                              - rect
                                              - pageWidth
                                              - pageHeight
                                              - kind
                                            additionalProperties: false
                                    locked:
                                      type: boolean
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - FORM
                                    columns:
                                      type: number
                                      minimum: 1
                                    fields:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                            minLength: 1
                                          key:
                                            type: string
                                            pattern: ^[a-z0-9_-]*$
                                          type:
                                            type: string
                                            enum:
                                              - INPUT
                                              - TEXT
                                              - SELECT
                                              - DATEPICKER
                                              - RADIO
                                              - CHECKBOX
                                              - NUMBER
                                              - ATTACHMENT
                                          row:
                                            type: number
                                            minimum: 0
                                          column:
                                            type: number
                                            minimum: 0
                                          colSpan:
                                            type: integer
                                            exclusiveMinimum: 0
                                            maximum: 9007199254740991
                                          fieldMeta:
                                            oneOf:
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - INPUT
                                                  value:
                                                    type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - TEXT
                                                  value:
                                                    type: string
                                                  rows:
                                                    type: integer
                                                    minimum: 2
                                                    maximum: 20
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - SELECT
                                                  options:
                                                    type: array
                                                    items:
                                                      type: object
                                                      properties:
                                                        value:
                                                          type: string
                                                      required:
                                                        - value
                                                      additionalProperties: false
                                                  defaultValue:
                                                    type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - DATEPICKER
                                                  value:
                                                    type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - RADIO
                                                  options:
                                                    type: array
                                                    items:
                                                      type: object
                                                      properties:
                                                        value:
                                                          type: string
                                                      required:
                                                        - value
                                                      additionalProperties: false
                                                  value:
                                                    type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - CHECKBOX
                                                  options:
                                                    type: array
                                                    items:
                                                      type: object
                                                      properties:
                                                        value:
                                                          type: string
                                                      required:
                                                        - value
                                                      additionalProperties: false
                                                  values:
                                                    type: array
                                                    items:
                                                      type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - NUMBER
                                                  value:
                                                    type: string
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  label:
                                                    type: string
                                                  placeholder:
                                                    type: string
                                                  description:
                                                    type: string
                                                  partyId:
                                                    type:
                                                      - string
                                                      - 'null'
                                                  required:
                                                    type: boolean
                                                  type:
                                                    type: string
                                                    enum:
                                                      - ATTACHMENT
                                                  appendixLabel:
                                                    type: string
                                                  allowedTypes:
                                                    type: array
                                                    items:
                                                      type: string
                                                      enum:
                                                        - PDF
                                                        - IMAGE
                                                  includeInDocument:
                                                    type: boolean
                                                  value:
                                                    type: object
                                                    properties:
                                                      filename:
                                                        type: string
                                                      mimeType:
                                                        type: string
                                                      size:
                                                        type: number
                                                        description: Size in bytes
                                                    required:
                                                      - filename
                                                      - mimeType
                                                      - size
                                                    additionalProperties: {}
                                                    description: >-
                                                      The file the party uploaded. Set by sajn
                                                      when the upload is confirmed; a request
                                                      can't set it.
                                                required:
                                                  - type
                                                additionalProperties: false
                                        required:
                                          - id
                                          - row
                                          - column
                                        additionalProperties: false
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                    - columns
                                    - fields
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - PRODUCT_TABLE
                                    name:
                                      type: string
                                    enableName:
                                      type: boolean
                                    columns:
                                      type: object
                                      additionalProperties:
                                        type: object
                                        properties:
                                          name:
                                            type: string
                                          originalName:
                                            type: string
                                          enabled:
                                            type: boolean
                                          key:
                                            type: string
                                          settings:
                                            type: object
                                            properties:
                                              decimalPlaces:
                                                type: number
                                              oneTimePayment:
                                                type: boolean
                                              pricePrefix:
                                                type: string
                                              priceSuffix:
                                                type: string
                                              pricesIncludeVat:
                                                description: >-
                                                  If `true`, the entered prices include
                                                  VAT. If `false`, they exclude it.
                                                  Default: `false`.
                                                type: boolean
                                              defaultVatRate:
                                                description: >-
                                                  VAT rate in percent, such as `25`, for a
                                                  product without its own `vat`. Default:
                                                  `25`.
                                                type: number
                                              showVatBreakdown:
                                                description: >-
                                                  If `true`, the totals show the VAT
                                                  amount. Default: `true`.
                                                type: boolean
                                            additionalProperties: false
                                        required:
                                          - name
                                          - originalName
                                          - enabled
                                          - key
                                          - settings
                                        additionalProperties: false
                                    summaryLabels:
                                      type: object
                                      properties:
                                        subtotal:
                                          type: string
                                        vat:
                                          type: string
                                        total:
                                          type: string
                                        payable:
                                          type: string
                                      required:
                                        - subtotal
                                        - vat
                                        - total
                                      additionalProperties: false
                                    allowSelection:
                                      type: boolean
                                    selectionPartyId:
                                      type: string
                                    selectionRequired:
                                      type: boolean
                                    selectedProductIds:
                                      type: array
                                      items:
                                        type: string
                                    recipientChoice:
                                      type: object
                                      properties:
                                        selectedIds:
                                          type: array
                                          items:
                                            type: string
                                        quantities:
                                          type: object
                                          additionalProperties:
                                            type: number
                                      required:
                                        - selectedIds
                                        - quantities
                                      additionalProperties: false
                                    sections:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          name:
                                            type: string
                                          pickOne:
                                            type: boolean
                                          showSubtotal:
                                            type: boolean
                                        required:
                                          - id
                                          - name
                                        additionalProperties: false
                                    discount:
                                      type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                            - PERCENT
                                            - AMOUNT
                                        value:
                                          type: number
                                        label:
                                          type: string
                                      required:
                                        - type
                                        - value
                                      additionalProperties: false
                                    pricing:
                                      type: object
                                      properties:
                                        pricesIncludeVat:
                                          description: >-
                                            If `true`, the entered prices include
                                            VAT. If `false`, they exclude it.
                                            Default: `false`.
                                          type: boolean
                                        defaultVatRate:
                                          description: >-
                                            VAT rate in percent, such as `25`, for a
                                            product without its own `vat`. Default:
                                            `25`.
                                          type: number
                                        showVatBreakdown:
                                          description: >-
                                            If `true`, the totals show the VAT
                                            amount. Default: `true`.
                                          type: boolean
                                      additionalProperties: false
                                    style:
                                      type: object
                                      properties:
                                        border:
                                          type: boolean
                                        rounded:
                                          type: boolean
                                      additionalProperties: false
                                    currency:
                                      description: >-
                                        ISO 4217 currency code, such as `SEK`.
                                        Every price in the table is a decimal
                                        amount in this currency.
                                      type: string
                                      pattern: ^[A-Z]{3}$
                                    language:
                                      type: string
                                      enum:
                                        - sv
                                        - en
                                        - 'no'
                                        - da
                                        - fi
                                        - de
                                        - is
                                        - es
                                        - fr
                                        - it
                                    products:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          name:
                                            type: string
                                          description:
                                            type: string
                                          price:
                                            description: >-
                                              Unit price as a decimal amount in the
                                              table's `currency`, such as `1499.5`,
                                              not in minor units. It excludes VAT
                                              unless `pricing.pricesIncludeVat` is
                                              `true`.
                                            type: number
                                          unit:
                                            type: string
                                          quantity:
                                            type: number
                                          vat:
                                            description: >-
                                              VAT rate in percent, such as `25`.
                                              Without it, `pricing.defaultVatRate`
                                              applies.
                                            type: number
                                          optional:
                                            type: boolean
                                          defaultSelected:
                                            type: boolean
                                          quantityEditable:
                                            type: boolean
                                          quantityMin:
                                            type: number
                                          quantityMax:
                                            type: number
                                          discount:
                                            type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - PERCENT
                                                  - AMOUNT
                                              value:
                                                type: number
                                            required:
                                              - type
                                              - value
                                            additionalProperties: false
                                          billing:
                                            type: string
                                            enum:
                                              - ONE_TIME
                                              - MONTHLY
                                              - QUARTERLY
                                              - YEARLY
                                          sectionId:
                                            type: string
                                          sku:
                                            type: string
                                          productId:
                                            type: string
                                          productType:
                                            type: string
                                            enum:
                                              - GOODS
                                              - SERVICE
                                              - ROT
                                              - RUT
                                        required:
                                          - id
                                          - name
                                        additionalProperties: false
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                    - name
                                    - columns
                                    - products
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - TABLE
                                    columns:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          name:
                                            type: string
                                          type:
                                            type: string
                                            enum:
                                              - TEXT
                                              - NUMBER
                                        required:
                                          - id
                                          - name
                                          - type
                                        additionalProperties: false
                                    rows:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          cells:
                                            type: array
                                            items:
                                              type: object
                                              properties:
                                                columnId:
                                                  type: string
                                                value:
                                                  anyOf:
                                                    - type: string
                                                    - type: number
                                              required:
                                                - columnId
                                                - value
                                              additionalProperties: false
                                        required:
                                          - id
                                          - cells
                                        additionalProperties: false
                                    showHeaders:
                                      type: boolean
                                    style:
                                      type: object
                                      properties:
                                        border:
                                          type: boolean
                                        rounded:
                                          type: boolean
                                      additionalProperties: false
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                    visibilityRule:
                                      type: object
                                      properties:
                                        customFieldId:
                                          type: string
                                          minLength: 1
                                        equals:
                                          type: string
                                        mode:
                                          type: string
                                          enum:
                                            - SHOW_WHEN
                                            - HIDE_WHEN
                                      required:
                                        - customFieldId
                                        - equals
                                        - mode
                                      additionalProperties: false
                                    hidden:
                                      type: boolean
                                  required:
                                    - type
                                    - columns
                                    - rows
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - SPACER
                                    size:
                                      type: string
                                      enum:
                                        - S
                                        - M
                                        - L
                                        - XL
                                    locked:
                                      type: boolean
                                  required:
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - PAGE_BREAK
                                    locked:
                                      type: boolean
                                  required:
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - DURATION
                                    durationType:
                                      type: string
                                      enum:
                                        - NONE
                                        - SINGLE_PERIOD
                                        - RECURRING
                                        - RECURRING_WITH_INITIAL
                                        - NOT_SET
                                    period:
                                      type: object
                                      properties:
                                        value:
                                          type: integer
                                          exclusiveMinimum: 0
                                          maximum: 9007199254740991
                                        unit:
                                          type: string
                                          enum:
                                            - DAY
                                            - WEEK
                                            - MONTH
                                            - YEAR
                                      required:
                                        - value
                                        - unit
                                      additionalProperties: false
                                    noticePeriod:
                                      type: object
                                      properties:
                                        value:
                                          type: integer
                                          exclusiveMinimum: 0
                                          maximum: 9007199254740991
                                        unit:
                                          type: string
                                          enum:
                                            - DAY
                                            - WEEK
                                            - MONTH
                                            - YEAR
                                      required:
                                        - value
                                        - unit
                                      additionalProperties: false
                                    startDate:
                                      type: string
                                    endDate:
                                      type: string
                                    locked:
                                      type: boolean
                                    sectionStyle:
                                      type: object
                                      properties:
                                        background:
                                          type: string
                                          enum:
                                            - NONE
                                            - MUTED
                                            - TINT
                                            - ACCENT
                                            - DARK
                                        padding:
                                          type: string
                                          enum:
                                            - NONE
                                            - SM
                                            - MD
                                            - LG
                                        bleed:
                                          type: boolean
                                        border:
                                          type: boolean
                                      additionalProperties: false
                                  required:
                                    - type
                                  additionalProperties: false
                            - type: 'null'
                          description: >-
                            Type-specific content. For PDF fields this includes
                            `placedFields` (boxes placed on the PDF pages) and
                            `formFields` (form fields extracted from the PDF).
                        createdAt:
                          description: Date and time when the field was created
                          type:
                            - string
                            - 'null'
                          format: date-time
                        updatedAt:
                          description: Date and time when the field was last updated
                          type:
                            - string
                            - 'null'
                          format: date-time
                      required:
                        - id
                        - documentId
                        - templateId
                        - type
                        - position
                        - fieldMeta
                        - createdAt
                        - updatedAt
                      additionalProperties: false
                      example:
                        id: cm4k2x9p10009abcd1234efgh
                        documentId: cm4k2x9p10003abcd1234efgh
                        templateId: null
                        type: TEXT
                        position: 0
                        fieldMeta:
                          type: TEXT
                          content: >-
                            <p>Anställningen gäller tills vidare från och med
                            den 1 november 2026, med sex månaders
                            provanställning.</p>
                        createdAt: '2026-09-28T09:12:00.000Z'
                        updatedAt: '2026-09-28T09:12:00.000Z'
                    description: Fields in position order
                  parties:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique template party identifier
                        templateId:
                          type: string
                          description: Template ID this party belongs to
                        name:
                          type: string
                          description: Party name
                        email:
                          description: Party email address
                          type:
                            - string
                            - 'null'
                        phone:
                          description: Party phone number
                          type:
                            - string
                            - 'null'
                        type:
                          type: string
                          enum:
                            - INDIVIDUAL
                            - COMPANY
                          description: 'Party type: INDIVIDUAL or COMPANY'
                        role:
                          type: string
                          enum:
                            - SIGNER
                            - ORGANIZER
                            - REVIEWER
                          description: 'Party role: SIGNER, ORGANIZER, or REVIEWER'
                        signingOrder:
                          description: Order for sequential signing
                          type:
                            - number
                            - 'null'
                        contactId:
                          description: Linked contact ID
                          type:
                            - string
                            - 'null'
                        company:
                          description: >-
                            The company the party signs for, or null for a
                            private individual
                          type:
                            - object
                            - 'null'
                          properties:
                            id:
                              description: ID of the linked company in your workspace
                              type:
                                - string
                                - 'null'
                            name:
                              description: Company name
                              type:
                                - string
                                - 'null'
                            orgNumber:
                              description: Company organization number
                              type:
                                - string
                                - 'null'
                            role:
                              description: The party's role or title at the company
                              type:
                                - string
                                - 'null'
                          required:
                            - id
                            - name
                            - orgNumber
                            - role
                          additionalProperties: false
                        externalId:
                          description: External reference ID
                          type:
                            - string
                            - 'null'
                        nationalId:
                          description: >-
                            National identity number, such as a Swedish
                            personnummer
                          type:
                            - string
                            - 'null'
                        country:
                          description: >-
                            ISO 3166-1 alpha-2 country code of the party, such
                            as SE
                          type:
                            - string
                            - 'null'
                        requiredSignature:
                          description: Default required signature type
                          type:
                            - string
                            - 'null'
                          enum:
                            - NONE
                            - DRAWING
                            - SE_BANKID
                            - MANUAL
                            - CLICK_TO_SIGN
                            - NO_BANKID_BIOMETRIC
                            - NO_BANKID_HIGH
                            - NO_QES
                            - DK_MITID
                            - DK_MITID_ERHVERV
                            - FI_FTN
                            - NL_IDIN
                            - null
                        deliveryMethod:
                          type: string
                          enum:
                            - EMAIL
                            - SMS
                            - NONE
                            - IN_APP
                          description: Default delivery method
                        twoStepVerification:
                          type: string
                          enum:
                            - NONE
                            - SMS_BEFORE_SIGNING
                            - EMAIL_BEFORE_SIGNING
                            - PIN_BEFORE_SIGNING
                            - SE_BANKID_BEFORE_SIGNING
                            - NO_BANKID_BIOMETRIC_BEFORE_SIGNING
                            - NO_BANKID_HIGH_BEFORE_SIGNING
                            - DK_MITID_BEFORE_SIGNING
                            - DK_MITID_ERHVERV_BEFORE_SIGNING
                            - FI_FTN_BEFORE_SIGNING
                            - NL_IDIN_BEFORE_SIGNING
                          description: Default two-step verification
                        createdAt:
                          description: When the party was added to the template
                          type: string
                          format: date-time
                        updatedAt:
                          description: When the party was last changed
                          type: string
                          format: date-time
                      required:
                        - id
                        - templateId
                        - name
                        - email
                        - phone
                        - type
                        - role
                        - signingOrder
                        - contactId
                        - company
                        - externalId
                        - nationalId
                        - country
                        - requiredSignature
                        - deliveryMethod
                        - twoStepVerification
                        - createdAt
                        - updatedAt
                      additionalProperties: false
                required:
                  - id
                  - name
                  - templateMeta
                  - fields
                  - parties
                additionalProperties: false
              example:
                id: cm4k2x9p10023abcd1234efgh
                name: Intresseanmälan
                templateMeta:
                  signingMode: PARALLEL
                  forceReadFullDocument: false
                  showChatToSigners: false
                  language: sv
                  value: '540000'
                  signableAfterExpired: false
                  sendPlainTextEmailOnly: false
                  allowDelegation: false
                  reminderIntervalDays: 3
                  responsibleUserId: cm4k2x9p10002abcd1234efgh
                  accessVerification: NONE
                  internalRecipients:
                    - hr@example.com
                  visibility: EVERYONE
                  selectedUserIds:
                    - cm4k2x9p10023abcd1234efgh
                  nationalIdDisplayMode: FULL
                  sameDeviceSigning: false
                  documentCategoryId: cm4k2x9p10017abcd1234efgh
                fields:
                  - id: cm4k2x9p10009abcd1234efgh
                    documentId: cm4k2x9p10003abcd1234efgh
                    templateId: null
                    type: TEXT
                    position: 0
                    fieldMeta:
                      type: TEXT
                      content: >-
                        <p>Anställningen gäller tills vidare från och med den 1
                        november 2026, med sex månaders provanställning.</p>
                    createdAt: '2026-09-28T09:12:00.000Z'
                    updatedAt: '2026-09-28T09:12:00.000Z'
                parties:
                  - id: cm4k2x9p10004abcd1234efgh
                    templateId: cm4k2x9p10008abcd1234efgh
                    name: Kai Lindqvist
                    email: kai@example.com
                    phone: '+46701740605'
                    type: INDIVIDUAL
                    role: SIGNER
                    signingOrder: 1
                    contactId: cm4k2x9p10006abcd1234efgh
                    company: null
                    externalId: HR-2026-0142
                    nationalId: '191212121212'
                    country: SE
                    requiredSignature: SE_BANKID
                    deliveryMethod: EMAIL
                    twoStepVerification: NONE
                    createdAt: '2026-09-28T09:12:00.000Z'
                    updatedAt: '2026-09-28T09:15:00.000Z'
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '400':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: INVALID_API_VERSION
                message: >-
                  Unknown API version "2026-13". Supported versions: 2026-09,
                  2026-10.
                userMessage: API-versionen finns inte.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '401':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: UNAUTHORIZED
                message: Invalid API token
                userMessage: Ogiltig API-nyckel
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '403':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: INSUFFICIENT_SCOPE
                message: 'Insufficient OAuth scope: requires forms:read'
                userMessage: Applikationen saknar behörighet (scope) för denna åtgärd.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
                requiredScopes:
                  - forms:read
                grantedScopes:
                  - profile:read
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '404':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: NOT_FOUND
                message: Form not found
                userMessage: Resursen hittades inte.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
                resource: form
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '409':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: INVALID_STATE
                message: >-
                  The resource's current state doesn't allow the operation, such
                  as editing a document that was already sent or downloading a
                  file that isn't produced yet.
                userMessage: Åtgärden är inte möjlig i resursens nuvarande status.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
            Retry-After:
              description: Seconds to wait before you retry.
              schema:
                type: integer
        '429':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: RATE_LIMITED
                message: API rate limit exceeded
                userMessage: För många förfrågningar. Försök igen om en stund.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
            Retry-After:
              description: Seconds to wait before you retry.
              schema:
                type: integer
        '500':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: INTERNAL_ERROR
                message: Internal server error
                userMessage: Något gick fel.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
        '503':
          description: >-
            `UPSTREAM_UNAVAILABLE`: a service the operation depends on failed.
            Retry with exponential backoff.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - VALIDATION_FAILED
                      - INVALID_JSON
                      - EXPIRED
                      - IDEMPOTENCY_KEY_REUSED
                      - INVALID_API_VERSION
                      - API_VERSION_SUNSET
                      - UNAUTHORIZED
                      - PERMISSION_DENIED
                      - INSUFFICIENT_SCOPE
                      - PLAN_REQUIRED
                      - ACCOUNT_INACTIVE
                      - ACCOUNT_SETUP_REQUIRED
                      - LIMIT_EXCEEDED
                      - APPROVAL_REQUIRED
                      - NOT_FOUND
                      - ROUTE_NOT_FOUND
                      - INVALID_STATE
                      - ALREADY_EXISTS
                      - IDEMPOTENCY_KEY_IN_USE
                      - RATE_LIMITED
                      - DAILY_QUOTA_EXCEEDED
                      - INTERNAL_ERROR
                      - UPSTREAM_UNAVAILABLE
                    description: >-
                      Machine-readable error code from a closed list. Branch on
                      it, never on `message`.
                  message:
                    type: string
                    description: >-
                      What went wrong, in English, for developers. Its wording
                      can change; don't parse it.
                  userMessage:
                    type: string
                    description: >-
                      Text that is safe to show to an end user, usually in
                      Swedish
                  requestId:
                    type: string
                    description: >-
                      Identifier of the request, the same value as the
                      `Sajn-Request-Id` header. Quote it when you contact
                      support.
                  resource:
                    description: >-
                      On a 404 `NOT_FOUND`, the type of the missing resource,
                      such as `document` or `party`; `null` when the API can't
                      tell
                    type:
                      - string
                      - 'null'
                  issues:
                    description: Every validation issue, on a 400 `VALIDATION_FAILED`
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            Dotted path to the invalid value, such as
                            `parties.0.email`; empty when no single input caused
                            the issue
                        code:
                          type: string
                          enum:
                            - INVALID_TYPE
                            - INVALID_FORMAT
                            - INVALID_VALUE
                            - TOO_SMALL
                            - TOO_BIG
                            - UNRECOGNIZED_KEY
                        message:
                          type: string
                          description: What is wrong with the value, in English
                      required:
                        - path
                        - code
                        - message
                      additionalProperties: false
                  requiredScopes:
                    description: >-
                      OAuth scopes the endpoint requires, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                  grantedScopes:
                    description: >-
                      OAuth scopes the token was granted, on a 403
                      `INSUFFICIENT_SCOPE`
                    type: array
                    items:
                      type: string
                required:
                  - code
                  - message
                  - userMessage
                  - requestId
                additionalProperties: {}
                description: Error response
              example:
                code: UPSTREAM_UNAVAILABLE
                message: >-
                  A service the operation depends on, such as an eID provider or
                  a connected integration, failed or is unavailable. Retry with
                  exponential backoff.
                userMessage: En extern tjänst svarar inte just nu. Försök igen om en stund.
                requestId: req_V1StGXR8Z5jdHi6BmyT2
          headers:
            Sajn-Version:
              description: API version that served the request.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when the version is deprecated: when it was
                deprecated, as `@<unix seconds>`.
              schema:
                type: string
            Sunset:
              description: >-
                Present only when the version is deprecated: the HTTP date from
                which requests on this version return 400 `API_VERSION_SUNSET`.
              schema:
                type: string
            Sajn-Request-Id:
              description: >-
                Identifier of the request. Error bodies repeat it as
                `requestId`; quote it when you contact support.
              schema:
                type: string
            X-RateLimit-Limit:
              description: Requests allowed per minute.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute window resets, in Unix seconds.
              schema:
                type: integer
            X-RateLimit-Daily-Limit:
              description: >-
                Requests allowed per day. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Remaining:
              description: >-
                Requests left today. Absent for first-party connectors and
                negotiated limits.
              schema:
                type: integer
            X-RateLimit-Daily-Reset:
              description: >-
                When the daily quota resets, in Unix seconds. Absent for
                first-party connectors and negotiated limits.
              schema:
                type: integer
      security:
        - bearerAuth: []
        - oauth2:
            - forms:read
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Personal API key, e.g. `Authorization: Bearer sajn_sk_...`. Not
        scope-limited — acts as the issuing user.
    oauth2:
      type: oauth2
      description: >-
        OAuth 2.0 access token for a connected application. Limited to the
        scopes granted at consent.
      flows:
        authorizationCode:
          authorizationUrl: https://app.sajn.se/oauth/authorize
          tokenUrl: https://app.sajn.se/api/oauth/token
          refreshUrl: https://app.sajn.se/api/oauth/token
          scopes:
            profile:read: >-
              Read the user's profile, including name, phone number and email
              address.
            documents:read: Read documents.
            documents:write: Create documents and edit the documents the user created.
            documents:delete: >-
              Delete documents, files, folders, custom fields and comment
              threads.
            forms:read: Read forms and their settings.
            forms:write: Create, edit and publish forms.
            forms:delete: Permanently delete forms and their submissions.
            forms:submissions:read: Read form submissions and the respondents' contact details.
            templates:read: Read templates.
            templates:write: Create and edit templates.
            contacts:read: Read contacts.
            contacts:write: Create and edit contacts.
            contacts:delete: Delete contacts.
            organization:read: Read information about the organization.
            audit:read: Read document activity and event logs.
            signatures:read: >-
              Read the identity the eID verified at signing, including the
              national identity number.
            sajnid:read: Read sajn ID verifications.
            sajnid:write: Create sajn ID verifications.
            login:read: Read the result of sajn Login sessions.
            login:write: Start sajn Login sessions.
            webhooks:read: Read webhooks and their deliveries.
            webhooks:write: Create, edit and delete webhooks.
            actions:read: Read suggested actions and what each one does.
            actions:write: >-
              Approve, dismiss and snooze suggested actions. An approval can
              send reminders to counterparties, terminate agreements and create
              follow-ups.
            members:read: Read the workspace's members.
            members:write: Invite and manage workspace members.
            roles:read: Read the workspace's roles and permissions.
            roles:write: Create, edit and delete workspace roles.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.