# List contract type groups

**Requires scope:** `payroll_hours` or `payroll`.
Lists the contract type groups you can receive payroll periods for, ordered by id.
When your API token is linked to a payroll application, only the contract type groups that application is authorized for are listed.
Use `id` to match the `contractTypeGroupId` of payroll period queue items and the payroll period ready webhook.
Use `contractTypeIds` to match the `id` of the contract types listed by `GET /api2/contract-types`.

Endpoint: GET /api2/payroll/contract-type-groups
Security: apiKey

## Security:

  - `apiKey` (unknown)
    apiKey in header Authorization scopes: payroll_hours

  - `apiKey` (unknown)
    apiKey in header Authorization scopes: payroll

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `contractTypeGroups` (array)

  - `contractTypeGroups.id` (integer)
    Unique identifier of the contract type group.
    Example: 3

  - `contractTypeGroups.name` (string)
    Slug of the contract type group label (lowercase, spaces replaced by dashes). Use this as `contractTypeGroupName` in the v3 payroll endpoints.
    Example: hospitality-permanent

  - `contractTypeGroups.label` (string)
    Label of the contract type group, as configured in Dyflexis.
    Example: Hospitality permanent

  - `contractTypeGroups.contractTypeIds` (array)
    Ids of the contract types in this contract type group, ordered by id. These are the `id` values of `GET /api2/contract-types`. Empty when the group has no contract types.
    Example: [1,4]

## Response 401:

  - `401` (unknown)
    Missing or invalid authentication.

## Response 401 fields (application/json):

  - `title` (string, required)
    Short, human-readable summary of the error.
    Example: Unauthorized

  - `status` (integer, required)
    The HTTP status code.
    Example: 401

  - `message` (string, required)
    Human-readable explanation of this occurrence of the error.
    Example: Invalid Token

  - `detail` (string)
    Human-readable explanation of this occurrence. Not returned by all backend versions.
    Example: Invalid Token

  - `code` (integer)
    The HTTP status code (duplicate of `status`). Not returned by all backend versions.
    Example: 401

## Response 403:

  - `403` (unknown)
    The token is valid but lacks the scope required for this operation.

## Response 403 fields (application/json):

  - `title` (string, required)
    Short, human-readable summary of the error.
    Example: Unauthorized

  - `status` (integer, required)
    The HTTP status code.
    Example: 401

  - `message` (string, required)
    Human-readable explanation of this occurrence of the error.
    Example: Invalid Token

  - `detail` (string)
    Human-readable explanation of this occurrence. Not returned by all backend versions.
    Example: Invalid Token

  - `code` (integer)
    The HTTP status code (duplicate of `status`). Not returned by all backend versions.
    Example: 401

## Response 503:

  - `503` (unknown)
    System temporary unavailable due to maintenance

