Docs
MethodologiesBOLD Recycling CreditBOLD Recycling Credit - MvFApplication

Guia de Integração BOLD Recycling Credit

Guia de integração para a Aplicação BOLD Recycling Credit v1.0.0 — eventos esperados, campos obrigatórios e requisitos de validação.

Este guia explica como submeter documentos MassID que atendem às regras do BOLD Recycling. Ele cobre a sequência de eventos esperada, campos obrigatórios por evento e problemas comuns de validação.

Para o fluxo base da API, consulte Submetendo um MassID. Para o catálogo completo de regras, consulte Regras do BOLD Recycling.

Pré-requisitos

Criação do documento

Crie o documento com as qualificações obrigatórias (validadas pela regra 5 — MassID Qualifications):

CampoValor obrigatório
categoryMassID
typeOrganic
measureUnitkg
valueMaior que 0
subtypeUm subtipo válido de resíduo orgânico
isPublicConforme seus requisitos de visibilidade

Referência: API de Documentos.

Sequência esperada de eventos

Submeta eventos em ordem cronológica via POST /documents/{documentId}/events. Consulte Especificação de Eventos para campos comuns de eventos.

A sequência a seguir reflete a ordem validada pelas regras do BOLD Recycling:

Papéis obrigatórios dos participantes

PapelLabel ACTORFunção
Gerador de ResíduosWaste GeneratorOrigem do material residual
TransportadorHaulerTransporta resíduos da origem até a instalação
RecicladorRecyclerOpera a instalação de reciclagem ou compostagem
ProcessadorProcessorProcessa material triado (pode ser a mesma entidade do reciclador)

1. Eventos ACTOR — registro de participantes

Registre cada participante com um evento ACTOR. Cada um deve ter um documento de homologação válido (regra 4 — Participant Accreditations & Verifications).

ParticipanteObrigatório?Condições
IntegradorSimDeve ter homologação válida com datas válidas.
Gerador de ResíduosCondicionalObrigatório se a origem do resíduo é identificada (regra 8). Omitir se não identificada.
TransportadorCondicionalObrigatório para a maioria dos tipos de veículos (regra 9). Opcional para carrinho ou tubulação de lodo.
ProcessadorSimExatamente um processador obrigatório (regra 13).
RecicladorSimExatamente um reciclador obrigatório (regra 14).

Cada evento ACTOR deve incluir os dados de homologação e endereço do participante (usados pela regra 7 — Geolocation Precision, que valida endereços de eventos contra endereços homologados usando limiares de distância escalonados).

O formato do payload é idêntico entre atores — apenas o identificador do papel muda.

{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": false,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "label": "Waste Generator",  "name": "ACTOR",  "participant": {    "id": "00000000-0000-4000-8000-00000000000a",    "countryCode": "BR",    "email": "wastegen@example.com",    "mobileNumber": "+5511000000001",    "name": "Acme Example Waste Generator",    "taxId": "11222333000181",    "taxIdType": "CNPJ",    "type": "COMPANY"  }}

2. Pick-up — coleta de resíduos

O evento Pick-up captura informações do veículo e motorista:

CampoObrigatório?Validado por
Tipo de veículoSimRegra 10 — Vehicle Identification
Placa / identificaçãoCondicionalPor tipo de veículo (regra 10)
Identificação do motoristaCondicionalPor tipo de veículo (regra 11)
Justificativa de isençãoCondicionalQuando ID do motorista não é obrigatório (regra 11)
{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": false,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Pick-up",  "participant": {    "id": "00000000-0000-4000-8000-00000000000a",    "countryCode": "BR",    "email": "wastegen@example.com",    "mobileNumber": "+5511000000001",    "name": "Acme Example Waste Generator",    "taxId": "11222333000181",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Waste picked up by hauler Acme Example Hauler at Acme Example Waste Generator"      },      {        "isPublic": true,        "name": "Local Waste Classification ID",        "value": "04 02 20"      },      {        "isPublic": true,        "name": "Local Waste Classification Description",        "value": "Lodos do tratamento local de efluentes não abrangidas em 04 02 19"      },      {        "sensitive": true,        "isPublic": false,        "name": "Vehicle License Plate",        "value": "ABC1D23"      },      {        "isPublic": true,        "name": "Vehicle Type",        "value": "Truck"      },      {        "isPublic": false,        "name": "Driver Identifier",        "value": "00000000-0000-4000-8000-00000000d21f"      }    ]  }}

3. Transport Manifest — documentação de transporte

Deve incluir (regra 12 — Transport Manifest):

CampoObrigatório?Observações
Número do documentoSim
Tipo do documentoSimDeve ser MTR para recicladores no Brasil.
Data de emissãoSim
AnexosSimUpload via Upload de Arquivos.
{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Transport Manifest",  "participant": {    "id": "00000000-0000-4000-8000-00000000000a",    "countryCode": "BR",    "email": "wastegen@example.com",    "mobileNumber": "+5511000000001",    "name": "Acme Example Waste Generator",    "taxId": "11222333000181",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "value": 1201.925,  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Document Type",        "value": "MTR"      },      {        "isPublic": true,        "name": "Document Number",        "value": "DOC-EXAMPLE-0001"      },      {        "format": "DATE",        "isPublic": true,        "name": "Issue Date",        "value": "2024-02-10"      }    ]  },  "attachments": [    {      "fileName": "transport-manifest.pdf",      "isPublic": false,      "label": "Transport Manifest"    }  ]}

4. Weighing — medição de massa

Registre medições de peso (regra 15 — Weighing):

CampoObrigatório?Observações
Valor do eventoSimPeso líquido em kg, deve ser maior que 0.
DescriçãoSimDescrição do evento de pesagem.
Peso brutoSimDeve ser maior que 0, em kg.
TaraSimPeso do container vazio em kg (isenções podem ser aplicadas por homologação).
Tipo de containerSimUm de: Bag, Bin, Drum, Pail, Street Bin, Waste Box ou Truck.
Quantidade de containerCondicionalObrigatório quando o tipo de container não é Truck.
Capacidade do containerCondicionalObrigatório para pesagem com múltiplos containers.
Método de capturaSimUm de: Digital, Photo (Scale+Cargo), Manual ou Transport Manifest.
Tipo de balançaSimDeve corresponder a um tipo de balança aprovado.
Ticket de pesagemCondicionalQuando exigido pela homologação do reciclador.
Placa do veículoCondicionalObrigatório quando o tipo de container é Truck.

Suporta processos de pesagem em uma ou duas etapas.

{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Weighing",  "participant": {    "id": "00000000-0000-4000-8000-00000000000a",    "countryCode": "BR",    "email": "wastegen@example.com",    "mobileNumber": "+5511000000001",    "name": "Acme Example Waste Generator",    "taxId": "11222333000181",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "value": 1201.925,  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Weighing captured at waste generator site"      },      {        "isPublic": true,        "name": "Weigh Capture Method",        "value": "Average Weight by Volume"      },      {        "isPublic": true,        "name": "Scale Type",        "value": "Floor Scale"      },      {        "isPublic": true,        "name": "Container Type",        "value": "Drum"      },      {        "isPublic": true,        "name": "Container Quantity",        "value": 1      },      {        "format": "KILOGRAM",        "isPublic": true,        "name": "Container Capacity",        "value": 100      },      {        "format": "KILOGRAM",        "isPublic": true,        "name": "Gross Weight",        "value": 1211.925      },      {        "format": "KILOGRAM",        "isPublic": true,        "name": "Tare",        "value": 10      }    ]  }}

5. Drop-off — entrega na instalação de reciclagem

Deve incluir (regra 16 — Drop-off At Recycling Facility):

CampoObrigatório?Observações
Operador de recepçãoSimIdentificação do operador na instalação.
EndereçoSimDeve corresponder ao endereço homologado do reciclador.
{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Drop-off",  "participant": {    "id": "00000000-0000-4000-8000-00000000000d",    "countryCode": "BR",    "email": "recycler@example.com",    "mobileNumber": "+5511000000004",    "name": "Acme Example Recycler",    "taxId": "11222333000424",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Waste deposited in Windrow number 1"      },      {        "isPublic": true,        "name": "Receiving Operator Identifier",        "value": "00000000-0000-4000-8000-00000000000c"      }    ]  }}

6. Sorting — triagem de massa

Deve incluir (regra 17 — Mass Sorting):

CampoObrigatório?Observações
DescriçãoSimDescrição do evento de triagem.
Peso brutoSimPeso total antes das deduções.
Peso deduzidoSimPeso de contaminantes/material não-alvo.
Fator de triagemSimCalculado a partir do peso bruto e deduzido.
Valor do eventoSimDeve ser corretamente calculado a partir dos dados de triagem.
{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Sorting",  "participant": {    "id": "00000000-0000-4000-8000-00000000000c",    "countryCode": "BR",    "email": "processor@example.com",    "mobileNumber": "+5511000000003",    "name": "Acme Example Processor",    "taxId": "11222333000343",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "value": 1189.906,  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Sorting factor determined by a third-party audit"      },      {        "format": "KILOGRAM",        "isPublic": true,        "name": "Gross Weight",        "value": 1201.925      },      {        "format": "KILOGRAM",        "isPublic": true,        "name": "Deducted Weight",        "value": 12.019      }    ]  }}

7. Recycled — conclusão do tratamento biológico

O evento Recycled marca o fim do ciclo de tratamento biológico. O timestamp é validado contra o evento Drop-off (regra 18 — Composting Cycle Timeframe):

  • O tempo entre Drop-off e Recycled deve ser de 60–180 dias.
{  "externalCreatedAt": "2025-02-22T10:35:12.000Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Recycled",  "participant": {    "id": "00000000-0000-4000-8000-00000000000d",    "countryCode": "BR",    "email": "recycler@example.com",    "mobileNumber": "+5511000000004",    "name": "Acme Example Recycler",    "taxId": "11222333000424",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Composting process completed. The recycling completion date is recorded by a conservative estimate determined and verified by a third-party audit for the recycler"      }    ]  }}

8. Recycling Manifest — documentação de reciclagem

Deve incluir (regra 19 — Recycling Manifest):

CampoObrigatório?Observações
Número do documentoSim
Tipo do documentoSimDeve ser CDF para recicladores no Brasil.
Data de emissãoSim
AnexosCondicionalObrigatório a menos que justificativa de isenção fornecida.
Justificativa de isençãoCondicionalQuando anexos não estão disponíveis.
{  "externalCreatedAt": "2024-12-05T11:02:47Z",  "isPublic": true,  "address": {    "city": "São Paulo",    "countryCode": "BR",    "countryState": "SP",    "latitude": -23.5613,    "longitude": -46.6563,    "name": "Sede",    "neighborhood": "Centro",    "number": "1000",    "street": "Avenida Exemplo",    "zipCode": "01001000"  },  "name": "Recycling Manifest",  "participant": {    "id": "00000000-0000-4000-8000-00000000000d",    "countryCode": "BR",    "email": "recycler@example.com",    "mobileNumber": "+5511000000004",    "name": "Acme Example Recycler",    "taxId": "11222333000424",    "taxIdType": "CNPJ",    "type": "COMPANY"  },  "value": 1201.925,  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Document Type",        "value": "CDF"      },      {        "isPublic": true,        "name": "Document Number",        "value": "DOC-EXAMPLE-0002"      },      {        "format": "DATE",        "isPublic": true,        "name": "Issue Date",        "value": "2024-03-10"      }    ]  },  "attachments": [    {      "fileName": "recycling-manifest.pdf",      "isPublic": false,      "label": "Recycling Manifest"    }  ]}

Mapeamento de eventos e regras

CUSTOM event names

Event NamePurposeValidated by
PICK_UPWaste collection from generator site
TRANSPORT_MANIFESTTransport documentation attachment
WEIGHINGWeight capture at a calibrated scale
DROP_OFFDelivery to the recycling/processing facility
SORTINGWaste sorting with contamination deduction
RECYCLEDConfirms composting or recycling completion
RECYCLING_MANIFESTFinal recycling documentation attachment

ACTOR label vocabulary

LabelDescriptionValidated by
WASTE_GENERATORSource of the waste material
HAULERTransports waste from origin to facility
RECYCLEROperates the recycling or composting facility
PROCESSORProcesses sorted material

Validações adicionais

RegraO que verifica
1Não existe MassID duplicado com a mesma combinação de drop-off + pick-up + reciclador + gerador de resíduos + placa.
2MassID não está vinculado a um RecycledID ou ordem de crédito.
3O evento Recycled ocorreu em ou após 1 de janeiro do ano anterior.
6A classificação local de resíduos corresponde a um código Ibama válido (recicladores no Brasil).
7Endereços de eventos dos participantes são validados contra endereços homologados usando limiares de distância escalonados (≤2 km: verificação GPS, 2–30 km: revisão de similaridade de endereço, >30 km: falha).

Pós-validação

Quando todas as 19 regras passam, a plataforma:

  1. Emite um certificado RecycledID vinculado ao MassID.
  2. Executa regras de RecycledID (distribuição de recompensas para participantes da cadeia de suprimentos).
  3. Gera tokens de crédito C-BIOW (Créditos de Reciclagem Tokenizados) após a liquidação da ordem de crédito.

Problemas comuns

  • Incompatibilidade de geolocalização — Endereços de eventos dos participantes são validados contra endereços homologados usando limiares de distância escalonados. Verifique a precisão do GPS.
  • Prazo do tratamento biológico — A janela entre Drop-off e Recycled deve ser de 60–180 dias. Documentos fora desse intervalo falham na regra 18.
  • Homologações ausentes — Todos os participantes devem ter documentos de homologação válidos e não expirados no momento da submissão do evento.
  • MassIDs duplicados — A verificação de unicidade (regra 1) impede submissões duplicadas. Use deduplicationId para retentativas, não reenvios.
  • Códigos Ibama — Para recicladores no Brasil, a classificação local de resíduos deve corresponder a um código Ibama válido. Valide antes da submissão.

Catálogo de regras · Referência da aplicação · Fluxo base de integração

On this page