> ## Documentation Index
> Fetch the complete documentation index at: https://developers.partoo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Breaking Changes

> This page provides information about breaking changes to the API.

<Note>
  **📅 How to read this page**

  Each breaking change shows two dates:

  * The **date on the left** is when the change was **communicated**.
  * The **yellow tag** is when the change **takes effect**.

  Breaking changes are listed with the latest effective date first.
</Note>

<Update label="15th April 2026">
  <span className="effective-tag">⚠️ Takes effect 15th October 2026</span>

  ### Deprecation of publisher\_errors endpoint

  The [`POST /publisher_errors/{business_id}`](/api-reference/presence/publishererrors-deprecated) endpoint has been deprecated in favor of the new [`POST /diffusion_errors/{business_id}`](/api-reference/presence/get-diffusion-errors-for-a-business) endpoint.

  **What's changing:**

  * The old [`POST /publisher_errors/{business_id}`](/api-reference/presence/publishererrors-deprecated) endpoint is now marked as deprecated
  * Please migrate to the new [`POST /diffusion_errors/{business_id}`](/api-reference/presence/get-diffusion-errors-for-a-business) endpoint

  **Why this change:**

  * Better organization and consolidation of publisher error handling endpoints
  * Improved feature control with proper authorization checks
  * More comprehensive error handling and validation

  **Migration guide:**

  Update your API calls from:

  ```bash theme={null}
  POST /publisher_errors/{business_id}
  ```

  To:

  ```bash theme={null}
  POST /diffusion_errors/{business_id}
  ```

  <Warning>
    The response structure has changed. The new endpoint provides errors grouped by publisher with enhanced categorization (pre-check and post-check errors). Review the examples below.
  </Warning>

  **Old response format (publisher\_errors):**

  ```json theme={null}
  {
    "errors": [
      {
        "publisher_id": "google",
        "error_code": "le118000",
        "field": "invalid_field",
        "message": "Field validation failed"
      }
    ]
  }
  ```

  **New response format (diffusion\_errors):**

  ```json theme={null}
  {
    "diffusion_errors": {
      "google": {
        "pre_check_errors": [
          {
            "error_code": "le118000",
            "field": "invalid_field",
            "message": "Field validation failed"
          }
        ],
        "post_check_errors": []
      }
    }
  }
  ```

  Review the [diffusion errors endpoint documentation](/api-reference/presence/get-diffusion-errors-for-a-business) for complete details on the new response structure.
</Update>

<Update label="1st December 2025">
  <span className="effective-tag">⚠️ Takes effect 15th July 2026</span>

  ### Deprecation of business fields endpoints and `sidebar_pages`

  The legacy permission system — **Business Fields** and **Sidebar Pages** — is being replaced by the new [Custom Roles](/guides/api/guides/custom-roles-and-permissions) system.

  **You are affected if:**

  * You read business-field permissions through the `business_fields` endpoints
  * You control sidebar visibility through the `sidebar_pages` user parameter

  **Deprecated endpoints:**

  * [`GET /org/{org_id}/business_fields`](/api-reference/business-fields/business-fields-configuration-for-an-organization) — organization-level business fields
  * [`GET /business/{business_id}/business_fields`](/api-reference/business-fields/business-fields-configuration-for-a-business) — business-level business fields

  <Note>
    If you used `GET /org/{org_id}/business_fields` to retrieve the organization's list of custom fields, use [`GET /v2/custom_fields`](/api-reference/custom-fields/get-custom-fields) instead.
  </Note>

  **Deprecated user parameter:**

  * `sidebar_pages` — replaced by the Custom Roles `permissions` model. Seen in:
    * [`POST /v2/user`](/api-reference/users/create-user) (create user)
    * [`POST /v2/user/{user_id}`](/api-reference/users/update-user) (update user)

  When creating or updating a user without a `custom_role`, users with the `GROUP_MANAGER` or `BUSINESS_MANAGER` role are automatically assigned the default built-in Custom Role associated with their role.

  **What happens on the effective date:**

  There will be no data loss until 15th July 2026 — your legacy permission data is preserved and you can switch back at any time. On the effective date, any organization that hasn't migrated yet is **migrated automatically** by Partoo, and the legacy permission data is then permanently deleted:

  * Your Business Field permissions are applied to the **built-in roles** (*Business Manager* and *Group Manager*).
  * Where users have specific Sidebar Pages, the matching **Custom Roles are created automatically**.

  You don't need to recreate any permissions by hand. If you'd rather control how your roles are organized, [switch early](/guides/api/guides/custom-roles-and-permissions#migration-guide) and set them up yourself before the deadline.

  <Warning>
    This automatic handling covers your **permission configuration** only. You must still update any integration that calls the deprecated `business_fields` endpoints or sends the `sidebar_pages` parameter, moving it to the Custom Roles endpoints and `permissions` model.
  </Warning>

  **Manage the migration:**

  * Check your eligibility and status: [`GET /org/{org_id}/switch_to_custom_roles`](/api-reference/custom-roles/get-custom-roles-switch-status)
  * Switch early to organize roles yourself: [`POST /org/{org_id}/switch_to_custom_roles`](/api-reference/custom-roles/switch-to-custom-roles)
  * Full walkthrough: [Managing User Permissions with Custom Roles](/guides/api/guides/custom-roles-and-permissions)
</Update>

<Update label="15th January 2026">
  <span className="effective-tag">⚠️ Takes effect 15th July 2026</span>

  ### Deprecation of business subscription endpoints

  **You are affected if:**

  * You are a provider

  The following endpoints are deprecated:

  * `GET /v2/business/{business_id}/subscription`
  * `POST /v2/business/{business_id}/subscribe`
  * `POST /v2/business/{business_id}/unsubscribe`

  Use these endpoints instead:

  * `GET /v2/business/{business_id}/plans`
  * `POST /v2/business/{business_id}/plans`
</Update>
