# PPWR Compliance Use Case

Learn how to use Coolset APIs to meet Packaging and Packaging Waste Regulation (PPWR) requirements.

## Overview

The EU Packaging and Packaging Waste Regulation (PPWR) requires companies to track, assess, and report on packaging across their supply chain. Coolset's APIs let you flag packaging products via tags, run packaging risk assessments, and upload supporting evidence — using the same infrastructure as EUDR, without any regulation-specific endpoints.

## Compliance Workflow


```mermaid
graph LR
    A[Tag Packaging Products] --> B[Run Packaging Assessment]
    B --> C{Risk Level}
    C -->|Acceptable| D[Download Evidence Package]
    C -->|High| E[Gather Evidence]
    E --> F[Upload Documents]
    F --> B
```

## Step 1: Flag Products as Packaging

Products are flagged for PPWR via tags. Two tags are used:

| Tag | Meaning |
|  --- | --- |
| `PPWR` | This product is in scope for PPWR compliance |
| `PACKAGING` | This product is a packaging component used within a PPWR product |


Use `PATCH /products/{id}/` to apply tags to existing products:


```bash
# Flag a product as in scope for PPWR
curl -X PATCH https://developers-scranton.coolset.com/api/products/456/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tags": ["PPWR"]}'

# Flag a packaging component
curl -X PATCH https://developers-scranton.coolset.com/api/products/789/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tags": ["PACKAGING"]}'
```

**Response:**


```json
{
  "id": 456,
  "name": "Cardboard Box 30x20x15cm",
  "tags": ["PPWR"],
  "pulse_params": {
    "identifier": "scranton$product$456",
    "model_identifier": "product"
  }
}
```

Note the `pulse_params.identifier` — you'll need this to run the risk assessment in the next step.

## Step 2: Run a Packaging Risk Assessment

Use the `pulse_params.identifier` from the product response as the `identifier` field:


```bash
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "identifier": "scranton$product$456",
    "assessment_type": "ppwr_packaging_assessment"
  }'
```

**Response:**


```json
{
  "id": 101,
  "identifier": "scranton$product$456",
  "assessment_type": "ppwr_packaging_assessment",
  "results": {
    "risk_level": "low",
    "recyclability_score": 0.85,
    "recycled_content_percentage": 40
  },
  "assessment_date": "2025-05-12T10:00:00Z"
}
```

Aggregate assessments run automatically — no need to trigger them manually.

## Step 3: Upload Supporting Documents

Attach evidence (supplier declarations, material certificates) to your assessment:


```bash
# Create document record and get pre-signed upload URL
curl -X POST https://developers-pulse.coolset.com/api/documents/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Recycled Content Certificate.pdf",
    "content_type": "application/pdf"
  }'

# Upload file using the pre-signed URL from the response, then confirm
curl -X POST https://developers-pulse.coolset.com/api/documents/{id}/confirm_upload/ \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

## Step 4: Download Evidence Package

Package all evidence for regulatory submission or audit:


```bash
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/101/evidence-downloads/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  --output ppwr-evidence-package.zip
```

## Optional: Invite Suppliers onto the Platform

If you want suppliers to contribute their own data, create a Value Chain with `type: "supplier"` and set `send_information_request: true` to trigger an invitation email:


```bash
curl -X POST https://developers-scranton.coolset.com/api/value-chains/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Packaging GmbH",
    "type": "supplier",
    "country_code": "DE",
    "contact_name": "Jana Schmidt",
    "contact_email": "jana.schmidt@acme-packaging.de",
    "send_information_request": true
  }'
```

Once the supplier accepts and connects, their data becomes available in your assessments.

### Request Information from Suppliers

You can also send information requests for specific orders — either individually or in bulk:


```bash
# Single information request
curl -X POST https://developers-scranton.coolset.com/api/information-requests/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": 1001,
    "value_chain_id": 55
  }'

# Bulk information requests (up to 100)
curl -X POST https://developers-scranton.coolset.com/api/information-requests/bulk/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "information_requests": [
      {"order_id": 1001, "value_chain_id": 55},
      {"order_id": 1002, "value_chain_id": 55},
      {"order_id": 1003, "value_chain_id": 62}
    ]
  }'
```

## Key Concepts

### Product Tags

| Tag | Use |
|  --- | --- |
| `PPWR` | Marks the product as in scope for PPWR — used to filter which products get assessed |
| `PACKAGING` | Marks the product as a packaging component within a PPWR product |


### Assessment Types

| Type | Description |
|  --- | --- |
| `ppwr_packaging_assessment` | Assess a single packaging product for PPWR compliance |


Aggregate assessments run automatically after individual assessments complete.

### Risk Levels

| Level | Action Required |
|  --- | --- |
| **Low** | Acceptable — download evidence package |
| **Medium** | Additional checks may be required |
| **High** | Enhanced due diligence — gather evidence and re-assess |


## Compliance Checklist

- [ ] PPWR-scoped products tagged with `PPWR`
- [ ] Packaging components tagged with `PACKAGING`
- [ ] Individual packaging assessments run for all in-scope products
- [ ] Supporting documents (material certs, declarations) uploaded
- [ ] Evidence package downloaded and archived
- [ ] Non-compliant products flagged for remediation


## API Endpoints Used

- `PATCH /products/{id}/` — [Supply Chain API](/supply-chain-api) — tag products as PPWR / PACKAGING
- `POST /compliance/risk-assessments/` — [Compliance API](/compliance-api) — run packaging assessments
- `POST /documents/` — [Data API](/data-api) — upload evidence
- `POST /documents/{id}/confirm_upload/` — [Data API](/data-api) — confirm upload
- `POST /compliance/risk-assessments/{id}/evidence-downloads/` — [Compliance API](/compliance-api) — download evidence package
- `POST /value-chains/` — [Supply Chain API](/supply-chain-api) — invite suppliers
- `POST /information-requests/` — [Supply Chain API](/supply-chain-api) — request supplier data for an order
- `POST /information-requests/bulk/` — [Supply Chain API](/supply-chain-api) — bulk information requests


## Next Steps

- [EUDR Compliance →](/use-cases/eudr-compliance)
- [Compliance API Reference →](/compliance-api)
- [Supply Chain API Reference →](/supply-chain-api)
- [Data API Reference →](/data-api)