Rest API Довідник одиниць виміру товарів - datawizio/pythonAPI GitHub Wiki
Довідник одиниць виміру - це список одиниць виміру товарів (шт., кг., уп., і т.д.). З допомогою ресурсу /units/
можна отримати доступ до списку одиниць виміру товарів, а також додавати в довідник нові од.виміру.
Назва поля | Тип поля | розмір | Обов'язково | Тільки читання | Примітка |
---|---|---|---|---|---|
url |
URL | ні | так | url цього об'єкта | |
unit_id |
рядок | 50 | так | ні | повинен бути унікальним та відповідати id одиниць виміру з клієнтської бухгалтерської програми |
name |
рядок | 100 | так | ні | найменування одиниці виміру |
З ресурсом /units/
підтримуються наступні команди:
-
GET
- отримати одну сторінку колекції -
POST
- добавити одиницю виміру чи список одиниць виміру в Довідник одиниць виміру -
OPTIONS
- мета-інформація по структурі об'єкта -
HEAD
- аналогGET
, але повертається тільки заголовок відповіді
Вид команди: GET http://api.datawiz.io/api/v1/units/
-
.json
- Отримати відповідь з сервера в форматі JSON -
.api
- Отримати відповідь з сервера в форматі HTML (тестова платформа)
-
format=json|api
- аналог вищевказаних суфіксів -
page_size={nn}
- встановити розмір сторінки рівний{nn}
об'єктів -
page={n}
- завантажити сторінку{n}
-
search = {substring}
- відображати тільки об'єкти, в поліname
яких знайдено фрагмент "{substring}" -
ordering=name|identifier
- сортувати по полю в алфавітному порядку (від меншого - до більшого) -
ordering=-name|-identifier
- сортувати по полю в зворотному порядку
ПРИМІТКА: identifier
- означає сортування по полю unit_id
Об'єкт "колекція" із чотирьох полів (count
,next
, previous
,results
).
Приклад порожньої колекції, отриманої в результаті запиту:
GET http://api.datawiz.io/api/v1/units/.json/?search=unknown-string
{
"count": 0,
"next": null,
"previous": null,
"results": []
}
Приклад колекції із 2-х елементів:
GET http://api.datawiz.io/api/v1/units/?format=json&page_size=2
:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"count": 39,
"next": "http://api.datawiz.io/api/v1/units/?page=2&page_size=2&format=api",
"previous": null,
"results": [
{
"url": "http://api.datawiz.io/api/v1/units/1-1/",
"unit_id": "1-1",
"name": "Kassa 1",
"shop_id": "1",
"shop_url": "http://api.datawiz.io/api/v1/shops/1"
},
{
"url": "http://api.datawiz.io/api/v1/units/2-1/",
"unit_id": "2-1",
"name": "Kassa 1",
"shop_id": "2",
"shop_url": "http://api.datawiz.io/api/v1/shops/2"
}
]
}
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записану в ключі detail
:
HTTP 404 NOT FOUND
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"detail": "Not found"
}
Вид команди: POST http://api.datawiz.io/api/v1/units/?format=json
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
- `format=json - взаємодіяти з сервером в форматі JSON
- `format=api - взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт типу словник (dictionary), який описує новий товар. Важливі всі поля: unit_id
, name
. Порядок послідовності полів не принциповий.
Приклад запиту на додавання одного нового об'єкту в Довідник одиниць виміру:
POST http://api.datawiz.io/api/v1/units/.json
{
"unit_id": "2",
"name": "кг"
}
При коректній обробці запиту сервер повертає код статусу 201 і статус створення об'єкта.
Приклад відповіді сервера:
HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Location: http://api.datawiz.io/api/v1/units/2/
Allow: GET, POST, HEAD, OPTIONS
{
"updated": 0,
"inserted": 1
}
- Якщо об'єкт з ідентифікатором
unit_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
name
не може бути порожнім. - Поле
name
повинно бути унікальним (на сервері не має вже існувати об'єкта, з таким самим іменем).
У випадку виникнення помилки сервер повертає відповідь із відповідним статусом, а також повідомленням про помилку, записаними навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors
.
ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядків символів.
Приклад відповіді сервера при виникненні помилки (поле name
передано порожнім):
HTTP 400 BAD REQUEST
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"name": [
"This field is required."
]
}
Вид команди: POST http://api.datawiz.io/api/v1/units/?format=json
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
- `format=json - взаємодіяти з сервером в форматі JSON
- `format=api - взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт типу список (list), який містить один чи більше об'єктів, які описують нову одиницю виміру. Передача на сервер об'єктів не по одинці, а списком дозволяє значно збільшити швидкість передачі об'єктів.
Приклад запиту на пакетне додавання трьох нових об'єктів у Довідник одиниць виміру:
POST http://api.datawiz.io/api/v1/units/.json
[
{
"unit_id": "2",
"name": "кг"
},
{
"unit_id": "4",
"name": "уп 10шт"
},
{
"unit_id": "4",
"name": "шт"
}
]
При коректній обробці запиту сервер повертає код статусу 201 і статистику по доданих/змінених об'єктах.
Приклад відповіді сервера:
HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"updated": 1,
"inserted": 2
}
- Якщо об'єкт з ідентифікатором
unit_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
name
не може бути порожнім. - Поле
name
повинно бути унікальним (на сервері не має вже існувати об'єкта, з таким самим іменем).
У випадку виникнення помилки сервер повертає відповідь із відповідним статусом, а також повідомленням про помилку, записаними навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors
.
ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядків символів.
Приклад відповіді сервера при виникненні помилки (поле name
другого об'єкта не унікальне):
HTTP 400 BAD REQUEST
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
[
{},
{
"name": [
"The name 'уп 10шт' is already used for object with unit_id
=4"
]
},
{}
]
Як бачимо, помилка відбулась у другому об'єкті, в полі name
. Тут же вказана і причина помилки.
При виконанні даної команди повертається така JSON-структура:
OPTIONS /api/v1/units/
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"name": "Unit List",
"description": "Units",
"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
},
"unit_id": {
"type": "string",
"required": true,
"read_only": false,
"max_length": 50
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "name",
"max_length": 100
}
}
}
}
Скориставшись ресурсом /units/{id}
можна отримати із сервера, модифікувати повністю і частково, а також видалити вибраний об'єкт із Довідника одиниць виміру. Для вибору потрібного об'єкта необхідно замінити {id}
в URL ресурсу на ідентифікатор із поля unit_id
існуючого об'єкта. Перелік існуючих об'єктів і їх ідентифікаторів можна отримати скориставшись командою 'GET /units/' (детальніше див.розділ "[7. Ресурс /units/
(Довідник одиниць виміру, Колекція)]")
Назва поля | Тип поля | розмір | Обов'язково | Тільки читання | Примітка |
---|---|---|---|---|---|
url |
URL | ні | так | url цього об'єкта | |
unit_id |
рядок | 50 | так | ні | повинен бути унікальними і відповідати id одиниці виміру з клієнтської бухгалтерської програми |
name |
рядок | 100 | так | ні | найменування одиниці виміру |
З ресурсом /units/{id}
підтримуються наступні команди:
-
GET
- отримати об'єкт зunit_id={id}
-
PUT
- повністю замінити об'єкт на сервері новим -
PATCH
- змінити значення окремих полів об'єкта -
DELETE
- вилучити із Довідника одиниць виміру об'єкт зunit_id={id}
-
OPTIONS
- мета-інформація по структурі об'єкта -
HEAD
- аналогGET
, але повертається тільки заголовок відповіді
Вид команди: GET http://api.datawiz.io/api/v1/units/4
- отримати об'єкт з unit_id=4
-
.json
- Отримати відповідь з сервера в форматі JSON -
.api
- Отримати відповідь з сервера в форматі HTML (тестова платформа)
-
format=json|api
- встановити формат даних. Аналог вищевказаних суфіксів
При відправленні на сервер команди GET /units/{id}
з порожнім тілом запиту сервер повертає об'єкт заданої структури в форматі JSON чи повідомлення про помилку.
Наприклад, GET http://api.datawiz.io/api/v1/units/4/.json
:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"url": "http://api.datawiz.io/api/v1/units/4/",
"unit_id": "4",
"name": "шт"
}
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записану в ключі detail
:
HTTP 404 NOT FOUND
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"detail": "Not found"
}
Фактично даний запит працює, як два послідовних запити:
1 Видалити об'єкт із старим unit_id = {id} (DELETE
)
2 Створити новий об'єкт із новим unit_id
(POST
)
Вид команди: PUT http://api.datawiz.io/api/v1/units/4/.json
- замінити об'єкт з unit_id="4" на інший
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
-
format=json
- взаємодіяти з сервером в форматі JSON -
format=api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт з новим значенням об'єкта
Важливі всі поля: unit_id
, name
.
Приклад запиту на заміну об'єкта в Довіднику одиниць виміру:
PUT http://api.datawiz.io/api/v1/units/4/.json
{
"unit_id": "44",
"name": "Шт."
}
}
Тут під заміну попадають поля unit_id
і name
. Зазначимо, що при заміні значення ключового поля (identifier
, в даному випадку - unit_id
), дане поле зміниться всюди, і всі зв'язки збережуться.
При коректній обробці запиту сервер повертає код статусу 200 і змінений об'єкт із заповненим полем url
.
ПРИМІТКА. Якщо змінювалось поле unit_id
, то і поле url
також зміниться!
Приклад відповіді сервера:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"url": "http://api.datawiz.io/api/v1/units/5/",
"unit_id": "5",
"name": "Шт."
}
- Якщо об'єкт з ідентифікатором
unit_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
name
не може бути порожнім. - Поле
name
повинно бути унікальним (на сервері не має вже існувати об'єкта, з таким самим іменем).
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записаними навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors
.
ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядків символів.
Приклад відповіді сервера при виникненні помилки (поле name
передано порожнім):
HTTP 400 BAD REQUEST
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"name": [
"This field is required."
]
}
Команда PATCH
використовується, якщо потрібно змінити окремі поля об'єкта. Команда PATCH
у всьому схожа на команду PUT
, тільки в ній можна вказувати не увесь об'єкт, а тільки ті поля, які необхідно змінити.
Вид команди: PATCH http://api.datawiz.io/api/v1/units/5/.json
- замінити окремі поля об'єкта з unit_id=5
на інші
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
-
format=json
- взаємодіяти з сервером в форматі JSON -
format=api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт з новим значенням окремих полів об'єкта
Важливі всі поля: unit_id
, name
.
Приклад запиту на заміну значення полів name
для об'єкта з unit_id=5
у Довіднику одиниць виміру:
PATCH http://api.datawiz.io/api/v1/units/5/.json
{
"name": "Уп.5шт."
}
При коректній обробці запиту сервер повертає код статусу 200 і змінений об'єкт з заповненим полем url
.
ПРИМІТКА! Якщо змінювалось поле unit_id
, то і поле url
також зміниться!
Приклад відповіді сервера:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"url": "http://api.datawiz.io/api/v1/units/5/",
"unit_id": "5",
"name": "Уп.5шт."
}
- Якщо об'єкт з ідентифікатором
unit_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
name
не може бути порожнім. - Поле
name
повинно бути унікальним (на сервері не має вже існувати об'єкта, з таким самим іменем).
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записаними навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors
.
ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядків символів.
Приклад відповіді сервера при виникненні помилки (поле name
передано порожнім):
HTTP 400 BAD REQUEST
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"name": [
"This field is required."
]
}
Команда DELETE
використовується для вилучення вказаного об'єкта із Довідника одиниць виміру
Вид команди: DELETE http://api.datawiz.io/api/v1/units/100/
- вилучити об'єкт з unit_id=100
-
.json
- взаємодіяти з сервером в форматі JSON -
.api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
-
format=json
- взаємодіяти з сервером в форматі JSON -
format=api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті нічого передавати не потрібно.
При коректній обробці запиту сервер повертає код статусу 204 NO CONTENT.
Приклад відповіді сервера:
HTTP 204 NO CONTENT
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
- Не можна видалити одиницю виміру, яка використовується в Номенклатурі (Довіднику по товарах)
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записану в ключі detail
:
HTTP 404 NOT FOUND
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"detail": "Not found"
}
При виконанні даної команди повертається така JSON-структура:
OPTIONS /api/v1/units/1-100/
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"name": "Unit Instance",
"description": "Units",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
],
"actions": {
"PUT": {
"url": {
"type": "field",
"required": false,
"read_only": true
},
"unit_id": {
"type": "string",
"required": true,
"read_only": false,
"max_length": 50
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "name",
"max_length": 100
}
}
}
}