---
title: "Replace a PCF product's details"
method: PUT
path: "/pcf/products/{productId}"
---

# Replace a PCF product's details

`PUT /pcf/products/{productId}`

Replaces name, code, description, declared unit and region. Requires org.write_data.

## Request body

- PcfProductInput
  - `declaredQuantity` number, double, nullable
  - `declaredUnit` string, nullable
  - `description` string, nullable
  - `name` string, required
  - `productCode` string, nullable
  - `regionCode` string, nullable
  - `source` 'manual' | 'upload', nullable — Set when creating; upload marks a product whose first BOM import becomes its source file. Ignored on update.

## Response `200`

Updated product

- PcfProductDetailResponse
  - `data` PcfProductDetail, required
    - `lines` PcfBomLine[], required
      - `description` string, required
      - `factor` PcfFactor, required
        - `activityCode` string, required
        - `activityUnit` string, required
        - `categoryName` string, required
        - `factorValue` number, double, required
        - `id` string, required
        - `name` string, required
        - `referenceProduct` string, nullable
        - `regionCode` string, required
        - `releaseId` string, required
        - `releaseName` string, required
        - `releaseVersion` string, required
        - `releaseYear` integer, nullable
        - `scope` integer, required
        - `sourceLocation` string, nullable
        - `sourceUuid` string, nullable
        - `split` PcfEmissionSplit — Fossil, biogenic and land-use-change parts of a GWP100 value, in the same unit as the value they split.
          - `biogenic` number, double, required
          - `fossil` number, double, required
          - `landUseChange` number, double, required
        - `unit` string, required
      - `id` string, required
      - `notes` string, nullable, required
      - `position` integer, required
      - `quantity` number, double, required
      - `quantityUnit` string, required
      - `stage` 'materials' | 'packaging' | 'transport' | 'energy' | 'waste', required
    - `product` PcfProduct, required
      - `archivedAt` string, date-time, nullable, required
      - `createdAt` string, date-time, required
      - `declaredQuantity` number, double, required
      - `declaredUnit` string, required
      - `description` string, nullable, required
      - `id` string, required
      - `latestCalculation` PcfCalculationSummary, required
        - `createdAt` string, date-time, required
        - `id` string, required
        - `kgCo2ePerDeclaredUnit` number, double, required
        - `methodVersion` string, required
        - `totalKgCo2e` number, double, required
      - `lineCount` integer, required
      - `name` string, required
      - `productCode` string, nullable, required
      - `regionCode` string, nullable, required
      - `source` 'manual' | 'upload', required — Typed in, or created from an uploaded BOM file.
      - `sourceFile` PcfProductSourceFile, required
        - `contentType` string, required
        - `fileName` string, required
        - `importId` string, required
        - `sizeBytes` integer, required
        - `uploadedAt` string, date-time, required
      - `updatedAt` string, date-time, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict

## Changes

- **2026-10-01** `b4751fd15397` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/pcf/products/:productId/put.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/b4751fd15397?raw)
