Skip to main content

External Meal Reservations

The Reservas Externas de Refeição (External Meal Reservations) plugin opens the cafeteria only to people who reserved a meal in a third-party app. Every day, at the time you set, it queries the customer's reservation API, finds each person by CPF and assigns a category with an expiry. When the expiry passes, Accelero denies access, and a cleanup routine removes the expired links the plugin itself created.

This page explains what the plugin provides, each screen and field, the meaning of each situation and what happens day to day.

The plugin screen exists only in Portuguese. Labels are shown literally in Portuguese, with an English gloss in parentheses the first time each one appears on this page.

Navigation path: Avançado > Sistema > Reservas Externas de Refeição (Advanced > System > External Meal Reservations)

The Reservas Externas de Refeição item in the Sistema list

Reserva de Refeitório is another plugin

Do not confuse this with the Reserva de Refeitório (Cafeteria Reservation) plugin, where people reserve through a public Accelero link. Here the reservation is made elsewhere, and Accelero only receives the day's list.


What the plugin provides​

FeatureWhat it does
Daily automatic queryDownloads the day's list at the configured time and retries on its own if the API fails
Category with an expiryGives the person the chosen category, which expires at the configured time
Sending to devicesTakes the person to the facial devices through Accelero's normal flow when they receive the category, and removes them when the category goes away
SimulationShows who would be granted access, without saving anything
Manual runRuns the query right away, through the same path as the automatic one
HistoryRecords each run, with totals and people by situation
Daily cleanupRemoves the expired links created by the plugin. A category given by hand is never touched
NoticesNotifies an Accelero user when something prevents the day's release

The plugin does not create people, does not register photos, has no reservation or menu screen and does not choose devices: the category defines where the person can enter.

How it works​

Before turning it on​

The plugin does not configure these items. Confirm all of them before turning it on:

  • The chosen category grants access to the cafeteria area.
  • With Atualizar equipamentos (Update devices) on, the category is listed in Categorias que devem possuir reconhecimento facial (Categories that must have facial recognition) of the Control iD integration, and the device's category list contains it or is empty.
  • Sempre identificar usuários (Always identify users) is on in the Control iD integration, so Accelero decides the passage.
  • The cafeteria controller operates online.
  • The Accelero background process is running.
Deleting expired categories

The Accelero option that deletes expired categories can stay as it is. The plugin cleanup does not depend on the link still existing.


The plugin window​

Click the item in the Sistema (System) list. The configuration opens in a window over the page, with four tabs:

TabWhat it is for
Conexão (Connection)API address and token, turning the plugin on and testing the call
Rotina e acesso (Routine and access)Times, category, expiry and notices
Execução (Execution)Process status, simulating and running now
Histórico (History)What happened in each run, person by person

The badge next to the title shows the plugin state:

BadgeMeaning
Configuração incompleta (Incomplete configuration)A required field is missing. The plugin stays stopped
Desligado (Off)Complete configuration, with Plugin ativo (Active plugin) off. No routine runs on its own
Ativo (Active)Query and cleanup run at the configured times

While something is missing, the window lists it under Falta preencher para o plugin funcionar (Fill in to make the plugin work):

The plugin window on first opening, with the Configuração incompleta badge and the list of what is missing

Every field has a question mark. Hover over it to see what the field is for, an example and a suggested value:

Help for a field, with the explanation, the example and the suggested value

Permissions. There are two dedicated permissions, and the tabs depend on them:

PermissionGrantsVisible tabs
reservaexternaConfigConfiguringConexão and Rotina e acesso
reservaexternaRunTesting, simulating, running and viewing the historyExecução and Histórico

Users without the Accelero settings permission do not see the item in the Sistema list.


Conexão tab​

The Conexão tab with the URL, the saved token shown only as a mask, Plugin ativo and the connection test result

FieldWhat it means
URLFull API address, starting with http:// or https://, including the query, if any. Accelero calls it with GET
TokenValue sent in the Authorization header, with no prefix. It is stored encrypted and the window shows only a mask, with the Alterar (Change) button. To keep the current token, leave the field alone
Plugin ativoTurns on the automatic routine. Starts off

Testar conexão (Test connection) makes only the call, with the saved URL and token, and reports the status and the total of lines: it does not assign a category or write to the history. With unsaved changes the button is disabled: save first.

Token

If you change the server (host) of the URL, the save is refused with the message O servidor do endereço mudou. Informe o token novamente. (The address server changed. Enter the token again.) This way the stored token never goes to another server.

If the token cannot be read from the database, the run and the test fail with O token não está disponível. Informe o token novamente. (The token is not available. Enter the token again.) The plugin never queries the API with an empty token.

Expected API response format​

The API must answer 200, with UTF-8 text (LF or CRLF line endings, with or without BOM). Each line follows this model:

CPF DD/MM/YYYY HH:MM other fields

Invented example:

12345678909 04/11/2026 12:00 sample meal
PartRule
CPFExactly 11 digits, no punctuation. The check digit is not verified
DateDD/MM/YYYY, and it must be the day of the query
TimeMust start with a real time, from 00:00 to 23:59. The value is not used: the configuration defines the expiry
RestDiscarded. The name and the other fields are never saved

A CPF repeated in the list counts once. Lines outside this format are ignored and counted in the history:

CountLine it applies to
Linhas com formato inválido (Lines with an invalid format)Does not follow the model, for example, no 11-digit CPF
Linhas de outra data (Lines from another date)The date is not the day of the query
Linhas sem horário de refeição (Lines with no meal time)Has text in place of the time

Rotina e acesso tab​

The Rotina e acesso tab with the times, category, expiry and notices filled in

FieldWhat it meansExample
Horário da consulta (Query time)When the day's query starts. Use a time after the reservation app's cutoff10:30
Horário da limpeza (Cleanup time)When the day's cleanup runs. Use a time after the cafeteria's last shift23:00
Novas tentativas por dia (Retries per day)How many times to repeat after the first query, if it fails, from 0 to 50. Each one waits 10 minutes6
Categoria atribuída (Assigned category)Category given to people who reserved. It must exist, be enabled and not be a blocking or contingency category. Prefer a category used only for the cafeteriaRefeitório Almoço
Validade (dias) (Validity in days)For how many days access lasts, from 1 to 30, counting the day of the query. With 1, it expires the same day1
Vence às (Expires at)Expiry time on the last day. With a validity of 1 day, it must be after the Horário da consulta15:00
Atualizar equipamentosWhen on, face, biometrics, card, QR Code and elevator follow the category. When off, only the controllers are updated, and the face is managed separately. See Integration specificsOn
Usuário que recebe os avisos (User who receives the notices)Optional. Who receives the notices in Accelero. When empty, no notice is sent, and the result stays only in the historyCafeteria supervisor
Retenção do histórico (dias) (History retention in days)From 1 to 365. Older runs are deleted by the cleanup90

Click Salvar (Save). The message Configuração salva. (Configuration saved.) confirms the save, and the window then shows what was stored.

The save is refused as a whole if any field is invalid: the message appears on the field itself, and the window takes you to the tab with the error.

Refused save, with the error message below Horário da consulta


Execução tab​

Shows what is happening now and lets you simulate or run the query.

The Execução tab with the process running, the last run with its totals and the next times

InformationWhat it means
Processo em segundo plano (Background process)Em execução (Running): the service that runs the routine is active. Parado (Stopped): nothing automatic or manual is processed until the service comes back
Última execução (Last run)Type, time, result and totals of the most recent run
Próxima consulta (Next query)When the next automatic query runs. Não agendada (Not scheduled) with the plugin off
Próxima limpeza (Next cleanup)When the next cleanup runs. Não agendada with the plugin off

Simular​

Simular (Simulate) runs the query and shows the result by situation, without saving a link or a history entry and without sending anything to the devices. Seria liberado (Would be granted) is who would receive the category. Use it before the first run to check the list and the records.

Simulation result, with the number of people and lines by situation

Executar agora​

Executar agora (Run now) asks for confirmation and records the request. The background process runs it within 30 seconds, through the same path as the automatic query. A click during a run is a new request, which runs when the current one ends.

Confirmation of Executar agora, warning that the category will be assigned to the people found

A manual run works with a complete configuration, even with Plugin ativo off, and does not count as an attempt.

Manual before the query time

The reservation list changes until the app's cutoff. A manual run before the Horário da consulta does not close the day: the automatic query runs normally afterwards, and people already handled are not handled again. A successful manual run after that time does close the day.


Histórico tab​

On the left, each run, with Início (Start), Tipo (Type), Resultado (Result), Duração (Duration) and Totais (Totals). Click a row to see, on the right, the Linhas ignoradas (Ignored lines) and Pessoas por situação (People by situation), with pagination.

The Histórico tab with the runs on the left and the detail of the automatic run on the right

Use the situation filter and the search by name or CPF to find someone. The CPF appears only in CPF sem cadastro and CPF em mais de um cadastro habilitado, so you can fix the record. In the other situations, the registered person appears, or excluída (deleted) if they no longer exist.

Detail of a run filtered by CPF sem cadastro, with the invented CPFs from the list

Run type​

TypeWhen it appears
Automática (Automatic)The day's query, at the Horário da consulta
Nova tentativa (Retry)The repetition after an automatic query that failed
ManualRequested through Executar agora
Limpeza (Cleanup)The daily cleanup routine

Run result​

ResultMeaningWhat to do
Concluída (Completed)All good, even if someone was left out for a record reasonCheck the people by situation
Sem reservas (No reservations)The API answered, but with no valid reservation for the day (empty list, another date or no time). There is no retry. The notice is sent, if there is a notice userConfirm with the customer whether there are reservations that day
Parcial (Partial)For some people, Accelero refused the save or sending to the devices failedOn the automatic query, the plugin retries on its own and notifies when attempts run out. Check Recusada pelo Accelero and Liberada, com falha no envio aos equipamentos and run again
Falhou (Failed)The run did not finish. If the failure was in the query, nothing changed. If it came later, the links already saved remain, and the Totais show how manyCheck the error, fix it and use Executar agora: pending people are resumed
Interrompida (Interrupted)The run stopped midway. The links already saved remainRun again: pending people are resumed
Não executada, acesso já vencido (Not run, access already expired)Automatic only: the calculated expiry has already passedAdjust Validade (dias), Vence às or the query time

Errors shown with Falhou:

MessageCause
Não foi possível conectar à API. (Could not connect to the API.)Wrong address, server down or network block
A API não respondeu dentro do limite de tempo. (The API did not answer within the time limit.)No answer in 60 seconds
A API respondeu com status {status}. (The API answered with status {status}.)An answer other than 200, such as 500 on an API failure
A resposta da API passou do limite de 5 MB. (The API response exceeded the 5 MB limit.)Body larger than the limit
A resposta da API não tem o formato esperado. (The API response is not in the expected format.)There is text, but no line follows the format

Situation of each person​

For each CPF in the list, the plugin decides in this order. The first answer that applies is the person's situation:

SituationMeaningCan the person pass?What to do
Liberada (Granted)Category assigned and devices updatedYesNothing
Liberada sem foto (Granted, no photo)Category assigned, but the person has no photo in slot 1Yes, with another identifier. Not on the facial deviceRegister the photo. The person only reaches the facial device afterwards
Aguardando envio aos equipamentos (Waiting to be sent to devices)Link saved and sending not finishedThrough the controller, yesRun again: the plugin resumes
Liberada, com falha no envio aos equipamentos (Granted, failed sending to devices)Link saved, sending failedThrough the controller, yesCheck the device connection and run again
Validade estendida (Validity extended)Already had the plugin link, from a previous day, and the validity was extendedYesNothing
Já tratada hoje (Already handled today)Already handled that day, or the operator removed the categoryDepends on the current linkNothing. See Canceling the meal
Já tinha a categoria vigente (Already had the current category)Has the category some other way, valid until the calculated expiry. If the manual link ends earlier, the plugin saves its own linkYesNothing
CPF sem cadastro (CPF with no record)No record with this CPFNoRegister the person and run again
CPF em mais de um cadastro habilitado (CPF in more than one enabled record)DuplicateNoDisable the repeated record and run again
Cadastro desabilitado (Disabled record)There is only a disabled recordNoEnable the person and run again
Pessoa com categoria de bloqueio (Person with a blocking category)Has a current blocking categoryNoNothing: the block prevails
Recusada pelo Accelero (Refused by Accelero)Accelero refused the saveNoCheck the plugin log
Reevaluation

CPF sem cadastro, Cadastro desabilitado and Recusada pelo Accelero are reevaluated on each new run. Fix the record and use Executar agora.

The link on the person's record​

Whoever receives the category then has the link, with a start and an end, in the Categorias (Categories) tab of the person's record, like any other category. The end is the configured expiry. The Origem/Evento (Source/Event) column shows Manual for the plugin's link too, because it does not come from an Event: to see who the plugin served, use the Histórico tab.

The Categorias tab of the person's record, with the cafeteria category and its validity


What happens during the day​

Example with the query at 10:30, expiry at 15:00, validity of 1 day and cleanup at 23:00:

TimeWhat happens
Before 10:30Nobody on today's list has access yet. A manual run here grants access to whoever is already on the list, and the automatic query runs anyway
10:30The automatic query downloads the list. People on it receive the category, ending at 15:00 today, and go to the devices
Until 15:00People who were granted access can pass at the cafeteria. Anyone who reserved after the query only gets in with a manual run
After 15:00The link has expired: Accelero denies access, even with the person still on the facial device
23:00The cleanup deletes the plugin's expired links and removes from the devices anyone left without a valid category

Routine rules​

CaseBehavior
The API failed on the queryCounts one attempt and repeats every 10 minutes, up to Novas tentativas por dia. Attempts end at midnight. A Parcial result on the automatic query also counts as a failed attempt. When they run out, the notice is sent
Access already expiredIf the expiry that would be assigned has already passed, the automatic query does not run, and the history records Não executada, acesso já vencido once a day. Executar agora in this situation is refused right away, with the on-screen message and no history entry
Service stopped at the timeThe query runs when it comes back, under the same rules
Plugin turned on after the timeThe first automatic query is the next day's. Use Executar agora to cover the day
Plugin offNo automatic query or cleanup runs. The manual run stays available. Expired links stay expired and grant access to nobody

Cleanup​

The cleanup runs once a day, from the Horário da limpeza on, with the plugin active and independently of the query. It appears in the history with the type Limpeza:

History with the cleanup run selected and the totals of links removed and people updated

There are three steps:

  1. Deletes only the links created by the plugin whose validity has passed.
  2. Updates the devices of the people served: anyone left without a valid category is removed from the facial devices, and anyone with another valid category is sent again.
  3. Deletes history older than the retention. People not yet cleaned on the devices are never deleted from the history.
TotalWhat it counts
Vínculos removidos (Links removed)Expired links deleted
Pessoas atualizadas nos equipamentos (People updated on the devices)People sent to the update flow
Pessoas mantidas, com vínculo vigente (People kept, with a current link)Still have a plugin link, and wait for the next cleanup
Pessoas excluídas, só marcadas (Deleted people, only marked)The record no longer exists
Pessoas com falha na limpeza (People with a cleanup failure)Wait for the next cleanup. The result becomes Parcial
Execuções and Itens removidos do histórico (Runs and items removed from the history)What left through retention

Notices​

With Usuário que recebe os avisos filled in, that user receives a message in Accelero in these cases:

WhenWhat the notice says
The query failed on every attemptThe date, the number of attempts and the last error
The query ended Parcial on every attemptThat some people were left without a link or without an update
A run was interruptedThat the links already saved were kept
The query did not run because the access would already be expiredThat the validity or the time must be adjusted
The expiry arrived before a retryThat there will be no more attempts today
The query worked, with no reservationThat no category was assigned

Canceling a person's meal​

The plugin does not cancel. To cancel, remove the category in the Categorias tab of the person's record. Access is denied immediately, and the plugin does not give the category back on the same day, not even on a manual run: the removal holds for the whole day, and the person appears as Já tratada hoje.

Manual run after a cancellation, with the people under Já tratada hoje

A cancellation made in the reservation app after a run does not take the link away, because the routine does not remove people who left the list.

Changing the category on the same day

Changing the Categoria atribuída and running again on the same day gives Já tratada hoje for people already served. Fix it by hand on the person's record or wait for the next day.


Integration specifics​

  • Daily sending of faces. With Atualizar equipamentos on, the face comes in and goes out every day. With 200 reservations, that is 200 photos and pending items, with at least 200 ms per gateway, plus the device time.
  • Atualizar equipamentos off. If daily sending is not acceptable, turn the field off and keep the face fixed through another category. When off, biometrics, card and elevator also stop being updated by the plugin, and only the controllers receive the category.
  • Display. With Atualizar equipamentos off, anyone who did not reserve is recognized by the facial device, and the display shows "Acesso autorizado" (Access authorized) before Accelero denies access.
  • Contingency. The controller list is filtered by date only when it is generated. That is why the category cannot be a contingency category, and the controller must operate online.
  • API dependency. If the API is down at the time, nobody receives the category until a retry works. The history shows this, and the notice arrives if there is a Usuário que recebe os avisos.
  • Canceling by hand. Accelero updates only the controller right away, and access is already denied. The face only leaves the facial device at the next cleanup.
  • Cleanup before the expiry. If the Horário da limpeza is earlier than Vence às, anyone with a current link is skipped and handled at the next day's cleanup.
  • Line with no real time. A line with free text in place of the time is ignored and counted as Linhas sem horário de refeição.
  • Plugin turned back on after a restart. If the services restarted with the plugin off, when you turn it back on the Execução tab shows Parado, because the background process is registered only at startup. Restart the services.
  • Removing the plugin. Deletes every link it created, including current ones, and the faces stay on the devices until the next synchronization.

Next Steps​