Pular para o conteúdo principal

Criar Rastreabilidade

Descrição: Cria Rastreabilidade de uma ou mais Fazendas para uma Negociação.

A rastreabilidade pode ser criada em dois modos:

  • Fluxo A (padrão): o sistema gera os relatórios socioambiental (ESG) e EUDR a partir do CAR da fazenda e do CPF/CNPJ do produtor. Use este fluxo quando a integração ainda não tem um relatório pré-gerado.
  • Fluxo B (relatórios pré-gerados): quando o integrador já gerou os relatórios socioambiental e EUDR previamente (por exemplo, durante a importação de uma Nota Fiscal), é possível reaproveitá-los informando invoice_import_id, esg_report_request_id, eudr_report_request_id e use_pre_generated_reports. Isso evita reprocessamento e reduz tempo de resposta.

Endpoint​

POST/api/v1/integration/traceability/-/commitments/{order_commitment_id}

Regras​

AtributosDescriçãoTipoObrigatórioValidações
order_commitment_idID da NegociaçãoUUIDSim

Exemplo de Requisição — Fluxo A (geração padrão de relatórios)​

curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"farm_id": "e168db8c-4fa2-4728-9ec3-945207fa474c",
"producer_id": "8846b788-1438-40c8-84c3-28389063e6b8",
"user_id": "4b5e9d45-da34-460f-98b9-bbd92f847c3b",
"allocated_volume": 123.12,
"unit_of_measurement": "SC"
}' \
"https://api.merx.tech/api/v1/integration/traceability/-/commitments/{order_commitment_id}"

Exemplo de Requisição — Fluxo B (reaproveitamento de relatórios pré-gerados)​

Use quando os relatórios ESG e EUDR já foram gerados previamente — tipicamente quando a rastreabilidade está sendo criada a partir de uma Nota Fiscal já importada que gerou os relatórios.

Fluxo B — relatórios pré-gerados
curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"https://api.merx.tech/api/v1/integration/traceability/-/commitments/17b75d09-bcca-43d1-a656-cb6226b74a83" \
--data '{
"farm_id":"e168db8c-4fa2-4728-9ec3-945207fa474c",
"producer_id": "8846b788-1438-40c8-84c3-28389063e6b8",
"user_id":"4b5e9d45-da34-460f-98b9-bbd92f847c3b",
"allocated_volume": 123.12,
"unit_of_measurement": "SC",
"invoice_import_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"esg_report_request_id": "b2c3d4e5-f678-9012-abcd-ef3456789012",
"eudr_report_request_id": "c3d4e5f6-7890-1234-bcde-f45678901234",
"use_pre_generated_reports": true
}'

Parâmetros​

Parâmetros de Cabeçalho​

NomeDescriçãoTipoObrigatório
AuthorizationChave de API obtida via support-api@merx.techStringSim
Content-Typeapplication/jsonStringSim

Parâmetros de Caminho​

NomeDescriçãoTipoObrigatório
order_commitment_idID da NegociaçãoUUIDSim

Parâmetros do Corpo​

NomeDescriçãoTipoObrigatórioValidações
producer_idID do produtorUUIDSim-
user_idID do usuário responsável pela operação (auditoria)UUIDSim-
farm_idID da Fazenda. Quando ausente, a rastreabilidade é criada apenas no nível do produtorUUIDNão-
allocated_volumeVolume alocado para a rastreabilidadeNumberNãoValor decimal estritamente positivo, com no máximo 13 dígitos inteiros e 2 casas decimais
unit_of_measurementUnidade de medida do volume alocado. Padrão: TONStringNãoSem validação de valores: a API aceita qualquer string. Use SC, KG ou TON
invoice_import_idID da Nota Fiscal previamente importada que originou os relatórios ESG e EUDR. Use no Fluxo BUUIDNãoNão é exigido pela validação de use_pre_generated_reports; quando informado, passa pelas validações de NF abaixo
esg_report_request_idID do relatório socioambiental (ESG) pré-gerado que será reaproveitado. Use no Fluxo BUUIDNãoObrigatório quando use_pre_generated_reports é true. Deve ser informado junto com eudr_report_request_id
eudr_report_request_idID do relatório EUDR pré-gerado que será reaproveitado. Use no Fluxo BUUIDNãoObrigatório quando use_pre_generated_reports é true. Deve ser informado junto com esg_report_request_id
use_pre_generated_reportsIndica que a rastreabilidade deve reaproveitar os relatórios informados em esg_report_request_id e eudr_report_request_id em vez de gerar novosBooleanNãoQuando true, exige esg_report_request_id e eudr_report_request_id. invoice_import_id não é exigido por essa regra

Fluxo A × Fluxo B:

  • No Fluxo A, omita invoice_import_id, esg_report_request_id, eudr_report_request_id e use_pre_generated_reports (ou envie use_pre_generated_reports: false). Os relatórios serão gerados a partir do CAR da fazenda e do CPF/CNPJ do produtor.
  • No Fluxo B, envie use_pre_generated_reports: true junto com esg_report_request_id e eudr_report_request_id — apenas esses dois são exigidos pela validação. O invoice_import_id é opcional e serve para amarrar a rastreabilidade a uma Nota Fiscal já importada; quando informado, ativa as validações de NF listadas abaixo. O sistema validará que os relatórios informados pertencem à cooperativa e estão em status válido antes de vinculá-los à rastreabilidade.

Respostas​

  • 200 - Ok
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
NomeDescriçãoTipo
idIdentificador único da rastreabilidade criadaUUID
  • 400 - Bad Request
{
"messages": ["message.entidade.campo-inválido"]
}

Principais cenários:

CenárioMensagem retornada
producer_id ausentemessage.producer-id.not-null
user_id ausentemessage.user-id.not-null
allocated_volume igual ou menor que zeromessage.allocated-volume.zero-or-under
allocated_volume excede o tamanho ou casas decimais permitidosmessage.allocated-volume.wrong-value
Produtor não encontradomessage.traceability.producer.not-found

Validações específicas do Fluxo B (relatórios pré-gerados):

CenárioMensagem retornada
use_pre_generated_reports = true sem esg_report_request_idmessage.esg-report-request-id.mandatory
use_pre_generated_reports = true sem eudr_report_request_idmessage.eudr-report-request-id.mandatory
allocated_volume ausente quando use_pre_generated_reports = truemessage.traceability.invoice.allocatedVolumeRequired
Nota Fiscal referenciada em invoice_import_id não encontradamessage.traceability.invoice.notFound
Nota Fiscal canceladamessage.traceability.invoice.cancelled
Nota Fiscal não pertence à mesma negociação informada na rotamessage.traceability.invoice.commitmentMismatch
Nota Fiscal não pertence à cooperativa do tokenmessage.traceability.invoice.cooperativeMismatch
Volume alocado excede o volume remanescente da Nota Fiscalmessage.traceability.invoice.volumeExceedsInvoice
Relatório ESG (esg_report_request_id) não encontradomessage.traceability.report.esg.notFound
Relatório EUDR (eudr_report_request_id) não encontradomessage.traceability.report.eudr.notFound
Relatório informado não está vinculado à Nota Fiscal de invoice_import_idmessage.traceability.report.notFromInvoice
Relatório informado pertence a outra cooperativamessage.traceability.report.cooperative.mismatch
Cooperativa do relatório não pôde ser determinadamessage.traceability.report.cooperative.unknown
  • 401 - Unauthorized

Token ausente ou inválido.

  • 404 - Not Found
CenárioMensagem retornada
Resumo ESG do produtor não encontradomessage.esg.producer.not-found

Nota: este serviço não valida a existência da negociação informada em order_commitment_id. Um 404 nesta rota vem da busca do resumo ESG do produtor ou é repassado pelo serviço de negociações consultado internamente.

  • 409 - Conflict
{
"messages": [
"message.traceability.already-exists"
]
}

Já existe rastreabilidade para a combinação (commitment, producer) (quando farm_id não foi informado) ou (commitment, farm) (quando farm_id foi informado).