User guide
Quick Start Guide
Case notes
Table component
FAQ
Search
Dashboard
Deleted Documents and Access Log
Solving a task
AI Assistant
Manuals
Substitution and Vacation
Suspending, resuming, archiving and deleting a case
Case variables, history and graph
Basic Terms
Uploading Documents, Folders and Revisions
News
Favorites
Navigating the interface
Dashboard widgets
Case Detail
News/Announcements in Team assistant
Case list
Logging In and Out
Account Settings
Task List
Mobile app settings
Reports and Charts
Searching and Listing Documents
Handing Over, Taking Over and Tasks to Pull
Bulk Tasks
Printing a Case
Creating and Editing an Overview
What Is TAS
Form Fields
Tablet Interface and NFC
Overviews
Creating a New Case
Case Events
Case Permissions
Subscribing to an overview by email
Administrator Guide
Platform guide
Administration
Crons
Authentication and Synchronization
SMTP OAuth authentication
LDAP, SAML, Entra ID and NFC: Settings
Configuring authentication modules
Authentication
Vault
DMS attributes
Service Operations
Mobile App Setup for Your Environment
Scheme
XML Process Import
HR agenda and agenda handover
Logs
Archiving
Scripts
Sequences
System Status
News Management
Migrations
Configuration
Plugins
Email Queue
Service Console
AI monitoring
Shared Files
Settings
CSP Headers
CSV Files
Scheduled Tasks
Processing Queues
Maintenance
Administration Menu
Licenses
Dynamic Tables
Usage Statistics
Access Token Settings & Session Expiration
Visual Identity
Template
Prints
Tasks
Task calculations
Automatic task completion and cancellation
Email Task and Notifications
Task types
Smart Event task
Instructions, Sections and Testing a Task
General task settings and solver
Multi-instance
Planning: start, branching and due date
Dynamic conditions: builder
Variable assignment and sections
Variables
Class diagram, object state import and alias candidates
Document list
Text and Multiline text
Checkbox
Number
Variables: overview and common settings
Lists (texts, numbers, dates)
Dynamic Rows
Date
Dynamic list
Sequence
Dynamic Table
Shredding Process
Template graph
Template Tab
Template List
Importing, Exporting and Copying a Template
Template Headers
Case statuses
Roles
Connecting to a different database
Diagnosing services
Hyper-V: Isolated NAT Network with Port Forwarding
Users
Translations
NFC Integration
Events and Rules
AXIOS API
Plans
Axios with Vault
Users
Axios with SSL Certificate
User Detail
Calculations & Functions
Form condition
Other dynamic conditions
Optimization of API calls on dynamic conditions
Filtering in a dynamic sheet using dynamic conditions
Dynamic Conditions: Script
Dynamic Rows: Script
Calculations
Dynamic Tables
Printing and File Generation
Documents in Calculations — Complete Guide
Printing and File Generation in Calculations
DOCX document creation
Other Calculations
How and when calculations run
Calculations API reference: the lib library
Calculations API reference: variables and case
Global Scripts and React Scripts
Integrations
MS Graph
MS Graph - cron configuration
MS Graph v2 (from v5.7.102)
MS Graph - preparing the mailbox
MS Graph (email)
ISDOC.PDF
DocuSign
TAS call module - TAS 2 TAS (process creation via API)
DB View
DocuSign and electronic signatures
ERP and other integrations
Smart Events for Integrations
TAS Forms
TAS Forms
Activating the module on the environment
TAS Forms - secret creation guide for Docker Swarm
Advanced Features & Tips
Filtering in a dynamic sheet using a URL parameter (static)
Optimizing Overviews with a Large Number of Cases
API Documentation
Product
Technical Changelog
Business Changelog
Version Upgrade Guide
Upgrade to v5.19
Upgrade to TAS 5.19 - Key Changes and Removed Features
Upgrading TAS 5.17 to 5.19 – Technical Part (DevOps)
Upgrate to v5.17
Upgrade to TAS 5.17 - Key Changes and Removed Features
Asset Migration from FE to Backend (5.17 Upgrade) — DevOps
Upgrading to v5.7
Lodash upgrade v4.17.x (>v5.5)
Main changes and deprecated features (v5.3 > v5.7)
Highlighting variables in Read-only status (>v5.7.58)
Upgrading to 5.3
Dynamic conditions migration
PDF printing adjustment
Editing Task Description vs Task Instructions
Transpiling forEach to a for loop
Rendering HTML on Caseoverview
Differences between TAS4 and TAS5 - a complete overview
Best Practices for Upgrading from v4 to v5
Using validation functions
Technical details
Server prerequisites
Security and Data Protection
Security
TAS Operations Runbook
Technological architecture
News / Important information
Microsoft Disabling Basic Auth for SMTP
End of EWS support and transition to Microsoft Graph
Adjustment in EWS after MS Exchange update (29.04.2025)
Security notices
Getting Started
- All Categories /
- Administrator Guide
- API Documentation /
- API Tokens and OAuth Clients in Practice
API Tokens and OAuth Clients in Practice
This chapter describes how an integration obtains and uses access to TAS in practice: a static API token, a client-server OAuth client, and an OAuth client whose access is approved by a user. Managing tokens and clients in the administration (creating, revoking, rotating) is covered in the API Access article – here we continue from the perspective of an integrator who already has a token or client and wants to use it.
API token
The simplest option for server-to-server integration. An administrator with the $ApiTokenAdmin role generates the token for you on the API Access screen and hands it over to you (it is displayed only once). You use it in every call:
curl "https://vase-tas.cz/tasks" -H "Authorization: Bearer <api-token>"The token represents one system user and has exactly that user's permissions – API tokens have no scopes. It is valid for at most 730 days from generation (default validity is 365 days); after that it stops working and a new one must be generated.
For each integration, have the administrator create a separate system user with only the permissions the integration needs, and a separate token. Revoking one integration then does not affect the others.
Confidential OAuth client (server-to-server integration)
A confidential client is suitable where access is not requested by a specific user – the integration authenticates directly as a selected system user using the Client ID and Client secret (the client_credentials grant):
curl -X POST "https://vase-tas.cz/oauth/token" \
-u "<client_id>:<client_secret>" \
-d "grant_type=client_credentials"{
"access_token": "eyJhbGciOi...",
"token_type": "Bearer",
"expires_in": 28800
}The access token is sent the same way as an API token, in the Authorization: Bearer <access_token> header. It is typically valid for 8 hours (expires_in in seconds) – after it expires, the integration calls /oauth/token again. For client_credentials, TAS does not issue a refresh token.
The Client ID and Client secret are created and handed over to you by the administrator on the API Access › OAuth Clients screen. Like the token, the Client secret is displayed only once.
Public OAuth client (applications whose access the user approves)
A public client has no Client secret – instead, it uses an authorization code with PKCE, and access is always requested by a specific user. This is how, for example, AI assistants connect to TAS (see the MCP Server article).
- The application generates a
code_verifier(a random string) and derives acode_challengefrom it (SHA-256, base64url). - The application redirects the user to: ``
GET /oauth/authorize?response_type=code&client_id=<client_id>&redirect_uri=<redirect_uri>&code_challenge=<challenge>&code_challenge_method=S256&state=<state>`` - TAS redirects the signed-in user to the consent screen (
/oauth/consent/...), where they see the application name and the address they will be redirected to after approval, and confirm or deny access. - After approval, TAS redirects back to
redirect_uriwith thecodeparameter. - The application exchanges the code for a token: ``
bash curl -X POST "https://vase-tas.cz/oauth/token" \ -d "grant_type=authorization_code" \ -d "code=<code>" \ -d "redirect_uri=<redirect_uri>" \ -d "code_verifier=<verifier>" \ -d "client_id=<client_id>"`The response containsaccess_token,expires_inand, this time, alsorefresh_tokenfor renewal without repeated user consent (grant_type=refresh_token`).
The token represents the permissions of the user who granted consent – not a system user. An overview of who has granted access to applications and when it was last used is available in API Access › OAuth Grants; both the user and an administrator with the $ApiTokenAdmin role can revoke access there at any time.
TAS 5.19.12 does not distinguish OAuth access scopes. A token or client always has the full permissions of the user it represents – design the integration based on which user (or system user) you connect to it, not on an assumed scope of permissions.
Rotation and revocation
| What you rotate | How |
|---|---|
| API token | Generate a new one in API Access and revoke the old one with the Revoke action. Revocation is immediate and irreversible. |
| Confidential client's Client secret | The administrator uses the Generate new Client secret action on the client – the old one stops working immediately, so enter the new value in the integration right away. |
| Public client access | The user or administrator removes the grant in API Access › OAuth Grants; the application must request consent again. |
A detailed description of the screens and roles can be found in the API Access article; secure storage of the Client secret or API key on your integration's side (if it resides in TAS, e.g. in a calculation script) is described in the Vault article.
The
/oauth/authorize, /oauth/token, /oauth/revoke endpoints and client registration accept at most 60 requests per minute from a single IP address. When the limit is exceeded, TAS responds with a "too many requests" error – adjust any integration that refreshes tokens too often so that it uses a token until it expires.Related: API Access, REST API: Authentication and Basic Calls, MCP Server, Vault.