# Pricing Rules

Pricing rules define discount policies that can be automatically applied to eligible customers (e.g. employee meals, student discounts). They group grants (subsidies), entrance fees, and channel restrictions into a single configuration.

### List Pricing Rules

### `GET /pricing_rules` - List All Pricing Rules

Returns the full list of pricing rules for a given brand, optionally filtered by guest group.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | Brand identifier. |
| guestGroupId | integer | No | Optional guest group filter. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rules_found",
  "message": "Pricing rules found.",
  "data": [
    {
      "pricingRuleId": 1,
      "brandId": 22,
      "code": "EMPLOYEE_DISCOUNT",
      "applyScope": [
        "PRODUCT"
      ],
      "isUrssafEnabled": false,
      "grants": [
        {
          "grantId": 10,
          "position": 1
        }
      ],
      "entranceFees": [],
      "blockedChannels": []
    }
  ]
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rules\_found" | Machine-readable application code for the result. |
| message | string | "Pricing rules found." | Human-readable result message. Do not use this value for program logic. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].pricingRuleId | integer | 1 | Identifier of the associated pricing rule. |
| data\[\].brandId | integer | 22 | Identifier of the brand. |
| data\[\].code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |
| data\[\].applyScope | array | \[…\] | List of apply scope entries. |
| data\[\].applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| data\[\].isUrssafEnabled | boolean | false | Whether urssaf enabled is enabled or applies. |
| data\[\].grants | array | \[…\] | List of grants entries. |
| data\[\].grants\[\] | object | {…} | Object containing grants fields. |
| data\[\].grants\[\].grantId | integer | 10 | Identifier of the associated grant. |
| data\[\].grants\[\].position | integer | 1 | The position value. |
| data\[\].entranceFees | array | \[\] | List of entrance fees entries. |
| data\[\].blockedChannels | array | \[\] | List of blocked channels entries. |

### List (Minimal)

Retrieve a lightweight list of pricing rules containing only essential fields. Useful for dropdowns or quick lookups.

### `GET /pricing_rules/minimal` - List Pricing Rules (Minimal)

Returns a minimal representation of pricing rules for a brand.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | Brand identifier. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rules_found",
  "message": "Pricing rules found.",
  "data": [
    {
      "pricingRuleId": 1,
      "code": "EMPLOYEE_DISCOUNT"
    }
  ]
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rules\_found" | Machine-readable application code for the result. |
| message | string | "Pricing rules found." | Human-readable result message. Do not use this value for program logic. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].pricingRuleId | integer | 1 | Identifier of the associated pricing rule. |
| data\[\].code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |

### List (View)

Retrieve pricing rules in a list-view format. Returns summary data suitable for table-based UIs.

### `GET /pricing_rules/list` - List Pricing Rules (List View)

Returns pricing rules as a flat list for a given brand.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | Brand identifier. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rules_found",
  "message": "Pricing rules found.",
  "data": [
    {
      "pricingRuleId": 1,
      "code": "EMPLOYEE_DISCOUNT",
      "applyScope": [
        "PRODUCT"
      ],
      "isUrssafEnabled": false
    }
  ]
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rules\_found" | Machine-readable application code for the result. |
| message | string | "Pricing rules found." | Human-readable result message. Do not use this value for program logic. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].pricingRuleId | integer | 1 | Identifier of the associated pricing rule. |
| data\[\].code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |
| data\[\].applyScope | array | \[…\] | List of apply scope entries. |
| data\[\].applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| data\[\].isUrssafEnabled | boolean | false | Whether urssaf enabled is enabled or applies. |

### Get Pricing Rule

Retrieve a single pricing rule by its ID, including all associated grants, entrance fees, and blocked channels.

### `GET /pricing_rules/{pricingRuleId}` - Get Pricing Rule by ID

Returns a pricing rule with its full associations. Supports optional include parameters for related entities.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| pricingRuleId | integer | Yes | ID of the pricing rule. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rule_found",
  "message": "Pricing rule found.",
  "data": {
    "pricingRuleId": 1,
    "brandId": 22,
    "code": "EMPLOYEE_DISCOUNT",
    "applyScope": [
      "PRODUCT"
    ],
    "isUrssafEnabled": false,
    "grants": [
      {
        "grantId": 10,
        "position": 1
      }
    ],
    "entranceFees": [
      {
        "entranceFeeId": 5
      }
    ],
    "blockedChannels": [
      {
        "channelId": 3
      }
    ]
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rule\_found" | Machine-readable application code for the result. |
| message | string | "Pricing rule found." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.pricingRuleId | integer | 1 | Identifier of the associated pricing rule. |
| data.brandId | integer | 22 | Identifier of the brand. |
| data.code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |
| data.applyScope | array | \[…\] | List of apply scope entries. |
| data.applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| data.isUrssafEnabled | boolean | false | Whether urssaf enabled is enabled or applies. |
| data.grants | array | \[…\] | List of grants entries. |
| data.grants\[\] | object | {…} | Object containing grants fields. |
| data.grants\[\].grantId | integer | 10 | Identifier of the associated grant. |
| data.grants\[\].position | integer | 1 | The position value. |
| data.entranceFees | array | \[…\] | List of entrance fees entries. |
| data.entranceFees\[\] | object | {…} | Object containing entrance fees fields. |
| data.entranceFees\[\].entranceFeeId | integer | 5 | Identifier of the associated entrance fee. |
| data.blockedChannels | array | \[…\] | List of blocked channels entries. |
| data.blockedChannels\[\] | object | {…} | Object containing blocked channels fields. |
| data.blockedChannels\[\].channelId | integer | 3 | Identifier of the associated channel. |

### `GET /pricing_rules/{pricingRuleId}/count_related_customers` - Count Related Customers

Returns the number of customers associated with the given pricing rule. Useful for impact analysis before modifying or deleting a rule.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| pricingRuleId | integer | Yes | ID of the pricing rule. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rule_count_found",
  "message": "Pricing rule count found.",
  "data": {
    "count": 142
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rule\_count\_found" | Machine-readable application code for the result. |
| message | string | "Pricing rule count found." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.count | integer | 142 | Total number of matching records. |

### Create Pricing Rule

Create a new pricing rule for a brand. A pricing rule groups grants (subsidies), entrance fees, and channel restrictions into a single configuration that can be assigned to customers.

### `POST /pricing_rules` - Create Pricing Rule

Creates a pricing rule and associates it with grants, entrance fees, other pricing rules, and blocked channels.

#### Request Body

```json
{
  "brandId": 22,
  "code": "EMPLOYEE_DISCOUNT",
  "applyScope": [
    "PRODUCT"
  ],
  "isUrssafEnabled": false,
  "grants": [
    {
      "grantId": 10,
      "position": 1
    }
  ],
  "entranceFees": [
    {
      "entranceFeeId": 5
    }
  ],
  "pricingRules": [],
  "blockedChannels": [
    {
      "channelId": 3
    }
  ]
}
```

##### Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| brandId | integer | 22 | Identifier of the brand. |
| code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |
| applyScope | array | \[…\] | List of apply scope entries. |
| applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| isUrssafEnabled | boolean | false | Whether urssaf enabled is enabled or applies. |
| grants | array | \[…\] | List of grants entries. |
| grants\[\] | object | {…} | Object containing grants fields. |
| grants\[\].grantId | integer | 10 | Identifier of the associated grant. |
| grants\[\].position | integer | 1 | The position value. |
| entranceFees | array | \[…\] | List of entrance fees entries. |
| entranceFees\[\] | object | {…} | Object containing entrance fees fields. |
| entranceFees\[\].entranceFeeId | integer | 5 | Identifier of the associated entrance fee. |
| pricingRules | array | \[\] | List of pricing rules entries. |
| blockedChannels | array | \[…\] | List of blocked channels entries. |
| blockedChannels\[\] | object | {…} | Object containing blocked channels fields. |
| blockedChannels\[\].channelId | integer | 3 | Identifier of the associated channel. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rule_created",
  "message": "Pricing rule created.",
  "data": {
    "pricingRuleId": 42,
    "brandId": 22,
    "code": "EMPLOYEE_DISCOUNT",
    "applyScope": [
      "PRODUCT"
    ],
    "isUrssafEnabled": false
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rule\_created" | Machine-readable application code for the result. |
| message | string | "Pricing rule created." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.pricingRuleId | integer | 42 | Identifier of the associated pricing rule. |
| data.brandId | integer | 22 | Identifier of the brand. |
| data.code | string | "EMPLOYEE\_DISCOUNT" | Machine-readable application code for the result. |
| data.applyScope | array | \[…\] | List of apply scope entries. |
| data.applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| data.isUrssafEnabled | boolean | false | Whether urssaf enabled is enabled or applies. |

#### Field Reference

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | Integer | Yes | The brand this pricing rule belongs to. |
| code | String | Yes | A unique identifier code for this pricing rule (e.g. "EMPLOYEE\_DISCOUNT"). |
| applyScope | Array&lt;String&gt; | Yes | Scopes to which the rule applies. Values: `PRODUCT`, `FEE`. |
| isUrssafEnabled | Boolean | No | Whether URSSAF employer meal contribution rules apply. |
| grants | Array&lt;Object&gt; | Yes | List of grants (subsidies) to attach. Each object requires `grantId` (integer) and optional `position` (integer or null). |
| entranceFees | Array&lt;Object&gt; | No | Entrance fees to associate. Each object requires `entranceFeeId` (integer). |
| pricingRules | Array&lt;Object&gt; | No | Other pricing rules to link. Each object requires `pricingRuleId` (integer). |
| blockedChannels | Array&lt;Object&gt; | No | Channels on which this rule is blocked. Each object requires `channelId` (integer). |

### Update Pricing Rule

Update an existing pricing rule. The full configuration (code, scope, grants, entrance fees, blocked channels) must be provided.

### `PUT /pricing_rules/{pricingRuleId}` - Update Pricing Rule

Replaces the pricing rule configuration identified by pricingRuleId.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| pricingRuleId | integer | Yes | ID of the pricing rule to update. |

#### Request Body

```json
{
  "code": "EMPLOYEE_DISCOUNT_V2",
  "applyScope": [
    "PRODUCT",
    "FEE"
  ],
  "isUrssafEnabled": true,
  "grants": [
    {
      "grantId": 10,
      "position": 1
    },
    {
      "grantId": 11,
      "position": 2
    }
  ],
  "entranceFees": [
    {
      "entranceFeeId": 5
    }
  ],
  "pricingRules": [],
  "blockedChannels": []
}
```

##### Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| code | string | "EMPLOYEE\_DISCOUNT\_V2" | Machine-readable application code for the result. |
| applyScope | array | \[…\] | List of apply scope entries. |
| applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| isUrssafEnabled | boolean | true | Whether urssaf enabled is enabled or applies. |
| grants | array | \[…\] | List of grants entries. |
| grants\[\] | object | {…} | Object containing grants fields. |
| grants\[\].grantId | integer | 10 | Identifier of the associated grant. |
| grants\[\].position | integer | 1 | The position value. |
| entranceFees | array | \[…\] | List of entrance fees entries. |
| entranceFees\[\] | object | {…} | Object containing entrance fees fields. |
| entranceFees\[\].entranceFeeId | integer | 5 | Identifier of the associated entrance fee. |
| pricingRules | array | \[\] | List of pricing rules entries. |
| blockedChannels | array | \[\] | List of blocked channels entries. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rule_updated",
  "message": "Pricing rule updated.",
  "data": {
    "pricingRuleId": 42,
    "code": "EMPLOYEE_DISCOUNT_V2",
    "applyScope": [
      "PRODUCT",
      "FEE"
    ],
    "isUrssafEnabled": true
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rule\_updated" | Machine-readable application code for the result. |
| message | string | "Pricing rule updated." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.pricingRuleId | integer | 42 | Identifier of the associated pricing rule. |
| data.code | string | "EMPLOYEE\_DISCOUNT\_V2" | Machine-readable application code for the result. |
| data.applyScope | array | \[…\] | List of apply scope entries. |
| data.applyScope\[\] | string | "PRODUCT" | The apply scope value. |
| data.isUrssafEnabled | boolean | true | Whether urssaf enabled is enabled or applies. |

### Delete Pricing Rule

Permanently delete a pricing rule. All associations (grants, entrance fees, blocked channels) will be removed.

### `DELETE /pricing_rules/{pricingRuleId}` - Delete Pricing Rule

Deletes the pricing rule identified by pricingRuleId.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| pricingRuleId | integer | Yes | ID of the pricing rule to delete. |

#### Response

```json
{
  "status": 200,
  "code": "pricing_rule_deleted",
  "message": "Pricing rule deleted."
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rule\_deleted" | Machine-readable application code for the result. |
| message | string | "Pricing rule deleted." | Human-readable result message. Do not use this value for program logic. |

### Import Pricing Rules

Bulk import pricing rules from an uploaded file. The file is validated before being processed. On validation error the response contains detailed error information; on success the pricing rules are created or updated.

### `POST /pricing_rules/import` - Import Pricing Rules from File

Accepts a multipart file upload containing pricing rule data. Requires brandId as a query parameter. The io-locale header (fr/en) controls validation message language.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | Brand identifier (query parameter). |

#### Request Body

```json
multipart/form-data with a single file field
```

#### Response

```json
{
  "status": 200,
  "code": "pricing_rules_imported",
  "message": "Pricing rules imported.",
  "data": {
    "created": 5,
    "updated": 3
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "pricing\_rules\_imported" | Machine-readable application code for the result. |
| message | string | "Pricing rules imported." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.created | integer | 5 | The created value. |
| data.updated | integer | 3 | The updated value. |

### Default Pricing Policy

Manage the default pricing policy for a brand. The default pricing policy determines which entrance fee, pricing rule, and group are applied to new customers by default.

### `GET /brands/{brandId}/default_pricing_policy` - Get Default Pricing Policy

Retrieve the default pricing policy configured for a brand.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | The unique identifier of the brand. |

#### Response

```json
{
  "status": 200,
  "code": "default_pricing_policy_found",
  "message": "The default pricing policy has been found",
  "data": {
    "defaultPricingPolicy": {
      "entranceFeeId": 201,
      "pricingRuleId": 301,
      "group": "default"
    }
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "default\_pricing\_policy\_found" | Machine-readable application code for the result. |
| message | string | "The default pricing policy has been found" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.defaultPricingPolicy | object | {…} | Object containing default pricing policy fields. |
| data.defaultPricingPolicy.entranceFeeId | integer | 201 | Identifier of the associated entrance fee. |
| data.defaultPricingPolicy.pricingRuleId | integer | 301 | Identifier of the associated pricing rule. |
| data.defaultPricingPolicy.group | string | "default" | The group value. |

### `PUT /brands/{brandId}/default_pricing_policy` - Update Default Pricing Policy

Create or update the default pricing policy for a brand.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| brandId | integer | Yes | The unique identifier of the brand. |

#### Request Body

```json
{
  "defaultPricingPolicy": {
    "entranceFeeId": 201,
    "pricingRuleId": 301,
    "group": "default"
  }
}
```

##### Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| defaultPricingPolicy | object | {…} | Object containing default pricing policy fields. |
| defaultPricingPolicy.entranceFeeId | integer | 201 | Identifier of the associated entrance fee. |
| defaultPricingPolicy.pricingRuleId | integer | 301 | Identifier of the associated pricing rule. |
| defaultPricingPolicy.group | string | "default" | The group value. |

#### Response

```json
{
  "status": 200,
  "code": "default_pricing_policy_updated",
  "message": "The default pricing policy has been updated",
  "data": {
    "defaultPricingPolicy": {
      "entranceFeeId": 201,
      "pricingRuleId": 301,
      "group": "default"
    }
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "default\_pricing\_policy\_updated" | Machine-readable application code for the result. |
| message | string | "The default pricing policy has been updated" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.defaultPricingPolicy | object | {…} | Object containing default pricing policy fields. |
| data.defaultPricingPolicy.entranceFeeId | integer | 201 | Identifier of the associated entrance fee. |
| data.defaultPricingPolicy.pricingRuleId | integer | 301 | Identifier of the associated pricing rule. |
| data.defaultPricingPolicy.group | string | "default" | The group value. |

### URSSAF Minimum Amount

When a pricing rule has `isUrssafEnabled` set to `true`, order verification applies a minimum URSSAF employer contribution amount to eligible orders. The endpoints below expose the URSSAF minimum configuration in read-only mode. They do not require authentication.

### `GET /minimum_urssaf/current` - Get Current URSSAF Minimum Amount

Returns the URSSAF minimum amount currently in effect: the most recent configuration of the current calendar year whose start validity date is in the past. This is the value applied during order verification when the customer's pricing rule has isUrssafEnabled set to true. No authentication is required.

#### Response

```json
{
  "status": 200,
  "code": "minimum_urssaf_success",
  "message": "minimum urssaf current value",
  "data": {
    "minimumUrssafConfigId": 3,
    "amount": 253,
    "startValidityDate": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-15T09:30:00.000Z",
    "version": "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60"
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "minimum\_urssaf\_success" | Machine-readable application code for the result. |
| message | string | "minimum urssaf current value" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.minimumUrssafConfigId | integer | 3 | Identifier of the associated minimum urssaf config. |
| data.amount | integer | 253 | The amount value. |
| data.startValidityDate | string | "2026-01-01T00:00:00.000Z" | Date or timestamp for start validity. |
| data.updatedAt | string | "2026-01-15T09:30:00.000Z" | Timestamp when this resource was last updated. |
| data.version | string | "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60" | The version value. |

### `GET /minimum_urssaf/{minimumUrssafId}` - Get URSSAF Minimum Configuration by ID

Returns one historical URSSAF minimum configuration by its numeric identifier. No authentication is required. The data value is null when no configuration has that identifier.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| minimumUrssafId | integer | Yes | URSSAF minimum configuration identifier. |

#### Response

```json
{
  "status": 200,
  "code": "minimum_urssaf_success",
  "message": "minimum urssaf current value",
  "data": {
    "minimumUrssafConfigId": 3,
    "startValidityDate": "2026-01-01T00:00:00.000Z",
    "amount": 253,
    "created_at": "2025-12-10T14:00:00.000Z",
    "updated_at": "2026-01-15T09:30:00.000Z",
    "deleted_at": null,
    "version": "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60"
  }
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "minimum\_urssaf\_success" | Machine-readable application code for the result. |
| message | string | "minimum urssaf current value" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.minimumUrssafConfigId | integer | 3 | Identifier of the associated minimum urssaf config. |
| data.startValidityDate | string | "2026-01-01T00:00:00.000Z" | Date or timestamp for start validity. |
| data.amount | integer | 253 | The amount value. |
| data.created\_at | string | "2025-12-10T14:00:00.000Z" | Timestamp when this resource was created. |
| data.updated\_at | string | "2026-01-15T09:30:00.000Z" | Timestamp when this resource was last updated. |
| data.deleted\_at | null | null | Timestamp when this resource was deleted, or null when it is active. |
| data.version | string | "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60" | The version value. |

Current Calendar Year Only

The lookup is restricted to the current calendar year (January 1st to December 31st). A configuration from a previous year is never returned: until a configuration has been created for the new year, the endpoint returns `data` with `amount: 0` and `startValidityDate` set to the current date (without `minimumUrssafConfigId` or `version`). Treat`amount: 0` as "no minimum applicable", not as an error.

### `GET /minimum_urssaf/` - List URSSAF Minimum Configurations

Returns the full history of URSSAF minimum configurations, sorted by start validity date in descending order (most recent first). No authentication is required and no pagination is applied.

#### Response

```json
{
  "status": 200,
  "code": "minimum_urssaf_success",
  "message": "minimum urssaf current value",
  "data": [
    {
      "minimumUrssafConfigId": 3,
      "startValidityDate": "2026-01-01T00:00:00.000Z",
      "amount": 253,
      "created_at": "2025-12-10T14:00:00.000Z",
      "updated_at": "2026-01-15T09:30:00.000Z",
      "deleted_at": null,
      "version": "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60"
    },
    {
      "minimumUrssafConfigId": 2,
      "startValidityDate": "2025-01-01T00:00:00.000Z",
      "amount": 247,
      "created_at": "2024-12-05T10:00:00.000Z",
      "updated_at": null,
      "deleted_at": null,
      "version": "1c3b5a7d9e2f4a6c8b0d1e3f5a7c9b20"
    }
  ]
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "minimum\_urssaf\_success" | Machine-readable application code for the result. |
| message | string | "minimum urssaf current value" | Human-readable result message. Do not use this value for program logic. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].minimumUrssafConfigId | integer | 3 | Identifier of the associated minimum urssaf config. |
| data\[\].startValidityDate | string | "2026-01-01T00:00:00.000Z" | Date or timestamp for start validity. |
| data\[\].amount | integer | 253 | The amount value. |
| data\[\].created\_at | string | "2025-12-10T14:00:00.000Z" | Timestamp when this resource was created. |
| data\[\].updated\_at | string | "2026-01-15T09:30:00.000Z" | Timestamp when this resource was last updated. |
| data\[\].deleted\_at | null | null | Timestamp when this resource was deleted, or null when it is active. |
| data\[\].version | string | "5f2a9c1e8b7d4a3f6e0c2b1a9d8e7f60" | The version value. |

Do Not Use the First Item as the Current Value

Unlike `/minimum_urssaf/current`, this list also includes future configurations (with a `startValidityDate` in the future) and configurations from past years. Do not assume the first element is the value currently in effect - use `/minimum_urssaf/current` for that. Also note a field naming inconsistency: this list returns timestamps in snake\_case (`created_at`, `updated_at`, `deleted_at`) while`/minimum_urssaf/current` exposes `updatedAt` in camelCase.

In both endpoints, `amount` is an integer expressed in cents, and `version` is an MD5 hash derived from the configuration's last update timestamp and identifier, which can be used as a configuration version marker.
