Integration guide · PACT

Exchange a product carbon footprint via PACT

ClimateCamp implements the PACT v3 Data Exchange Protocol — the WBCSD interoperability standard for exchanging product carbon footprints (PCFs) between trading partners. ClimateCamp acts as a PACT host: the footprints published in your account are served to authorized partners over the standard contract, so any PACT-conformant system can retrieve them — no bespoke integration per customer. This page shows how that exchange works.

How the exchange works

Footprints in your account

PCFs you've calculated in ClimateCamp or uploaded, published to your company profile — shareable via Explore and over PACT.

ClimateCamp (PACT host)

A conformant PACT endpoint: list and fetch footprints, and exchange asynchronous events — authenticated per partner, scoped to what each partner is entitled to see.

↑ Partners retrieve

Authorized customers list and fetch your published footprints in the standard schema, or request one on demand via events.

Authentication

PACT uses OAuth 2.0 client-credentials. The PACT contract defines its own token endpoint — POST {base_url}/pact/auth/token — separate from the main ClimateCamp /auth/token. Exchange your client id/secret for a bearer token, then call the conformant endpoints under {base_url}/pact/. The token is scoped to your partner relationship — you only ever see footprints shared with you. Conformant clients can discover the token endpoint via GET {base_url}/pact/.well-known/openid-configuration.

curl -X POST {base_url}/pact/auth/token \
  -d grant_type=client_credentials -d client_id=$ID -d client_secret=$SECRET
# → { "access_token": "eyJ…", "token_type": "Bearer", "expires_in": 3600 }

The conformant endpoints (PACT v3)

ActionEndpointPurpose
POST/pact/auth/tokenAuth — OAuth 2.0 client-credentials token endpoint for the PACT contract.
GET/pact/footprintsListFootprints — page through the footprints shared with you; filter by product or company id.
GET/pact/footprints/{id}GetFootprint — fetch a single footprint by its PACT id.
POST/pact/eventsEvents — asynchronous notifications (CloudEvents): request a footprint on demand, and be notified when one is published or fulfilled.

Request footprints

  1. List the footprints shared with you
    Returns a page of PACT ProductFootprint objects; follow the Link header for the next page. Filter to narrow by product or supplier.
    curl "{base_url}/pact/footprints?$filter=productIds/any(p:p eq 'urn:gtin:09506000XXXXXX')" \
      -H "Authorization: Bearer $TOKEN"
  2. Fetch one footprint by id
    Resolve a single footprint — for example, the one referenced in an event you received.
    curl "{base_url}/pact/footprints/{id}" -H "Authorization: Bearer $TOKEN"

A PACT ProductFootprint (anonymized)

The exchanged object follows the PACT v3 ProductFootprint schema, so it imports directly into any conformant system. Values below are illustrative placeholders.

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "specVersion": "3.0.0", "version": 1, "status": "Active",
  "companyName": "Supplier A",
  "companyIds": ["urn:lei:00000000000000000000"],
  "productIds": ["urn:gtin:09506000XXXXXX"],
  "productCategoryCpc": "3411",
  "productNameCompany": "Example intermediate (1 kg)",
  "pcf": {
    "declaredUnit": "kilogram", "unitaryProductAmount": "1.0",
    "pCfExcludingBiogenic": "2.34", "pCfIncludingBiogenic": "2.41",
    "referencePeriodStart": "2025-01-01T00:00:00Z",
    "referencePeriodEnd": "2025-12-31T23:59:59Z",
    "geographyCountry": "DE", "primaryDataShare": 62.0
  }
}

Getting footprints into ClimateCamp

The footprints you exchange over PACT originate inside ClimateCamp. There are two routes, both ending in a published footprint on your company profile — there is no separate PACT "import" API call.

Calculate in-platform

  • Calculated by ClimateCamp's engine from your activity and supplier data.
  • Published to your company profile as a product footprint.
  • Shareable via Explore and over PACT once published.

Bulk upload existing PCFs

  • Upload PCFs you already hold, in bulk via Excel / CSV.
  • Mapped to your products — and, for supplier PCFs, to the supplier.
  • Published alongside calculated footprints, then exchanged over PACT.

Once published, a footprint is served by the conformant endpoints above — partners retrieve it with ListFootprints / GetFootprint, no extra step on your side.

Events — request on demand

Asynchronous exchange (CloudEvents)

When a footprint isn't published yet, PACT supports an asynchronous request/fulfilment flow over POST /pact/events: a partner sends a Request event for a product, and the host replies with a Published (fulfilment) event once the footprint is available. Events carry the footprint id, which you then resolve with GetFootprint. This keeps both sides in sync without polling.

Standards & references

Built on the open PACT standard — opens in a new tab: PACT Technical Specifications v3 · Partnership for Carbon Transparency · GHG Protocol Product Standard