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: [[apiKey]]"\
-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 positivo (tamanho total 13, 2 casas decimais)
unit_of_measurementUnidade de medida do volume alocado. Padrão: TONEnumNãoSC, KG, TON
invoice_import_idID da Nota Fiscal previamente importada que originou os relatórios ESG e EUDR. Use no Fluxo BUUIDNãoObrigatório quando use_pre_generated_reports é true
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 invoice_import_id, esg_report_request_id e eudr_report_request_id

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 os quatro campos juntos: invoice_import_id, esg_report_request_id, eudr_report_request_id e use_pre_generated_reports: true. 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
Resumo ESG do produtor não encontradomessage.esg.producer.not-found

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

CenárioMensagem retornada
use_pre_generated_reports = true sem invoice_import_id / esg_report_request_id / eudr_report_request_idmessage.traceability.report.preGenerated.required
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

Negociação informada em order_commitment_id não encontrada.

  • 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).