Rest API Товары поставщиков - datawizio/pythonAPI GitHub Wiki

36. Ресурс /supplier-products/ (Товары поставщиков, Коллекция)

  • Товары поставищков (supplier-products) - это товары поставщиков, которые присутствуют в сети. С помощью ресурса /supplier-products/ можно получить доступ к товарам поставщиков, а также добавлять новые.

36.1. Структура связки товар-поставщик

36.1.1. Структура объекта товар поставщика (supplier-products):

Название поля Тип поля размер Обязательно Только чтение Примечание
url URL нет да url этого объекта
supplier_id строка да нет идентификатор поставщика
shop_id строка да нет идентификатор магазина
product_id строка да нет идентификатор товара
deferment целое число нет нет отсрочка
date_from строка нет нет дата начала поставки
date_to строка нет нет дата окончания поставки

36.2. Доступные команды

С ресурсом /supplier-products/ поддерживаются следующие команды:

  • GET - получить одну страницу коллекции
  • POST - добавить новый объект или список объектов
  • OPTIONS - мета-информация по структуре объекта
  • HEAD - аналог GET, но возвращается только заголовок ответа

36.2.1. GET /supplier-products/ - получить одну страницу коллекции.

Вид команды: GET http://api.datawiz.io/api/v1/supplier-products/

Суффиксы:
  • .json - Получить ответ с сервера в формате JSON
  • .api - Получить ответ с сервера в формате HTML (тестовая платформа)   
Параметры:
  • Format = json | api - аналог вышеуказанных суффиксов
  • Page_size = nn - установить размер страницы равен nn объектов
  • Page = n - скачать страницу n
  • Ordering = url | date | order_id - сортировать по полю в сторону роста
  • Ordering = -url | -date | order_id - сортировать по полю в обратном порядке
Ответ с сервера:

Объект "коллекция" из четырех полей (count, next, previous, results).

Пример пустой коллекции, полученной в результате запроса:

GET http://api.datawiz.io/api/v1/supplier-products/

{
     "count": 0, 
     "next": null, 
     "previous": null, 
     "results": [] 
} 

Пример коллекции из 2-х элементов: GET http://api.datawiz.io/api/v1/supplier-products/?format=json&page_size=2:

HTTP 200 OK
Allow: GET, POST, DELETE, OPTIONS
Content-Type: application/json
Vary: Accept

{ "count": 815, "next": "http://api.datawiz.io/api/v1/supplier-products/?page=2&product_id=52c89da2-e45d-11e0-bba8-003048d2b64d", "previous": null, "results": [ { "url": "http://api.datawiz.io/api/v1/supplier-products/0027139014cf-e45d-11e0-bba8-c95004c5bba8_c95004c5-cbcb-11e0-83f6-0027139014cf_52c89da2-e45d-11e0-bba8-003048d2b64d/", "supplier_id": "0027139014cf-e45d-11e0-bba8-c95004c5bba8", "product_id": "52c89da2-e45d-11e0-bba8-003048d2b64d", "shop_id": "c95004c5-cbcb-11e0-83f6-0027139014cf", "bonus": "0.000", "deferment": 0, "date_from": "2018-01-15", "date_to": "2018-02-15" }, { "url": "http://api.datawiz.io/api/v1/supplier-products/0027139014cf-e45d-11e0-bba8-c95004c5bbo1_c95004c5-cbcb-11e0-83f6-0027139014cf_64848087-cbc9-11e0-83f6-0027139014cf/", "supplier_id": "0027139014cf-e45d-11e0-bba8-c95004c5bbo1", "product_id": "64848087-cbc9-11e0-83f6-0027139014cf", "shop_id": "c95004c5-cbcb-11e0-83f6-0027139014cf", "bonus": "0.000", "deferment": 5, "date_from": null, "date_to": null },

Сообщение об ошибке:

В случае возникновения ошибки сервер возвращает ответ с соответствующим статусом, а также сообщением об ошибке, записанную в ключе detail:

HTTP 404 NOT FOUND 
Content-Type: application/json 
Vary: Accept 
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH 

{      "detail": "Not found" }

36.2.2. POST /supplier-products/ - добавить новый объект

Вид команды: POST http://api.datawiz.io/api/v1/supplier-products/?format=json

Суффиксы:
  • .json - Взаимодействовать с сервером в формате JSON
  • .api - Взаимодействовать с сервером в формате HTML (тестовая платформа)   
Параметры:
  • Format = json - Взаимодействовать с сервером в формате JSON
  • Format = api - Взаимодействовать с сервером в формате HTML (тестовая платформа)
Данные запроса:

В запросе передается JSON-объект, который описывает бренд. Важны три поля: supplier_id, shop_id, product_id.

Пример корректных запросов на добавление нового объекта: POST http://api.datawiz.io/api/v1/supplier-products/.json

{
            "supplier_id": "0fa9d963-62b9-11e5-81c6-001b21a1ef75",
            "shop_id": "c95004c5-cbcb-11e0-83f6-0027139014cf",
            "product_id": "52c89da2-e45d-11e0-bba8-003048d2b64d"
} 
Ответ сервера:

При корректной обработке запроса сервер возвращает код статуса 201 статус создания объекта.

Пример ответа сервера:

HTTP 201 CREATED 
Content-Type: application / json 
Vary: Accept 
Location: http://api.datawiz.io/api/v1/supplier-products/
Allow: GET, POST, HEAD, OPTIONS 
{
"created": 1,
"updated": 0
} 
Сообщение о ошибке:

В случае возникновения ошибки сервер возвращает ответ с соответствующим статусом, а также сообщениями об ошибке, записанными напротив имени поля, с которым эта ошибка связана. Если же ошибка касается не отдельного поля, а всего объекта, то сообщение об ошибке будет записано напротив ключа non_field_errors.

ПРИМЕЧАНИЕ. Каждое сообщение об ошибке представляет собой * коллекцию * ( массив ) символьных строк.

Пример ответа сервера при возникновении ошибки (поле brand_id передано пустым):

HTTP 400 BAD REQUEST 
Content-Type: application/json 
Vary: Accept 
Allow: GET, POST, HEAD, OPTIONS 
{
     "supplier_id": [
         "This field is required." 
     ] 
} 

36.2.3. OPTIONS /supplier-products/ - мета-информация по структуре объекта

При выполнении данной команды возвращается такая JSON-структура:

OPTIONS /api/v1/supplier-products/

HTTP 200 OK
Allow: GET, POST, DELETE, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "name": "Supplier Products List",
    "description": "Each object supports full create/delete options",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "POST": {
            "url": {
                "type": "string",
                "required": false,
                "read_only": true,
                "label": "Url"
            },
            "supplier_id": {
                "type": "string",
                "required": true,
                "read_only": false,
                "label": "Supplier id"
            },
            "shop_id": {
                "type": "string",
                "required": true,
                "read_only": false,
                "label": "Shop id"
            },
            "product_id": {
                "type": "string",
                "required": true,
                "read_only": false,
                "label": "Product id"
            },
            "deferment": {
                "type": "int",
                "required": false,
                "read_only": false,
                "label": "Deferment",
            },
            "date_from": {
                "type": "string",
                "required": false,
                "read_only": false,
                "label": "Date from",
            "date_to": {
                "type": "string",
                "required": false,
                "read_only": false,
                "label": "Date to",
        }
    }
}
⚠️ **GitHub.com Fallback** ⚠️