Rest API Довідник контрагентів - datawizio/pythonAPI GitHub Wiki

23. Ресурс /contractors/ (Контрагенти, Колекція, Тільки для читання)

Контрагенти - це список всіх Контрагентів, з якими були чи ведуться торгові відносини. З допомогою ресурсу /contractors/ можна отримати доступ до списку контрагентів. А також додавати в довідник нових контрагентів

23.1. Структура об'єкта Сontractors:

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
contractor_id рядок 100 так ні ідентифікатор контрагента, повинен відповідати id контрагента чеку
name рядок 150 так ні ім'я контрагента
phone рядок 25 ні ні контактний номер телефону контрагента
address рядок 200 ні ні Адреса контрагента

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

Для управління ресурсом /contractors/ підтримуються наступні команди:

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

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

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

Суфікси:
  • .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/contractors/.json/?search=unknown-string

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

Приклад колекції з 2-х елементів: GET http://api.datawiz.io/api/v1/contractors/?format=api&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/contractors/2/", "contractor_id": "contractor-2", "name": "Petro", "phone": "9379992", "address": "" }, { "url": "https://api.datawiz.io/api/v1/contractors/1/", "contractor_id": "contractor-1", "name": "Vasya", "phone": "2353232", "address": "" } ] }

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

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

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

{ "detail": "Not found" }

23.2.2 POST /contractors/ - додати інформацію по контрагентах

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

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

    У запиті передається JSON-об'єкт типу словник (dictionary), який описує інформацію про контрагентів. Важливі поля: contractor_id, name. Послідовність полів не принципова.

    Приклад запиту на завантаження інформації про контрагента: POST http://api.datawiz.io/api/v1/contractors/.json

{
    "contractor_id": "contractor-1",
    "name": "Vasya",
    "phone": null,
    "address": null

}

Відповідь сервера:

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

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

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

{ "updated": 0, "inserted": 1 }

Умови та обмеження (Constraints):
  • Якщо об'єкт з ідентифікатором contractor_id вже існує на сервері, то вказаний запит замінить об'єкт на сервері (replace) без попередження.
Повідомлення про помилку:

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

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

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

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

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

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

OPTIONS /api/v1/contractors/

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

{ "name": "Contractor List", "description": "", "renders": [ "application/json", "text/html" ], "parses": [ "application/json", "application/x-www-form-urlencoded", "multipart/form-data" ], "actions": { "POST": { "url": { "type": "string", "required": false, "read_only": true, "label": "Url" }, "contractor_id": { "type": "string", "required": true, "read_only": false, "label": "Contractor id" }, "name": { "type": "string", "required": true, "read_only": false, "label": "Name", "max_length": 200 }, "phone": { "type": "string", "required": false, "read_only": false, "label": "Phone", "max_length": 25 }, "address": { "type": "string", "required": false, "read_only": false, "label": "Address", "max_length": 200 } } } }

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