The way you retrieve account-level issues that can impact your products and
account health has changed. Compared to the `accountstatuses` resource in the
Content API for Shopping, Merchant API introduces a dedicated `AccountIssue`
resource that provides more structured and detailed information.

For more information on how to use the new feature, see the [View account issues
guide](https://developers.google.com/merchant/api/guides/accounts/view-issues).

**Note** : In Merchant API, account-level issues and aggregate product statuses
are split. Also review our guide to migrate from `accountstatuses` to
[aggregate product statuses](https://developers.google.com/merchant/api/guides/compatibility/aggregate-product-statuses).

## Key differences

Here are the key improvements and differences in the Merchant API `AccountIssue`
resource:

- **Dedicated resource:** Account issues are their own resource. In Content API for Shopping, account-level issues were a nested field within the general `AccountStatus` resource. With Merchant API you can list them directly using the `accounts.issues.list` method.
- **Structured impact data:** The `AccountIssue` resource provides a detailed `impactedDestinations` field. This field gives you a clear breakdown of an issue's impact, including the destination (for example, Shopping ads), the specific region, and the severity of the issue in that region.
- **Severity as an enum:** The `severity` field is now an enum (with values such as `CRITICAL`, `ERROR`, `SUGGESTION`), making it easier to process programmatically compared to the string-based values in Content API for Shopping.
- **Standardized identifiers:** Each account issue has a unique, full resource `name` in the format `accounts/{ACCOUNT_ID}/issues/{ISSUE_ID}`. This standardized approach replaces the `id` string from Content API for Shopping.
- **Localization support:** The `accounts.issues.list` method lets you specify a `language_code` to receive issue details, such as the title and description, in your preferred language. This was not possible in Content API for Shopping.
- **Advanced account behavior:** When you call `accounts.issues.list` on an advanced account, it only returns issues that apply directly to that advanced account. It does not return issues for any of its sub-accounts. In Content API for Shopping, the `accountstatuses.list` method would return the statuses for all sub-accounts. To get issues for all sub-accounts in Merchant API, you must call `accounts.listSubaccounts` and then call `accounts.issues.list` for each sub-account individually.

## Requests

In Merchant API, you can list account issues for a specific Merchant Center
account.

    GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/issues

### Request URL comparison

| Request description | Content API for Shopping | Merchant API |
|---|---|---|
| List account-level issues for a single account | `GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/accountstatuses/{ACCOUNT_ID}` | `GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/issues` |
| List account-level issues for all sub-accounts of an advanced account | `GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/accountstatuses` | Not available. You must iterate through sub-accounts. |

## Identifiers

The identifiers for accounts and issues have changed in Merchant API.

### Identifier comparison

| Identifier description | Content API for Shopping | Merchant API |
|---|---|---|
| Account identifier | `{MERCHANT_ID}` and `{ACCOUNT_ID}` as path parameters. | `{ACCOUNT_ID}` as a path parameter in the format `accounts/{ACCOUNT_ID}`. |
| Issue identifier | `id` field in the response body (for example, `"products-that-enable-dishonest-behavior-hacking-policy"`). | `name` field in the response body, which is the full resource name (for example, `accounts/12345/issues/example-issue-id`). |

## Methods

The methods for retrieving account issues have been consolidated and simplified
in Merchant API.

### Method comparison

| Content API for Shopping | Merchant API | Availability \& notes |
|---|---|---|
| `accountstatuses.get` | `accounts.issues.list` | **Available.** To get issues for a single account, use `accounts.issues.list` and specify the account ID. Merchant API does not have a `get` method for a single issue. |
| `accountstatuses.list` | No direct equivalent. | **Not available.** The `accounts.issues.list` method in Merchant API only returns issues for the specified account, not its sub-accounts. To get issues for all sub-accounts, you must first call `accounts.listSubaccounts` and then call `accounts.issues.list` for each sub-account. |
| `accountstatuses.custombatch` | No direct equivalent. | **Not available.** Batch processing for account issues is not supported in Merchant API. You must make individual `list` calls for each account. |

## Detailed field changes

The fields within the account issue resource have been updated to provide more
structure and clarity.

### Field comparison

| Content API for Shopping | Merchant API | Description |
|---|---|---|
| `accountLevelIssues` (array in `AccountStatus`) | `accountIssues` (array in `ListAccountIssuesResponse`) | Issues are now a dedicated, top-level resource, not a nested field. |
| `id` (string) | `name` (string) | The issue identifier is now a full resource name, for example `accounts/{ACCOUNT_ID}/issues/{ISSUE_ID}`. |
| `title` (string) | `title` (string) | No change. |
| `detail` (string) | `detail` (string) | No change. |
| `documentation` (string) | `documentationUri` (string) | Field renamed for clarity to indicate it's a URL. |
| `severity` (string) | `severity` (enum) | Severity is now a structured enum (`CRITICAL`, `ERROR`, `SUGGESTION`) instead of a string. |
| `country` (string), `destination` (string) | `impactedDestinations` (repeated message) | Impact is now structured into a list, grouping the destination, region, and severity for each affected area. The `country` field is replaced by `regionCode` within the `Impact` message. |
| (Not available) | `language_code`, `time_zone` (request parameters) | New parameters in the `list` request allow for localization of human-readable fields like `title` and `detail`. |