Skip to content

QrCodeController

Cria QR Codes vinculados a uma safra e consulta os dados da safra por meio do código. Todas as requisições exigem X-API-ACCESS-KEY e X-API-SECRET-KEY.

POST /qrcode

Cria o QR Code e retorna a imagem PNG diretamente. O QR Code contém a URL HTTPS /qrcode/codigo/{codigo}. O código tem 50 caracteres alfanuméricos, o QR Code é criado como ativo e a validade padrão é de um mês.

curl --request POST \
  --url https://<url>/qrcode \
  --header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
  --header 'X-API-SECRET-KEY: <chave_de_seguranca>' \
  --header 'Content-Type: application/json' \
  --data '{
    "safraId": "<id_safra>",
    "etapaId": "<id_etapa_opcional>",
    "validate": "2026-02-15T23:59:59"
  }' \
  --output qrcode.png

validate usa o formato ISO LocalDateTime (yyyy-MM-dd'T'HH:mm:ss). Se for informado, substitui a validade padrão. A resposta é 200 OK, com Content-Type: image/png, dimensão 250x250 e sem corpo JSON.

GET /qrcode/codigo/{codigo}

Valida o código e retorna a consulta completa da safra. O QR Code é rejeitado quando não existe, não possui safra, está expirado, está inativo ou quando a safra vinculada não é encontrada.

{
  "safra": {
    "id": "<id_safra>",
    "codigo": "<codigo_safra>",
    "descricao": "<descricao>",
    "cultura": "<cultura>",
    "conformidades": ["DDS", "RC"],
    "propriedade": {},
    "produtores": [],
    "proprietarios": []
  },
  "fases": {
    "planoCultivo": [
      {
        "id": "<id_registro>",
        "safraId": "<id_safra>",
        "safraCodigo": "<codigo_safra>",
        "faseClazz": "<fase>",
        "dados": {}
      }
    ]
  }
}

Quando o QR Code possui etapaId, a resposta é filtrada para incluir somente as fases permitidas pela etapa do café.

GET /qrcode

Lista os QR Codes da API Key autenticada em uma página. Parâmetros opcionais: page, size (padrão 10) e sort.

Cada item contém id, codigo, apiKey, safraId, etapaId, active, createdAt, lastUsed e validate. O secretKey da API Key não é serializado.

PUT /qrcode

Atualiza somente active e/ou validate do QR Code.

{
  "id": 1,
  "active": false,
  "validate": "2026-03-15T23:59:59"
}

id é obrigatório. O retorno é 200 OK sem corpo.

DELETE /qrcode/{id}

Exclui o QR Code pelo ID numérico (Long) e retorna 200 OK sem corpo.

Não existe endpoint ativo GET /qrcode/{id}; a consulta pública é feita por GET /qrcode/codigo/{codigo}.

FSTec Logo

© 2025 FSTec — Todos os direitos reservados.