Skip to content

Business Intelligence

A read-only OData v4 feed that hands you your complete ticketing history as four analysis-ready datasets, built to bulk-load into your own data warehouse.

Standard OData v4 over HTTPS, which means Power BI, Tableau, Azure Data Factory and Fivetran connect to it natively — no custom client, no SDK. Four datasets, $select and $filter for shaping, keyset paging for the walk, OAuth 2.0 client credentials for access. Read-only throughout.

If that paragraph already told you what you needed, go straight to Getting started.

What you can finally answer

None of these are reports we render for you. You get the underlying rows and answer them in your own tools, at whatever depth your business needs.

  • How many people actually came? Tickets sold and people admitted are different numbers, and the gap is often the most interesting figure of the event.
  • Which campaign actually sold? Every sale carries its UTM parameters, so attribution stops being guesswork.
  • What did each exhibitor do with their quota? How many invitations they handed out, how many were redeemed, and by whom.
  • Which visitor segments grew or shrank year over year? Article, statistics group and legitimation, across editions.
  • When is each entrance busy? Every scan is timestamped and carries its entrance and terminal, so queueing and staffing become measurable.
  • What did your visitors tell you, and who were they? Survey answers join back to the ticket, so answers can be segmented by anything the ticket knows.
  • What is a visitor worth? Gross and net revenue per ticket, per article, per channel, per event.

Recipes turns each of these into a concrete query.

How it works: extract, then analyse

This is an extraction endpoint, not a query engine. The intended pattern is ELT: pull the four datasets on a schedule, land them in your warehouse or lakehouse, and do the modelling, joining and aggregating there — with your own definitions, your own history, and joined to whatever else your business already knows about these people.

That is a deliberate division of labour. We know the ticketing domain; you know what your business wants to measure. Handing you flat, complete, documented rows lets you answer questions we never anticipated, without waiting for us to build a report.

A full extract of a mid-sized event tenant — around 196,000 tickets — takes about 47 seconds. Nightly loads are comfortable; hourly ones are fine too.

What it is not

  • Not a reporting API. No aggregates, no $apply, no server-side grouping. Sums and counts happen in your warehouse.
  • Not a lookup API. No endpoint returns one ticket by id, on purpose. Live single-record access during a transaction is what the operational APIs are for.
  • Not real-time. The datasets track the operational system closely, but this is a batch surface. See FAQ and support for what freshness to expect.
  • Not browser-callable. Machine-to-machine only, no CORS. Your credentials stay server-side.

Where this fits among the other modules

Every other module on this portal is part of selling and admitting: discovery, cart, checkout, registration, badge, scan. They write the story.

This one is the way back out. It hands you everything those modules produced, in a shape built for analysis rather than for transactions. Different audience, too — this is for your data and BI team, not for the developers integrating a checkout.

Service root

It lives on the same base URL as your other ADITUS APIs, under its own product prefix:

https://<your-api-host>/api/ticketinghub/odata/v1

In the requests below that is {{API_BASE_URL}}/ticketinghub — the same variable every other module on this portal uses, and it already carries the /api segment. Nothing separate to whitelist, no second host, no second certificate.

Most BI and ETL tools consume the feed without custom code — see Connecting your BI tool.

DatasetOne row isColumns
Ticketsone owned ticket, everything about it flattened on342
TicketUsagesone scan at an entrance119
StatisticGroupsone article-to-statistics-group assignment7
Surveysone selected option of one survey answer32

Alongside them: /odata/v1/$metadata, /swagger and /health, all under the same prefix.

Where to start

If you areStart at
New to our domainHow ticketing data works
Building the loaderGetting started, then Building the extract
Connecting Power BI, Tableau, ADF or FivetranConnecting your BI tool
Wondering what a status column can containDatasets → Column values
Looking for a specific numberRecipes
About to publish a figureGetting the numbers right

Assistant access (MCP)

The same service also answers questions directly over MCP, using the same credentials and the same data scoping — useful for ad-hoc questions where you want the answer rather than the dataset. Talk to us if you would like access.

Hints

Important: Read Getting the numbers right before you publish a figure to anyone. It is short, and it lists the things about this data that produce plausible-looking wrong numbers — several currencies in one column, test sales sitting in production data, and joins that multiply rows without telling you.

Subsections#sub

Getting startedFrom nothing to a loaded dataset. Four steps, roughly twenty minutes.How ticketing data worksOur domain, explained from the ground up. If you have not worked with trade-fair or event ticketing data before, this chapter is the difference between a…AuthenticationMachine-to-machine only, using OAuth 2.0 client_credentials against the customer system's IdentityServer. There is no interactive login path — this is a…QueryingWhat you can ask for, how to page through it, and what a full extract costs. Read Query options and Paging before your first load, and Performance and limits…Building the extractTurning the four steps of Getting started into a loader you can schedule and trust.Connecting your BI toolThe feed is standard OData v4, so most BI and ETL tools consume it without any custom code. Point the connector at the service root, give it a bearer token,…DatasetsWhat each of the four datasets contains, what exactly one row means, and how they join together.RecipesConcrete answers to the questions on the module's front page. Each one names the datasets, the filters and the aggregation — including the part that is easy…Getting the numbers rightThe short list of things about this data that produce plausible-looking wrong numbers. Everything here has been the cause of a real reporting error.Field referenceHow to get the complete, authoritative column list for each dataset.ErrorsWhat can come back, and what it usually means.FAQ and supportThe questions that come up after the first integration.Service endpointsThe non-data endpoints: the service document, the metadata document, and the health check. All three sit under the same api/ticketinghub prefix as the datasets.