Listings

List conflicts

Outside changes that clash with a pending local change.

GET
/v1/listings/{listingId}/conflicts

Lists the offer conflicts, paginated, newest first. Filter with status=open to see what is waiting for you, or status=resolved for what was already decided.

curl "$BACKEND_URL/v1/listings/<listingId>/conflicts?status=open" \
  -H "Authorization: Bearer mk_your_api_key"

A conflict exists when the marketplace changed a group and that group has a local change not yet published. A change on one side only is not a conflict: see the state in the diff.

  • Only content and offer open conflicts. Each conflict has the group, the paths that differ and two snapshots: desired (your value when it was born, which does not follow new edits) and observed (the marketplace value, which follows new outside changes while it is open).
  • It is born when the two sides meet. Two orders open the same conflict: your edit was already pending and a notification or reconciliation brought the outside change (source: inbound or reconciliation, with inbound active; with inbound disabled, no conflict is born), or the outside change arrived first and you edited afterwards (source: local_edit). You get listing.conflict_created in both cases.
  • Content belongs to the MarketplaceProduct, shared by offers. A content conflict shows up on the first offer that read the change.
  • MarketAPI does not choose or publish. Your desired stays as it is until you resolve.

Resolve it with Resolve conflict.

Authorization

api_key
headerAuthorizationBearer <token>

API key (mk_...)

Path Parameters

listingId*string
Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Query Parameters

page?integer

Page number, starting at 1. Defaults to 1. A page beyond pagination.totalPages is not an error: it returns empty data.

Range1 <= value <= 9007199254740991
Default1
pageSize?integer

Items per page, from 1 to 100. Defaults to 20.

Range1 <= value <= 100
Default20
status?string

Only conflicts in this state.

Value in"open""resolved"

Response Body

One page of conflicts, newest first. A page beyond pagination.totalPages returns empty data, not 404.

application/json
  1. response

One page of the conflicts of an offer.

data*array<>

The conflicts of this page, newest first.

pagination*

Where this page sits in the whole listing: the totals and whether there are pages before and after it.

curl -X GET "https://example.com/v1/listings/497f6eca-6276-4993-bfeb-53cbbbba6f08/conflicts"
{  "data": [    {      "id": "9d2f4b6a-1c3e-4a58-b7d9-e0f1a2b3c4d5",      "listingId": "0e2ce906-a6ab-4101-9461-4168c8b6b902",      "group": "offer",      "paths": [        "priceInCents"      ],      "desired": {        "priceInCents": 489900,        "currency": "BRL"      },      "observed": {        "priceInCents": 459900,        "currency": "BRL"      },      "status": "open",      "resolution": null,      "resolvedValue": null,      "source": "inbound",      "detectedAt": "2026-10-19T12:00:00.000Z",      "resolvedAt": null    }  ],  "pagination": {    "page": 1,    "pageSize": 20,    "totalItems": 1,    "totalPages": 1,    "hasNext": false,    "hasPrev": false  }}