> For the complete documentation index, see [llms.txt](https://docs.enapi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enapi.com/enapi-documentation-pt/documentacao-tecnica/como-a-enapi-sincroniza-dados-ocpi.md).

# Como a ENAPI sincroniza dados OCPI

A ENAPI mantém os dados sincronizados entre parceiros usando uma combinação de push e pull. Na maior parte do tempo, funciona em segundo plano. Os dois momentos que vale a pena compreender são o que acontece quando um novo acordo é ativado e como funciona a agenda contínua de sincronização.

### O modelo de sincronização

Dois sentidos, dois mecanismos:

* **Parceiros → ENAPI.** A ENAPI faz pull dos parceiros segundo uma agenda (ver abaixo). Os parceiros também enviam atualizações (PUT, PATCH) em tempo real quando os objetos mudam.
* **ENAPI → Parceiros.** A ENAPI difunde imediatamente os pushes recebidos para todos os parceiros ligados. A ENAPI não faz push periódico para os parceiros - se quiser fazer pull de nós segundo uma agenda, pode fazê-lo, mas não é obrigatório: a difusão mantém-no atualizado.

A consequência prática: as atualizações em tempo real fluem via push-and-broadcast. Os pulls agendados funcionam como uma rede de segurança que apanha tudo o que tenha sido perdido.

<figure><img src="https://4024764934-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FheBP0sH0U1Rrp1jIot9S%2Fuploads%2FFEeOosYCBd1VFXXzS3rI%2Fenapi_evse_status_broadcast_fanout.svg?alt=media&amp;token=80fc870f-16fa-4095-acf7-bd5e296ca7f7" alt=""><figcaption></figcaption></figure>

O mesmo modelo de hub serve para pulls, não apenas para pushes: a ENAPI mantém os dados das contrapartes de cada parceiro continuamente atualizados, para que os parceiros possam fazer pull do estado atual da ENAPI quando necessário, em vez de contactarem diretamente cada contraparte.

É assim que o tráfego OCPI escala de forma eficiente. Cada parceiro sincroniza com um sistema em vez de muitos: os dados são reconciliados uma vez no hub e distribuídos aos parceiros, pelo que o trabalho de manter a sincronização cresce linearmente com a quantidade de dados que realmente muda, e não com o número de parceiros na rede.

### Logo após assinar um novo acordo de roaming

Quando um acordo de roaming é ativado, a ENAPI envia automaticamente o estado atual a ambas as partes - não é necessária uma sincronização inicial manual. Recebe o conjunto completo de objetos do parceiro tal como se encontra no momento da ativação:

* O **As localizações e tarifas do CPO** são enviadas para o **eMSP**.
* O **Tokens do eMSP** são enviadas para o **CPO**.

A partir daí, as alterações contínuas continuam a fluir via push-and-broadcast, com os pulls agendados (abaixo) como rede de segurança. O acordo fica ativo a partir do momento em que é ativado, sem que tenha de fazer nada do seu lado.

{% hint style="info" %}
**Nota:** O envio automático na ativação está a ser disponibilizado progressivamente. Hoje está ativo para um subconjunto de parceiros e será ativado de forma mais ampla nas próximas semanas. Também é configurável por parceiro — por exemplo, se precisar de concluir a configuração administrativa antes de os dados começarem a fluir, ou se o volume de entrada for uma preocupação, o push pode ser limitado ou desativado para a sua plataforma. Contacte a sua equipa de integração para o ativar mais cedo ou ajustar o comportamento.

Até o envio na ativação estar ativado para a sua plataforma, o estado atual tem de ser carregado com uma sincronização inicial única após o acordo ser ativado: um pull completo que transfere o conjunto de objetos OCPI tal como se encontra hoje.
{% endhint %}

### Agenda de sincronização contínua

Depois de a sincronização inicial estar concluída, a ENAPI mantém os dados atualizados com dois trabalhos recorrentes:

* **Sincronizações delta** correm **de segunda-feira a sábado às 01:00 UTC**, solicitando apenas os objetos alterados desde a última sincronização (via `date_from`).
* **Sincronizações completas** correm **todos os domingos às 01:00 UTC**, reconciliando o conjunto de dados completo.

### Como a ENAPI se identifica nos pedidos de pull

Os pedidos de pull da ENAPI incluem cabeçalhos OCPI padrão que identificam a ENAPI como a parte que faz a chamada:

```
Authorization: Token <your-token-c>
OCPI-From-Country-Code: DE
OCPI-From-Party-Id: ENA
OCPI-To-Country-Code: <your-country-code>
OCPI-To-Party-Id: <your-party-id>
```

Use-os para identificar o tráfego da ENAPI nos seus registos e listas de permissões.

### Monitorização do estado da sincronização

Ir para **Técnico → Qualidade dos Dados** para ver:

* **Os seus dados.** Quanto dos seus dados a ENAPI sincronizou.
* **Dados dos parceiros.** Quanto dos dados dos seus parceiros recebeu.

### Recomendações de implementação

Para manter a sincronização fiável:

* Suporte **paginação** com  `Link` cabeçalhos.
* Suporte **`date_from`** filtragem para que as sincronizações delta devolvam apenas os objetos alterados.
* Devolver **consistentes `last_updated`** carimbos de data/hora — estes orientam os cálculos delta.
* Trate **pedidos concorrentes** de forma adequada; a ENAPI paraleliza onde for possível.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.enapi.com/enapi-documentation-pt/documentacao-tecnica/como-a-enapi-sincroniza-dados-ocpi.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
