> ## Documentation Index
> Fetch the complete documentation index at: https://help.polygon-one.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Packaging Components

> Retrieve your company's live packaging components as stored. Soft-deleted components are never returned. Rows are ordered naturally by `code` (`CMP-2` before `CMP-10`), then by `id`, so paging can neither repeat nor skip a component. Requires `packaging:read` (a `packaging:write` key satisfies it); customer workspace with the PPWR module enabled.



## OpenAPI

````yaml GET /api/ppwr/components
openapi: 3.1.0
info:
  title: Polygon One Compliance API
  description: >-
    API for integrating ERP systems with the Polygon One EUDR Compliance
    Platform. Allows management of Articles, Suppliers, Orders, and Due
    Diligence Statements (DDS). PPWR packaging master data, the SKU quantity
    feed and Mengenmeldung reports are covered by the PPWR groups.
  version: 1.0.0
servers:
  - url: https://app.polygon-one.com
    description: Production Server
security:
  - bearerAuth: []
paths:
  /api/ppwr/components:
    get:
      summary: List Packaging Components
      description: >-
        Retrieve your company's live packaging components as stored.
        Soft-deleted components are never returned. Rows are ordered naturally
        by `code` (`CMP-2` before `CMP-10`), then by `id`, so paging can neither
        repeat nor skip a component. Requires `packaging:read` (a
        `packaging:write` key satisfies it); customer workspace with the PPWR
        module enabled.
      operationId: listPpwrComponents
      parameters:
        - name: code
          in: query
          required: false
          schema:
            type: string
          description: >-
            Return the components carrying exactly this code. **This narrows to
            a set, not to a row:** a code is unique per supplier bucket, so the
            same code may exist once in your own catalogue and once under a
            supplier who replied with it. Combine with `supplierId` to pick one.
            An empty value is no filter.
        - name: supplierId
          in: query
          required: false
          schema:
            type: string
          description: >-
            Narrow to the components of one supplier: a supplier UUID, or the
            literal `none` for your own (customer-authored) bucket. A value that
            is neither matches nothing rather than widening the result.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: >-
            Maximum number of rows to return. Opt-in: a request that sends
            neither `limit` nor `offset` returns the whole set. A non-numeric or
            non-positive value is a `400`.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
          description: >-
            Number of rows to skip. Opt-in, same rules as `limit`; a non-numeric
            or negative value is a `400`.
      responses:
        '200':
          description: List of packaging components
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PpwrComponent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    PpwrComponent:
      type: object
      description: >-
        One packaging component as stored — the shape both `GET
        /api/ppwr/components` and `GET /api/ppwr/components/{id}` return.
        Numeric values are decimal strings. Provenance and evidence fields are
        read-only: the intake API never writes them.
      required:
        - id
        - companyId
        - code
        - name
        - materials
        - contactSensitive
        - foodContact
        - heavyMetalsValueKind
        - heavyMetalsRecycledGlassDerogation
        - pfasTotalFluorineValueKind
        - pfasSumValueKind
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
          format: uuid
        companyId:
          type: string
          format: uuid
        createdByUserId:
          type:
            - string
            - 'null'
          format: uuid
        updatedByUserId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The last human editor; `null` when no human write path has stamped
            it.
        code:
          type: string
          description: >-
            Your component code — half of the upsert key of `POST
            /api/ppwr/components` (the other half is the resolved supplier).
        name:
          type: string
        supplierId:
          type:
            - string
            - 'null'
          format: uuid
          description: '`null` for a component of your own catalogue.'
        materials:
          type: array
          items:
            type: string
            enum:
              - plastic
              - paper_board
              - glass
              - metal
              - wood
              - composite
              - other
        polymer:
          type:
            - string
            - 'null'
          enum:
            - pet
            - hdpe
            - ldpe
            - pp
            - ps
            - pvc
            - other
            - null
        massGrams:
          type:
            - string
            - 'null'
          description: Mass of one piece, in grams.
        recycledContentPct:
          type:
            - string
            - 'null'
        recycledContentSource:
          type:
            - string
            - 'null'
          enum:
            - pcr
            - pir
            - null
        recycledContentMethod:
          type:
            - string
            - 'null'
          enum:
            - physical
            - mass_balance
            - null
        contactSensitive:
          type: boolean
        foodContact:
          type: boolean
        heavyMetalsMgPerKg:
          type:
            - string
            - 'null'
        heavyMetalsValueKind:
          type: string
          enum:
            - measured
            - declared_within_limit
          description: Whether the heavy-metals value is a measurement or a declared bound.
        heavyMetalsBasis:
          type:
            - string
            - 'null'
          enum:
            - test_report
            - supplier_declaration
            - not_substantiated
            - null
        heavyMetalsMethod:
          type:
            - string
            - 'null'
        heavyMetalsRecycledGlassDerogation:
          type: boolean
          description: >-
            The recycled-glass attestation for the Art. 5(4) sum. Set in the app
            only; no import or API write touches it.
        heavyMetalsEvidenceId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The evidence document backing the heavy-metals value, when one is
            attached.
        pfasCompliant:
          type:
            - boolean
            - 'null'
          description: 'Tri-state: `null` = unknown.'
        pfasBasis:
          type:
            - string
            - 'null'
          enum:
            - test_report
            - supplier_declaration
            - not_substantiated
            - null
        pfasMethod:
          type:
            - string
            - 'null'
        pfasTotalFluorineMgPerKg:
          type:
            - string
            - 'null'
        pfasTotalFluorineValueKind:
          type: string
          enum:
            - measured
            - declared_within_limit
        pfasSumPpb:
          type:
            - string
            - 'null'
        pfasSumValueKind:
          type: string
          enum:
            - measured
            - declared_within_limit
        pfasEvidenceId:
          type:
            - string
            - 'null'
          format: uuid
        lastProvidedBySupplierId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The supplier who last supplied this component's data through a data
            request.
        lastProvidedAt:
          type:
            - string
            - 'null'
          format: date-time
        notes:
          type:
            - string
            - 'null'
        deletedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Always `null` here — these routes never return a soft-deleted
            component.
        retentionUntil:
          type:
            - string
            - 'null'
          format: date-time
          description: Set only on a deleted component, so always `null` here.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        details:
          description: Additional error details (e.g. validation issues)
      required:
        - error
  responses:
    BadRequest:
      description: Invalid request data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Insufficient permissions for this resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        API key generated in Settings > API Keys. Include as `Authorization:
        Bearer <key>`.

````