Access Control API

Guest List API

Recupera a lista de convidados de uma sessão de evento. Aceita múltiplos filtros de busca e paginação por cursor.

GET/v1/events/:event_id/sessions/:session_id/guestlist

Headers obrigatórios

ParâmetroTipoDescrição
AuthorizationObrigatório
Bearer {token}Token de acesso OAuth.

Parâmetros de URL

Todos são obrigatórios.

ParâmetroTipo
event_id
string (UUID)
session_id
string (UUID)

Parâmetros de query

Todos os parâmetros de busca são opcionais. Sem nenhum filtro, a requisição retorna a primeira página da lista completa da sessão.
ParâmetroTipoDescrição
user_id
string (UUID)Filtra pelo usuário.
document
stringDocumento do titular (ex.: CPF).
email
stringE-mail do titular.
code
stringCódigo de acesso.
size
intItens por página. Padrão 100, máximo 1000.
cursor
stringCursor da próxima página (pagination.next).
status
stringactive | cancelled | refunded
transferred
booleanFiltra códigos transferidos. Exige user_id na mesma requisição.
updated_after
string (RFC3339)Atualizados após a data.
updated_before
string (RFC3339)Atualizados antes da data.
created_after
string (RFC3339)Criados após a data.
created_before
string (RFC3339)Criados antes da data.
code_id
string (UUID)UUID do código.
ticket_id
string (UUID)UUID do ingresso.
order_id
string (UUID)UUID do pedido.
group_id
string (UUID)UUID do grupo de ingressos.
code_type
stringindividual | passport
entrance_method
stringface | qrcode
has_rfc
booleanPossui biometria (RFC).
related_type
stringTipo de entidade relacionada retornada em code. Padrão ticket; product seleciona os codes vinculados a produtos.

Exemplo de requisição

cURL · GET
curl -X GET \
"https://<ACCESS_CONTROL_PROD_HOST>/v1/events/:event_id/sessions/:session_id/guestlist\
?user_id=99999999-9999-4999-8999-999999999999\
&document=12345678900\
&email=cliente%40exemplo.com\
&code=ABC123DEF\
&size=100\
&cursor=eyJwYWdlIjoyfQ%3D%3D\
&status=active\
&transferred=true\
&updated_after=2025-10-01T00:00:00Z\
&updated_before=2025-10-27T23:59:59Z\
&created_after=2025-09-01T00:00:00Z\
&created_before=2025-10-15T23:59:59Z\
&code_id=11111111-1111-4111-8111-111111111111\
&ticket_id=22222222-2222-4222-8222-222222222222\
&order_id=33333333-3333-4333-8333-333333333333\
&group_id=44444444-4444-4444-8444-444444444444\
&code_type=individual\
&entrance_method=qrcode\
&related_type=ticket\
&has_rfc=true" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {token}"

Respostas

StatusDescrição
200OKLista retornada com sucesso. Um event_id/session_id inexistente também retorna 200, com data vazio — nunca 404.
400Bad RequestFiltro com valor inválido (data fora de RFC3339, size fora de 1–1000).
401UnauthorizedToken ausente ou inválido.
403ForbiddenSem permissão para o recurso.
429Too Many RequestsRate limit excedido (Retry-After).
500Internal Server ErrorErro interno do serviço.
502Bad GatewayDependência upstream indisponível. Um valor de enum inválido em algum filtro (ex.: status, entrance_method) também pode retornar 502.

Exemplo de resposta

JSON
{
  "data": [
    {
      "id": "a1b2c3d4-0000-0000-0000-000000000000",
      "code": "ABC123DEF",
      "external_id": "ext-9087",
      "type": "individual",
      "status": "active",
      "order_id": "33333333-3333-4333-8333-333333333333",
      "user_id": "99999999-9999-4999-8999-999999999999",
      "event_id": "88888888-8888-4888-8888-888888888888",
      "ticket_id": "22222222-2222-4222-8222-222222222222",
      "can_transfer": true,
      "in_resale": false,
      "owner_id": "77777777-7777-4777-8777-777777777777",
      "ownership": "owner",
      "user": {
        "id": "99999999-9999-4999-8999-999999999999",
        "external_id": "ext-user-42",
        "name": "Maria Silva",
        "document": "12345678900",
        "document_type": "cpf",
        "phone": "+5511999990000",
        "email": "[email protected]"
      },
      "owner": {
        "id": "77777777-7777-4777-8777-777777777777",
        "external_id": "ext-user-42",
        "name": "Maria Silva",
        "document": "12345678900",
        "document_type": "cpf",
        "phone": "+5511999990000",
        "email": "[email protected]"
      },
      "event": {
        "id": "95a447c4-0000-4000-8000-000000000001",
        "external_id": "88888888-8888-4888-8888-888888888888",
        "name": "Show de Verão",
        "description": "Edição 2025"
      },
      "ticket": {
        "id": "22222222-2222-4222-8222-222222222222",
        "external_id": "ext-tkt-1",
        "group_id": "44444444-4444-4444-8444-444444444444",
        "name": "Pista",
        "allotment": "lote-1",
        "price": 150.0,
        "transferable": "always",
        "holder_type": "user_only",
        "order": 1,
        "group": {
          "id": "44444444-4444-4444-8444-444444444444",
          "name": "Pista",
          "entrance_name": "Portão A",
          "entrance_method": "qrcode",
          "entrance_mapping": "gate-a"
        }
      },
      "product": {
        "id": "55555555-5555-4555-8555-555555555555",
        "external_id": "ext-prd-1",
        "service_id": "66666666-6666-4666-8666-666666666666",
        "name": "Combo Bebida",
        "description": "Combo com 2 bebidas",
        "sku": "SKU-001",
        "price": 2500,
        "image_url": "https://cdn.exemplo.com/p.png",
        "status": "active",
        "created_at": "2025-09-01T12:00:00Z",
        "updated_at": "2025-09-01T12:00:00Z"
      },
      "attributes": {
        "locale": "pt-BR",
        "rfc": "a1b2c3d4e5f6",
        "rfc_provider": "ugo"
      },
      "entrances": [
        { "id": "ent_1", "type": "checkin", "date": "2025-12-20T22:15:00Z" }
      ],
      "created_at": "2025-09-01T12:00:00Z",
      "updated_at": "2025-10-15T08:30:00Z"
    }
  ],
  "pagination": {
    "next": "eyJwYWdlIjoyfQ=="
  }
}

Paginação

Repasse o valor de pagination.next no parâmetro cursor para obter a próxima página; repita enquanto pagination.next vier na resposta — na última página o campo vem ausente, não null. Um cursor inválido é ignorado e devolve a primeira página, em vez de um erro.

Limites de uso

A API está sujeita a limites de uso não publicados; se receber 429, respeite o header Retry-After quando presente e retente com backoff.

Corpo de erro

Um 400 desta rota vem como { "data": { "code": "BAD_REQUEST", "message": "<mensagem>" } }. Um 401 emitido pelo API Gateway (fora do BFF) vem só como { "message": "Unauthorized" }, sem o envelope data.

Campos de resposta

Cada item de data representa um código de acesso. Os campos abaixo descrevem o objeto completo retornado.

Ambientes

Para alternar entre ambientes, troque apenas o host: use <ACCESS_CONTROL_PROD_HOST> em produção (fornecido junto com suas credenciais) e apigw-access-control.dev.ingresse.com em desenvolvimento.

Ingresso sem portador definido

Quando o code ainda não tem portador, os campos user, owner, owner_id, ownership, attributes e ticket.holder_type vêm ausentes (omitempty, não null e não vazios). Nesse caso can_transfer vem false e ticket.transferable vem "never". user_id é exceção: não é omitempty e vem como string vazia (""), não ausente. Isso é o caso comum, não a exceção — trate esses campos como condicionais.
ParâmetroTipoDescrição
id
string (UUID)UUID do código.
code
stringCódigo de acesso.
external_id
stringIdentificador externo.
type
stringindividual | passport
status
stringactive | cancelled | refunded
order_id
string (UUID)UUID do pedido.
user_id
string (UUID)UUID do usuário. Não é omitempty: quando não há portador, vem como string vazia (""), não ausente.
event_id
string (UUID)UUID do evento.
ticket_id
string (UUID)UUID do ingresso.
can_transfer
booleanIndica se pode ser transferido.
in_resale
booleanIndica se o code está em revenda. Sempre presente, sem omitempty.
owner_id
string (UUID)UUID do titular. Ausente quando não há portador (ver aviso acima).
ownership
stringowner | dependent | other
user
objectDados do usuário (ver abaixo).
owner
objectDados do titular (mesma estrutura de user).
event
objectDados do evento (ver abaixo).
ticket
objectDados do ingresso (ver abaixo).
product
objectProduto associado (ver abaixo).
attributes
objectAtributos adicionais (chave-valor). Ausente quando não há portador (ver aviso acima).
entrances
array | nullRegistros de entrada (ver abaixo). Vem null quando não há entrada registrada.
created_at
string (RFC3339)Data de criação.
updated_at
string (RFC3339)Data da última atualização.

Objeto user / owner

ParâmetroTipoDescrição
id
string (UUID)
external_id
string
name
string
document
string
document_type
stringPode vir vazio ("") quando o tipo não é conhecido.
phone
string
email
string

Objeto event

ParâmetroTipoDescrição
id
string (UUID)ID interno do evento — não é o UUID usado na URL da requisição.
external_id
string (UUID)UUID do evento — o mesmo valor usado como :event_id na URL.
name
string
description
stringOpcional, costuma vir ausente.

Objeto ticket

ParâmetroTipoDescrição
id
string (UUID)
external_id
string
group_id
string (UUID)
name
string
allotment
stringLote.
price
numberPreço em reais (ex.: 150.0). Diferente de product.price, que é em centavos.
transferable
stringalways | on_purchase | on_wallet | never
holder_type
stringdependent | user_only — ausente quando não há portador definido.
order
int
group
objectDados do grupo (ver abaixo).
event_dates
arrayDatas do evento. Este contrato não preenche o array — o campo vem ausente. As datas e os UUIDs de sessão são fornecidos pela Ingresse no onboarding.

Objeto ticket.group

ParâmetroTipo
id
string (UUID)
name
string
entrance_name
string
entrance_method
string
entrance_mapping
string

Objeto ticket.event_dates[]

ParâmetroTipo
id
string (UUID)
external_id
string
date
string (RFC3339)

Objeto product

ParâmetroTipoDescrição
id
string (UUID)
external_id
string
service_id
string (UUID)
name
string
description
string
sku
string
price
intPreço em centavos.
image_url
string
status
string
created_at
string (RFC3339)
updated_at
string (RFC3339)

Objeto attributes

Chave-valor livre; entre as chaves observadas em produção estão locale, rfc e rfc_provider.

Objeto entrances[]

O campo entrances no item pai vem null quando não há registro de entrada — não um array vazio.

ParâmetroTipoDescrição
id
string (UUID)
type
stringcheckin | checkout
date
string (RFC3339)

Objeto pagination

ParâmetroTipoDescrição
previous
string (ausente quando não há página)Cursor para a página anterior. Ausente na primeira página (nunca null).
next
string (ausente quando não há página)Cursor para a próxima página. Ausente na última página (nunca null).

Outras rotas

Rotas irmãs no mesmo BFF, úteis ao integrar com a Guest List:

ParâmetroTipoDescrição
GET /v1/events/{eventId}
No momento devolve um objeto vazio (medido em 03/09). Os UUIDs de sessão (:session_id) vêm da própria Ingresse, não desta rota.
GET /v1/events/{eventId}/guestlist
Variante da Guest List sem filtrar por sessão.
GET /v1/events/{eventId}/products
Lista os produtos associados ao evento.
GET /v1/events/{eventId}/members/{document}/eligibility-cashless
Consulta elegibilidade cashless de um membro pelo documento.