2) Login automático do aplicativo (sem login/senha)

O app não usa usuário/senha. Após o pareamento, o app salva um DEVICE_TOKEN e autentica automaticamente usando headers em todas as requisições administrativas.

Endpoint: router/action.php Auth: X-APP-KEY + X-DEVICE-TOKEN Uso: boot do app + recuperação de sessão Retorna: valid + cliente_id + account_type

Como o app “loga” sozinho

  1. O app lê o device_token salvo localmente (SecureStore/Keychain).
  2. Ao abrir o app, faz uma validação rápida chamando f=valida_device_token.
  3. Se estiver válido, o app monta menus pelo account_type e segue normalmente.
  4. Se retornar 401/403, o app deve orientar parear novamente.

Importante: não é necessário chamar valida_device_token antes de cada ação. Endpoints administrativos (ex.: receber kit) validam o X-DEVICE-TOKEN internamente.

Endpoint: Validação rápida (sessão)

Nesta rota, a autenticação do app acontece exclusivamente por headers. Se X-APP-KEY ou X-DEVICE-TOKEN não forem enviados corretamente, a API retornará 401 ou 403.

POST https://agroecologia.grupoekos.com.br/router/action.php

Headers

X-APP-KEY: <APP_KEY_FIXA_DO_APP>
X-DEVICE-TOKEN: <DEVICE_TOKEN_SALVO_NO_APARELHO>

Body

action=apiG10
f=valida_device_token

Resposta (sucesso — HTTP 200)

{
  "success": true,
  "msg": "ok",
  "data": {
    "valid": true,
    "device_id": 123,
    "device_name": "João (Tratorista)",
    "cliente_id": 456,
    "account_type": "produtor"
  }
}

O que significa cada campo

  • valid: o token existe e está ativo.
  • device_id: id interno do token do device.
  • device_name: apelido do aparelho.
  • cliente_id: cliente vinculado ao device.
  • account_type: perfil para liberar menus (produtor ou colaborador).
Perfis disponíveis: colaborador, produtor ou produtor_funcionario

Como o app deve agir em erros

  • 401 (missing_app_key): APP_KEY não enviada no header X-APP-KEY.
  • 401 (missing_device_token): DEVICE_TOKEN não enviado no header X-DEVICE-TOKEN.
  • 401 (device_token_not_found/device_token_inactive/device_token_expired/device_token_limit_reached): token inválido, revogado, expirado ou sem uso disponível → pedir para parear novamente.
  • 403 (invalid_api_key): APP_KEY inválida → contatar suporte ou atualizar o app.
  • 500: falha de servidor → mostrar “tente novamente” e oferecer contato com suporte.

Headers em requisições administrativas

Em toda requisição administrativa (ex.: receber kit, geocercas, etc), enviar:

X-APP-KEY: <APP_KEY_FIXA_DO_APP>
X-DEVICE-TOKEN: <DEVICE_TOKEN_SALVO_NO_APARELHO>

Formulário de teste (uso controlado)

Este formulário envia a requisição diretamente para o ERP. Utilizar apenas em ambiente controlado, pois a APP_KEY ficará visível no navegador (DevTools).

Atenção: para f=valida_device_token, a autenticação não vai no body. Os valores devem ser enviados nos headers X-APP-KEY e X-DEVICE-TOKEN.

{}

Exemplo equivalente em 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 "action=apiG10&f=valida_device_token"