Endpoint
POST https://agroecologia.grupoekos.com.br/router/action.php
Headers obrigatórios
X-APP-KEY: <APP_KEY_FIXA_DO_APP_PRODUTOR>
X-DEVICE-TOKEN: <DEVICE_TOKEN_DO_APARELHO>
Body
action=apiG10bio_produtor
f=sincronizacao_offline
app_version=1.0.0
last_sync_at=YYYY-MM-DD HH:MM:SS
eventos_retirada=<JSON>
sessoes_aplicacao=<JSON>
pontos_aplicacao=<JSON>
| Campo | Obrigatório | Descrição |
|---|---|---|
app_version |
Sim | Versão instalada no aparelho. |
last_sync_at |
Não | Data e hora da última sincronização concluída. |
eventos_retirada |
Não | Lista JSON com eventos pendentes de retirada de produto. |
sessoes_aplicacao |
Não | Lista JSON com sessões de aplicação iniciadas ou finalizadas. |
pontos_aplicacao |
Não | Lista JSON com pontos GPS coletados durante a aplicação. |
Como tratar a resposta
- Remover da fila somente os
client_event_idpresentes emeventos_confirmados. - Atualizar no SQLite os dados do produtor e vínculo atual.
- Se o
id_franqueadomudar, atualizar o contexto local do app. - Não apagar o histórico local de eventos já sincronizados sem necessidade.
- Atualizar
last_sync_atusandoserver_time.
Erros comuns
401 missing_device_token: DEVICE_TOKEN não enviado.401 device_token_inactive: aparelho revogado ou inativo.403 invalid_api_key: APP_KEY inválida.400 invalid_app_version: versão em formato inválido.409 vinculo_inativo: produtor sem vínculo ativo com franqueado.500: falha interna no servidor.
Em qualquer falha, manter os eventos no SQLite e tentar novamente depois.
Exemplo de chamada cURL
curl -X POST "https://agroecologia.grupoekos.com.br/router/action.php" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "X-APP-KEY: SUA_APP_KEY" \
-H "X-DEVICE-TOKEN: SEU_DEVICE_TOKEN" \
--data-urlencode "action=apiG10bio_produtor" \
--data-urlencode "f=sincronizacao_offline" \
--data-urlencode "app_version=1.0.0" \
--data-urlencode "last_sync_at=2026-07-23 08:00:00" \
--data-urlencode "eventos_retirada=[]" \
--data-urlencode "sessoes_aplicacao=[]" \
--data-urlencode "pontos_aplicacao=[]"