Skip to main content
Antes de qualquer tela, os dois cadastros precisam se reconhecer. São duas decisões, e a primeira é onde as integrações erram.

A armadilha: qual identificador é a sua chave

GET /api/devices devolve dois identificadores por câmera, e eles servem para coisas diferentes:
device_id não é único entre contas. Duas contas podem ter uma câmera com o mesmo device_id, inclusive porque fabricantes repetem padrão de série entre lotes.
Consequência direta no seu banco:
Use device_uuid como chave primária e guarde device_id como o rótulo que a sua equipe reconhece. Todas as rotas aceitam os dois.

A hierarquia: conta, cliente, local, câmera

GET /api/devices devolve tudo isso resolvido em cada linha. Não há segunda chamada para descobrir de quem é a câmera:
Para casar com o seu cadastro, prefira client_id e monitored_site_id: são estáveis e não carregam dado de terceiro. Guarde-os na primeira sincronização e o vínculo passa a ser seu, não uma coincidência de grafia.

A sincronização

Na primeira vez, leia tudo. Depois, peça só o que mudou.
updated_since aceita ISO 8601 com fuso (2026-09-04T03:00:00Z). O corte é >=: mandar de volta o instante que você recebeu não perde a câmera gravada no mesmo microssegundo — ela só chega duas vezes, e o upsert absorve.
Sem updated_since, removed vem null — e null não é “nada foi apagado”. É “você não perguntou”. Uma varredura completa não tem como te contar o que sumiu: a câmera apagada simplesmente para de aparecer na lista, e o seu cadastro fica com ela para sempre. Quem sincroniza por delta precisa ler removed.
Não apague a câmera do seu lado quando ela aparece em removed. Ocorrências e gravações antigas continuam apontando para ela, e o Pictor mantém a gravação mesmo depois de a câmera sair do cadastro. Marque como inativa.

Recortar por cliente

Se você quer só as câmeras de um condomínio:
Se a sua arquitetura já separa condomínios, peça uma chave recortada por cliente: o recorte deixa de depender de você lembrar do filtro.

Dois eixos de saúde, e eles discordam

Para a sua tela de saúde, use transmitting, não status. Uma câmera cadastrada como active aparece assim mesmo sem entregar imagem, e esse é o caso mais comum de reclamação de morador.
Os três valores, e a diferença entre os dois últimos importa:
  • yes — chegou quadro dentro da janela. Prova positiva de imagem.
  • no — já chegou quadro desta câmera antes, e não dentro da janela. Prova de que parou. É esta a sua lista de ocorrências.
  • unknown — nunca chegou quadro. Ausência de prova, não prova de ausência: normalmente cadastro recém-feito. Não abra ocorrência.

O envelope diz a validade da medição — leia antes de concluir

transmitting é uma medição com prazo, e a resposta declara o prazo dela. Fora da validade, todas as câmeras saem como unknown, inclusive as que têm quadro recente. É por desenho: afirmar yes só para as câmeras que alguém abriu seria uma amostra apresentada como se fosse a frota inteira.