Skip to content
  • There are no suggestions because the search field is empty.

6. Packaging Data Structure

The API relies on the Recyda Open Packaging Standard (OPS). The structure is hierarchical and follows dot-notation for nested attributes.

Consumer Sales Unit (consumerSalesUnit)

The top-level object representing the sellable product / SKU (e.g., a bottle of detergent).

Field Type Required Description
id String Unique ID for the SKU.

Note: During API import, the root foreignKey is the actual determinator for upserts; this internal payload id is ignored for identification.
name String Name of the product.
description String No Detailed description.
metaData Map<String> No Key-value pairs for custom data (e.g., productCategory).
packagingUnits Array List of packaging units (see 6.2).

Packaging Unit (packagingUnit)

Represents a packaging in form of a physical container or group of components (e.g., "The Bottle", "The Box").

Field Type Required Description
id String Unique ID for this unit.
name String No Name of the unit.
description String No Description.
packagingType Enum Code for the packaging unit type (see 6.1).
quantity Number Quantity of this unit in the sales unit (default is set to 1).
mainPackagingBodyComponentId String ID of the component that acts as the main body.
metaData Map<String> No Key-value pairs for custom data.
fillingGood Object No Content details. See Filling Good table below.
components Array List of components (see 6.3).
attributes Object No See Attributes table below.

Packaging Unit Attributes (packagingUnit.attributes)

Field Type Enum Ref Description
shape String 6.7 e.g., CYLINDRICAL, RECTANGULAR.
function Array 6.8 e.g., RECLOSABLE, PROTECTED.
dimensions Object - Contains height, width, depth. Each has value (Number) and unitOfMeasurement (see 7.4).
volume Object - Net volume. Has value and unitOfMeasurement (see 7.4).
brimfulVolume Object - Max volume. Has value and unitOfMeasurement (see 7.4).
degradability Object - Booleans: isBiodegradable, isPhotodegradable, isOxodegradable, isCompostable, isWaterSoluble.
isIntendedForReuseByConsumer Boolean - true if designed for reuse.

Filling Good (packagingUnit.fillingGood)

Field Type Description
name String Name of the content.
fillingGoodAggregationState String GAS, LIQUID, SOLID.
fillingGoodConsumptionType String FOOD, BEVERAGE, MEDICINE, etc.
fillingGoodViscosity Object value and unitOfMeasurement (C24 or C65).

Component (component)

Represents a distinct part of the packaging unit (e.g., Cap, Label, Body).

Field Type Required Description
id String Unique ID for this component.
name String No Name of the component.
description String No Description.
componentType Enum No Code for the component (see 7.2).
metaData Map<String> No Custom metadata.
layers Array List of material layers (see 6.4).
attributes Object No See Attributes table below in 6.3.1

Component Attributes (component.attributes)

Field Type Required Description
dimensions Object No height, width, depth (value + unit from 7.4).
volume Object No value + unit from 7.4.
surfaceCoverage Object No value (0-1) + unit P1.
opacity String No OPAQUE or TRANSPARENT (see 7.5).
colourFamilyCode String No Dominant color (see 7.6).
colourTintCode String No e.g., DARK, LIGHT (see 7.6).
colourant String No NIR_DETECTABLE status (see 7.6).
separability Array No e.g., EASY_TO_SEPARATE (see 7.5).
rigidity String No RIGID or FLEXIBLE (see 7.5).
degradability Object No Booleans for bio/photo/oxo/compostable.
canBeWashedOffInColdWash Boolean No true for wash-off labels.

Layer (layer)

Represents a specific material layer within a component (e.g., HDPE, PET, Paper).

Field Type Required Description
id String Unique ID for this layer.
name String No Name of the layer.
description String No Description.
packagingMaterialTypeCode Enum Material code
metaData Map<String> No Custom metadata.
attributes Object No See Attributes table below in 6.4.1

Layer Attributes (layer.attributes)

Physical Properties:
Field Type Required Description
weight Object No Required. value + unit (GRM, KGM).
density Object No value + unit (23 for g/cm³).
layerThickness Object No value + unit (4H for µm).
paperGrammage Object No value + unit (GM for g/m²).
grammage Object No value + unit (GM for g/m²).
Composition Details:
Field Type Required Description
isBiobased Boolean No Is the material bio-based?
additives Array No List of additives (see 7.11).
metallisation Object No materialTypeCode (e.g., METAL_ALUMINUM).
inkProperties Object No printCoverage (val+unit), compositionBase (see 7.12).
isLayerMagnetic Boolean No  
isPECrosslinked Boolean No  
isPaperWetStrengthPaper Boolean No  
isGlassNonSodaLime Boolean No  
isCardboardReinforced Boolean No  
recyclate Object No Contains nested objects for:

- postConsumerRecyclateMechanical

- postConsumerRecyclateChemical

- postIndustrialRecyclate

Each has value (0-1) and unitOfMeasurement (P1).
nirDetectable Boolean No Is the layer detectable by NIR?
degradability Object No Booleans for bio/photo/oxo/compostable.
Example: Applying Barriers and Coatings (metallisation)

When a layer has a specific barrier or coating applied to it (such as an aluminum layer), it is represented using the metallisation object nested within the layer's attributes. You must specify the specific type of barrier applied using the materialTypeCode field. Common material codes used for coatings and barriers can be found in Section 7.3 (e.g., METAL_ALUMINUM, OPS_ALOX, OPS_SIOX).

{
  "id": "1090-mpet",
  "name": "metPET",
  "packagingMaterialTypeCode": "POLYMER_PET",
  "attributes": {
    "weight": {
      "value": 10.90,
      "unitOfMeasurement": "GRM"
    },
    "metallisation": {
      "materialTypeCode": "METAL_ALUMINUM"
    }
  }
}