site
^
|
*
account <-------------------* showcase <---------------------.
^ ^ |
| | shipping
| | ^
* * |
product <-------------------* listing *----------------------.
^ ^
| |
* *
product_variation <---------* listing_variation
Вложенная структура данных следующего вида
---
:id: 26
:url: https://somewhere
:deleted: false
:banned: false
:language: ru
:title:
:value: Гравицапа
:required: true
:subtitle:
:value: Основа любого пепелаца
:description:
:value: Пепелац без гравицапы не летает, дорогой (с)
:condition:
:value: Почти новый
:condition_description:
:value: Совсем новый, пробег 1 a.e., слегка помят по краям
:condition_id:
:value: '823'
:productid:
:value: '238492'
:brand:
:value: Pluck Inc
:country:
:value: RU
:location:
:value: Pluck planet embassy
:values:
:value:
- Размер
- Мощность
:pictures:
:value:
- http://example.com/pepelaz.jpg
:uuid:
:value: 12345678-90ab-cdef-1234-567890abcdef
:listings:
- :id: 26
:url:
:published: true
:finished_at: '2017-01-05T09:37:58Z'
:publication_url:
:allow_paid_subtitle:
:value: false
:allow_paid_placement:
:value: true
:allow_paid_images:
:value: false
:selected:
:value: true
:category_id:
:value: 3
:title: Star ship engines
:shipping_profile_id:
:value: 2
:name: Ecelop Express
:showcase:
:id: 27
:site_id: 77
:language: de
:currency: EUR
:code: DE
:domain: ebay.de
:metric: metric
:globalid: EBAY-DE
:paid_options:
:free_placement: 50
:max_insertion_fee: 0.35
:free_pictures: 12
:picture_fee: nil
:subtitle_fee: 0.5
:shipping_profiles:
- :id: 2
:name: Ecelop Express
:variations:
- :id: 24
:sku:
:value: GZ001
:required: true
:ean:
:value: 8e934u24
:isbn:
:value:
:upc:
:value: '89324775'
:values:
:value:
- Большой
- 10 MWt
:quantity:
:value: 1
:price:
:value: 88818.07
:currency: RUB
:pictures:
:value:
- http://example.com/big_pepelaz.png
:listings:
- :id: 24
:exchange_rate: 0.01456
:price:
:value: 1396.22
:currency: EUR
:custom: false
:site_id: 77
:showcase_id: 27
:listing_id: 26
Во всех методах в случае ошибки (кроме 404 и 500) возвращаю json вида:
{
"errors": {
"base": ["некачественный товар"],
"title": ["обязательный параметр"],
"listings[0][sku]": ["оскорбляет чувства верующих"]
}
}
Под ключом errors
идет объект с ошибками. Ключами являются
base
- ошибка относится к объекту в целомtitle
- ошибка относится к определенному полюvariations[0][sku]
- ошибка относится к вложенному элементу (sku первой вариации)
Под каждым ключом - массив с одним или несколькими сообщениями об ошибке для данного элемента.
Cписок всех активных (не удаленных, не забаненых) товаров аккаунта. Пока добавил 3 фильтра:
- active=false - отсекает активные товары
- banned=true - добавляет забаненые товары
- deleted=true - добавляет удаленные товары
Возвращает json с массивом товаров { products: [...] }
Находит товар по id (поиск среди продуктов текущего пользователя)
Возвращает json с данными товара { product: { ... } }
Добавляет товар. Работает аналогично PUT products/:id
Редактирует товар (текущего пользователя).
Принимает товар в виде плоского или вложенного (с листингами и вариациями) списка. Везде используется upsert (создание или редактирование).
Недостающие листинги на всех витринах пользователя создаются автоматически (с указанными категориями, если есть). Если указаны вариации, то они также разворачиваются по витринам. Если у вариации есть цена, она ставится на витрине как есть, иначе конвертируется из цены исходной вариации.
Возвращает json с данными товара { product: { ... } }
Если какие-то вариации удалены, они будут удалены из базы (вместе с вариациями на всех витринах)
Удаляет товар (товар не удаляется, а помечается как удаленный). Удаленные листинги товаров будут сняты с публикаций асинхронно. Возвращает 200 без тела