Перейти к содержимому

Список диспутов компании

Запрос

Возвращает историю диспутов компании (новые сначала).

Поля решения:

  • resolvedAt заполняется, когда диспут рассмотрен.
  • resolution заполняется при решении (confirm, refund, partial_refund).
  • refundAmount заполняется при refund (полная сумма ордера) и при partial_refund (возвращённая часть); при confirm — null. Поле показывает, какая часть ордера отменена, а не сколько пришло на баланс. Если средства ещё не были списаны, решение просто снимает заморозку. Реальное движение средств смотрите в GET /wallets/balance-history по referenceId = orderId.

Исход — в resolution, а не в status: и выигранный, и проигранный диспут получают status: resolved. refund / partial_refund значат, что оплата отменена (ордер становится failed); confirm — что диспут отклонён и оплата в силе (ордер возвращается в success).

В каждом элементе есть ордер (order), к которому относится диспут, — отдельный запрос за ним не нужен.

Диспуты решает администратор, либо они закрываются автоматически по финальному статусу от платёжной стороны. Диспут может открыть и сама платёжная сторона — тогда ордер становится disputed и отправляется вебхук order.status_changed. Нужно право orders.read.

Безопасность
apiKeyAuth
Запрос
searchstring

Поиск диспута по его ордеру — так же, как в GET /orders: по вашему externalOrderId (достаточно части) или по нашему id ордера.

statusstring(DisputeStatus)
Enum:"submitted""in_review""resolved""rejected"
resolutionstring(DisputeResolution)

Фильтр по исходу.

Enum:"refund""confirm""partial_refund"
limitinteger, [ 1 .. 200 ]

Без параметра вернётся вся история одним массивом (как было раньше). Общее число найденных диспутов приходит в заголовке X-Total-Count.

offsetinteger, >= 0
По умолчанию:0
curl -i -X GET \
  'https://b2b-app.lumowallet.io/_mock/apis/disputes?search=string&status=submitted&resolution=refund&limit=1&offset=0' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Ответы

Список диспутов

Заголовки
X-Total-Countinteger

Общее число найденных диспутов.

Телоapplication/json
Array [
idstring, (uuid)обязательный
orderIdstring, (uuid)обязательный
statusstring(DisputeStatus)обязательный
Enum:"submitted""in_review""resolved""rejected"
resolutionDisputeResolution (string) or null
One of:

Исход. Заполняется, когда диспут рассмотрен, — смотрите его, а не status, который говорит только, рассмотрен диспут или нет. refund / partial_refund — оплата отменена (ордер → failed), confirm — диспут отклонён, оплата в силе (ордер → success).

string(DisputeResolution)
Enum:"refund""confirm""partial_refund"
reasonstringобязательный
adminCommentstring or null
resolvedBystring or null
refundAmountstring or null

Десятичная строка, например "52.63000000". Какая часть ордера отменена: полная сумма ордера при refund, возвращённая часть при partial_refund, null при confirm. Это не сумма, зачисленная на баланс: если средства ещё были заморожены, решение только снимает заморозку. См. GET /wallets/balance-history (referenceId = orderId).

resolvedAtstring or null, (date-time)

Время решения (администратором или по статусу от платёжной стороны).

createdAtstring, (date-time)обязательный
updatedAtstring, (date-time)обязательный
orderobject

Ордер, к которому относится диспут, — встроен в ответ, чтобы не делать второй запрос. В нём могут быть и другие служебные поля; в контракт входят только перечисленные здесь.

]
Ответ
[ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "orderId": "b3e1eced-f2bd-4d8c-9765-fbc9d1d222d5", "status": "submitted", "resolution": "refund", "reason": "string", "adminComment": "string", "resolvedBy": "string", "refundAmount": "string", "resolvedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "order": { … } } ]