Rest API Список категорійних менеджерів - datawizio/pythonAPI GitHub Wiki

24. Ресурс /category-managers/ (Список категорійних менеджерів, Колекція)

Список категорійних менеджерів - це список категорійних менеджерів, які працюють у магазинах мережі. З допомогою ресурсу /category-managers/ можна отримати доступ до списку категорійних менеджерів, а також додавати нових категорійних менеджерів.

24.1. Структура об'єкта Category-manager:

Назва поля Тип поля розмір Обов'язкове Тільки читання Примітка
url URL ні так url цього об'єкта
identifier рядок 200 так ні ідентифікатор категорійного менеджера
shops список 100 так ні магазин, за яким закріплений категорійний менеджер
categories список так ні категорії і продукти, за які відповідальний категорійний менеджер (можна задавати тільки категорії, або тільки продукти)
products список так ні
name рядок 100 так ні ім'я категорійного менеджера
date_from дата ні ні дата, з якої працює категорійний менеджер

24.2. Доступні команди

Для управління ресурсом /category-managers/ підтримуються наступні команди:

  • GET - отримати одну сторінку колекції
  • POST - добавити нового категорійного менеджера
  • OPTIONS - мета-інформація по структурі об'єкта

24.2.1. GET /category-managers/ - отримати одну сторінку колекції.

Вид команди: GET http://api.datawiz.io/api/v1/category-managers

Суфікси:
  • .json - отримати відповідь з сервера в форматі JSON
  • .api - отримати відповідь з сервера в форматі HTML (тестова платформа)
Параметри:
  • format = json | api - аналог вищевказаних суфіксів
  • page_size = nn - встановити розмір сторінки рівний nn об'єктів
  • page = n - завантажити сторінку n
  • search = text - відображати тільки об'єкти, в полі name яких знайдено "text"
  • ordering = name | identifier - сортувати по полю в алфавітному порядку (від меншого - до більшого)
  • ordering = -name | -identifier - сортувати по полю в зворотному порядку
Відповідь з сервера:

Об'єкт "колекція" складається з чотирьох полів (count, next, previous, results).

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

GET http://api.datawiz.io/api/v1/category-managers/.json/?search=unknown-string

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

Приклад колекції з 2-х елементів: GET http://api.datawiz.io/api/v1/category-managers/?format=api&page_size=2:

HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, OPTIONS
{
    "count": 3, 
    "next": "http://api.datawiz.io/api/v1/category-managers/?page=2&page_size=2&format=api", 
    "previous": null, 
    "results": [
        {
            "url": "http://api.datawiz.io/api/v1/category-managers/CATEGORY-ID-DPLD-2FQF-ZQSN/",
            "manager_id": "CATEGORY-ID-DPLD-2FQF-ZQSN",
            "shops": [
                "9856d0f5-0929-11e5-80d8-7054d2c57800"
            ],
            "categories": [
                "99fdc926-5e2b-11e6-bfc8-00505600b73b"
            ],
            "name": "Vasya",
            "date_from": null
        },
        {
            "url": "http://api.datawiz.io/api/v1/category-managers/CATEGORY-ID-PGEK-DZFY-4FU2/",
            "manager_id": "CATEGORY-ID-PGEK-DZFY-4FU2",
            "shops": [],
            "categories": [],
            "name": "Vasya",
            "date_from": null
        }
    ]
}
Повідомлення про помилку:

У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомлення про помилку, записаним у ключі detail і/або в полі http.response.content:

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

{ "detail": "Not found" }

24.2.2 POST /category-managers/ - додати одного чи декількох категорійних менеджерів

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

Суфікси:
  • .json - отримати відповідь з сервера в форматі JSON
  • .api - отримати відповідь з сервера в форматі HTML (тестова платформа)
Параметри:
  • format = json | api - аналог вищевказаних суфіксів
  • Дані запиту:

    У запиті передається JSON-об'єкт типу словник (dictionary), який описує нового категорійного менеджера. Важливі поля: identifier, shops, categories, products, name і date_from. Послідовність полів не принципова.

    Приклад запиту на додавання нового категорійного менеджера: POST http://api.datawiz.io/api/v1/category-managers/.json

{
    "identifier": "124", 
    "shops": ["Shop1", "Shop2"],
    "categories": ["Алкогольні_напої"], 
    "name": "Олександр", 
    "date_from": "2016-11-10", 
}
Відповідь сервера:

При коректній обробці запиту сервер повертає код статусу 201 і статус створення об'єкта.

Приклад відповіді сервера:

HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Location: http://api.datawiz.io/api/v1/category-managers/124/
Allow: GET, POST, OPTIONS

{ "updated": 0, "inserted": 1 }

Умови та обмеження (Constraints):
  • Якщо об'єкт з ідентифікатором manager_id вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження.
  • Поле name не може бути порожнім.
  • Поле identifier не може бути порожнім.
  • Поле date_from не може бути порожнім.
  • Поле shops не може бути порожнім.
  • Поля categories і products не можуть надсилатись одночасно.
Повідомлення про помилку:

У випадку виникнення помилки сервер повертає відповідь із відповідним статусом, а також повідомленням про помилку, записаним навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors.

ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядкових символів.

Приклад відповіді сервера при виникненні помилки (поле name передано порожнім):

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

24.2.3. OPTIONS /category-managers/ - мета-інформація по структурі об'єкта

При виконанні даної команди повертається така JSON-структура:

OPTIONS /api/v1/category-managers/

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

{ "name": "Category Manager List", "description": "", "renders": [ "application/json", "text/html" ], "parses": [ "application/json", "application/x-www-form-urlencoded", "multipart/form-data" ], "actions": { "POST": { "url": { "type": "field", "required": false, "read_only": true, "label": "Url" }, "categories": { "type": "list", "required": false, "read_only": false, "label": "Categories", "child": { "type": "integer", "required": true, "read_only": false } }, "products": { "type": "list", "required": false, "read_only": false, "label": "Products", "child": { "type": "string", "required": true, "read_only": false } }, "shops": { "type": "list", "required": true, "read_only": false, "label": "Shops", "child": { "type": "integer", "required": true, "read_only": false } }, "date_from": { "type": "date", "required": true, "read_only": false, "label": "Date from" }, "identifier": { "type": "string", "required": true, "read_only": false, "label": "Identifier", "max_length": 200 }, "name": { "type": "string", "required": true, "read_only": false, "label": "Name", "max_length": 100 }, "categorymanageraccess": { "type": "field", "required": false, "read_only": false, "label": "Categorymanageraccess", "child": { "type": "nested object", "required": false, "read_only": false, "children": { "url": { "type": "field", "required": false, "read_only": true, "label": "Url" }, "product_id": { "type": "integer", "required": true, "read_only": false, "label": "Product id" }, "product_url": { "type": "integer", "required": false, "read_only": true, "label": "Product url" }, "shop_id": { "type": "integer", "required": true, "read_only": false, "label": "Shop id" }, "shop_url": { "type": "integer", "required": false, "read_only": true, "label": "Shop url" } } } } } } }

⚠️ **GitHub.com Fallback** ⚠️