Skip to main content

Listo Public API

This is the Listo Public Screening API. It lets your management system receive screening session results from locations that use the Listo iPad app — in real time, and as a backfill API for any sessions you missed while offline.

Two delivery modes, one screening shape:

  • Push (real time): Listo publishes a CloudEvent to a dedicated Azure Service Bus queue provisioned for your organization. You receive each session within seconds of submission.
  • Pull (Sessions API): A small REST API, GET /v1/tenants/{tenantId}/screenings, returns the same screenings in time-range pages, scoped to one tenant per call. Use it to catch up after planned downtime, to re-process sessions, or to seed historical state.

I want to…

Receive events from Service Bus

Connect a long-running consumer to the queue we provision for your organization. Every completed screening arrives as a CloudEvent with the full session payload in the body.

Backfill missed events with the Sessions API

Call GET /v1/tenants/{tenantId}/screenings?from=…&to=… with an OAuth bearer token to page through historical screenings for one tenant at a time. The screening data is the same on both transports; Service Bus wraps it in a CloudEvent envelope, while the Sessions API returns it directly. Add a small wrapper if you want unified handling.

Conventions

  • All timestamps are RFC 3339 date-times. testTime and emailSentDateTime preserve the offset they were recorded with (matching the underlying datetimeoffset storage), e.g. 2026-05-08T11:25:33+02:00. birthday is emitted at midnight UTC.
  • All IDs are either UUIDs (e.g. tenantId) or integers (the session id).
  • All payloads are application/json and use camelCase field names.
  • All breaking changes ship under a new URL version (/v1/v2) and a new CloudEvents type suffix (...completed.v1...completed.v2). New optional fields may appear within a major version without a bump — see Versioning & compatibility.

Ready? Start with the overview →