Rest API Трафік клієнтів - datawizio/pythonAPI GitHub Wiki

42. Ресурс /people-traffic/ (Трафік клієнтів, Колекція)

  • Трафік клієнтів. За допомогою ресурсу /people-traffic/ можна отримати доступ до трафіку клієнтів в магазині, а також додавати новий трафік.

42.1. Структура трафіку клієнтів

42.1.1. Структура об'єкта Loss Type (people-traffic):

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
url URL ні так url цього об'єкта
traffic_id рядок 100 так ні ідентифікатор трафіку клієнтів
shop_id рядок 100 так ні ідентифікатор магазину
date рядок так ні дата та час відвідування магазину
qty число так ні кількість відвудувачів

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

З ресурсом /people-traffic/ підтримуються наступні команди:

  • GET - отримати одну сторінку колекції

  • POST - додати новий трафік

  • DELETE - видалити трафік

  • OPTIONS - мета-інформація по структурі об'єкта

  • HEAD - аналог GET, але повертається тільки заголовок відповіді

42.2.1. GET /loss-types/ - отримати одну сторінку колекції.

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

Суфікси:
  • .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/people-traffic/

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

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

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

{ "count": 3, "next": null, "previous": null, "results": [ { "url": "https://api.datawiz.io/api/v1/people-traffic/123/", "traffic_id": "123", "shop_id": "157", "shop_url": "https://api.datawiz.io/api/v1/shops/157/", "date": "2018-04-11T01:00:00", "qty": 10

    },
    {
        "url": "https://api.datawiz.io/api/v1/people-traffic/124/",
        "traffic_id": "124",
        "shop_id": "157",
        "shop_url": "https://api.datawiz.io/api/v1/shops/157/",
        "date": "2018-04-11T01:00:00",
        "qty": 10
    },
    {
        "url": "https://api.datawiz.io/api/v1/people-traffic/125/",
        "traffic_id": "125",
        "shop_id": "157",
        "shop_url": "https://api.datawiz.io/api/v1/shops/157/",
        "date": "2018-04-11T01:00:00",
        "qty": 10
    }
]

}

Повідомлення про помилку:

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

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

{      "detail": "Not found" }

42.2.2. POST /people-traffic/ - додати новий трафік

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

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

В запиті передається JSON-об'єкт, який описує трафік. Важливі три поля: traffic_id, shop_id,date.

Приклад коректних запитів на додавання нового трафіку: POST http://api.datawiz.io/api/v1/people-traffic/?format=json

{
    "traffic_id": "124",
    "shop_id": "157",
    "date": "2018-04-11T01:00:00",
    "qty": 10
}
Відповідь сервера:

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

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

HTTP 201 CREATED 
Content-Type: application / json 
Vary: Accept 
Location: http://api.datawiz.io/api/v1/people-traffic/
Allow: GET, POST, HEAD, OPTIONS 
{
"created": 1,
"updated": 0
} 
Обмеження (Constraints):

Не можна додати на сервер такий трафік, якщо він вже існує з таким ідентифікатором traffic_id, і магазином shop_id

Повідомлення про помилку:

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

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

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

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

42.2.3. OPTIONS /people-traffic/ - мета-інформація по структурі об'єкта

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

OPTIONS /api/v1/people-traffic/

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

{
    "name": "People Traffic Instance",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "PUT": {
            "url": {
                "type": "string",
                "required": false,
                "read_only": true,
                "label": "Url"
            },
            "traffic_id": {
                "type": "string",
                "required": true,
                "read_only": false,
                "label": "Traffic id"
            },
            "shop_id": {
                "type": "integer",
                "required": true,
                "read_only": false,
                "label": "Shop id"
            },
            "shop_url": {
                "type": "integer",
                "required": false,
                "read_only": true,
                "label": "Shop url"
            },
            "date": {
                "type": "datetime",
                "required": true,
                "read_only": false,
                "label": "Date"
            },
            "qty": {
                "type": "integer",
                "required": true,
                "read_only": false,
                "label": "Qty"
            }
        }
    }
}
⚠️ **GitHub.com Fallback** ⚠️