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
- API Response Control
- Controlling Returned Data (Form Result API)
Controlling Returned Data (Form Result API)
Updated
by Helpdocs Admin
Background: how Tokity forms work
Tokity's dynamic forms work similarly to Microsoft Forms or Google Forms. A form's definition is a JSON payload made up of fields, where each field includes:
- A field type
- A field name (the question)
- A field description (Markdown)
- Conditions controlling when the field should be displayed — for example, a field might only appear if a previous choice-based question was answered a certain way.
Because fields can depend on each other, a submitted form result isn't necessarily a simple flat list of "every field with its answer" — some fields may have been filled in, then later hidden because an earlier answer changed. The form-result Prefer option controls how the API handles this.
The Prefer header options
Directive | Values | Default | Purpose |
|
|
| Controls the format of each field's description. |
|
|
| Controls which fields are included in a form result response. |
content-type
Determines whether each field's description is returned as Markdown or pre-rendered HTML. This uses the same values as the content-type option on the Ticket and Workspace APIs, but here it applies specifically to field descriptions rather than ticket notes or workspace notes.
form-result
default Returns every field exactly as it was at the time of submission — including the form's structure and conditions as they existed then. If the form definition has since changed, that's not reflected here; the result is a snapshot of the submission.
Because conditions are frozen at submission time, it's possible for a field to have a recorded answer even though, by the current condition logic, it shouldn't be visible. This can happen when a contact fills in a field, then later changes an earlier answer that the field depends on — the dependent field becomes hidden going forward, but its previously submitted answer is still stored. With default, your UI or logic needs to resolve this yourself by evaluating the submitted result against its conditions.
can_display_only Resolves this for you: it only returns fields that would actually be visible, once all conditions have been evaluated against the submitted answers. Any field that ended up hidden by a later answer change is excluded — you don't need to re-evaluate conditions yourself.
has_answer_only Goes a step further than can_display_only — in addition to only including displayable fields, it also drops any optional field that has no answer. This gives you the minimal representation of what the contact actually submitted, excluding both hidden fields and empty optional ones.
Choosing the right option
- Use
defaultif you need the full historical record of a submission, including fields that are no longer valid under current conditions — useful for auditing or reconstructing exactly what happened at submission time. - Use
can_display_onlyif you want the form result as it should be shown today, without hidden/stale fields, but still want to see optional fields even if left blank. - Use
has_answer_onlyif you only care about what the contact actually filled in — the leanest, most minimal view of the result.