MethodologiesBOLD Recycling CreditBOLD Recycling Credit - MvFApplication

BOLD Recycling — Referência de Eventos do MassID

Payloads JSON canônicos e dicionários de atributos por evento para integrações BOLD Recycling.

Last updated on

Versão da metodologia 1.0.1

MassID de referência: Ver no Carrot Registry

Como ler esta página

Cada evento abaixo mostra o payload JSON canônico que os integradores enviam à Documents API. Os flags isPublic em cada exemplo representam a visibilidade recomendada pela Carrot — veja Privacidade e Mascaramento para o modelo.

Cada payload referencia seu participante e endereço por participantId e addressId. Resolva cada um primeiro — busque por chave ou crie — pela API de Participantes; enviar objetos participant e address completos inline também é suportado e faz find-or-create do registro. Envie exatamente uma das formas de cada par — as duas, ou nenhuma, falha com 400 VALIDATION_ERROR. A regra é a mesma nos endpoints de evento individual e de lote.

Cada evento que carrega atributos de metadados também os lista em uma tabela abaixo do payload. Os nomes dos atributos são exatos: envie-os como estão escritos. Visibilidade é o par isPublic / sensitive recomendado para o atributo. Público, mascarado significa isPublic: true com sensitive: true; um travessão significa que as regras da metodologia não verificam a visibilidade daquele atributo. A obrigatoriedade de um atributo marcado como Condicional depende de uma condição descrita em Observações.

Criar documento MassID

A chamada inicial POST /documents que cria um MassID. Não é um evento na linha do tempo do documento — incluída aqui como ponto de partida dos fluxos de integração. O Waste Generator é o criador; eventos são adicionados a este documento em seguida.

{  "addressId": "00000000-0000-4000-9000-00000000000a",  "category": "MassID",  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "isPubliclySearchable": true,  "participantId": "00000000-0000-4000-8000-00000000000a",  "subtype": "Food, Food Waste and Beverages",  "title": "MassID",  "type": "Organic"}

ACTOR — Waste Generator

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "preserveSensitiveData": true,  "addressId": "00000000-0000-4000-9000-00000000000a",  "label": "Waste Generator",  "name": "ACTOR",  "participantId": "00000000-0000-4000-8000-00000000000a"}

ACTOR — Recycler

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "preserveSensitiveData": false,  "addressId": "00000000-0000-4000-9000-00000000000d",  "label": "Recycler",  "name": "ACTOR",  "participantId": "00000000-0000-4000-8000-00000000000d"}

ACTOR — Processor

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "preserveSensitiveData": false,  "addressId": "00000000-0000-4000-9000-00000000000c",  "label": "Processor",  "name": "ACTOR",  "participantId": "00000000-0000-4000-8000-00000000000c"}

ACTOR — Hauler

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "preserveSensitiveData": true,  "addressId": "00000000-0000-4000-9000-00000000000b",  "label": "Hauler",  "name": "ACTOR",  "participantId": "00000000-0000-4000-8000-00000000000b"}

ACTOR — Integrator

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "preserveSensitiveData": false,  "addressId": "00000000-0000-4000-9000-00000000000e",  "label": "Integrator",  "name": "ACTOR",  "participantId": "00000000-0000-4000-8000-00000000000e"}

Pick-up

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000a",  "name": "Pick-up",  "participantId": "00000000-0000-4000-8000-00000000000a",  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Waste picked up at the waste generator site"      },      {        "isPublic": true,        "name": "Local Waste Classification ID",        "value": "02 01 03"      },      {        "isPublic": true,        "name": "Local Waste Classification Description",        "value": "Resíduos de tecidos vegetais"      },      {        "sensitive": true,        "isPublic": true,        "name": "Vehicle License Plate",        "value": "ABC1D23"      },      {        "isPublic": true,        "name": "Vehicle Type",        "value": "Truck"      },      {        "sensitive": true,        "isPublic": true,        "name": "Driver Identifier",        "value": "00000000-0000-4000-8000-00000000d21f"      }    ]  }}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
DescriptionNãostringPúblico
Local Waste Classification IDSimstringPúblicoIbama waste classification code, such as 02 01 03. It must be a code accepted for the MassID subtype.
Local Waste Classification DescriptionSimstringPúblicoOfficial Ibama description, in Portuguese, of the code sent in Local Waste Classification ID.
Vehicle License PlateSimstringPúblico, mascaradoRequired for every Vehicle Type: the check for duplicate MassIDs uses it. Unless Vehicle Type is Bicycle, Cart, Sludge Pipes or Others, it must be a plate in the form ABC1D23, ABC1234 or AB1234; for those types any non-empty identifier is accepted.
Vehicle TypeSimstring
  • Bicycle
  • Boat
  • Car
  • Cargo Ship
  • Cart
  • Mini Van
  • Motorcycle
  • Others
  • Sludge Pipes
  • Truck
Público
Driver IdentifierCondicionalstringPúblico, mascaradoSend either this or Driver Identifier Exemption Justification, never both. Neither is needed when Vehicle Type is Sludge Pipes.
Driver Identifier Exemption JustificationCondicionalstringPúblicoReason Driver Identifier is not sent. Send it instead of Driver Identifier: sending both is rejected.
Vehicle DescriptionCondicionalstring—Required when Vehicle Type is Others: describe the vehicle used.
Waste OriginNãostring—Leave it out, or send any value other than Unidentified. Unidentified is rejected when the MassID has a Waste Generator ACTOR event, and the check for duplicate MassIDs fails every MassID that has no such event.
Captured GPS LatitudeNãonumber—Decimal degrees from -90 to 90, used only when Captured GPS Longitude is also sent. A position more than 2 km from the participant's accredited address can fail the audit.
Captured GPS LongitudeNãonumber—Decimal degrees from -180 to 180, used only when Captured GPS Latitude is also sent. A position more than 2 km from the participant's accredited address can fail the audit.

Transport Manifest

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000a",  "name": "Transport Manifest",  "participantId": "00000000-0000-4000-8000-00000000000a",  "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": "2025-02-09"      }    ]  },  "attachments": [    {      "fileName": "transport-manifest.pdf",      "isPublic": false,      "label": "Transport Manifest"    }  ]}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
Document TypeCondicionalstring
  • MTR
PúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Document NumberCondicionalstringPúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Issue DateCondicionalstring
format: DATE
PúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Exemption JustificationCondicionalstringPúblicoReason the manifest file is not attached. Send it only without the attachment: sending both is rejected, and so is sending neither.

Weighing

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000a",  "name": "Weighing",  "participantId": "00000000-0000-4000-8000-00000000000a",  "value": 1201.925,  "metadata": {    "attributes": [      {        "isPublic": true,        "name": "Description",        "value": "Weighing captured at waste generator site"      },      {        "isPublic": true,        "name": "Weighing Capture Method",        "value": "Digital"      },      {        "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      },      {        "sensitive": true,        "isPublic": true,        "name": "Vehicle License Plate",        "value": "ABC1D23"      }    ]  }}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
DescriptionSimstringPúblico
Weighing Capture MethodSimstring
  • Digital
  • Manual
  • Photo (Scale + Cargo)
  • Transport Manifest
Público
Scale TypeSimstring
  • Bin Scale
  • Conveyor Belt Scale
  • Floor Scale
  • Forklift Scale
  • Hanging / Crane Scale
  • Onboard Truck Scale
  • Pallet Scale
  • Portable Axle Weigher
  • Precision / Bench Scale
  • Weighbridge (Truck Scale)
  • Weighbridge
PúblicoMust be the scale type registered in the recycler's accreditation. A weighing sent as two Weighing events must use Weighbridge (Truck Scale) or Weighbridge.
Container TypeSimstringPúblicoMust be Truck when the weighing is sent as two Weighing events.
Container QuantityCondicionalnumber—Whole number greater than 0, required unless Container Type is Truck, in which case it must not be sent. An approved exception in the recycler's accreditation also waives it.
Container CapacityCondicionalnumber
format: KILOGRAM
—Greater than 0, required unless the recycler's accreditation carries an approved exception for it.
Gross WeightCondicionalnumber
format: KILOGRAM
PúblicoGreater than 0, required unless the recycler's accreditation carries an approved exception for Tare. When Tare and Container Quantity are also sent, the event value must equal Gross Weight minus (Tare multiplied by Container Quantity).
TareCondicionalnumber
format: KILOGRAM
PúblicoWeight of one empty container, greater than 0, required unless the recycler's accreditation carries an approved exception for it.
Vehicle License PlateSimstringPúblico, mascaradoPlate in the form ABC1D23, ABC1234 or AB1234. A weighing sent as two Weighing events must carry the same Vehicle License Plate, Gross Weight, Container Capacity, Container Type, Scale Type and Weighing Capture Method on both.

Drop-off

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000d",  "name": "Drop-off",  "participantId": "00000000-0000-4000-8000-00000000000d",  "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"      }    ]  }}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
DescriptionNãostringPúblico
Receiving Operator IdentifierSimstringPúblico
Captured GPS LatitudeNãonumber—Decimal degrees from -90 to 90, used only when Captured GPS Longitude is also sent. A position more than 2 km from the participant's accredited address can fail the audit.
Captured GPS LongitudeNãonumber—Decimal degrees from -180 to 180, used only when Captured GPS Latitude is also sent. A position more than 2 km from the participant's accredited address can fail the audit.

Sorting

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000c",  "name": "Sorting",  "participantId": "00000000-0000-4000-8000-00000000000c",  "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      }    ]  }}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
DescriptionSimstringPúblico
Gross WeightSimnumber
format: KILOGRAM
PúblicoGreater than 0. It must equal the event value (not the Gross Weight attribute) of the most recent earlier event that carries one, normally the Weighing event.
Deducted WeightSimnumber
format: KILOGRAM
PúblicoGreater than 0 and lower than Gross Weight: it must equal Gross Weight multiplied by the sorting factor in the recycler's accreditation. The event value must equal Gross Weight minus Deducted Weight.

Recycled

{  "externalCreatedAt": "2026-02-22T10:35:12.000Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000d",  "name": "Recycled",  "participantId": "00000000-0000-4000-8000-00000000000d",  "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"      }    ]  }}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
DescriptionNãostringPúblico

Recycling Manifest

{  "externalCreatedAt": "2025-12-05T11:02:47Z",  "isPublic": true,  "addressId": "00000000-0000-4000-9000-00000000000d",  "name": "Recycling Manifest",  "participantId": "00000000-0000-4000-8000-00000000000d",  "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": "2025-03-10"      }    ]  },  "attachments": [    {      "fileName": "recycling-manifest.pdf",      "isPublic": false,      "label": "Recycling Manifest"    }  ]}
AtributoObrigatórioTipoValores aceitosVisibilidadeObservações
Document TypeCondicionalstring
  • CDF
PúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Document NumberCondicionalstringPúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Issue DateCondicionalstring
format: DATE
PúblicoRequired when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment.
Exemption JustificationCondicionalstring—Reason the manifest file is not attached. Send it only without the attachment: sending both is rejected, and so is sending neither.

On this page