REST Resource: issueresolution

Resource: RenderedIssue

An issue affecting specific business or their product.

JSON representation
{
  "title": string,
  "impact": {
    object (Impact)
  },
  "actions": [
    {
      object (Action)
    }
  ],

  // Union field content can be only one of the following:
  "prerenderedContent": string
  // End of list of possible types for union field content.

  // Union field out_of_court_dispute_settlement can be only one of the
  // following:
  "prerenderedOutOfCourtDisputeSettlement": string
  // End of list of possible types for union field
  // out_of_court_dispute_settlement.
}
Fields
title

string

Title of the issue.

impact

object (Impact)

Clarifies the severity of the issue.

The summarizing message, if present, should be shown right under the title for each issue. It helps business to quickly understand the impact of the issue.

The detailed breakdown helps the business to fully understand the impact of the issue. It can be rendered as dialog that opens when the business mouse over the summarized impact statement.

Issues with different severity can be styled differently. They may use a different color or icon to signal the difference between ERROR, WARNING and INFO.

actions[]

object (Action)

A list of actionable steps that can be executed to solve the issue. An example is requesting a re-review or providing arguments when business disagrees with the issue.

Actions that are supported in (your) third-party application can be rendered as buttons and should be available to the business when they expand the issue.

Union field content. Detailed content of the issue. Should be shown to the business when they expand the issue. The form in which is the content returned is specified with the content option request field. content can be only one of the following:
prerenderedContent

string

Details of the issue as a pre-rendered HTML. HTML elements contain CSS classes that can be used to customize the style of the content.

Always sanitize the HTML before embedding it directly to your application. The sanitizer needs to allow basic HTML tags, such as: div, span, p, a, ul, li, table, tr, td. For example, you can use DOMPurify.

CSS classes:

  • issue-detail - top level container for the detail of the issue
  • callout-banners - section of the issue-detail with callout banners
  • callout-banner - single callout banner, inside callout-banners
  • callout-banner-info - callout with important information (default)
  • callout-banner-warning - callout with a warning
  • callout-banner-error - callout informing about an error (most severe)
  • issue-content - section of the issue-detail, contains multiple content-element
  • content-element - content element such as a list, link or paragraph, inside issue-content
  • root-causes - unordered list with items describing root causes of the issue, inside issue-content
  • root-causes-intro - intro text before the root-causes list, inside issue-content
  • segment - section of the text, span inside paragraph
  • segment-attribute - section of the text that represents a product attribute, for example 'image_link'
  • segment-literal - section of the text that contains a special value, for example '0-1000 kg'
  • segment-bold - section of the text that should be rendered as bold
  • segment-italic - section of the text that should be rendered as italic
  • tooltip - used on paragraphs that should be rendered with a tooltip. A section of the text in such a paragraph will have a class tooltip-text and is intended to be shown in a mouse over dialog. If the style is not used, the tooltip-text section would be shown on a new line, after the main part of the text.
  • tooltip-text - marks a section of the text within a tooltip, that is intended to be shown in a mouse over dialog.
  • tooltip-icon - marks a section of the text within a tooltip, that can be replaced with a tooltip icon, for example '?' or 'i'. By default, this section contains a br tag, that is separating the main text and the tooltip text when the style is not used.
  • tooltip-style-question - the tooltip shows helpful information, can use the '?' as an icon.
  • tooltip-style-info - the tooltip adds additional information fitting to the context, can use the 'i' as an icon.
  • content-moderation - marks the paragraph that explains how the issue was identified.
  • new-element - Present for new elements added to the pre-rendered content in the future. To make sure that a new content element does not break your style, you can hide everything with this class.

Union field out_of_court_dispute_settlement. Out-of-court dispute settlement (ODS) contains a link to a page where the business can bring their appeal to an external body. It may contains a detailed instructions and any values needed for the business to proceed with their request.

The ODS is a part of the EU's Digital Service ACT (DSA). If present, it should be shown to the business.

The ODS may differ for individual issues and thus it should be by default shown in the detail of the issue. It could be shown next to actions for the issue.

In some cases the ODS could be the same for all issues in the list. If the values for individual issues do not differ, then the ODS could be shown only once. For example under the list with issues. This is an optional UX improvement. If values differ, then ODS needs to be shown in details of individual issues. out_of_court_dispute_settlement can be only one of the following:

prerenderedOutOfCourtDisputeSettlement

string

Pre-rendered HTML that contains a link to the external location where the ODS can be requested and instructions for how to request it. HTML elements contain CSS classes that can be used to customize the style of this snippet.

Always sanitize the HTML before embedding it directly to your application. The sanitizer needs to allow basic HTML tags, such as: div, span, p, a, ul, li, table, tr, td. For example, you can use DOMPurify.

CSS classes:

  • ods-section* - wrapper around the out-of-court dispute resolution section
  • ods-description* - intro text for the out-of-court dispute resolution. It may contain multiple segments and a link.
  • ods-param* - wrapper around the header-value pair for parameters that the business may need to provide during the ODS process.
  • ods-routing-id* - ods param for the Routing ID.
  • ods-reference-id* - ods param for the Routing ID.
  • ods-param-header* - header for the ODS parameter
  • ods-param-value* - value of the ODS parameter. This value should be rendered in a way that it is easy for the user to identify and copy.
  • segment - section of the text, span inside paragraph
  • segment-attribute - section of the text that represents a product attribute, for example 'image_link'
  • segment-literal - section of the text that contains a special value, for example '0-1000 kg'
  • segment-bold - section of the text that should be rendered as bold
  • segment-italic - section of the text that should be rendered as italic
  • tooltip - used on paragraphs that should be rendered with a tooltip. A section of the text in such a paragraph will have a class tooltip-text and is intended to be shown in a mouse over dialog. If the style is not used, the tooltip-text section would be shown on a new line, after the main part of the text.
  • tooltip-text - marks a section of the text within a tooltip, that is intended to be shown in a mouse over dialog.
  • tooltip-icon - marks a section of the text within a tooltip, that can be replaced with a tooltip icon, for example '?' or 'i'. By default, this section contains a br tag, that is separating the main text and the tooltip text when the style is not used.
  • tooltip-style-question - the tooltip shows helpful information, can use the '?' as an icon.
  • tooltip-style-info - the tooltip adds additional information fitting to the context, can use the 'i' as an icon.

Impact

Overall impact of the issue.

JSON representation
{
  "message": string,
  "severity": enum (Severity),
  "breakdowns": [
    {
      object (Breakdown)
    }
  ]
}
Fields
message

string

Optional. Message summarizing the overall impact of the issue. If present, it should be rendered to the business. For example: "Disapproves 90k offers in 25 countries"

severity

enum (Severity)

The severity of the issue.

breakdowns[]

object (Breakdown)

Detailed impact breakdown. Explains the types of restriction the issue has in different shopping destinations and territory. If present, it should be rendered to the business. Can be shown as a mouse over dropdown or a dialog. Each breakdown item represents a group of regions with the same impact details.

Severity

Enum specifying the severity of the issue.

Enums
SEVERITY_UNSPECIFIED Default value. Will never be provided by the API.
ERROR Causes either an account suspension or an item disapproval. Errors should be resolved as soon as possible to ensure items are eligible to appear in results again.
WARNING Warnings can negatively impact the performance of ads and can lead to item or account suspensions in the future unless the issue is resolved.
INFO Infos are suggested optimizations to increase data quality. Resolving these issues is recommended, but not required.

Breakdown

A detailed impact breakdown for a group of regions where the impact of the issue on different shopping destinations is the same.

JSON representation
{
  "regions": [
    {
      object (Region)
    }
  ],
  "details": [
    string
  ]
}
Fields
regions[]

object (Region)

Lists of regions. Should be rendered as a title for this group of details. The full list should be shown to the business. If the list is too long, it is recommended to make it expandable.

details[]

string

Human readable, localized description of issue's effect on different targets. Should be rendered as a list.

For example:

  • "Products not showing in ads"
  • "Products not showing organically"

Region

Region with code and localized name.

JSON representation
{
  "code": string,
  "name": string
}
Fields
code

string

The CLDR territory code

name

string

The localized name of the region. For region with code='001' the value is 'All countries' or the equivalent in other languages.

Action

An actionable step that can be executed to solve the issue.

JSON representation
{
  "buttonLabel": string,
  "isAvailable": boolean,
  "reasons": [
    {
      object (Reason)
    }
  ],

  // Union field action can be only one of the following:
  "builtinSimpleAction": {
    object (BuiltInSimpleAction)
  },
  "externalAction": {
    object (ExternalAction)
  },
  "builtinUserInputAction": {
    object (BuiltInUserInputAction)
  }
  // End of list of possible types for union field action.
}
Fields
buttonLabel

string

Label of the action button.

isAvailable

boolean

Controlling whether the button is active or disabled. The value is 'false' when the action was already requested or is not available. If the action is not available then a reason will be present. If (your) third-party application shows a disabled button for action that is not available, then it should also show reasons.

reasons[]

object (Reason)

List of reasons why the action is not available. The list of reasons is empty if the action is available. If there is only one reason, it can be displayed next to the disabled button. If there are more reasons, all of them should be displayed, for example in a pop-up dialog.

Union field action. An actionable step that can be executed to solve the issue. action can be only one of the following:
builtinSimpleAction

object (BuiltInSimpleAction)

Action implemented and performed in (your) third-party application. The application should point the business to the place, where they can access the corresponding functionality or provide instructions, if the specific functionality is not available.

externalAction

object (ExternalAction)

Action that is implemented and performed outside of (your) third-party application. The application needs to redirect the business to the external location where they can perform the action.

builtinUserInputAction

object (BuiltInUserInputAction)

Action implemented and performed in (your) third-party application. The application needs to show an additional content and input form to the business as specified for given action. They can trigger the action only when they provided all required inputs.

BuiltInSimpleAction

Action that is implemented and performed in (your) third-party application. Represents various functionality that is expected to be available to business and will help them with resolving the issue. The application should point the business to the place, where they can access the corresponding functionality. If the functionality is not supported, it is recommended to explain the situation to the business and provide them with instructions how to solve the issue.

JSON representation
{
  "type": enum (BuiltInSimpleActionType),
  "attributeCode": string,
  "additionalContent": {
    object (AdditionalContent)
  }
}
Fields
type

enum (BuiltInSimpleActionType)

The type of action that represents a functionality that is expected to be available in third-party application.

attributeCode

string

The attribute that needs to be updated. Present when the type is EDIT_ITEM_ATTRIBUTE.

This field contains a code for attribute, represented in snake_case. You can find a list of product's attributes, with their codes here.

additionalContent

object (AdditionalContent)

Long text from an external source that should be available to the business. Present when the type is SHOW_ADDITIONAL_CONTENT.

BuiltInSimpleActionType

Enum specifying the type of action in third-party application.

Enums
BUILT_IN_SIMPLE_ACTION_TYPE_UNSPECIFIED Default value. Will never be provided by the API.
VERIFY_PHONE Redirect the business to the part of your application where they can verify their phone.
CLAIM_WEBSITE Redirect the business to the part of your application where they can claim their website.
ADD_PRODUCTS Redirect the business to the part of your application where they can add products.
ADD_CONTACT_INFO Open a form where the business can edit their contact information.
ADD_BUSINESS_REGISTRATION_NUMBER Open a form where the business can add their business registration number.
EDIT_ITEM_ATTRIBUTE Open a form where the business can edit an attribute. The attribute that needs to be updated is specified in attributeCode field of the action.
FIX_ACCOUNT_ISSUE

Redirect the business from the product issues to the diagnostic page with their account issues in your application.

This action will be returned only for product issues that are caused by an account issue and thus the business should resolve the problem on the account level.

SHOW_ADDITIONAL_CONTENT

Show additional content to the business.

This action will be used for example to deliver a justification from national authority.

AdditionalContent

Long text from external source.

JSON representation
{
  "title": string,
  "paragraphs": [
    string
  ]
}
Fields
title

string

Title of the additional content;

paragraphs[]

string

Long text organized into paragraphs.

ExternalAction

Action that is implemented and performed outside of the third-party application. It should redirect the business to the provided URL of an external system where they can perform the action. For example to request a review in the Merchant Center.

JSON representation
{
  "type": enum (ExternalActionType),
  "uri": string
}
Fields
type

enum (ExternalActionType)

The type of external action.

uri

string

URL to external system, for example Merchant Center, where the business can perform the action.

ExternalActionType

Enum specifying the type of action that requires to redirect the business to an external location.

Enums
EXTERNAL_ACTION_TYPE_UNSPECIFIED Default value. Will never be provided by the API.
REVIEW_PRODUCT_ISSUE_IN_MERCHANT_CENTER Redirect to Merchant Center where the business can request a review for issue related to their product.
REVIEW_ACCOUNT_ISSUE_IN_MERCHANT_CENTER Redirect to Merchant Center where the business can request a review for issue related to their account.
LEGAL_APPEAL_IN_HELP_CENTER Redirect to the form in Help Center where the business can request a legal appeal for the issue.
VERIFY_IDENTITY_IN_MERCHANT_CENTER Redirect to Merchant Center where the business can perform identity verification.

BuiltInUserInputAction

Action that is implemented and performed in (your) third-party application. The application needs to show an additional content and input form to the business. They can start the action only when they provided all required inputs. The application will request processing of the action by calling the triggeraction method.

JSON representation
{
  "actionContext": string,
  "flows": [
    {
      object (ActionFlow)
    }
  ]
}
Fields
actionContext

string

Contains the action's context that must be included as part of the TriggerActionPayload.action_context in TriggerActionRequest.payload to call the triggeraction method. The content should be treated as opaque and must not be modified.

flows[]

object (ActionFlow)

Actions may provide multiple different flows. Business selects one that fits best to their intent. Selecting the flow is the first step in user's interaction with the action. It affects what input fields will be available and required and also how the request will be processed.

ActionFlow

Flow that can be selected for an action. When a business selects a flow, application should open a dialog with more information and input form.

JSON representation
{
  "id": string,
  "label": string,
  "inputs": [
    {
      object (InputField)
    }
  ],
  "dialogTitle": string,
  "dialogButtonLabel": string,
  "dialogMessage": {
    object (TextWithTooltip)
  },
  "dialogCallout": {
    object (Callout)
  }
}
Fields
id

string

Not for display but need to be sent back for the selected action flow.

label

string

Text value describing the intent for the action flow. It can be used as an input label if business needs to pick one of multiple flows. For example: "I disagree with the issue"

inputs[]

object (InputField)

A list of input fields.

dialogTitle

string

Title of the request dialog. For example: "Before you request a review"

dialogButtonLabel

string

Label for the button to trigger the action from the action dialog. For example: "Request review"

dialogMessage

object (TextWithTooltip)

Message displayed in the request dialog. For example: "Make sure you've fixed all your country-specific issues. If not, you may have to wait 7 days to request another review". There may be an more information to be shown in a tooltip.

dialogCallout

object (Callout)

Important message to be highlighted in the request dialog. For example: "You can only request a review for disagreeing with this issue once. If it's not approved, you'll need to fix the issue and wait a few days before you can request another review."

InputField

Input field that needs to be available to the business. If the field is marked as required, then a value needs to be provided for a successful processing of the request.

JSON representation
{
  "id": string,
  "label": {
    object (TextWithTooltip)
  },
  "required": boolean,

  // Union field value_input can be only one of the following:
  "textInput": {
    object (TextInput)
  },
  "choiceInput": {
    object (ChoiceInput)
  },
  "checkboxInput": {
    object (CheckboxInput)
  }
  // End of list of possible types for union field value_input.
}
Fields
id

string

Not for display but need to be sent back for the given input field.

label

object (TextWithTooltip)

Input field label. There may be more information to be shown in a tooltip.

required

boolean

Whether the field is required. The action button needs to stay disabled till values for all required fields are provided.

Union field value_input. Specific type of the input field. value_input can be only one of the following:
textInput

object (TextInput)

Input field to provide text information. Corresponds to the html input type=text or html textarea.

choiceInput

object (ChoiceInput)

Input field to select one of the offered choices. Corresponds to the html input type=radio.

checkboxInput

object (CheckboxInput)

Input field to provide a boolean value. Corresponds to the html input type=checkbox.

TextInput

Text input allows the business to provide a text value.

JSON representation
{
  "type": enum (TextInputType),
  "additionalInfo": {
    object (TextWithTooltip)
  },
  "formatInfo": string,
  "ariaLabel": string
}
Fields
type

enum (TextInputType)

Type of the text input

additionalInfo

object (TextWithTooltip)

Additional info regarding the field to be displayed to the business. For example, warning to not include personal identifiable information. There may be more information to be shown in a tooltip.

formatInfo

string

Information about the required format. If present, it should be shown close to the input field to help the business to provide a correct value. For example: "VAT numbers should be in a format similar to SK9999999999"

ariaLabel

string

Text to be used as the aria-label for the input.

TextInputType

Enum specifying the type of the text input and how it should be rendered.

Enums
TEXT_INPUT_TYPE_UNSPECIFIED Default value. Will never be provided by the API.
GENERIC_SHORT_TEXT Used when a short text is expected. The field can be rendered as a text field.
GENERIC_LONG_TEXT Used when a longer text is expected. The field should be rendered as a textarea.

TextWithTooltip

Block of text that may contain a tooltip with more information.

JSON representation
{
  "tooltipIconStyle": enum (TooltipIconStyle),

  // Union field value can be only one of the following:
  "simpleValue": string
  // End of list of possible types for union field value.

  // Union field tooltip_value can be only one of the following:
  "simpleTooltipValue": string
  // End of list of possible types for union field tooltip_value.
}
Fields
tooltipIconStyle

enum (TooltipIconStyle)

The suggested type of an icon for tooltip, if a tooltip is present.

Union field value. Value of the text message. The form in which the value is returned is specified with the content option request field. value can be only one of the following:
simpleValue

string

Value of the message as a simple text.

Union field tooltip_value. Text that is meant to be shown in a tooltip for the main message. The tooltip is present when there is additional content needed to be available to the business. The form in which the value is returned is specified with the content option request field. tooltip_value can be only one of the following:
simpleTooltipValue

string

Value of the tooltip as a simple text.

TooltipIconStyle

Enum specifying the type of an icon that is being used to display a corresponding tooltip in the Merchant Center.

Enums
TOOLTIP_ICON_STYLE_UNSPECIFIED Default value. Will never be provided by the API.
INFO Used when the tooltip adds additional information to the context, the 'i' can be used as an icon.
QUESTION Used when the tooltip shows helpful information, the '?' can be used as an icon.

ChoiceInput

Choice input allows the business to select one of the offered choices. Some choices may be linked to additional input fields that should be displayed under or next to the choice option. The value for the additional input field needs to be provided only when the specific choice is selected by the the business. For example, additional input field can be hidden or disabled until the business selects the specific choice.

JSON representation
{
  "options": [
    {
      object (ChoiceInputOption)
    }
  ]
}
Fields
options[]

object (ChoiceInputOption)

A list of choices. Only one option can be selected.

ChoiceInputOption

A choice that the business can select.

JSON representation
{
  "id": string,
  "label": {
    object (TextWithTooltip)
  },
  "additionalInput": {
    object (InputField)
  }
}
Fields
id

string

Not for display but need to be sent back for the selected choice option.

label

object (TextWithTooltip)

Short description of the choice option. There may be more information to be shown as a tooltip.

additionalInput

object (InputField)

Input that should be displayed when this option is selected. The additional input will not contain a ChoiceInput.

CheckboxInput

This type has no fields.

Checkbox input allows the business to provide a boolean value. Corresponds to the html input type=checkbox.

If the business checks the box, the input value for the field is true, otherwise it is false.

This type of input is often used as a confirmation that the business completed required steps before they are allowed to start the action. In such a case, the input field is marked as required and the button to trigger the action should stay disabled until the business checks the box.

Callout

An important message that should be highlighted. Usually displayed as a banner.

JSON representation
{
  "styleHint": enum (CalloutStyleHint),
  "fullMessage": {
    object (TextWithTooltip)
  }
}
Fields
styleHint

enum (CalloutStyleHint)

Can be used to render messages with different severity in different styles. Snippets off all types contain important information that should be displayed to the business.

fullMessage

object (TextWithTooltip)

A full message that needs to be shown to the business.

CalloutStyleHint

Enum specifying the suggested style, how the message should be rendered.

Enums
CALLOUT_STYLE_HINT_UNSPECIFIED Default value. Will never be provided by the API.
ERROR The most important type of information highlighting problems, like an unsuccessful outcome of previously requested actions.
WARNING Information warning about pending problems, risks or deadlines.
INFO Default severity for important information like pending status of previously requested action or cooldown for re-review.

Reason

A single reason why the action is not available.

JSON representation
{
  "message": string,
  "detail": string,
  "action": {
    object (Action)
  }
}
Fields
message

string

Messages summarizing the reason, why the action is not available. For example: "Review requested on Jan 03. Review requests can take a few days to complete."

detail

string

Detailed explanation of the reason. Should be displayed as a hint if present.

action

object (Action)

Optional. An action that needs to be performed to solve the problem represented by this reason. This action will always be available. Should be rendered as a link or button next to the summarizing message.

For example, the review may be available only once the business configure all required attributes. In such a situation this action can be a link to the form, where they can fill the missing attribute to unblock the main action.

Methods

renderaccountissues

Provide a list of business's account issues with an issue resolution content and available actions.

renderproductissues

Provide a list of issues for business's product with an issue resolution content and available actions.

triggeraction

Start an action.