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
}
}
}
}