BOLD Carbon — Referência de Eventos do MassID
Payloads JSON canônicos e dicionários de atributos por evento para integrações BOLD Carbon.
Last updated on
Versão da metodologia 1.0.2
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" } ] }}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Description | Não | string | Público | ||
Local Waste Classification ID | Sim | string | Público | Ibama waste classification code, such as 02 01 03. It must be a code accepted for the MassID subtype. | |
Local Waste Classification Description | Sim | string | Público | Official Ibama description, in Portuguese, of the code sent in Local Waste Classification ID. | |
Vehicle License Plate | Sim | string | Público, mascarado | Required 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 Type | Sim | string |
| Público | |
Driver Identifier | Condicional | string | Público, mascarado | Send either this or Driver Identifier Exemption Justification, never both. Neither is needed when Vehicle Type is Sludge Pipes. | |
Driver Identifier Exemption Justification | Condicional | string | Público | Reason Driver Identifier is not sent. Send it instead of Driver Identifier: sending both is rejected. | |
Vehicle Description | Condicional | string | — | Required when Vehicle Type is Others: describe the vehicle used. | |
Waste Origin | Não | string | — | 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 Latitude | Não | number | — | 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 Longitude | Não | number | — | 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" } ]}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Document Type | Condicional | string |
| Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. |
Document Number | Condicional | string | Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. | |
Issue Date | Condicional | stringformat: DATE | Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. | |
Exemption Justification | Condicional | string | Público | Reason 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" } ] }}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Description | Sim | string | Público | ||
Weighing Capture Method | Sim | string |
| Público | |
Scale Type | Sim | string |
| Público | Must 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 Type | Sim | string | Público | Must be Truck when the weighing is sent as two Weighing events. | |
Container Quantity | Condicional | number | — | 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 Capacity | Condicional | numberformat: KILOGRAM | — | Greater than 0, required unless the recycler's accreditation carries an approved exception for it. | |
Gross Weight | Condicional | numberformat: KILOGRAM | Público | Greater 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). | |
Tare | Condicional | numberformat: KILOGRAM | Público | Weight of one empty container, greater than 0, required unless the recycler's accreditation carries an approved exception for it. | |
Vehicle License Plate | Sim | string | Público, mascarado | Plate 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" } ] }}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Description | Não | string | Público | ||
Receiving Operator Identifier | Sim | string | Público | ||
Captured GPS Latitude | Não | number | — | 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 Longitude | Não | number | — | 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 } ] }}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Description | Sim | string | Público | ||
Gross Weight | Sim | numberformat: KILOGRAM | Público | Greater 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 Weight | Sim | numberformat: KILOGRAM | Público | Greater 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" } ] }}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Description | Não | string | Pú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" } ]}| Atributo | Obrigatório | Tipo | Valores aceitos | Visibilidade | Observações |
|---|---|---|---|---|---|
Document Type | Condicional | string |
| Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. |
Document Number | Condicional | string | Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. | |
Issue Date | Condicional | stringformat: DATE | Público | Required when the manifest file is attached. It is not checked when Exemption Justification replaces the attachment. | |
Exemption Justification | Condicional | string | — | Reason the manifest file is not attached. Send it only without the attachment: sending both is rejected, and so is sending neither. |