Ticket entry and validation
In the Ticket Entry and Validation area, webhooks are used to notify external systems in real time about all relevant events related to ticket validation and access control. This enables connected applications to immediately react—for example, to trigger logging, perform security checks, or start follow-up processes.
A central example is the aserv.[*]granted event, which is triggered once an entry action has been successfully validated and granted. Similarly, aserv.[*]denied events are triggered when an action is rejected. This ensures that third-party applications are always kept up to date without requiring polling or manual queries.
Ticket validation is the core process of the entry flow. Once a ticket has been checked, the system triggers the appropriate event:
-
granted events → when an action is successful
-
denied events → when an action is rejected
Granted Events
When a process completes successfully, the corresponding granted event is triggered. This allows external systems to ensure that all downstream processes (e.g., visitor tracking, CRM updates, or security logs) are executed consistently and in real time.
Supported Granted Events
-
aserv.entryGranted– Entry granted -
aserv.exitGranted– Exit granted -
aserv.blockGranted– Block successfully applied -
aserv.unblockGranted– Block successfully removed -
aserv.badgePrintGranted– Badge print granted -
aserv.badgeReprintGranted– Badge reprint granted -
aserv.customAction1Granted– Custom action 1 granted -
aserv.customAction2Granted– Custom action 2 granted -
aserv.customAction3Granted– Custom action 3 granted -
aserv.customAction4Granted– Custom action 4 granted -
aserv.customAction5Granted– Custom action 5 granted -
aserv.getHistory– Retrieve event history
Typical Use Cases:
-
A visitor scans their ticket (barcode/QR code) at an entry terminal.
-
The system validates the ticket (authorization, validity period, blocks).
-
Entry is granted (
code: 0,message: "OK"). -
The system triggers the
aserv.entryGrantedevent and sends the webhook to all registered endpoints. -
Receiving systems can process the entry data — e.g., update visitor counts, create CRM entries, or write security logs.
Trigger Condition
- The
aserv.entryGrantedevent is triggered when a ticket is scanned at an access control point and the entry validation is successful (Entry Granted).
Webhook payload sample for a granted entry
Fields in Detail
response – Result of the Entry Validation
Contains the system's decision regarding the entry request.
| Field | Type | Description | Example Value |
|---|---|---|---|
code | integer | Return code of the entry validation. 0 means "successful". Other values indicate errors or rejections. | 0 |
message | string | Human-readable status message describing the result of the validation. | OK. |
executePrint | boolean | Indicates whether a print action (e.g., badge printing) should be triggered as part of this entry event. true = print should be executed. | true |
timestamp | string (ISO‑8601) | Timestamp at which the system made the entry decision. | 2026-06-02T14:14:24.183978+02:00 |
request – Entry Request (Scan)
Details of the actual scan operation at the terminal.
| Field | Type | Description | Example Value |
|---|---|---|---|
timestamp | string (ISO‑8601) | Timestamp at which the barcode was scanned at the terminal. | 2026-06-02T14:14:24.154+02:00 |
barcode | string | Full content of the scanned barcode/QR code. May contain encrypted ticket data or a plain ticket number. | 6864686510000178 |
messageId | integer | Internal, sequential message ID for associating the request within the system. | 385992265 |
messageGuid | string (UUID) | Unique GUID of the scan request. Used for deduplication and traceability. | 8540754c-f01f-43f9-9f7d-c9c5ba0db6ba |
barcodeType | string | Detected type of the barcode (e.g., aztec, qrcode, Unknown). Unknown means the type could not be automatically determined. | Unknown |
isOnline | boolean | Indicates whether the scan was performed in online mode (true) or offline mode (false). In offline mode, validation is performed locally. | true |
command | string | The executed command. Possible values: entry, exit, block, unblock, badgePrint, badgeReprint, customAction1–customAction5. | entry |
isTest | boolean | Indicates whether this is a test scan (true) or a production scan (false). | false |
user | string | Email address of the user who initiated the scan at the terminal. | msv-admin@aditus.de |
faireventId | string | Internal ID of the event to which the scan belongs. | 203 |
terminalId | string | ID of the terminal at which the scan was performed. | 6960 |
fairevent – Event Information
Information about the fair/event in whose context the entry takes place.
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal numeric ID of the event. | 203 |
uniqueId | string (UUID) | Global, unique UUID of the event. Used for cross-system referencing. | 7caf52f9-87ef-f011-93e3-00155d960409 |
name | string | Name of the event. | Rdr baut nur ... |
year | string | Year of the event. | 2026 |
externalId1 | string | First external reference ID (e.g., SAP or Salesforce ID). Enables mapping to third-party systems. | test-id-1 |
externalId2 | string | Second external reference ID. May be empty. | Rdr26 |
externalId3 | string | Third external reference ID. May be empty. | test-id-3 |
terminal – Access Terminal
Information about the terminal at which the scan was performed.
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal ID of the terminal. | 112 |
number | string | Terminal number for identification in on-site operations. | 6960 |
description | string | Human-readable description of the terminal, typically including location and status information. | POS-0112 @ Salzburg — standby |
device – Device (within terminal)
Details about the physical device deployed at the terminal.
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal device ID. | 133 |
number | string | Device number. | 50 |
dataObjectType | string | Type of the device in the system. Possible values: Framework.MobileScanners, Framework.Speedys, etc. | Framework.Speedys |
identifier | string | Unique hardware identifier of the device (e.g., MAC address, serial number, or Android ID). | C4:C6:E6:98:57:78 |
article – Ticket Article
Information about the article (ticket type) underlying the scanned ticket.
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal article ID. | 2989 |
uniqueId | string (UUID) | Global UUID of the article. | e0538711-89ef-f011-93e3-00155d960409 |
name | string | Short name of the article. | Rdr baut nur Mist |
type | string | Article type. Typical values: Ticket, Badge, Product. | Ticket |
number | string | Article number. | 865 |
ticketType | string | Specific ticket type. Possible values: VisitorTicket, ExhibitorTicket, PressTicket, etc. | VisitorTicket |
badgeCategory | string | Badge category assigned to this article. Used for visual differentiation and access control rules. Typical values: VISITOR, EXHIBITOR, PRESS, VIP. | VISITOR |
externalId1 | string | First external article reference (e.g., product ID in an ERP system). | test-id-1 |
externalId2 | string | Second external reference. May be empty. | test-id-2 |
externalId3 | string | Third external reference. May be empty. | test-id-3 |
ticket – Ticket Information
Information about the specific ticket that was scanned.
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal ticket ID. | 6767905 |
uniqueId | string (UUID) | Global UUID of the ticket. Used for cross-system referencing. | 0b5a81fe-89ef-f011-93e3-00155d960409 |
ticketNumberFull | string | Full ticket number (e.g., as printed on the ticket or encoded in the barcode). | 6864686510000178 |
owner – Ticket Owner (within ticket)
The person to whom the ticket belongs (registration data).
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal ID of the ticket owner. | 287 |
uniqueId | string (UUID) | Global UUID of the ticket owner. | 189a84a8-7bf4-ed11-93c6-00155d960409 |
firstName | string | First name of the ticket owner. | Maxime |
lastName | string | Last name of the ticket owner. | Musterlicher |
nationalityLookup | string | Nationality as ISO country code (e.g., DE, US, FR). | DE |
spokenLanguage | string | Preferred language as ISO language code (e.g., de, en). | de |
company | string | Company/organization of the ticket owner. | Muster GmbH |
jobTitle | string | Job title/position of the ticket owner. | Schuldner |
salutationLookup | string | Salutation (e.g., Herr, Frau, Divers). | Frau |
partyNo | string | Unique participant number of the ticket owner in the CRM system. | OB0000204 |
user – Ticket User (within ticket)
The user who uses the ticket (may differ from the owner, e.g., for transferred tickets).
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal user ID. | 146 |
uniqueId | string (UUID) | Global UUID of the user. | 132d086b-c7e8-ed11-93c4-00155db54d03 |
name | string | Username (typically the email address). | l.rueder@aditus.de |
email | string | Email address of the user. | l.rueder@aditus.de |
lastName | string | Last name of the user. | Musterlicher |
firstName | string | First name of the user. | Maxime |
externalId3 | string | Third external user reference. May be empty. | 132d086b-c7e8-ed11-93c4-00155db54d03 |
user – System User (Top-Level)
The user who physically performed the scan at the terminal (e.g., security personnel or an automated device account).
| Field | Type | Description | Example Value |
|---|---|---|---|
id | integer | Internal user ID of the scan operator. | 8842 |
uniqueId | string (UUID) | Global UUID of the scan operator. | 08f984a1-808c-ef11-93d8-00155d96040a |
name | string | Username of the scan operator. | msv-admin@aditus.de |
email | string | Email address of the scan operator. | msv-admin@aditus.de |
Note on Additional Events
The same payload structure applies analogously to all other Granted events in the Ticket Entry and Validation area. Only the value of the event field and the command value in request change:
| Event | command Value | Description |
|---|---|---|
aserv.entryGranted | entry | Entry successfully granted |
aserv.exitGranted | exit | Exit successfully granted |
aserv.blockGranted | block | Block successfully applied |
aserv.unblockGranted | unblock | Block successfully removed |
aserv.badgePrintGranted | badgePrint | Badge print successfully granted |
aserv.badgeReprintGranted | badgeReprint | Badge reprint successfully granted |
aserv.customAction1Granted – customAction5Granted | customAction1–customAction5 | Custom action 1–5 successfully executed |
Denied Events
When an action is rejected, the system triggers the corresponding denied event. This allows security mechanisms, monitoring systems, or user feedback processes to be executed immediately and reliably.
For Denied events (e.g., aserv.entryDenied), the response object contains a code ≠ 0 and a corresponding error message in the message field.
Supported Denied Events
-
aserv.entryDenied– Entry denied -
aserv.exitDenied– Exit denied -
aserv.blockDenied– Block operation failed -
aserv.unblockDenied– Unblock operation failed -
aserv.badgePrintDenied– Badge print denied -
aserv.badgeReprintDenied– Badge reprint denied -
aserv.customAction1Denied– Custom action 1 denied -
aserv.customAction2Denied– Custom action 2 denied -
aserv.customAction3Denied– Custom action 3 denied -
aserv.customAction4Denied– Custom action 4 denied -
aserv.customAction5Denied– Custom action 5 denied
Webhook payload sample for a denied entry
Depending on the reason for the denial, not all data is available in the response.
Note on Additional Denied Events
The same payload structure applies analogously to all other Denied events. Only the value of the event field and the command value in request change:
| Event | command Value | Description |
|---|---|---|
aserv.entryDenied | entry | Entry denied |
aserv.exitDenied | exit | Exit denied |
aserv.blockDenied | block | Block operation failed |
aserv.unblockDenied | unblock | Unblock operation failed |
aserv.badgePrintDenied | badgePrint | Badge print denied |
aserv.badgeReprintDenied | badgeReprint | Badge reprint denied |
aserv.customAction1Denied – customAction5Denied | customAction1–customAction5 | Custom action 1–5 denied |
Key Differences from Granted Events
| Aspect | Granted Events | Denied Events |
|---|---|---|
response.code | Always 0 | Always ≠ 0 (specific denial reason) |
response.message | OK. | Describes the denial reason (e.g., Ticket already used.) |
response.executePrint | May be true or false | Typically absent (no print on denial) |
| Data completeness | All objects are always present | Some objects may be absent depending on the denial reason |
| Typical consumers | Visitor tracking, CRM, logging | Security alerts, monitoring, fraud detection, audit logs |