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** ⚠️