Tvarka ATK API · Arazzo Workflow

Sign a PDF with a qualified electronic signature

Version 1.0.0

The ATK signing ceremony for a PAdES container - create the request, submit the card signing certificate, return the signature, check both result axes, then download the signed PDF.

1 workflow 1 source API 1 provider
View Spec View on GitHub AuthenticationDigital SignatureeIDASQESLithuaniaOpenAPIeIDSmart-IDMobile-IDNFCTimestampingLTVWebhookIdentityTrust ServicesGDPRArazzoWorkflows

Provider

tvarka

Workflows

sign-pades-document
Produce and download a qualified PAdES signature over a PDF.
Seed `document` with the published sandbox fixture atk-test.pdf (SHA-256 b0966e87751a6443f9e6894b3ccb91afdf784343ca0845fec20194e4d44b638f) so a fork runs against test material. A completed signature has legal effect - run this only with explicit human intent.
5 steps inputs: document, method outputs: requestId, status, validationLevel, validationStatus
1
create-sign-request
Backend, HTTP Basic.
2
submit-sign-certificate
Device, clientToken. Returns the data-to-be-signed for the PAdES signature.
3
complete-sign
Device, clientToken. Assembles the container and returns the download token.
4
check-validation-axis
Read BOTH axes. status says the ceremony finished; validation.status says whether the signature is qualified and valid. Validation failure never appears on status.
5
download-container
Download the signed PAdES container with the one-off download token.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Sign a PDF with a qualified electronic signature
  summary: >-
    The ATK signing ceremony for a PAdES container - create the request, submit the card signing
    certificate, return the signature, check both result axes, then download the signed PDF.
  version: 1.0.0
sourceDescriptions:
- name: signApi
  url: ../openapi/tvarka-atk-api-sign-api-openapi.yml
  type: openapi
workflows:
- workflowId: sign-pades-document
  summary: Produce and download a qualified PAdES signature over a PDF.
  description: >-
    Seed `document` with the published sandbox fixture atk-test.pdf (SHA-256
    b0966e87751a6443f9e6894b3ccb91afdf784343ca0845fec20194e4d44b638f) so a fork runs against test
    material. A completed signature has legal effect - run this only with explicit human intent.
  inputs:
    type: object
    required: [document]
    properties:
      document:
        type: string
        description: Base64 PDF bytes. Sandbox fixture - https://atk.tvarka.pro/docs/test-data/
      method:
        type: string
        enum: [physical, nfc]
        default: physical
  steps:
  - stepId: create-sign-request
    description: Backend, HTTP Basic.
    operationId: createSignRequest
    requestBody:
      contentType: application/json
      payload:
        format: pades
        method: $inputs.method
        document: $inputs.document
    successCriteria:
    - condition: $statusCode == 202
    outputs:
      requestId: $response.body#/requestId
      clientToken: $response.body#/clientToken
      verificationCode: $response.body#/verificationCode
  - stepId: submit-sign-certificate
    description: Device, clientToken. Returns the data-to-be-signed for the PAdES signature.
    operationId: submitSignCertificate
    parameters:
    - name: requestId
      in: path
      value: $steps.create-sign-request.outputs.requestId
    requestBody:
      contentType: application/json
      payload:
        certificate: $inputs.certificate
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      dtbs: $response.body#/dtbs
      operationToken: $response.body#/operationToken
  - stepId: complete-sign
    description: Device, clientToken. Assembles the container and returns the download token.
    operationId: completeSign
    parameters:
    - name: requestId
      in: path
      value: $steps.create-sign-request.outputs.requestId
    requestBody:
      contentType: application/json
      payload:
        signature: $inputs.signature
        signatureAlgorithm: ES256
        operationToken: $steps.submit-sign-certificate.outputs.operationToken
    successCriteria:
    - condition: $statusCode == 200
    - condition: $response.body#/status == "done"
    outputs:
      status: $response.body#/status
      validation: $response.body#/validation
      downloadToken: $response.body#/downloadToken
  - stepId: check-validation-axis
    description: >-
      Read BOTH axes. status says the ceremony finished; validation.status says whether the
      signature is qualified and valid. Validation failure never appears on status.
    operationId: getSignRequest
    parameters:
    - name: requestId
      in: path
      value: $steps.create-sign-request.outputs.requestId
    successCriteria:
    - condition: $statusCode == 200
    - condition: $response.body#/validation/status == "passed"
    outputs:
      validationStatus: $response.body#/validation/status
      validationLevel: $response.body#/validation/level
  - stepId: download-container
    description: Download the signed PAdES container with the one-off download token.
    operationId: downloadSignedDocument
    parameters:
    - name: requestId
      in: path
      value: $steps.create-sign-request.outputs.requestId
    - name: downloadToken
      in: query
      value: $steps.complete-sign.outputs.downloadToken
    successCriteria:
    - condition: $statusCode == 200
  outputs:
    requestId: $steps.create-sign-request.outputs.requestId
    status: $steps.complete-sign.outputs.status
    validationStatus: $steps.check-validation-axis.outputs.validationStatus
    validationLevel: $steps.check-validation-axis.outputs.validationLevel
x-provenance:
  generated: '2026-08-09'
  method: generated
  source: openapi/tvarka-atk-api-openapi-original.json
  operationIds_verified: true

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/tvarka-atk-api-sign-pades-document"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.