Skip to main content
POST
/
products
/
update
/
{productId}
Products Update
curl --request POST \
  --url https://api-v2.production.higg.org/pic-api/v1/products/update/{productId} \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --header 'x-developer-request-token: <api-key>' \
  --data '
{
  "name": "<string>",
  "weight": 123,
  "weightMeasureUnit": "kilograms",
  "weightIsPrimaryData": true,
  "taxonomyId": "<string>",
  "size": "<string>",
  "productCategory": "<string>",
  "categoryExpansionId": "<string>",
  "packaging": [
    {
      "packagingId": "<string>",
      "amount": 123
    }
  ],
  "materials": [
    {
      "netUse": 123,
      "materialId": "<string>",
      "composition": 123
    }
  ],
  "components": [
    {
      "componentId": "<string>",
      "unit": 123
    }
  ],
  "addPurchaseOrder": [
    {
      "purchaseOrderId": "<string>",
      "purchaseDate": "<string>",
      "amountPurchase": 123,
      "assembly": {
        "femId": "<string>"
      }
    }
  ],
  "updatePurchaseOrder": [
    {
      "_id": "<string>",
      "purchaseOrderId": "<string>",
      "purchaseDate": "<string>",
      "amountPurchase": 123,
      "assembly": {
        "femId": "<string>"
      }
    }
  ],
  "removePurchaseOrder": [
    "<string>"
  ],
  "frenchLabelOptionalFields": {
    "countrySpinning": {
      "code": "<string>",
      "name": "<string>"
    },
    "upcycled": true,
    "price": 123,
    "numberOfReferences": 123,
    "business": "small-business"
  },
  "isMaterialWeight": true
}
'
{
  "_id": "<string>",
  "name": "<string>",
  "weightInformation": {
    "convertedToKg": 123,
    "weight": 123,
    "unit": "kilograms",
    "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,
    "vbType": "None",
    "socialCreditId": "<string>",
    "taxId": "<string>",
    "bluesignId": "<string>",
    "zdhcId": "<string>",
    "ipeViolation": {
      "totalViolations": 123
    },
    "ffcId": 123,
    "approvalStatus": "Approved"
  },
  "materials": [
    {
      "name": "<string>",
      "netUse": 123,
      "materialId": "<string>",
      "composition": 123,
      "weightInformation": {
        "convertedToKg": 123,
        "weight": 123,
        "unit": "kilograms",
        "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,
    "unit": "kilograms",
    "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,
        "unit": "kilograms",
        "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,
        "unit": "kilograms",
        "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,
        "assessmentStatus": "NS"
      },
      "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,
    "business": "small-business"
  },
  "frenchLabelEligibility": {
    "eligible": true,
    "reasons": [
      {
        "category": "ProductType",
        "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
    },
    "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
    },
    "status": "Pending",
    "apiVersion": "<string>",
    "apiResponseError": "<string>"
  }
}
Use this endpoint to update an existing product in your PIC product library.

PIC - Update Product with French Eco Score requirements

Download our Postman collection example for product creation here.

Request body properties

Field NameData TypeDescription
namestringNew name for the product.
weightnumberNew weight. Condition: If updated, and isMaterialWeight is false, this field is required.
weightMeasureUnitstring (enum)Unit for the weight.
isMaterialWeightbooleanToggle whether weight is calculated from materials.
taxonomyIdstringUpdate taxonomy ID.
sizestringUpdate product size.
productCategorystring[DEPRECATED] The category of the product. Use categoryExpansionId instead.
categoryExpansionIdstringThe product category code.
packagingArray<PackagingData>Replace packaging list. Each item requires packagingId and amount.
materialsArray<MaterialsData>Replace materials list. Each item requires materialId and netUse.
componentsArray<ComponentData>Replace components list. Each item requires componentId and unit.
addPurchaseOrderArray<POData>Add new purchase orders to the product. Items include purchaseOrderId, purchaseDate, amountPurchase, and assembly (with femId).
updatePurchaseOrderArray<POData>Update existing purchase orders. Items require _id.
removePurchaseOrderArray<string>List of purchase order IDs (_id) to remove.
frenchLabelCountryobject<code, name>[FRENCH ECO-SCORE] The product’s final assembly location. Check the location list here.
frenchLabelDyeingCountryobject<code, name>[FRENCH ECO-SCORE] The product’s preparation, dyeing, and finishing location. Check the location list here.
frenchLabelFabricCountryobject<code, name>[FRENCH ECO-SCORE] The product’s textile formation location. Check the location list here.
frenchLabelOptionalFieldsobject[FRENCH ECO-SCORE] Optional fields for durability and scoring, including business, countrySpinning, numberOfReferences, price, and upcycled.
weightIsPrimaryDataboolean[FRENCH ECO-SCORE] Indicates if the weight data is primary data.

Implementation details

  • Partial updates: Most fields are optional. Providing them will update the value; omitting them usually leaves the existing value (standard PATCH/Update behavior), though the API treats this as a command object.
  • Purchase order logic: The update logic for purchase orders is complex. You can add, update, and remove purchase orders in a single call.
    • addPurchaseOrder: Appends new purchase orders.
    • updatePurchaseOrder: Matches by _id and updates fields.
    • removePurchaseOrder: Removes purchase orders by _id.
  • FEM assessment IDs: When adding or updating purchase orders with assembly data, ensure you use valid FEM assessment IDs for the femId field.

Authorizations

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

Path Parameters

productId
string
required

Body

application/json
name
string | null
weight
number<double> | null
weightMeasureUnit
enum<string>
Available options:
kilograms,
grams,
milligram,
pound,
ounce
weightIsPrimaryData
boolean | null
taxonomyId
string | null
size
string | null
productCategory
string | null
categoryExpansionId
string | null
packaging
object[] | null
materials
object[] | null
components
object[] | null
addPurchaseOrder
object[] | null
updatePurchaseOrder
object[] | null
removePurchaseOrder
string[] | 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

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)