Rest API Довідник касирів - datawizio/pythonAPI GitHub Wiki
Довідник касирів - це загальний список касирів мережі магазинів (без прив'язки до конкретного магазину). З допомогою ресурсу /cashiers/
можна отримати доступ до списку касирів, а також додати в довідник нові дані.
Назва поля | Тип поля | розмір | Обов'язково | Тільки читання | Примітка |
---|---|---|---|---|---|
url |
URL | ні | так | url цього об'єкта | |
cashier_id |
рядок | 50 | так | ні | повинен бути унікальним та відповідати id одиниць виміру з клієнтської бухгалтерської програми |
name |
рядок | 100 | так | ні | ПІП касира |
З ресурсом /cashiers/
підтримуються наступні команди:
-
GET
- отримати одну сторінку колекції -
POST
- добавити одиницю виміру чи список одиниць виміру у Довідник касирів -
OPTIONS
- мета-інформація по структурі об'єкта -
HEAD
- аналогGET
, але повертається тільки заголовок відповіді
Вид команди: GET http://api.datawiz.io/api/v1/cashiers/
-
.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
- означає сортування по полю cashier_id
Об'єкт "колекція" із чотирьох полів (count
,next
, previous
,results
).
Приклад порожньої колекції, отриманої в результаті запиту:
GET http://api.datawiz.io/api/v1/cashiers/.json/?search=unknown-string
{
"count": 0,
"next": null,
"previous": null,
"results": []
}
Приклад колекції із 2-х елементів:
GET http://api.datawiz.io/api/v1/cashiers/?format=json&page_size=2
:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"count": 5,
"next": "http://api.datawiz.io/api/v1/cashiers/?page=2&page_size=2",
"previous": null,
"results": [
{
"url": "http://api.datawiz.io/api/v1/cashiers/001/",
"cashier_id": "001",
"name": "Cashier #1"
},
{
"url": "http://api.datawiz.io/api/v1/cashiers/002/",
"cashier_id": "002",
"name": "Cashier #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/cashiers/?format=json
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
- `format=json - взаємодіяти з сервером в форматі JSON
- `format=api - взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт типу словник (dictionary), який описує новий товар. Важливі всі поля: cashier_id
і name
. Порядок послідовності полів не принциповий.
Приклад запиту на додавання одного нового об'єкта в Довідник касирів:
POST http://api.datawiz.io/api/v1/cashiers/.json
{
"cashier_id": "20",
"name": "Cashier #20"
}
При коректній обробці запиту сервер повертає код статусу 201 і статус створення об'єкта.
Приклад відповіді сервера:
HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Location: http://api.datawiz.io/api/v1/cashiers/2/
Allow: GET, POST, HEAD, OPTIONS
{
"updated": 0,
"inserted": 1
}
- cashier_id уже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження.
- Поле
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/cashiers/?format=json
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
- `format=json - взаємодіяти з сервером в форматі JSON
- `format=api - взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт типу список (list), який містить один чи більше об'єктів (json-словник(dictionary), див.п.13.2.2), які описують нову одиницю виміру. Передача на сервер об'єктів не по одинці, а списком дозволяє значно збільшити швидкість передачі об'єктів.
Приклад запиту на пакетне додавання трьох нових об'єктів у Довідник касирів:
POST http://api.datawiz.io/api/v1/cashiers/.json
[
{
"cashier_id": "001",
"name": "Cashier #1"
},
{
"cashier_id": "002",
"name": "Cashier #2"
},
{
"cashier_id": "003",
"name": "Cashier #1"
}
]
При коректній обробці запиту сервер повертає код статусу 201 і статистику по доданих/змінених об'єктах.
Приклад відповіді сервера:
HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"updated": 0,
"inserted": 3
}
- Якщо об'єкт з ідентифікатором
cashier_id
уже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
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."
]
},
{}
]
Як бачимо, помилка відбулась у другому об'єкті, в полі name
. Тут же вказана і причина помилки.
При виконанні даної команди повертається така JSON-структура:
OPTIONS /api/v1/cashiers/
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"name": "Cashier List",
"description": "this is my Cashier text. You can see this text on the REST-page",
"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
},
"cashier_id": {
"type": "string",
"required": true,
"read_only": false,
"max_length": 50
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "name",
"max_length": 100
}
}
}
}
Скориставшись ресурсом /cashiers/{id}
можна отримати із сервера, модифікувати повністю і частково, а також видалити вибраний об'єкт із Довідника касирів. Для вибору потрібного об'єкта необхідно замінити {id}
в URL ресурсу на ідентифікатор із поля cashier_id
існуючого об'єкта. Перелік існуючих об'єктів і їх ідентифікаторів можна отримати скориставшись командою 'GET /cashiers/' (детальніше див.розділ "[13. Ресурс /cashiers/
(Довідник касирів, Колекція)]")
Назва поля | Тип поля | розмір | Обов'язково | Тільки читання | ПРИМІТКА |
---|---|---|---|---|---|
url |
URL | ні | так | url цього об'єкта | |
cashier_id |
рядок | 50 | так | ні | повинен бути унікальним та відповідати id одиниць виміру з клієнтської бухгалтерської програми |
name |
рядок | 100 | так | ні | ПІП касира |
З ресурсом /cashiers/{id}
підтримуються наступні команди:
-
GET
- отримати об'єкт зcashier_id={id}
-
PUT
- повністю замінити об'єкт на сервері новим -
PATCH
- змінити значення окремих полів об'єкта -
DELETE
- вилучити із Довідника касирів об'єкт зcashier_id={id}
-
OPTIONS
- мета-інформація по структурі об'єкта -
HEAD
- аналогGET
, але повертається тільки заголовок відповіді
Вид команди: GET http://api.datawiz.io/api/v1/cashiers/003
- отримати об'єкт з cashier_id=003
-
.json
- Отримати відповідь з сервера в форматі JSON -
.api
- Отримати відповідь з сервера в форматі HTML (тестова платформа)
-
format=json|api
- встановити формат даних. Аналог вищевказаних суфіксів
При відправленні на сервер команди GET /cashiers/{id}
з порожнім тілом запиту сервер повертає об'єкт заданої структури в форматі JSON чи повідомлення про помилку.
Наприклад, GET http://api.datawiz.io/api/v1/cashiers/003/.json
:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"url": "http://api.datawiz.io/api/v1/cashiers/003/",
"cashier_id": "003",
"name": "Cashier #3"
}
У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомленням про помилку, записану в ключі detail
:
HTTP 404 NOT FOUND
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"detail": "Not found"
}
Фактично даний запит працює, як два послідовних запити:
1 Видалити об'єкт із старим cashier_id = {id} (DELETE
)
2 Створити новий об'єкт із новим cashier_id
(POST
)
Вид команди: PUT http://api.datawiz.io/api/v1/cashiers/003/.json
- замінити об'єкт з cashier_id="003" на інший
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
-
format=json
- взаємодіяти з сервером в форматі JSON -
format=api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт з новим значенням об'єкта
Важливі всі поля: cashier_id
і name
.
Приклад запиту на заміну об'єкта в Довіднику касирів:
PUT http://api.datawiz.io/api/v1/cashiers/003/.json
{
"cashier_id": "0034",
"name": "Cashier #003 (Another Name)"
}
Тут під заміну попадає поле name
. Зазначимо, що при заміні значення ключового поля (identifier
, в даному випадку - cashier_id
), дане поле зміниться всюди, і всі зв'язки збережуться.
При коректній обробці запиту сервер повертає код статусу 200 змінений об'єкт із заповненим полем url
.
ПРИМІТКА. Якщо змінювалось поле cashier_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/cashiers/003/",
"cashier_id": "003",
"name": "Cashier #003 (Another Name)"
}
- Якщо об'єкт з ідентифікатором
cashier_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
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/cashiers/5/.json
- замінити окремі поля об'єкта з cashier_id=5
на інші
-
.json
- Взаємодіяти з сервером в форматі JSON -
.api
- Взаємодіяти з сервером в форматі HTML (тестова платформа)
-
format=json
- взаємодіяти з сервером в форматі JSON -
format=api
- взаємодіяти з сервером в форматі HTML (тестова платформа)
В запиті передається JSON-об'єкт з новим значенням окремих полів об'єкта
Важливі всі поля: cashier_id
, name
, packed
, pack_capacity
.
Приклад запиту на заміну значення полів name
для об'єкта з cashier_id=005
у Довіднику касирів:
PATCH http://api.datawiz.io/api/v1/cashiers/5/.json
{
"name": "Cashier #5 (new name)"
}
При коректній обробці запиту сервер повертає код статусу 200 змінений об'єкт із заповненим полем url
.
ПРИМІТКА! Якщо змінювалось поле cashier_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/cashiers/005/",
"cashier_id": "005",
"name": "Cashier #5 (new name)"
}
- Якщо об'єкт з ідентифікатором
cashier_id
вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження. - Поле
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/cashiers/100/
- вилучити об'єкт з cashier_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/cashiers/100/
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH
{
"name": "Cashier Instance",
"description": "this is my Cashier text. You can see this text on the REST-page",
"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
},
"cashier_id": {
"type": "string",
"required": true,
"read_only": false,
"max_length": 50
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "name",
"max_length": 100
}
}
}
}