Getting Started with DeskDirector
DeskDirector Portals
Browser Support
What is the DeskDirector Admin Portal?
What is the DeskDirector Tech Portal
What is the DeskDirector Client Portal?
Desktop Portal
Managing Your Account
Admin Essentials
DeskDirector Features Overview
Logging in to DeskDirector
User Profiles & Profile Pictures
Managing Tickets with DeskDirector
Office Hours
Getting Started with the Solution Library
How Searching Works
Embedding Help Page Media
Get started with the DeskDirector Power Automate Connector
Features
Portal Customization
Forms
Service Catalogue
Communication
Email Connectors
Notifications
Email Notifications
Actionable Messages for Emails
Real-Time Chats
Email Template Engine
Surveys
Broadcasts
Generative AI
DeskDirector with Generative AI
Ticket Summary for TECH Portal
Setting up AI Service Providers
Microsoft Foundry for DeskDirector
Knowledge Bases for AI Assistants
Custom Tools for AI Assistants
AI Assistants in DeskDirector
Advanced
Login & Authentication
Contact Groups
Custom Domains
File Storage
Dashboard
Accounts
Contacts
Approvals
Tags
Task Lists
The Learning Center
Portal Deep Linking
Auditing & Analytics
Microsoft Power Automate
Actions
Solutions
Featured Solution: Teams Ticket Discussion
Power Automate Template Gallery
Featured Solution: Ticket Briefing
Power Automate Administration
DeskDirector Power Platform Connector Reference
Power Automate Connector - Setting up your first flow
Microsoft Teams App
Introducing the DeskDirector for Microsoft Team App
Installing the Microsoft Teams App (Client Mode)
Installing the Microsoft Teams App (TECH Mode)
Setting up Tags for Teams Discussions (TECH Portal)
Branding the DeskDirector Teams App
DeskDirector Teams App Notifications
Contact Groups Integration with Microsoft Teams
Setting up Content Security Policy (CSP)
Advanced topic: Setting up Tech & Client Mode in the same tenancy
Integrating Microsoft Teams with DeskDirector Tech Portal
Smart Alerts for TECH Users
Integrations
Developer Resources
Getting Started
What is the Toki Iti API
API Versions & Routes
Roles & Scopes
Authorization Options
Querying the API
How to Change an Entity Through the API
API Key Authorization
OAuth Fundamentals
Understanding OAuth for Tokity Integrations: Key Concepts
OAuth Authorization Code Flow: How an App Gets Access to Tokity
OAuth App Registration
How to Register an OAuth App to Integrate with Tokity
Choosing an OAuth App Type: Confidential vs. Public Apps and Client Secrets
OAuth Personal Secrets: What They Are and When to Use Them
OAuth Administration
Configuring OAuth Settings in Tokity
Managing OAuth Authorized Sessions and User Consent
Granting OAuth Admin Consent at the Root Level
API Response Control
Uploading Attachments (Ticket API)
The Prefer Header — Overview
Controlling Returned Data (Ticket API)
Controlling Returned Data (Form Result API)
Controlling Returned Data (Workspace API)
Workspace Ordering
How Workspace Ordering Works
Creating and Reordering Workspace Groups
Adding and Reordering Tickets in a Workspace Group
Data Sync & Notifications
Delta API: Tracking Changes Over Time
Webhooks vs. Events — Differences, When to Use Which
Verifying Webhook and Event Payloads (HMAC Signature)
Ticket Widgets
Ticket Widget: Overview
How the Widget Is Requested
Ticket Widget Anatomy and Styling
Ticket Widget Actions: Leading, Secondary and Primary
Ticket Widget: Progress Type
Ticket Widget: List Type
Ticket Widget: Description Type
Ticket Widget: Form Type
Ticket Widget: Control When a Widget Refreshes
Ticket Widget: Form Results and State Across Steps
Ticket Widget: Error Responses and Debugging
Ticket Widget: Building a Multi-Step Request
Glossary
Security
Troubleshooting
Troubleshooting via Web Developer Tools
Permissions & Access - Common Issues
Contact DeskDirector Support
Troubleshooting DeskDirector Connection Issues
Desktop Portal - Common Issues
Contact Impersonation
Approvals - Common Issues
Microsoft Teams App - Common Issues
Email & Email Delivery - Common Issues
Login & Authentication - Common Issues
DeskDirector Desktop App - Installation Issues
- All Categories
- Developer Resources
- Data Sync & Notifications
- Delta API: Tracking Changes Over Time
Delta API: Tracking Changes Over Time
Updated
by Helpdocs Admin
The Delta API lets you keep a local copy of a collection in sync with Tokity by repeatedly polling for what's changed, rather than fetching the entire collection every time. It's the recommended approach when you need to synchronize a whole collection or stay notified of the latest changes to one.
Supported Entities
Delta queries are currently available for:
- Accounts
- Contacts
- Agents (users)
- Tickets
- Ticket comments
- Ticket activities
- Ticket time entries
- Forms
- Form results
We'll expose delta query support for additional collections over time, based on customer demand.
Delta Query vs. Webhooks: Which One Should You Use?
Tokity offers both webhooks and delta queries, and they're built for different jobs.
Use webhooks when you need to automate something. Webhooks push events to you in real time, so they're ideal for triggering actions as soon as something happens.
Use delta queries when you need to detect changes reliably or keep data in sync. Delta queries guarantee you'll eventually see every change — even ones you might otherwise miss.
The trade-offs between the two:
Webhooks | Delta Query | |
Timing | Real-time, event-by-event | Periodic snapshots |
Completeness | Captures every individual event, even rapid ones (e.g., a ticket closed and reopened within seconds) | Only shows the latest state since your last check — intermediate changes in between aren't visible |
Reliability | Can be missed if your system is down, unless you've built in retries — and even then, retry logic is costly and rare (mostly seen in payment systems) | Very hard to miss changes — if your instance restarts or has an outage, you can simply resume where you left off |
Best for | Automation, real-time triggers | Synchronization, change detection |
In short: webhooks tell you everything that happened, but can be lost. Delta queries can't tell you the full story of what happened, but they guarantee you'll never lose the current state.
How Delta Query Works
Starting a Delta Query
To begin, call the delta query endpoint for the collection you want, optionally including a startTime:
- Without
startTime— the API walks through the entire collection, treating every item as a "change." - With
startTime— the API only returns items changed since that point in time.
Paging Through Results
You can't control page size directly — no skip or take parameters here. Instead:
- The server returns a batch of changed items.
- If more results are available, the response includes a
skipToken. - Call the same endpoint again, passing that
skipToken, to fetch the next batch. - Repeat until there's no
skipTokenleft in the response — at that point, you've caught up with all current changes.
Staying in Sync Going Forward
Once you've retrieved everything, the final response includes:
deltaToken— a marker representing your current sync positionretryAfter— how long to wait before checking again
Save both values. When retryAfter has elapsed, call the API again with your saved deltaToken to pick up only what's changed since your last sync.
retryAfter has passed, the server will simply tell you to wait — this protects the system from excessive polling.Handling Deleted Items
Every entity available through the Delta API supports soft delete. When an item has been removed, its response includes a deletedAt property.
If you're synchronizing data locally:
- Treat any item with
deletedAtset as removed in your own system. - You can still choose to keep a local copy for reference — just remember that archived items can't be modified again unless they're restored first.
A Note on Hard Deletes
A small number of entities — like tickets — can be permanently (hard) deleted in some cases. When this happens, you will not receive any notification through the Delta API. If your integration depends on knowing about every removal, keep this limitation in mind.
Summary
- Use delta queries for synchronization and reliable change detection; use webhooks for real-time automation.
- Start with an optional
startTime, page through results usingskipToken, and store the finaldeltaTokenandretryAfterfor your next sync. - Respect
retryAfter— polling too soon will just get rejected. - Watch for
deletedAtto detect soft-deleted items, and be aware that hard deletes are silent.