Rest API Список чеків - datawizio/pythonAPI GitHub Wiki

15. Ресурс /receipts/ (Список чеків, Колекція)

  • Список чеків* (receipts) - це список касових чеків. Кожний чек включає в себе список товарних позицій. З допомогою ресурсу /receipts/ можна отримати доступ до списку чеків, а також додавати нові чеки.

15.1. Структура чека

15.1.1. Структура об'єкта ЧЕК (RECEIPTS):

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
url URL ні так url цього об'єкта
date datetime 200 так ні дата і час реєстрації чека касовим апаратом
order_id рядок 200 так ні довільний ідентифікатор чека (унікальний у межах дня і касового терміналу, де був оплачений)
shop_id рядок 50 ні так ідентифікатор магазину (повинен відповідати id магазину з клієнтської бухгалтерської програми)
shop_url URL ні так url ідентифікатора магазину
terminal_id рядок 50 так ні ідентифікатор касового терміналу
terminal_url URL ні так url ідентифікатора касового терміналу
loyalty_id рядок 50 ні ні ідентифікатор програми лояльності
loyalty_url URL ні так url ідентифікатора програми лояльності
contractor_id рядок 50 ні ні ідентифікатор контрагента
contractor_url URL ні так url ідентифікатора контрагента
cashier_id рядок 50 ні ні ідентифікатор касира
cashier_url URL ні так url ідентифікатора касира
cartitems список ні ні масив об'єктів типу список позицій (cartitems)
marker список ні ні список міток чека

15.1.2. Структура об'єкта ПОЗИЦІЯ В ЧЕКУ (CARTITEMS):

В кожному чеку міститься список з 0 і більше товарних позицій такої структури:

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
url URL ні так url цього об'єкта
order_no ціле так ні довільний номер товарної позиції в чеку (унікальне ціле число в межах даного чека)
product_id рядок 200 так ні ідентифікатор товару з Довідника по товарах (див.[/products/])
product_url URL ні так url ідентифікатора товару
base_price число ні ні ціна товару без надання знижок
price число ні ні реальна ціна позиції (якщо це поле відсутнє, чи price*qty <> total_price, то вираховується, як total_price/qty)
qty число так ні кількість
total_price число так ні загальна вартість позиції (= ціна * кількість)

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

З ресурсом /receipts/ підтримуються наступні команди: - GET - отримати одну сторінку колекції - POST - додати новий чек або список чеків - OPTIONS - мета-інформація по структурі об'єкта - HEAD - аналог GET, але повертається тільки заголовок відповіді

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

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

Суфікси:
  • .json - Отримати відповідь з сервера в форматі JSON
  • .api - Отримати відповідь з сервера в форматі HTML (тестова платформа)   
Параметри:
  • Format = json | api - аналог вищевказаних суфіксів
  • Page_size = nn - встановити розмір сторінки рівний nn об'єктів
  • Page = n - завантажити сторінку n
  • Min_date = YYYY-MM-DD - повертати тільки чеки з датою більше-рівне YYYY-MM-DD
  • Max_date = YYYY-MM-DD - повертати тільки чеки з датою менше YYYY-MM-DD
  • Ordering = url | date | order_id - сортувати по полю в сторону зростання
  • Ordering = -url | -date | order_id - сортувати по полю в зворотному порядку
Відповідь з сервера:

Об'єкт "колекція" із чотирьох полів (count, next, previous, results).

Приклад порожньої колекції, отриманої в результаті запиту:

GET http://api.datawiz.io/api/v1/receipts/?max_date=0000-00-00

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

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

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

{      "count": 362203,      "next": "http://api.datawiz.io/api/v1/receipts/?page=2&amp;page_size=2",      "previous": null,      "results": [          {              "url": "http://api.datawiz.io/api/v1/receipts/1810894/",              "date": "2013-04-04T00: 00: 00",              "order_id": "5281KASSA3",              "markers": [],              "cartitems": [                  {                      "url": "http://api.datawiz.io/api/v1/receipts/1810894/cartitems/9873504/",                      "product_id": "6316",                      "product_url": "http://api.datawiz.io/api/v1/products/6316/",                      "price": "30.5625",                      "qty": "0.1600",                      "total_price": "4.8900"                  }                  {                      "url": "http://api.datawiz.io/api/v1/receipts/1810894/cartitems/9875943/",                      "product_id": "7561",                      "product_url": "http://api.datawiz.io/api/v1/products/7561/",                      "price": "27.2619",                      "qty": "0.3360",                      "total_price": "9.1600"                  }              ]          }          {              "url": "http://api.datawiz.io/api/v1/receipts/1810895/",              "date": "2013-04-04T00: 00: 00",              "order_id": "5282KASSA3",              "markers": ["оптовий"],              "cartitems": [                  {                      "url": "http://api.datawiz.io/api/v1/receipts/1810895/cartitems/9445051/",                      "product_id": "1292",                      "product_url": "http://api.datawiz.io/api/v1/products/1292/",                      "price": "3.5400",                      "qty": "1.0000",                      "total_price": "3.5400"                  }                  {                      "url": "http://api.datawiz.io/api/v1/receipts/1810895/cartitems/9611714/",                      "product_id": "11495",                      "product_url": "http://api.datawiz.io/api/v1/products/11495/",                      "price": "12.5000",                      "qty": "1.0000",                      "total_price": "12.5000"                  }                  {                      "url": "http://api.datawiz.io/api/v1/receipts/1810895/cartitems/10043536/",                      "product_id": "10965",                      "product_url": "http://api.datawiz.io/api/v1/products/10965/",                      "price": "3.8900",                      "qty": "1.0000",                      "total_price": "3.8900"                  }              ]          }      ] }

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

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

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

{      "detail": "Not found" }

15.2.2. POST /receipts/ - додати новий чек

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

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

В запиті передається JSON-об'єкт, який описує чек. Важливі два поля: date i order_id. Поле cartitems, надає масив позицій не обов'язковий до заповнення (порожній чек).

Одночасно, в чеку можуть бути присутніми одна чи більше позицій (cartitems), в цьому випадку в кожній позиції повинні бути заповнені обов'язкові поля: ідентифікатор товару (product_id) з Довідника по товарах (див.ресурс /products /), кількість (qty) та загальна вартість позиції (total_price). Поле "Ціна товару" - опційна та вираховується як total_price/qty. Також, при неохідності, в чек можна додати одну або кілька міток (поле marker), які будуть використовуватися при аналітиці. Мітки створюються за допомогою ресурсу Мітки чека

Приклад коректних запитів на додавання нового чека: POST http://api.datawiz.io/api/v1/receipts/.json - порожній чек (поле cartitems відсутнє)

{
     "date": "2014-06-06T00:00:00", 
     "order_id": "1000" 
} 

POST http://api.datawiz.io/api/v1/receipts/.json - порожній чек (поле cartitems присутній - порожній масив)

{
     "date": "2014-06-06T00:00:00", 
     "order_id": "1000",
     "marker": [], 
     "cartitems": [] 
} 

POST http://api.datawiz.io/api/v1/receipts/.json - чек з двома позиціями, помічений як оптовий

{
     "date": "2014-04-04T12:30:45", 
     "order_id": "KASSA3-2222", 
     "marker": ["bulk_marker_id"],
     "cartitems": [
         {
             "product_id": "6316", 
             "price": "30.5625", 
             "qty": "0.1600", 
             "total_price": "4.8900" 
         } 
         {
             "product_id": "7561", 
             "price": "27.2619", 
             "qty": "0.3360", 
             "total_price": "9.1600" 
         } 
     ] 
} 
Відповідь сервера:

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

Приклад відповіді сервера: Створений порожній чек:

HTTP 201 CREATED 
Content-Type: application / json 
Vary: Accept 
Location: http://api.datawiz.io/api/v1/receipts/2173120/ 
Allow: GET, POST, HEAD, OPTIONS 

{      "url": "http://api.datawiz.io/api/v1/receipts/2173120/",      "date": "2014-07-03T10: 06: 30",      "order_id": "TEST-RECEIPT-777",      "cartitems": [] }

Створений чек з 2 позиціями:

HTTP 201 CREATED 
Content-Type: application/json 
Vary: Accept 
Location: http://api.datawiz.io/api/v1/receipts/2173121/ 
Allow: GET, POST, HEAD, OPTIONS 

{      "url": "http://api.datawiz.io/api/v1/receipts/2173121/",      "date": "2014-07-03T10: 06: 30",      "order_id": "TEST-RECEIPT-7777",      "cartitems": [          {              "url": "http://api.datawiz.io/api/v1/receipts/2173121/cartitems/10488145/",              "product_id": "6316",              "product_url": "http://api.datawiz.io/api/v1/products/6316/",              "price": "30.5625",              "qty": "0.1600",              "total_price": "4.8900"          }          {              "url": "http://api.datawiz.io/api/v1/receipts/2173121/cartitems/10488144/",              "product_id": "7561",              "product_url": "http://api.datawiz.io/api/v1/products/7561/",              "price": "27.2619",              "qty": "0.3360",              "total_price": "9.1600"          }      ] }

Обмеження (Constraints):
  • Не можна додати на сервер чек, якщо вже існує чек з таким самим date+order_id
  • total_price повинен бути рівним price*qty. Якщо це не так, то поле price фіксується як total_price/qty
Повідомлення про помилку:

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

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

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

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

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

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

OPTIONS /api/v1/receipts/

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

{      "name": "Receipt 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              }              "date": {                  "type": "datetime",                  "required": true,                  "read_only": false              }              "order_id": {                  "type": "string",                  "required": true,                  "read_only": false,                  "max_length": 200              }

             "cartitems": {                  "url": {                      "type": "field",                      "required": false,                      "read_only": true,                      "label": "Url"                  }                  "product_id": {                      "type": "string",                      "required": true,                      "read_only": false,                      "label": "Product id",                      "max_length": 200                  }                  "product_url": {                      "type": "field",                      "required": false,                      "read_only": true,                      "label": "Product url"                  }                  "price": {                      "type": "decimal",                      "required": true,                      "read_only": false,                      "label": "price"                  }                  "qty": {                      "type": "decimal",                      "required": true,                      "read_only": false,                      "label": "qty"                  }                  "total_price": {                      "type": "decimal",                      "required": true,                      "read_only": false,                      "label": "total price"                  }              }          }      } }

16. Ресурс /receipts/{receipt_id} - окремий чек *

Скориставшись ресурсом /receipts/{receipt_id} можна отримати з сервера, модифікувати повністю чи частково, а також видалити вибраний чек. Для вибору потрібного чека необхідно зробити запит по адресу із поля url вибраного чека. Перелік існуючих чеків і їх ідентифікаторів можна отримати, скориставшись командою 'GET /receipts/' (детальніше див.розділ "[2. Ресурс /receipts/(Список чеків, Колекція)]")

16.1. Структура чека:

16.1.1. Структура об'єкта ЧЕК (RECEIPTS):

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
url URL ні так url цього об'єкта
date datetime 200 так ні дата і час реєстрації чека касовим апаратом
order_id рядок 200 так ні довільний ідентифікатор чека (унікальний у межах дня і касового терміналу, де був оплачений)
shop_id рядок 50 ні так ідентифікатор магазину (повинен відповідати id магазина із клієнтської бухгалтерської програми)
shop_url URL ні так url ідентифікатора магазину
terminal_id рядок 50 так ні ідентифікатор касового терміналу
terminal_url URL ні так url ідентифікатора касового терміналу
loyalty_id рядок 50 ні ні ідентифікатор програми лояльності
loyalty_url URL ні так url ідентифікатора програми лояльності
cashier_id рядок 50 ні ні ідентифікатор касира
cashier_url URL ні так url ідентифікатора касира
marker список ні ні список міток чека
cartitems список ні ні масив об'єктів типу список позицій (cartitems)

16.1.2. Структура об'єкта * ПОЗИЦІЯ В ЧЕКУ * (CARTITEMS):

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
url URL ні так url цього об'єкта
order_no ціле так ні довільний номер товарної позиції в чеку (унікальне ціле число в межах даного чека)
product_id рядок 200 так ні ідентифікатор товару з Довідника по товарах (див.[/products/])
product_url URL ні так url ідентифікатора товару
base_price число ні ні ціна товару без надання знижок
price число ні ні реальна ціна позиції (якщо це поле відсутнє, чи price*qty <> total_price, то вираховується, як total_price/qty)
qty число так ні кількість
total_price число так ні загальна вартість позиції (= ціна * кількість)

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

З ресурсом /receipts/{receipt_id} підтримують наступні команди: - GET - отримати чек, визначений з допомогою ідентифікатора {receipt_id} - PUT - * повністю * замінити чек на сервері новим - PATCH - змінити значення * окремих * полів об'єкта - DELETE - вилучити чек - OPTIONS - мета-інформація по структурі об'єкта - HEAD - аналог GET, але повертається тільки заголовок відповіді

16.2.1. GET /receipts/{receipt_id}/ - отримати чек, визначений з допомогою ідентифікатора {receipt_id}

Вид команди: GET http://api.datawiz.io/api/v1/receipts/12345 - отримати чек з ідентифікатором {receipt_id} = 12345

Суфікси:
  • .json - Отримати відповідь з сервера в форматі JSON
  • .api - Отримати відповідь з сервера в форматі HTML (тестова платформа)   
Параметри:
  • format=json|api - встановити формат даних. Аналог вищевказаних суфіксів
Відповідь з сервера:

При відправлені на сервер команди GET /receipts/{receipt_id} з порожнім тілом запиту сервер повертає об'єкт заданої структури в форматі JSON чи повідомлення про помилку.

Наприклад, GET http://api.datawiz.io/api/v1/receipts/1710900/.json:

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

{      "url": "http://api.datawiz.io/api/v1/receipts/1810900/",      "date": "2013-04-04T00: 00: 00",      "order_id": "5287KASSA3",      "markers": [],      "cartitems": [          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10209184/",              "product_id": "8277",              "product_url": "http://api.datawiz.io/api/v1/products/8277/",              "price": "2.9300",              "qty": "1.0000",              "total_price": "2.9300"          }          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10318560/",              "product_id": "6212",              "product_url": "http://api.datawiz.io/api/v1/products/6212/",              "price": "8.5000",              "qty": "1.0000",              "total_price": "8.5000"          }          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10374429/",              "product_id": "2966",              "product_url": "http://api.datawiz.io/api/v1/products/2966/",              "price": "1.9800",              "qty": "1.0000",              "total_price": "1.9800"          }      ] }

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

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

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

{      "detail": "Not found" }

16.2.2. PUT /receipts/{receipts_id}/ - * повністю * замінити об'єкт на сервері новим

Вид команди: PUT http://api.datawiz.io/api/v1/receipts/12345/.json - замінити об'єкт з {receipt_id}=12345 на інший

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

В запиті передається JSON-об'єкт з новими значеннями чека.

Важливі два поля: date і order_id. Поле cartitems, являє собою масив позицій, не обов'язково для заповнення (порожній чек).

Одночасно, в чеку можуть бути присутніми одна чи більше позицій (cartitems), в цьому випадку у кожній позиції повинні бути заповненими обов'язкові поля: ідентифікатор товару (product_id) з * Довідника по товарах * (див. ресурс /products/), кількість (qty) і загальна вартість позиції (total_price). Поле "Ціна товару" - опційна та вираховується як total_price/qty.

Приклад запиту на заміну об'єкта в Довідник по товарах:

PUT http://api.datawiz.io/api/v1/receipts/123456-TEST/.json

{
     "date": "2013-04-04T12: 30: 00", 
     "order_id": "KASSA3-12345", 
     "cartitems": [
         {
             "product_id": "8277", 
             "qty": 1.0000, 
             "total_price": 2.9300 
         } 
         {
             "product_id": "6212", 
             "qty": 1.0000, 
             "total_price": 8.5000 
         } 
         {
             "product_id": "2966", 
             "qty": 1.0000, 
             "total_price": 1.9800 
         } 
     ] 
} 
Відповідь сервера

При коректній обробці запиту сервер повертає код статусу 200 і змінений об'єкт із заповненим полем url.

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

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

{      "url": "http://api.datawiz.io/api/v1/receipts/1810900/",      "date": "2013-04-04T12: 30: 00",      "order_id": "KASSA3-12345",      "markers": [],      "cartitems": [          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10209184/",              "product_id": "8277",              "product_url": "http://api.datawiz.io/api/v1/products/8277/",              "price": "2.9300",              "qty": "1.0000",              "total_price": "2.9300"          }          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10318560/",              "product_id": "6212",              "product_url": "http://api.datawiz.io/api/v1/products/6212/",              "price": "8.5000",              "qty": "1.0000",              "total_price": "8.5000"          }          {              "url": "http://api.datawiz.io/api/v1/receipts/1810900/cartitems/10374429/",              "product_id": "2966",              "product_url": "http://api.datawiz.io/api/v1/products/2966/",              "price": "1.9800",              "qty": "1.0000",              "total_price": "1.9800"          }      ] }

Обмеження (Constraints)
  • Не можна додати на сервер чек, якщо вже існує чек з таким самим date+order_id
  • Total_price повинен бути рівним price*qty. Якщо це не так, то поле price фіксується як total_price/qty
Повідомлення про помилку

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

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

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

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

16.2.3. PATCH/reseipts/{reseipts_id}/ - змінити значення *окремих* полів об'єкта

Команда PATCH використовується, якщо потрібно змінити окремі поля об'єкта. Команда PATCH у всьому схожа на команду PUT, тільки в ній можна вказувати не всі об'єкти, а тільки ті поля, які необхідно змінити.

Вид команди: PATCH http://api.datawiz.io/api/v1/receipts/12345/.json - замінити окремі поля об'єкта з receipt_id = 12345 на інші

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

В запиті передається JSON-об'єкт з новим значенням окремих полів об'єкта

Важливі два поля: date i order_id. Поле cartitems, яке являє собою масив позицій, не обов'язкових до заповнення (порожній чек). Одночасно, в чеку можуть бути присутніми одна чи більше позицій (cartitems), в цьому випадку в кожній позиції повинні бути заповнені обов'язкові поля: ідентифікатор товару(product_id) з * Довідника по товарах *(див.ресурс /products/), кількість (qty) і загальна вартість позиції (total_price). Поле "Ціна товару" - опційна та вираховується як total_price/qty.

ПРИМІТКА! Поле cartitems сприймається як єдиний нероздільний об'єкт. Таким чином дана команда не має можливості змінити окрему позицію, додати одну чи видалити, а тільки повністю видалити всі існуючі позиції по чеку і додати всі нові. Якщо виникає необхідність модифікувати позиції в чеку (додавати, модифікувати, видаляти), - скористайтесь ресурсом /receipt/{receipt_id}/cartitems/

Приклад запиту на заміну значення поля date для чека з {receipt_id}=123456:

PUT http: //api.datawiz.io/api/v1/receipts/123456/.json

{
     "date": "2013-04-04T12: 30: 00" 
} 
Відповідь сервера

При коректній обробці запиту сервер повертає код статусу 200 і змінений об'єкт із заповненим полем url.

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

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

{      "url": "http://api.datawiz.io/api/v1/receipts/123456/",      "date": "2013-04-04T12:30:00",      "order_id": "RECEIPT-777",      "cartitems": [] }

Обмеження (Constraints)

При заміні не можна вказувати інший receipt_id, якщо вже існує об'єкт з таким самим receipt_id

  • При заміні не можна вказувати інші date та order_id, якщо вже існує чек з такими самими date+order_id
  • total_price повинен бути рівним price*qty. Якщо це не так, то поле price фіксується як total_price/qty
Повідомлення про помилку

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

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

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

HTTP 400 BAD REQUEST 
Content-Type: application/json 
Vary: Accept 
Allow: GET, PUT, DELETE, HEAD, OPTIONS, PATCH 

{      "cartitems": [          {},          {},          {              "qty": [                  "Quantity can not be empty or zero"              ]          }      ] }

16.2.4. DELETE /reseipts/{reseipts_id}/ - вилучити чек

Команда DELETE використовується для вилучення вказаного чека

Вид команди: DELETE http://api.datawiz.io/api/v1/receipts/12345/ - вилучити чек з receipt_id = 12345

Суфікси:
  • .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 
Обмеження (Constraints)
  • Ні
Повідомлення про помилку

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

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

{      "detail": "Not found" }

16.2.5.OPTIONS /reseipts/{reseipts_id}/- мета-інформація по структурі об'єкта

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

OPTIONS /api/v1/receipts/123456-NEW-ID/

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

{      "name": "Receipt Instance",      "description": "this is my second text \ naaaaa",      "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              }              "date": {                  "type": "datetime",                  "required": true,                  "read_only": false              }              "order_id": {                  "type": "string",                  "required": true,                  "read_only": false,                  "max_length": 200              }              "cartitems": {                  "url": {                      "type": "field",                      "required": false,                      "read_only": true,                      "label": "Url"                  }                  "product_id": {                      "type": "string",                      "required": true,                      "read_only": false,                      "label": "Product id",                      "max_length": 200                  }                  "product_url": {                      "type": "field",                      "required": false,                      "read_only": true,                      "label": "Product url"                  }                  "price": {                      "type": "decimal",                      "required": false,                      "read_only": false,                      "label": "Price"                  }                  "qty": {                      "type": "decimal",                      "required": true,                      "read_only": false,                      "label": "qty"                  }                  "total_price": {                      "type": "decimal",                      "required": true,                      "read_only": false,                      "label": "total price"                  }              }          }      } }

⚠️ **GitHub.com Fallback** ⚠️