Список товарів, які постачає постачальник - datawizio/pythonAPI GitHub Wiki
Товари постачальника - це список всіх товарів, якими постачальник забезпечує конкретний магазин. З допомогою ресурсу /supplier-products/
можна отримати доступ до списку товарів постачальника. А також додавати нові товари
Назва поля | Тип поля | розмір | Обов'язково | Тільки читання | Примітка |
---|---|---|---|---|---|
supplier_id |
рядок | 200 | так | ні | ідентифікатор постачальника, повинен відповідати id постачальника товару |
shop_id |
рядок | 200 | так | ні | ідентифікатор магазину, повинен відповідати id магазину |
product_id |
рядок | 200 | ні | ні | ідентифікатор товару, повинен відповідати id товару |
deferment |
число | - | ні | ні | відстрочка |
bonus |
число | ні | так | ретро-бонус | |
Для управління ресурсом /supplier-products/
підтримуються наступні команди:
-
GET
- отримати одну сторінку колекції -
POST
- завантажити інформацію про постачальників -
OPTIONS
- мета-інформація по структурі об'єкта -
HEAD
- аналогGET
, але повертається тільки заголовок відповіді
Вид команди: GET http://api.datawiz.io/api/v1/supplier-products/
-
.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/supplier-products/.json
{
"count": 0,
"next": null,
"previous": null,
"results": []
}
Приклад колекції з 2-х елементів:
GET http://api.datawiz.io/api/v1/suppliers/?format=api&page_size=2
:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS
{
"count": 11,
"next": "http://api.datawiz.io/api/v1/supplier-products/?page=2&page_size=2&format=api",
"previous": null,
"results": [
{
"supplier_id": "supplier-1",
"shop_id": "shop-1",
"product_id": "Молоко_05",
"deferment": 10,
"bonus": 20
},
{
"supplier_id": "supplier-2",
"shop_id": "shop-1",
"product_id": "Кагор_05",
"deferment": 10,
"bonus": 20
},
]
}
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомлення про помилку, записаним у ключі detail
і/або в полі http.response.content
:
HTTP 404 NOT FOUND
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS, PATCH
{
"detail": "Not found"
}
Вид команди: POST http://api.datawiz.io/api/v1/supplier-products/?format=json
-
.json
- Отримати відповідь з сервера в форматі JSON -
.api
- Отримати відповідь з сервера в форматі HTML (тестова платформа)
-
format = json | api
- аналог вищевказаних суфіксів
У запиті передається JSON-об'єкт типу словник (dictionary), який описує звязок товару з постачальником. Важливі поля: supplier_id
, shop_id
, product_id
. Послідовність полів не принципова.
Приклад запиту на завантаження інформації про товари постачальника:
POST http://api.datawiz.io/api/v1/supplier-products/.json
{
"supplier_id": "supplier-2",
"shop_id": "shop-1",
"product_id": "оболонь_05",
"deferment": 11,
"bonus": 20.5
},
При коректній обробці запиту сервер повертає код статусу 201 і статус створення об'єкта.
Приклад відповіді сервера:
HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Location: http://api.datawiz.io/api/v1/supplier-products/124/
Allow: GET, POST, HEAD, OPTIONS
{
"updated": 0,
"inserted": 1
}
- Якщо об'єкт з ідентифікатором
supplier_id
,shop_id
,product_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Не можна додати на сервер об'єкт, якщо не існує товару з вказаним ідентифікатором
product_id
- Не можна додати на сервер об'єкт, якщо не існує магазину з вказаним ідентифікатором
shop_id
- Не можна додати на сервер об'єкт, якщо не існує постачальника з вказаним ідентифікатором
supplier_id
У випадку виникнення помилки сервер повертає відповідь із відповідним статусом, а також повідомленням про помилку, записаним навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors
.
ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядкових символів.
Приклад відповіді сервера при виникненні помилки (поле shop_id
передано порожнім):
HTTP 400 BAD REQUEST
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"shop_id": [
"This field is required."
]
}
При виконанні даної команди повертається така 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": "",
"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"
},
"supplier_id": {
"type": "integer",
"required": true,
"read_only": false,
"label": "Supplier id"
},
"product_id": {
"type": "integer",
"required": true,
"read_only": false,
"label": "Product id"
},
"shop_id": {
"type": "integer",
"required": true,
"read_only": false,
"label": "Shop id"
},
"bonus": {
"type": "decimal",
"required": false,
"read_only": false,
"label": "Bonus"
},
"deferment": {
"type": "integer",
"required": false,
"read_only": false,
"label": "Deferment",
"min_value": -2147483648,
"max_value": 2147483647
}
}
}
}