Skip to main content
POST
/
products
/
create
Products Create
curl --request POST \
  --url https://api-v2.production.higg.org/pic-api/v1/products/create \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --header 'x-developer-request-token: <api-key>' \
  --data '
{
  "name": "<string>",
  "materials": [
    {
      "netUse": 123,
      "materialId": "<string>",
      "composition": 123
    }
  ],
  "weight": 123,
  "weightIsPrimaryData": true,
  "productCategory": "<string>",
  "size": "<string>",
  "taxonomyId": "<string>",
  "packaging": [
    {
      "packagingId": "<string>",
      "amount": 123
    }
  ],
  "components": [
    {
      "componentId": "<string>",
      "unit": 123
    }
  ],
  "identifier": "<string>",
  "tags": [
    "<string>"
  ],
  "purchaseOrder": [
    {
      "purchaseOrderId": "<string>",
      "purchaseDate": "<string>",
      "amountPurchase": 123,
      "assembly": {
        "femId": "<string>"
      }
    }
  ],
  "frenchLabelOptionalFields": {
    "countrySpinning": {
      "code": "<string>",
      "name": "<string>"
    },
    "upcycled": true,
    "price": 123,
    "numberOfReferences": 123
  },
  "isMaterialWeight": true,
  "categoryExpansionId": "<string>"
}
'
{
  "_id": "<string>",
  "name": "<string>",
  "weightInformation": {
    "convertedToKg": 123,
    "weight": 123,
    "isPrimaryData": true
  },
  "type": "<string>",
  "createdOn": {},
  "user": {
    "_id": "<string>",
    "email": "<string>",
    "firstname": "<string>",
    "lastname": "<string>"
  },
  "account": {
    "_id": "<string>",
    "name": "<string>",
    "country": "<string>",
    "sacId": 123,
    "oar_id": "<string>",
    "demoaccount": true,
    "socialCreditId": "<string>",
    "taxId": "<string>",
    "bluesignId": "<string>",
    "zdhcId": "<string>",
    "ipeViolation": {
      "totalViolations": 123
    },
    "ffcId": 123
  },
  "materials": [
    {
      "name": "<string>",
      "netUse": 123,
      "materialId": "<string>",
      "composition": 123,
      "weightInformation": {
        "convertedToKg": 123,
        "weight": 123,
        "netWeight": 123
      },
      "isMsiMaterial": true,
      "isPicMaterialLibrary": true,
      "code": "<string>",
      "dataSource": "<string>",
      "isOutdated": true,
      "description": "<string>",
      "impacts": {
        "tier4Impact": 123,
        "tier2and3Impact": 123,
        "totalMaterialLibrary": 123,
        "totalTierImpact": 123,
        "uncertainty": {
          "lower": 123,
          "upper": 123
        }
      }
    }
  ],
  "materialImpact": 123,
  "tier1Impact": 123,
  "packagingImpact": 123,
  "logisticsImpactsUpstreamTD": 123,
  "logisticsImpactsDTImpact": 123,
  "logisticsImpactsDCImpact": 123,
  "logisticsImpactsRetailImpact": 123,
  "productCareImpacts": 123,
  "endOfUseImpact": 123,
  "_rev": "<string>",
  "version": "<string>",
  "productType": "<string>",
  "productCategory": "<string>",
  "packagingWeight": {
    "convertedToKg": 123,
    "weight": 123,
    "isPrimaryData": true
  },
  "modelNumber": "<string>",
  "barcodes": [
    "<string>"
  ],
  "dataSource": "<string>",
  "modifiedOn": {},
  "deleted": true,
  "modifiedBy": {
    "_id": "<string>",
    "email": "<string>",
    "firstname": "<string>",
    "lastname": "<string>"
  },
  "deletedBy": {
    "_id": "<string>",
    "email": "<string>",
    "firstname": "<string>",
    "lastname": "<string>"
  },
  "defaultProduct": {
    "defaultProductId": "<string>",
    "name": "<string>"
  },
  "components": [
    {
      "name": "<string>",
      "componentId": "<string>",
      "unit": 123,
      "weightInformation": {
        "convertedToKg": 123,
        "weight": 123,
        "isPrimaryData": true
      },
      "isMsiComponent": true,
      "isOutdated": true,
      "dataSource": "<string>",
      "description": "<string>",
      "impacts": {
        "tier4Impact": 123,
        "tier2and3Impact": 123,
        "totalMaterialLibrary": 123,
        "totalTierImpact": 123,
        "uncertainty": {
          "lower": 123,
          "upper": 123
        }
      }
    }
  ],
  "packaging": [
    {
      "packagingId": "<string>",
      "amount": 123,
      "name": "<string>",
      "weightInformation": {
        "convertedToKg": 123,
        "weight": 123,
        "isPrimaryData": true
      },
      "isMsiPackaging": true,
      "isOutdated": true,
      "code": "<string>",
      "dataSource": "<string>",
      "description": "<string>",
      "impacts": {
        "tier4Impact": 123,
        "tier2and3Impact": 123,
        "totalMaterialLibrary": 123,
        "totalTierImpact": 123,
        "uncertainty": {
          "lower": 123,
          "upper": 123
        }
      }
    }
  ],
  "notes": "<string>",
  "purchaseOrder": [
    {
      "_id": "<string>",
      "assembly": {
        "isDefault": true,
        "femId": "<string>",
        "facilityName": "<string>",
        "finalAssemblyRawText": "<string>",
        "surveyVersion": "<string>",
        "finalAssemblyImpacts": 123,
        "printingProductDyeingImpacts": 123,
        "totalNormalizedImpacts": 123,
        "sipfacilitytype": [
          "<string>"
        ],
        "annualProd": "<string>",
        "country": "<string>",
        "femDescriptor": "<string>",
        "year": 123,
        "finishedProductImpacts": 123
      },
      "purchaseOrderId": "<string>",
      "purchaseDate": 123,
      "impactPerUnit": 123,
      "totalImpactPerUnit": 123,
      "pmVersion": "<string>",
      "msiVersion": "<string>",
      "version": "<string>",
      "amountPurchase": 123,
      "isOutdated": true,
      "impactsPerUnitMultiPack": {
        "materialImpact": 123,
        "tier1Impact": 123,
        "packagingImpact": 123,
        "logisticsImpactsUpstreamTD": 123,
        "logisticsImpactsDTImpact": 123,
        "logisticsImpactsDCImpact": 123,
        "logisticsImpactsRetailImpact": 123,
        "productCareImpacts": 123,
        "endOfUseImpact": 123,
        "totalProductImpacts": 123,
        "componentImpact": 123
      },
      "totalImpactsMultiPack": {
        "materialImpact": 123,
        "tier1Impact": 123,
        "packagingImpact": 123,
        "logisticsImpactsUpstreamTD": 123,
        "logisticsImpactsDTImpact": 123,
        "logisticsImpactsDCImpact": 123,
        "logisticsImpactsRetailImpact": 123,
        "productCareImpacts": 123,
        "endOfUseImpact": 123,
        "totalProductImpacts": 123,
        "componentImpact": 123
      },
      "impactsPerUnit": {
        "materialImpact": 123,
        "tier1Impact": 123,
        "packagingImpact": 123,
        "logisticsImpactsUpstreamTD": 123,
        "logisticsImpactsDTImpact": 123,
        "logisticsImpactsDCImpact": 123,
        "logisticsImpactsRetailImpact": 123,
        "productCareImpacts": 123,
        "endOfUseImpact": 123,
        "totalProductImpacts": 123,
        "componentImpact": 123
      },
      "totalImpacts": {
        "materialImpact": 123,
        "tier1Impact": 123,
        "packagingImpact": 123,
        "logisticsImpactsUpstreamTD": 123,
        "logisticsImpactsDTImpact": 123,
        "logisticsImpactsDCImpact": 123,
        "logisticsImpactsRetailImpact": 123,
        "productCareImpacts": 123,
        "endOfUseImpact": 123,
        "totalProductImpacts": 123,
        "componentImpact": 123
      }
    }
  ],
  "purchaseOrderImpactsTotal": {
    "materialImpact": 123,
    "tier1Impact": 123,
    "packagingImpact": 123,
    "logisticsImpactsUpstreamTD": 123,
    "logisticsImpactsDTImpact": 123,
    "logisticsImpactsDCImpact": 123,
    "logisticsImpactsRetailImpact": 123,
    "productCareImpacts": 123,
    "endOfUseImpact": 123,
    "totalProductImpacts": 123,
    "componentImpact": 123
  },
  "componentImpact": 123,
  "upstreamTransportation": 123,
  "downstreamTransportationRetail": 123,
  "downstreamTransportationConsumer": 123,
  "distributionCenterUnOwned": 123,
  "retailEnergyUnOwned": 123,
  "frenchLabelManufacturingCountry": {
    "code": "<string>",
    "name": "<string>"
  },
  "frenchLabelFabricCountry": {
    "code": "<string>",
    "name": "<string>"
  },
  "frenchLabelDyeingCountry": {
    "code": "<string>",
    "name": "<string>"
  },
  "frenchLabelOptionalFields": {
    "countrySpinning": {
      "code": "<string>",
      "name": "<string>"
    },
    "upcycled": true,
    "price": 123,
    "numberOfReferences": 123
  },
  "frenchLabelEligibility": {
    "eligible": true,
    "reasons": [
      {
        "message": "<string>"
      }
    ]
  },
  "frenchLabelEcoScore": {
    "score": 123,
    "impacts": {
      "acd": 123,
      "cch": 123,
      "etf": 123,
      "etfC": 123,
      "fru": 123,
      "fwe": 123,
      "htc": 123,
      "htcC": 123,
      "htn": 123,
      "htnC": 123,
      "ior": 123,
      "ldu": 123,
      "mru": 123,
      "ozd": 123,
      "pco": 123,
      "pma": 123,
      "swe": 123,
      "tre": 123,
      "wtu": 123,
      "ecs": 123,
      "pef": 123,
      "microfibers": 123,
      "outOfEuropeEOL": 123
    },
    "createdAt": 123,
    "updatedAt": 123,
    "impactsPercentageContribution": {
      "acd": 123,
      "cch": 123,
      "etf": 123,
      "etfC": 123,
      "fru": 123,
      "fwe": 123,
      "htc": 123,
      "htcC": 123,
      "htn": 123,
      "htnC": 123,
      "ior": 123,
      "ldu": 123,
      "mru": 123,
      "ozd": 123,
      "pco": 123,
      "pma": 123,
      "swe": 123,
      "tre": 123,
      "wtu": 123,
      "ecs": 123,
      "pef": 123,
      "microfibers": 123,
      "outOfEuropeEOL": 123
    },
    "apiVersion": "<string>",
    "apiResponseError": "<string>",
    "complementsImpacts": {
      "microfibers": 123,
      "outOfEuropeEOL": 123,
      "cropDiversity": 123,
      "forest": 123,
      "hedges": 123,
      "livestockDensity": 123,
      "permanentPasture": 123,
      "plotSize": 123
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://developer.worldly.io/llms.txt

Use this file to discover all available pages before exploring further.

Create new products in your PIC product library. To create a product, you must specify the name and materials. Other attributes, such as weight, category, size, packaging, and components, are optional but may be required for specific scoring scenarios like the French Eco-Score. Refer to the French Eco-Score page for specific requirements to generate scores.

PIC - Create a Product

Download the Postman collection example for product creation here.
  1. Use the get categories endpoint to retrieve the list of supported product categories.
  2. Use the get available sizes endpoint to retrieve the list of supported sizes for a given product category.
{
    "productSize":
    [
        "{{size}}"
    ],
    "categoryExpansionId":
    [
        "{{categoryExpansionId}}"
    ]
}
  1. Use the post materials search endpoint to retrieve available material options.
{
    "textSearch": "{{text}}",
    "from": 1,
    "size": 10
}
  1. Use the post components search endpoint to retrieve available component options.
{
    "textSearch": "{{text}}",
    "from": 1,
    "size": 10
}
  1. Use the post packaging search endpoint to retrieve available packaging options.
{
    "textSearch": "{{text}}",
    "from": 1,
    "size": 10
}
  1. Use the get countries for eco scores endpoint to retrieve valid locations for manufacture, finishing, and textile formation for the French Eco-Score.
  2. Note that some elements are optional, while others are required when calculating the French Eco-Score.
{
    "name": "product name",
    "weight": 1,
    "weightMeasureUnit": "kilograms",

   // Required for French Eco-Score
   "weightIsPrimaryData": true,
   "frenchLabelCountry": {
     "code": "FR",
     "name": "France"
   },
   "frenchLabelDyeingCountry": {
     "code": "CN",
     "name": "China"
   },
   "frenchLabelFabricCountry": {
     "code": "IN",
     "name": "India"
   },
   "frenchLabelOptionalFields": {
     "business": "small-business",
     "countrySpinning": {
       "code": "CN",
       "name": "China"
     },
     "numberOfReferences": 100,
     "price": 20,
     "upcycled": true
   },

    "categoryExpansionId": "ApparelAccessories-SleepwearLoungewear-PajamaBottoms",
    "size": "Adult",
    "taxonomyId": "{{productDefaultId}}",
    "packaging":
    [
        {
            "amount": 123,
            "packagingId": "and"
        }
    ],
    "components":
    [
        {
            "componentId": "asd",
            "unit": 1
        }
    ],
    "materials":
    [
        {
            "netUse": 70,
            "materialId": "asd",
            "composition": 100
        }
    ],
    "identifier": "test",
    "identifierType": "GTIN",
    "tags":
    [
        "product-label"
    ],
    "purchaseOrder":
    [
        {
            "purchaseOrderId": "id purchase order",
            "purchaseDate": "YYYY-mm-dd",
            "amountPurchase": 1,
            "assembly":
            {
                "femId": "fem-assessment-id"
            }
        }
    ]
}

Request body properties

NameTypeDescription
namestring[REQUIRED] The name of the product.
materialsArray<MaterialsData>[REQUIRED] List of materials used in the product. Each item requires materialId and netUse.
weightnumberThe weight of the product. Required if isMaterialWeight is false or undefined.
weightMeasureUnitstring (enum)Unit of measure for the weight (e.g., “grams”, “kilograms”). Defaults to “grams”.
isMaterialWeightbooleanIf true, the product weight is calculated from the sum of its materials. If false, explicit weight is required.
productCategorystring[DEPRECATED] The category of the product (e.g., “Apparel”, “Footwear”). Use categoryExpansionId instead.
categoryExpansionIdstringThe product category code. Required for scoring.
sizestringThe size of the product. Required for scoring.
taxonomyIdstringID referring to a specific taxonomy entry. Used to identify the default product type.
packagingArray<PackagingData>List of packaging items associated with the product.
componentsArray<ComponentData>List of components associated with the product.
identifierstringExternal identifier for the product (e.g., SKU).
identifierTypestring (enum)Type of the identifier (e.g., GTIN, SKU, UPC, OTHER).
tagsArray<string>List of tags for categorization or filtering.
purchaseOrderArray<POData>List of purchase orders to associate with the product upon creation.
frenchLabelCountryobject[FRENCH ECO-SCORE] The product’s final assembly location. Check the location list here.
frenchLabelDyeingCountryobject[FRENCH ECO-SCORE] The product’s preparation, dyeing, and finishing location. Check the location list here.
frenchLabelFabricCountryobject[FRENCH ECO-SCORE] The product’s textile formation location. Check the location list here.
frenchLabelOptionalFieldsobject[FRENCH ECO-SCORE] Optional fields for durability and scoring. See the Optional Fields reference for details.
weightIsPrimaryDataboolean[FRENCH ECO-SCORE] Indicates if the weight data is primary data.

Implementation details

  • Weight validation: The API checks if isMaterialWeight is false. If so, weight must be provided. If weight is provided, weightMeasureUnit defaults to grams if not specified.
  • Purchase orders: If provided, purchase orders are validated. If an assembly is included in the PO data, it checks for a valid femId (FEM assessment ID).

Authorizations

x-api-key
string
header
required
x-developer-request-token
string
header
required

Body

application/json
name
string
required
materials
object[]
required
weight
number<double> | null
weightMeasureUnit
enum<string>
Available options:
kilograms,
grams,
milligram,
pound,
ounce
weightIsPrimaryData
boolean | null
productCategory
string | null
size
string | null
taxonomyId
string | null
packaging
object[] | null
components
object[] | null
identifier
string | null
identifierType
enum<string>
Available options:
GTIN,
SKU,
UPC,
OTHER
tags
string[] | null
purchaseOrder
object[] | null
frenchLabelCountry
object

Determines what country this product was made in, for the French Label Eco-Scores.

frenchLabelDyeingCountry
object

Determines what country this product was dyed in, for the French Label Eco-Scores.

frenchLabelFabricCountry
object

Determines what country this product was woven or knitted in, for the French Label Eco-Scores.

frenchLabelOptionalFields
object

Optional durability fields for the French Label Eco-Score, gated by EnableFrenchEcoOptionalFields config key.

isMaterialWeight
boolean | null
categoryExpansionId
string | null

Response

200 - application/json

Ok

API light version of a CorpRepProductEntity for the API. Ideally we would do this with a Pick or Omit, but tsoa doesn't recognice those

_id
string
required
name
string
required
weightInformation
object
required

corpRep weight information

type
string
required
createdOn
object
required
user
object
required

This interface was referenced by Exports's JSON-Schema via the definition "userRef".

account
object
required

This interface was referenced by Exports's JSON-Schema via the definition "accountRef".

materials
object[]
required
materialImpact
number<double>
required
tier1Impact
number<double>
required
packagingImpact
number<double>
required
logisticsImpactsUpstreamTD
number<double>
required
logisticsImpactsDTImpact
number<double>
required
logisticsImpactsDCImpact
number<double>
required
logisticsImpactsRetailImpact
number<double>
required
productCareImpacts
number<double>
required
endOfUseImpact
number<double>
required
_rev
string | null
version
string | null
productType
string | null
productCategory
string | null
packagingWeight
object

corpRep weight information

modelNumber
string | null
barcodes
string[] | null
dataSource
string | null
modifiedOn
object
deleted
boolean | null
modifiedBy
object

This interface was referenced by Exports's JSON-Schema via the definition "userRef".

deletedBy
object

This interface was referenced by Exports's JSON-Schema via the definition "userRef".

defaultProduct
object
components
object[] | null
packaging
object[] | null
notes
string | null
purchaseOrder
object[] | null
purchaseOrderImpactsTotal
object

corpRep weight information

componentImpact
number<double> | null
upstreamTransportation
number<double> | null
downstreamTransportationRetail
number<double> | null
downstreamTransportationConsumer
number<double> | null
distributionCenterUnOwned
number<double> | null
retailEnergyUnOwned
number<double> | null
frenchLabelManufacturingCountry
object

Determines what country this product was made in, for the French Label Eco-Scores.

frenchLabelFabricCountry
object

Determines what country this product was woven or knitted in, for the French Label Eco-Scores.

frenchLabelDyeingCountry
object

Determines what country this product was dyed in, for the French Label Eco-Scores.

frenchLabelOptionalFields
object

Optional durability fields for the French Label Eco-Score, gated by EnableFrenchEcoOptionalFields config key.

frenchLabelEligibility
object

Store information on whether a product is eligible for French Label Eco-Scores.

frenchLabelEcoScore
object

Determines the environmental impacts of a product based on mass, composition, place of manufacture, etc. (See https://ecobalyse.beta.gouv.fr/#/api)