Ir para o conteúdo

Princípios de Design

Release Candidate (V2.0.0-rc)

O protocolo V2 está em Release Candidate, em período de validação com o ecossistema (revisão por empresas e pilotos de implementação). A versão estável será publicada somente após essa fase. A V1 permanece ativa na transição. Detalhes: Evolução · Changelog.

Esta seção descreve os princípios de design do Open Delivery Protocol v2: como o ecossistema se coordena e o que a documentação prioriza.

Eles orientam o conteúdo da tab Protocolo (conceitos, fluxos, papéis) e as especificações da API (contrato normativo REST/HTTP). Obrigações de implementação (campos, endpoints, MUST/MAY de API) estão na Referência da API — a especificação da API é a fonte normativa do contrato.


Interoperabilidade, não produto

O Open Delivery é um protocolo de interoperabilidade expresso como especificação da API (REST/HTTP).

Ele define uma linguagem compartilhada para sistemas independentes de food service — não é uma plataforma, um runtime nem um produto SaaS.

A documentação se organiza em:

Camada Papel
Guia Onboarding, papéis, migração, histórico
Protocolo Domínio: conceitos, fluxos, responsabilidades (explicativo)
Referência da API Especificação da API (normativa) — suficiente para implementar

Descentralização e autonomia

O Open Delivery pressupõe um ecossistema descentralizado.

  • Não há runtime central
  • Não há banco de dados compartilhado
  • Não há intermediário obrigatório

Cada participante:

  • Permanece autônomo
  • Possui seu estado interno
  • Aplica suas próprias regras de negócio

O protocolo existe para coordenar sistemas, não para controlá-los.


Separação de responsabilidades na documentação

  • Protocolo (esta tab)o que os sistemas coordenam: entidades, ciclos de vida, papéis, fluxos
  • especificação da API (Referência da API)como isso se implementa em REST/HTTP: paths, schemas, erros, exemplos
  • Implementação — arquitetura, UX e regras internas de cada participante

Isso evita duas fontes de verdade para campos e endpoints. Em dúvida de contrato, prevalece a especificação da API.


Independência de capabilities

As capabilities do Open Delivery são independentes entre si.

Os participantes podem implementar qualquer capability ou combinação:

  • Apenas Merchant — catálogo e dados de loja
  • Apenas Logistics — coordenação de entrega
  • Apenas Orders — ciclo de vida de pedidos
  • Apenas Customer — CRM e identidade
  • Qualquer combinação das anteriores

Nenhuma capability é pré-requisito para outra, salvo extensões explicitamente ligadas ao pai:

  • Indoor estende Orders
  • Loyalty (e Reviews) estendem Customer

Eventos representam fatos, não etapas de workflow

Eventos representam fatos que ocorreram, não passos internos de processo.

Um evento:

  • É imutável
  • Ocorre em um momento específico
  • Comunica informação a outros sistemas

Eventos não devem:

  • Codificar etapas internas de processo
  • Espelhar máquinas de estado internas
  • Descrever como o trabalho é realizado por trás

Apenas fatos relevantes para a coordenação entre sistemas entram no protocolo.


Estados representam a condição atual

Estados descrevem a condição atual de uma entidade.

  • Podem mudar ao longo do tempo
  • São descritivos, não prescritivos de workflow interno

Consumidores devem tratar o estado consultável (ex.: GET do recurso) como fonte de verdade para reconciliação, e eventos como notificações de fatos — detalhes por capability na especificação da API e nas páginas de Protocolo correspondentes.


Obrigações com escopo por perfil

Obrigações de eventos e fluxos têm escopo por perfil (ex.: DELIVERY, TAKEOUT, INDOOR), não são necessariamente globais.

Um evento pode ser:

  • Obrigatório em um perfil
  • Opcional em outro
  • Não aplicável em um terceiro

Isso evita super-especificação e preserva flexibilidade operacional.


Suporte declarado, não flags por pedido

O comportamento esperado entre parceiros é declarado de forma estável (Discovery, onboarding), não por flags dinâmicas em cada pedido.

  • Capabilities, perfis e extensões suportadas são declarados
  • Pedidos carregam dados de negócio e contexto
  • O manifesto well-known é o ponto de partida da integração

Ver Discovery e a especificação de Discovery.


Tolerância e resiliência

O Open Delivery pressupõe sistemas distribuídos com falhas parciais.

Implementações devem:

  • Tolerar eventos opcionais ausentes
  • Tratar eventos duplicados (deduplicação por id de evento)
  • Aceitar entrega fora de ordem quando o contrato não garantir ordem
  • Evitar dependência de timing rígido entre parceiros

Prefere-se consistência eventual a sincronização estrita.

Convenções HTTP compartilhadas: Regras gerais · Erros.


Contrato único: especificação da API (REST/HTTP)

A forma padronizada de implementar o Open Delivery V2 é a especificação da API publicado na tab Referência da API (REST/HTTP + JSON).

Não há camada separada de “transport binding” nem expectativa de múltiplos bindings oficiais paralelos. Evolução do contrato ocorre nas especificações da API e na documentação associada.


Governança e gestão

O Open Delivery é governado de forma aberta e transparente.

A governança existe para:

  • Garantir transparência e isonomia
  • Coordenar a evolução do protocolo
  • Publicar releases e Release Candidates

A governança não:

  • Restringe a adoção
  • Impõe condições comerciais
  • Concede direitos exclusivos a qualquer participante

Propostas e issues: repositório GitHub.


Coordenação institucional

A iniciativa é coordenada institucionalmente pela Abrasel.

Isso inclui repositórios oficiais, publicação da documentação e comunicação. Não altera a natureza aberta do protocolo nem exige registro obrigatório para leitura da especificação.


Minimalismo

O protocolo define a superfície mínima necessária à interoperabilidade.

O que for puramente interno, específico de implementação ou desnecessário à coordenação entre sistemas deve permanecer fora do contrato e desta documentação normativa de API.


Resumo

O Open Delivery v2 prioriza:

  • Interoperabilidade entre sistemas autônomos
  • Capabilities independentes e extensões explícitas
  • Estados consultáveis e eventos como fatos
  • Um contrato implementável em especificação da API (REST/HTTP)
  • Documentação em camadas claras: Guia · Protocolo · API