Entry Management

How to integrate your tools to provide entry management both performative and clean.

With the steps below, you will be able to build an entry focused integration with your turnstiles, mobile app or any other entry management channel. All the steps described below requires a user token/jwt in order to be able to execute the requests. So, if you want to know how to implement the authentication flow, please take a look at the Ingresse Login tutorial.

πŸ“˜

This tutorial includes requests from both versions of our API 1 and 2.

1. Events List

One of the first steps is to retrieve the event available for you for check-in/check-out. For that, we have an API specific to retrieve the events available to you: Search by Producer (v2).

curl -X GET \
  https://api.ingresse.com/v2/events/search/producer \
  -H 'Authorization: Bearer {{token}}' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache'

This is an important request because it will provide you the event ID and session IDs that will be required for your next requests. In the response example below, we isolated the attributes that you are going to use in order to help you to find them:

{
  "data": {
    "hits": [
      {
        "_source": {
          [...]
          "id": 28180, 
          "sessions": [
            {
              "dateTime": "2019-02-21T20:00:00+00:00", 
              "id": 43058, 
              "status": "available"
            }, 
            {
              "dateTime": "2019-04-05T20:00:00+00:00", 
              "id": 43059, 
              "status": "available"
            }
          ],
          [...]
          "title": "Jantar no Escuro, por Andr\u00e9 Vanconcelos e Helen Puterman"
        }
      }
    ], 
    "total": 1
  }
}

2. Guest List

The next step is to retrieve all the available codes and store them into your local application, so you can read the QR codes even when there is no connectivity available. To retrieve all the available codes you can use the Guest List API.

🚧

Offline tolerant applications

It is very important that your entry application works in offline environments after the first sync. In many situations, the connectivity signals at event venues are not performing well and that is why all your internet-related tasks must be synced when possible.

curl -X GET \
  'https://api.ingresse.com/event/{{EVENT_ID}}/guestlist?publickey={{PUBLIC_KEY}}&usertoken={{USERTOKEN}}&sessionid={{SESSION_ID}}&pageSize=1500' \
  -H 'Accept-Encoding: compress' \
  -H 'cache-control: no-cache'

It is a paginated request and we recommend you to sync with a page size of 1500. The attribute that carries the content of our QR code is the attribute code.

It is important for you to notice that we will give all the codes, even the codes that were not sold yet. We do that because if your ticket booth is open, and you are out of connectivity, the codes will be validated anyway.

3. Update a Ticket Status

After you finish your first sync it is time to read some tickets. At Ingresse you can Update Ticket Status up to 20 ticket codes at the same time.

We recommend you to online check-in every ticket right after reading it, so you can make sure that any other device didn't read it before. But, in case you are out of connectivity, we recommend you to send you ticket status updates in batches as soon as you get back online.

curl -X POST \
  'https://api.ingresse.com/event/{{EVENT_ID}}/guestlist?method=updatestatus&publickey={{API_KEY}}&usertoken={{USER_TOKEN}}' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
  "tickets": [
		{
			"ticketTimestamp": "1539723836000",
			"ticketStatus": "1",
			"ticketCode": "05.1803.?000082?.275109.20",
			"sessionId": "26190"
		}
  ]
}'

At Ingresse you can always check out your ticket, by updating the attribute ticketStatus to 0 (zero). Every check-in and checkout you request for a ticket is stored in the ticket history.

In the return for each ticket, a property status will tell you whether you request as accepted or not. For a full list of possible answers, please, take a look at Update Ticket Status glossary section.

4. Keep Syncing

The same reason you must always send yous check-ins to Ingresse, we recommend you to pull the last ticket codes updates. The Guest List API provides you a light way to do that by sending the parameter 'from' with your last sync Unix timestamp in milliseconds.

curl -X GET \
  'https://api.ingresse.com/event/{{EVENT_ID}}/guestlist?publickey={{API_KEY}}&usertoken={{USER_TOKEN}}&sessionid={{SESSION_ID}}&from={{UNIX_TIMESTAMP_FROM_LAST_SYNC}}&pageSize=1500' \
  -H 'Accept-Encoding: compress' \
  -H 'cache-control: no-cache'

If you did everything right, the entry report in the Backstage app must be fulfilled with all the information that your event producer needs.

Refunded tickets

In the case of refunded tickets, the code attribute will be updated. You can update the code by using the ticket id attribute.

πŸ‘

External Tickets

Ingresse is an event technology company and because of that, we work every day to make our tools available to other ticket companies too.

The entry management is available to any other ticketing company by importing their codes with the External Tickets import API. All methods discussed here are fully compatible with external tickets.