Skip to content
Docs
Concept

A kiosk

A kiosk is unattended, so it holds a device JWT rather than a person's credential, and it is physically exposed, so it gets the narrowest ceiling on the platform: sell, print, and never hold a customer session.

A kiosk in the lobby sells and prints with nobody standing at it. There is no named human, so a person's credential is wrong; there is a machine, so a device credential is right. It is also physically exposed, which argues for the narrowest ceiling of any caller.

The credential. A device JWT (high trust) obtained by pairing the kiosk through the devices API. It names the organisation but not a channel, so every selling request carries X-Ticketlayer-Channel: <kiosk slug>. A kiosk that is simply a browser uses the low-trust surface under a publishable key instead, as a buyer on your website would. A customer token, if a buyer signs in on the screen, is short-lived and never kept.

A kiosk in the lobby: an unattended device with the narrowest ceilingPair: Paired through the devices API and holding a device JWT. Unattended, so there is no named human; physically exposed, so the ceiling is the narrowest on the platform.. 1 List what is on sale: Kiosk (device) to Backstage API: GET /events (device JWT, X-Ticketlayer-Channel: kiosk); A kiosk that is a browser uses the low-trust surface under a publishable key instead.. 2 Make an order: Kiosk (device) to Backstage API: POST /cart, items, POST /cart/{id}/checkout (device JWT, X-Ticketlayer-Channel: kiosk); Kiosk (device) to Terminal (Stagehand): take payment: cash or card (Local Control Token); Terminal (Stagehand) to Kiosk (device): paid; Kiosk (device) to Backstage API: POST /orders/{id}/payments (device JWT). 3 Authenticate a customer: A magic link on the screen, or not at all. A kiosk never holds a long-lived customer session.. 4 Read the order back: Kiosk (device) to Backstage API: POST /orders/{id}/passes/{passId}/print (device JWT); Print it. A kiosk has no business listing anyone's orders.Pair1 List what is on sale2 Make an order3 Authenticate a customer4 Read the order backKiosk (device)Backstage APITerminal (Stagehand)Paired through the devices API and holding a device JWT. Unattended, so there isno named human; physically exposed, so the ceiling is the narrowest on the platform.A kiosk that is a browser uses the low-trust surface under a publishable key instead.A magic link on the screen, or not at all.A kiosk never holds a long-lived customer session.Print it. A kiosk has no business listing anyone's orders.GET /eventsdevice JWTX-Ticketlayer-Channel: kioskPOST /cart, items, POST /cart/{id}/checkoutdevice JWTX-Ticketlayer-Channel: kiosktake payment: cash or cardLocal Control TokenpaidPOST /orders/{id}/paymentsdevice JWTPOST /orders/{id}/passes/{passId}/printdevice JWTHigh trust: staff, organisation key, deviceWhere the channel comes fromNot a credential

The four moments#

MomentWhat happensCredential
List what is on saleGET /events with the kiosk channel in the header.device JWT plus X-Ticketlayer-Channel
Make an orderPOST /cart with the channel header, items, POST /cart/{id}/checkout. Cash and card are the terminal's business, driven through Stagehand under its Local Control Token; then POST /orders/{id}/payments.device JWT plus X-Ticketlayer-Channel
Authenticate a customerA magic link on the screen, or not at all. A kiosk never holds a long-lived customer session.device JWT; a customer token only for the one transaction
Read the order backPrint it: POST /orders/{id}/passes/{passId}/print. A kiosk has no business listing anyone's orders.device JWT

The narrowest ceiling#

  • Pairing is the credential's whole life. A staff member claims and confirms the pairing, the device receives its credential, and a revoked device stops at the next request. The kiosk never holds a password, a staff token or an organisation API key.
  • The channel header is required, not optional. The device's selling permissions are held at channel scope, so a request without X-Ticketlayer-Channel is a 400 and one naming a channel the device has no access to is a 403. A kiosk cannot fall through to the organisation-wide view of events.
  • No customer session outlives the sale. A buyer who signs in by magic link on the screen gets their order printed; the customer token is not kept, and there is no account page.
  • The hardware is Stagehand's. The printer, the cash drawer and the payment terminal are peripherals of a paired relay on the same LAN, reached over its local HTTPS server under a Local Control Token. That token drives hardware; it reaches nothing on the API.

The scanning side of the same devices model - manifests, scan operations, redemptions - is under Set up a box office.