---
title: "Get product groups in a contract"
method: GET
path: "/contracts/{contract_id}/product_groups"
tags: ["Contract - Products"]
---

# Get product groups in a contract

`GET /contracts/{contract_id}/product_groups`

Use this endpoint to get product groups in a contract.

## Path parameters

- `contract_id` integer, required

## Headers

- `x-oneflow-api-token` string, required
- `x-oneflow-user-email` string, email

## Response `200`

Returns the list of product groups.

- object — A collection of product groups in a contract with count.
  - `count` integer, required
  - `data` object[], required
    - `_private_ownerside` object, nullable, required — Product group data that is private to the ownerside.
      - `created_time` string, datetime, required
      - `custom_id` string, nullable, required
      - `updated_time` string, datetime, nullable, required
    - `configuration` object, required — Updated product group configuration
      - `columns` object[]
        - `enabled` boolean
        - `key` 'name' | 'description' | 'price_1' | 'price_2' | 'count', required — One of the product group column keys.
        - `label` string
        - `tax_1` object — Product group tax display name.
          - `label` string — The product group tax display name label.
          - `incl_tax` boolean — If true, prices are entered including tax.
      - `counterpart_edit` boolean
      - `hide_price_summation` boolean
      - `name` object — Product group name data.
        - `enabled` boolean — If true, the product group name is enabled.
        - `label` string — The product group name label.
      - `price_affixes` object — Postfix and prefix of a contract product price.
        - `postfix` string
        - `prefix` string
      - `price_precision` integer, nullable
      - `quantity_precision` integer, nullable
      - `tax_1` object — Product group tax display name.
        - `label` string — The product group tax display name label.
        - `incl_tax` boolean — If true, prices are entered including tax.
    - `created_from` integer, nullable — This will be only available in the contract create response.
    - `enabled_columns` object[], required
      - `enabled` boolean, required
      - `key` string, required
    - `id` integer, required
    - `products` object[], required
      - `_private_ownerside` object, nullable, required — Product data that is private to the ownerside.
        - `created_time` string, datetime, required
        - `custom_id` string, nullable, required
        - `updated_time` string, datetime, nullable, required
      - `counterparty_lock` boolean
      - `created_from` integer, nullable — This will be only available in the contract create response.
      - `description` string
      - `id` integer, required
      - `name` string, required
      - `price_1` object, nullable, required — An object that holds all price related information for an individual product.
        - `amount` object, required — The price amount after discount.
          - `amount` string, signed_amount_4_decimal, nullable, required
        - `base_amount` object, required — The price amount before discount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_amount` object, required — The absolute discount amount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_percent` string, discount_percent, nullable, required — The discount percentage as a decimal string between "0" and "100".
        - `tax_1` object, nullable — Product tax details.
          - `key` 'percentage', required
          - `value` string, tax_percent, required — Represents the tax percentage as a decimal string greater than or equal to 0 and less than or equal to 100.
      - `price_2` object, nullable, required — An object that holds all price related information for an individual product.
        - `amount` object, required — The price amount after discount.
          - `amount` string, signed_amount_4_decimal, nullable, required
        - `base_amount` object, required — The price amount before discount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_amount` object, required — The absolute discount amount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_percent` string, discount_percent, nullable, required — The discount percentage as a decimal string between "0" and "100".
        - `tax_1` object, nullable — Product tax details.
          - `key` 'percentage', required
          - `value` string, tax_percent, required — Represents the tax percentage as a decimal string greater than or equal to 0 and less than or equal to 100.
      - `quantity` object, required — The object holds information about the quantity of an individual product. The default quantity type is multiple_choice. If the quantity type is single_choice or multiple_choice, the amount must be set to 0 or 1. If the quantity type is set to single_choice, the amount must be set to 1 at least for one product, and 0 for the rest of the products in the same product group with the quantity type single_choice.
        - `amount` number, nullable — The number of individual products selected, or the quantity.
        - `type` 'single_choice' | 'multiple_choice' | 'quantity' — One of the product's [quantity types](product-group#quantity-type).

## Other responses

- `401` — The API token or the user email is invalid.
- `403` — The request is not authorized by the server.
- `404` — A required entity is missing.

---

[API](https://skmtc.net/oneflow/apis/public-api-for-oneflow.md) · [All operations](https://skmtc.net/oneflow/apis/public-api-for-oneflow/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneflow/public-api-for-oneflow/revisions/0e73a45dec15/schema)
