Workbook Что нужно знать для начала работы с JSON API Ограничения
JSON API доступен пользователям на всех тарифах, но на бесплатных тарифах доступен не весь функционал.
Ограничения подробно описаны в соответствующей статье
Оптимизация количества запросов к JSON API
Частой проблемой исчерпания лимитов по запросам является ненастроенная интеграция.
В данном разделе приведены основные ошибки при работе с JSON API, а также описаны варианты их решения.
Проблема повторяющихся запросов
Часто бывает, что за небольшой промежуток времени приходит много дублирующихся запросов. Это может быть связано с:
наличием нескольких экземпляров одного и того же приложения, каждое из которых не знает о работе соседнего
плохо настроенными повторами запросов:
запрос повторяется не получив ответа от предыдущего запроса. К примеру на ответ отводится 5 секунд, а затем идет повторная отправка. Стоит учитывать, что ответ может прийти спустя 300 секунд в зависимости от сложности запроса.
запрос повторяется получив ошибку, которая не должна приводить к повторному запросу. Например, ошибки с кодом ответа 4хх не должны приводить к повторной отправке запроса.
отсутствием кэширования вложенных объектов при получении списка сущностей
Проблема избыточных запросов
Одной из основных проблем в интеграции может быть использование нескольких запросов в сценариях, когда можно получить нужные данные одним запросом.
Например:
обновление объекта по частям, а не целиком
игнорирование expand , async и webhook там, где это нужно:
expand помогает сократить количество запросов, если нужно получить вложенные сущности
async позволяет получить список всех объектов без необходимости перебирать их, используя пагинацию
webhook позволит точечно обновлять состояние сущности и проводить "актуализацию данных" реже
Настройка переиспользования соединений
При большом количестве запросов открытие TCP соединения на каждый приводит к бану.
Чтобы этого избежать, рекомендуется настроить переиспользование соединений (HTTP keep-alive/HTTP persistent connection).
При установлении соединения напрямую с МоимСкладом настройка keep-alive производится в библиотеке для http-запросов. При использовании proxy-сервера настройка выполняется на его стороне.
Увеличьте количество и время неактивности TCP соединений. Однако не рекомендуется использовать TCP соединения, неактивные более 30 секунд или делать более 100 запросов через одно соединение: это может приводить к 500м ошибкам.
Чтобы начать нужны
Аккаунт МоегоСклада
HTTP-клиент, например Postman, curl
Первый запрос
Для запросов JSON API используются логин и пароль аккаунта МоегоСклада (Basic Auth) или токен для Аутентификации в json api .
Создадим первый товар. Для этого нужно только его наименование.
Запрос на создание товара c логином и паролем
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-d '{"name":"Просто замечательный товар"}'
Запрос на создание товара c токеном
Показать Свернуть
curl -X POST
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-d '{"name":"Просто замечательный товар"}'
login:password
- логин и пароль от МоегоСклада
Authorization: Bearer
- токен для Аутентификации в json api
Content-Type: application/json
- JSON API работает только с json
Lognex-Pretty-Print-JSON: true
- заголовок, включающий вывод форматированного json
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Теперь его можно увидеть в списке товаров:
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
]
}
В начале каждого из ответов eсть поле meta, представляющее метаданные. В JSON API метаданные бывают нескольких видов.
У товара метаданные объекта - информация о конкретном объекте (ссылка на объект, тип):
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
}
}
При запросе списка товаров - метаданные коллекции - информация о списке объектов (размер списка, количество полученных объектов, смещение):
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 25 ,
"offset" : 0
}
}
Еще один вид метаданных - метаданные сущности - информация, относящаяся не к конкретному объекту, а ко всем объектам определенного типа, например списки дополнительных атрибутов, статусов
Запрос метаданных товаров:
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata"
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"mediaType" : "application/json"
},
"attributes" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"createShared" : true
}
Обработка ошибок
При создании товара обязательно указывать наименование, если этого не сделать, вернется ошибка.
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-d '{}'
Ответ:
Показать Свернуть
{
"errors" : [
{
"error" : "Ошибка сохранения объекта: поле 'name' не может быть пустым или отсутствовать" ,
"code" : 3000 ,
"parameter" : "name" ,
"moreInfo" : "https://api.moysklad.ru/api/remap/1.2/doc#обработка-ошибок-3000" ,
"line" : 1 ,
"column" : 2
}
]
}
Ошибки возвращаются в виде массива errors, содержащего объекты error, каждый из которых описывает отдельную ошибку.
Подробнее о структуре и видах ошибок в документации .
Методы HTTP (GET, POST, PUT, DELETE)
В JSON API различным методам HTTP соответствуют различные действия:
GET - получение информации
POST - создание новых объектов, также используется для массового создания, обновления и удаления объектов
PUT - изменение существующих объектов
DELETE - удаление объектов
GET - запрос списка товаров
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
]
}
POST - создание товара
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-d '{"name":"Просто замечательный товар"}'
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Метаданные товара содержат ссылку на этот товар ("href":"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002") - ее можно использовать для запроса конкретно этого товара.
GET - запрос конкретного товара
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Либо для изменения этого товара:
PUT - изменение товара
Показать Свернуть
curl -X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
-d '{"name":"Новое наименование"}'
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Новое наименование" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
А также для удаления товара:
DELETE - удаление товара
Показать Свернуть
curl -X DELETE
-u login:password
-H "Accept-Encoding: gzip"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
При успешном удалении возвращается пустой ответ с кодом 200, иначе ошибка с кодом 404.
Если нужно удалить больше чем один товар, то можно воспользоваться массовым удалением. Для этого нужно послать post
запрос,
в теле которого указать meta
удаляемых сущностей. Результатом успешного удаления будет сообщение об успешном удалении сущностей.
Пример массового удаления Товаров
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product/delete"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '[
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/7944ef04-f831-11e5-7a69-971500188b1",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
}
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/7944ef04-f831-11e5-7a69-971500188b2",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
}
}
]'
Успешный запрос. Результат - JSON информация об удалении Товаров.
Показать Свернуть
[
{
"info" : "Сущность 'product' с UUID: 7944ef04-f831-11e5-7a69-971500188b1 успешно удалена"
},
{
"info" : "Сущность 'product' с UUID: 7944ef04-f831-11e5-7a69-971500188b2 успешно удалена"
}
]
Пустые поля
У товаров есть необязательное поле country (страна). Создавая товар мы его не заполнили, поэтому в выдаче этого товара оно отсутствует:
Заполним страну у товара. Поля, которые являются объектами, нужно передавать в виде метаданных
При обновлении объектов не обязательно передавать все поля. При указании части полей будут изменены только переданные поля.
Показать Свернуть
curl -X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
-d { "country" : null}
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Новое наименование" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Чтобы удалить значение из поля типа объект, в запросе на обновление сущности нужно передать в данном поле null. Это возможно, если поле не является обязательным, или же если данное поле в основном интерфейсе может содержать пустое значение. Например, удалим у товара страну
Запрос на неверное обновление
Показать Свернуть
curl -X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
-d '{"name": null}'
Ответ:
Показать Свернуть
{
"errors" : [
{
"error" : "Ошибка формата: значение поля 'name' не соответствует типу строка" ,
"code" : 2016 ,
"moreInfo" : "https://api.moysklad.ru/api/remap/1.2/doc#обработка-ошибок-2016" ,
"line" : 1 ,
"column" : 2
}
]
}
В JSON API поля типа дата-время (момент времени) - это строка в формате:
Без миллисекунд: ГГГГ-ММ-ДД ЧЧ:мм:сс
С миллисекундами: ГГГГ-ММ-ДД ЧЧ:мм:сс.ммм
В параметрах фильтрации нужно указывать поля типа дата-время именно в этом формате.
Пример запроса с полем updated в товарах
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
-H "X-Lognex-Format-Millisecond: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002"
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Новое наименование" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Разделение на entity, report и context
Большинство методов JSON API разделены на три больших раздела - entity, report и context.
entity - работа с сущностями. Получение, создание, обновление, удаление.
report - отчеты. Получение различных сводных данных, которые вычисляются на основе существующих документов.
context - настройки. Изменения различных настроек пользователя, компании и т.д.
Все рассмотренные выше методы относятся к entity - работа с сущностями типа product (товар). Возможности фильтрации и сортировки определяются
структурой полей конкретного типа. Каждая сущность имеет уникальный id, и существуют методы по работе с отдельными объектами.
Структура отчетов, а также возможности фильтрации специфичны для каждого отдельного отчета.
Отчеты представляют собой определенный срез информации на основе совокупности документов. Для примера рассмотрим отчет остатков товаров
на складе. Мы создали один товар и не создавали никаких документов, поэтому количество этого товара равно нулю. По умолчанию ненулевые
остатки в этом отчете скрыты. Для того, чтобы они отобразились в запросе, использован параметр stockMode со значением all.
Запрос отчетов
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/report/stock/all?stockMode=all"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/report/stock/all?stockMode=all" ,
"type" : "stock" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002?expand=supplier" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
},
"stock" : 1.0 ,
"inTransit" : 0.0 ,
"reserve" : 0.0 ,
"quantity" : 1.0 ,
"name" : "чудо товар" ,
"code" : "00001" ,
"price" : 10000.0 ,
"salePrice" : 0.0 ,
"uom" : {},
"externalCode" : "XwJmEyYOhI-Gx9HOtBxih2" ,
"stockDays" : 0.0
}
]
}
Фильтрация, листание, поиск и сортировка Фильтрация
Для фильтрации выборки по нескольким полям используется url параметр filter. Значение этого параметра - urlencoded строка с поисковыми
условиями, перечисленными через ';'. Каждое поисковое условие - это сочетание названия поля, оператора и константы.
Фильтрация недоступна для полей-массивов (например поле barcodes ).Фильтрация товаров по имени и
времени обновления "filter=name=Новое наименование;filter=updated>2018-01-01 00:00:00"
Запрос
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product?filter=name=Просто замечательный товар;updated>2018-01-01 00:00:00"
Ответ:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=6b3fd459-b0ac-11ea-ac14-000a00000000"
},
"id" : "6b44332f-b0ac-11ea-ac14-000a00000002" ,
"accountId" : "17e26927-b0ac-11ea-ac14-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/19113b38-b0ac-11ea-ac14-000c00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=19113b38-b0ac-11ea-ac14-000c00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/17e5e244-b0ac-11ea-ac14-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-17 18:08:32.000" ,
"name" : "Просто замечательный товар" ,
"code" : "00001" ,
"externalCode" : "hNDALaQDh6E96GubbHybr0" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6b44332f-b0ac-11ea-ac14-000a00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1a1d768e-b0ac-11ea-ac14-000c00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/199e466a-b0ac-11ea-ac14-000c00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=199e466a-b0ac-11ea-ac14-000c00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Листание
Большинство списков и отчетов поддерживают листание. За него отвечают два параметра:
offset — смещение от первого элемента (считается с нуля);
limit — количество элементов на странице (по умолчанию 1000, максимум 1000).
Если при запросе списка, возвращаются не все элементы, в метаданных коллекции присутствуют специальные поля: previousHref и nextHref , представляющие запросы предыдущей и следующей страниц данных.
Рассмотрим на примере запроса стран.
Запрос
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/country"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"size" : 252 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [ ... ]
}
Запрос с limit и offset
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/country/?limit=25&offset=25"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country?limit=25&offset=25" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"size" : 252 ,
"limit" : 25 ,
"offset" : 25 ,
"nextHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country?offset=50&limit=25" ,
"previousHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country?offset=0&limit=25"
},
"rows" : [ ... ]
}
Поиск
В JSON API можно осуществлять контекстный поиск среди списка сущностей определённого типа по их строковым полям.
Проверка уникальна для каждой сущности. Поиск работает по префиксам слов. Для этого используется url параметр поиска search
Результатом поиска будет отсортированный по релевантности список сущностей данного типа, прошедших
фильтрацию по переданной поисковой строке. В отличии от фильтрации выборки с помощью параметра filter, при которой значения
проверяются на точное совпадение, при контекстном поиске проверка на совпадение не строгая.
Контекстный поиск стран "search=мари"
Запрос
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/country?search=Рос"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country?search=%D0%A0%D0%BE%D1%81" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country/9df7c2c3-7782-4c5c-a8ed-1102af611608" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country/metadata" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#country/edit?id=9df7c2c3-7782-4c5c-a8ed-1102af611608"
},
"id" : "9df7c2c3-7782-4c5c-a8ed-1102af611608" ,
"updated" : "2012-11-02 12:04:14.054" ,
"name" : "Россия" ,
"description" : "Российская Федерация" ,
"code" : "643" ,
"externalCode" : "643"
}
]
}
Сортировка
Для сортировки списка объектов используется url параметр order. Значение этого параметра - urlencoded строка с условиями сортировки, перечисленными через ';'. Каждое условие сортировки - это сочетание названия поля, запятой (опционально, если указывается направление сортировки), направления сортировки (опционально: может принимать значения asc и desc. Значение по умолчанию - asc).
Сортировка поддерживается для следующих типов полей: числовой, строковый, дата-время, логический и uuid.
Запрос
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/country/?order=name,desc;updated"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country?order=name,desc;updated" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"size" : 252 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country/00999522-23d6-40e6-870e-ec7f7bd8d354" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country/metadata" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#country/edit?id=00999522-23d6-40e6-870e-ec7f7bd8d354"
},
"id" : "00999522-23d6-40e6-870e-ec7f7bd8d354" ,
"updated" : "2012-11-02 12:04:15.831" ,
"name" : "Япония" ,
"code" : "392" ,
"externalCode" : "392"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country/886b465f-5bb0-4c6a-9b63-9abaf5157a26" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country/metadata" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#country/edit?id=886b465f-5bb0-4c6a-9b63-9abaf5157a26"
},
"id" : "886b465f-5bb0-4c6a-9b63-9abaf5157a26" ,
"updated" : "2012-11-02 12:04:15.826" ,
"name" : "Ямайка" ,
"code" : "388" ,
"externalCode" : "388"
},
...
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/country/9756f8c8-84d3-46d1-9439-b4e950cff419" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/country/metadata" ,
"type" : "country" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#country/edit?id=9756f8c8-84d3-46d1-9439-b4e950cff419"
},
"id" : "9756f8c8-84d3-46d1-9439-b4e950cff419" ,
"updated" : "2012-11-02 12:04:12.241" ,
"name" : "Абхазия" ,
"description" : "Республика Абхазия" ,
"code" : "895" ,
"externalCode" : "895"
}
]
}
Что такое expand
В JSON API в составе сущностей поля, которые являются объектами, выводятся в виде метаданных. Для того, чтобы вместо ссылок получить сами
связанные объекты, не обязательно делать отдельные запросы для каждого из них. Вместо этого, вместе с запросом на получение сущности, нужно
передать параметр expand. В качестве значения данного параметра нужно перечислить через запятую все необходимые поля, на месте которых вы бы
хотели видеть объекты.
На expand действуют следующие правила:
Expand разрешен только на размере выборки не более 100, пример: https://api.moysklad.ru/api/remap/1.2/entity/customerorder?expand=positions&limit=100
. Если указан больший лимит и указан expand, то параметр expand будет игнорироваться.
Максимальный уровень вложенности expand : 3
Также expand можно применять для результатов операций создания и обновления
Например, у товара есть поле owner (ссылка на Сотрудника), а у сотрудника есть поле group (отдел сотрудника). Запросим товар, чтобы у него
был развернут owner, а у owner был развернут group.
Пример запроса на получение с expand
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002?expand=owner.group"
Response 200 (application/json)
Успешный запрос. Результат - JSON представление Товара с развернутым объектом owner и развернутым объектом group для каждого объекта owner.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002?expand=owner,owner.group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
},
"id" : "0884d27a-b0e3-11ea-ac12-000b00000002" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034?expand=group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
},
"id" : "d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
},
"name" : "Основной"
},
"updated" : "2020-06-18 00:38:13.655" ,
"name" : "123" ,
"externalCode" : "bCdnwOjliLRTxAp8277Xm1" ,
"archived" : false ,
"created" : "2020-06-18 00:38:13.655" ,
"uid" : "admin@123" ,
"email" : "123@123.ru" ,
"lastName" : "123" ,
"fullName" : "123" ,
"shortFio" : "123" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/d9ba0e32-b0e2-11ea-ac12-000d00000086/cashiers/d9ba22fe-b0e2-11ea-ac12-000d00000087" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 00:39:33.163" ,
"name" : "чудо товар" ,
"code" : "00001" ,
"externalCode" : "XwJmEyYOhI-Gx9HOtBxih2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/d97f0826-b0e2-11ea-ac12-000d00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "d97f0826-b0e2-11ea-ac12-000d00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Пример запроса на обновление с expand
Показать Свернуть
curl -X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002?expand=owner.group"
-d '{"name":"Новое наименование"}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление обновленного Товара с раскрытыми объектами owner и group.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002?expand=owner,owner.group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
},
"id" : "0884d27a-b0e3-11ea-ac12-000b00000002" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034?expand=group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
},
"id" : "d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
},
"name" : "Основной"
},
"updated" : "2020-06-18 00:38:13.655" ,
"name" : "123" ,
"externalCode" : "bCdnwOjliLRTxAp8277Xm1" ,
"archived" : false ,
"created" : "2020-06-18 00:38:13.655" ,
"uid" : "admin@123" ,
"email" : "123@123.ru" ,
"lastName" : "123" ,
"fullName" : "123" ,
"shortFio" : "123" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/d9ba0e32-b0e2-11ea-ac12-000d00000086/cashiers/d9ba22fe-b0e2-11ea-ac12-000d00000087" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 00:39:33.163" ,
"name" : "Новое наименование" ,
"code" : "00001" ,
"externalCode" : "XwJmEyYOhI-Gx9HOtBxih2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/d97f0826-b0e2-11ea-ac12-000d00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "d97f0826-b0e2-11ea-ac12-000d00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Пример запроса на получение с expand множества товаров
Показать Свернуть
curl -X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product?limit=100&expand=owner.group"
Response 200 (application/json)
Успешный запрос. Результат - JSON представление Товаров с раскрытыми объектами owner и group.
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product?limit=100&expand=owner,owner.group" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"size" : 156 ,
"limit" : 100 ,
"offset" : 0 ,
"nextHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product?expand=owner%2Cowner.group&limit=100&offset=100"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/2d593ccc-c42e-11ee-ac1b-000e0000010c?expand=owner,owner.group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#good/edit?id=2d5756c9-c42e-11ee-ac1b-000e0000010a"
},
"id" : "2d593ccc-c42e-11ee-ac1b-000e0000010c" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e?expand=group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
},
"id" : "09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
},
"id" : "0815b439-c42e-11ee-ac1b-000d00000002" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"name" : "Основной" ,
"index" : 0
},
"updated" : "2024-02-05 16:54:10.449" ,
"name" : "Администратор" ,
"externalCode" : "SUOW9s68hP6PLywyoQ0NZ1" ,
"archived" : false ,
"created" : "2024-02-05 16:54:10.449" ,
"uid" : "admin@test" ,
"email" : "test@test.ru" ,
"lastName" : "Администратор" ,
"fullName" : "Администратор" ,
"shortFio" : "Администратор" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/0a95b483-c42e-11ee-ac1b-000e000000af/cashiers/0a95d547-c42e-11ee-ac1b-000e000000b0" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2024-02-05 16:55:10.253" ,
"name" : "товар" ,
"code" : "00001" ,
"externalCode" : "gSE0bU52hre8DeweVoba50" ,
"archived" : false ,
"pathName" : "" ,
"useParentVat" : true ,
"uom" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/19f1edc0-fc42-4001-94cb-c9ec9c62ec10" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/metadata" ,
"type" : "uom" ,
"mediaType" : "application/json"
}
},
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/2d593ccc-c42e-11ee-ac1b-000e0000010c/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED" ,
"files" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/2d593ccc-c42e-11ee-ac1b-000e0000010c/files" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/372e30d3-c42e-11ee-ac1b-000e00000113?expand=owner,owner.group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#good/edit?id=372e1b39-c42e-11ee-ac1b-000e00000111"
},
"id" : "372e30d3-c42e-11ee-ac1b-000e00000113" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e?expand=group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
},
"id" : "09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
},
"id" : "0815b439-c42e-11ee-ac1b-000d00000002" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"name" : "Основной" ,
"index" : 0
},
"updated" : "2024-02-05 16:54:10.449" ,
"name" : "Администратор" ,
"externalCode" : "SUOW9s68hP6PLywyoQ0NZ1" ,
"archived" : false ,
"created" : "2024-02-05 16:54:10.449" ,
"uid" : "admin@test" ,
"email" : "test@test.ru" ,
"lastName" : "Администратор" ,
"fullName" : "Администратор" ,
"shortFio" : "Администратор" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/0a95b483-c42e-11ee-ac1b-000e000000af/cashiers/0a95d547-c42e-11ee-ac1b-000e000000b0" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2024-02-20 08:54:29.936" ,
"name" : "материал" ,
"code" : "00002" ,
"externalCode" : "9gDTKYyXikO3IhAArG4sL0" ,
"archived" : false ,
"pathName" : "" ,
"useParentVat" : true ,
"uom" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/19f1edc0-fc42-4001-94cb-c9ec9c62ec10" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/metadata" ,
"type" : "uom" ,
"mediaType" : "application/json"
}
},
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/372e30d3-c42e-11ee-ac1b-000e00000113/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000022"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED" ,
"files" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/372e30d3-c42e-11ee-ac1b-000e00000113/files" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
}
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6c4f3e66-e14d-11ee-ac1b-000f00000235?expand=owner,owner.group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#good/edit?id=6c4f2dcc-e14d-11ee-ac1b-000f00000233"
},
"id" : "6c4f3e66-e14d-11ee-ac1b-000f00000235" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e?expand=group" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
},
"id" : "09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/09a8ad82-c42e-11ee-ac1b-000e0000004e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#employee/edit?id=09a8ad82-c42e-11ee-ac1b-000e0000004e"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
},
"id" : "0815b439-c42e-11ee-ac1b-000d00000002" ,
"accountId" : "081311c2-c42e-11ee-ac1b-000d00000001" ,
"name" : "Основной" ,
"index" : 0
},
"updated" : "2024-02-05 16:54:10.449" ,
"name" : "Администратор" ,
"externalCode" : "SUOW9s68hP6PLywyoQ0NZ1" ,
"archived" : false ,
"created" : "2024-02-05 16:54:10.449" ,
"uid" : "admin@test" ,
"email" : "test@test.ru" ,
"lastName" : "Администратор" ,
"fullName" : "Администратор" ,
"shortFio" : "Администратор" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/0a95b483-c42e-11ee-ac1b-000e000000af/cashiers/0a95d547-c42e-11ee-ac1b-000e000000b0" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0815b439-c42e-11ee-ac1b-000d00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2024-03-13 18:21:54.071" ,
"name" : "123 (2) (3) (3) (3)" ,
"code" : "00105" ,
"externalCode" : "YOOuUeNqjRQ0yVCsK9Yys0" ,
"archived" : false ,
"pathName" : "" ,
"useParentVat" : true ,
"uom" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/19f1edc0-fc42-4001-94cb-c9ec9c62ec10" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/metadata" ,
"type" : "uom" ,
"mediaType" : "application/json"
}
},
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6c4f3e66-e14d-11ee-ac1b-000f00000235/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "0a618fd0-c42e-11ee-ac1b-000e0000009e" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/0a1b4b87-c42e-11ee-ac1b-000e0000009d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://api.moysklad.ru/app/#currency/edit?id=0a1b4b87-c42e-11ee-ac1b-000e0000009d"
}
}
},
"barcodes" : [
{
"ean13" : "2000000001135"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED" ,
"files" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/6c4f3e66-e14d-11ee-ac1b-000f00000235/files" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
}
}
]
}
Больше примеров и информации можно найти в разделе замена ссылок объектами с помощью expand.
Вебхуки
Механизм вебхуков в МоемСкладе представляет собой мощный и легкий в использовании инструмент для отслеживания изменений в вашем аккаунте.
Мы советуем использовать вебхуки, чтобы контролировать взаимодействие МоегоСклада с вашим интернет-магазином или приложением в реальном времени, и вы могли
избавиться от периодических запросов изменений.
Что такое вебхук?
Вебхук - это механизм отправки уведомлений при наступлении в системе события, на которое подписано клиентское приложение.
Под событием понимается изменение состояния системы. Например, событиями являются: создание нового товара, изменение полей
у контрагента, удаление заказа покупателя. Уведомлением будет запрос метода POST, который будет содержать следующую
информацию о наступившем событии: его тип и ссылку на изменившийся объект. Например, при изменении наименования товара,
будет отправлено уведомление, которое будет содержать ссылку на измененный товар.
Непосредственно сам вебхук содержит описание изменения (тип объекта и ссылку на изменившийся объект), которое отправляется на указанный url.
Пример тела запроса вебхука:
Показать Свернуть
{
"url" : "http://www.example.com" ,
"action" : "CREATE" ,
"entityType" : "supply"
}
В чем разница между АПИ и вебхуками
Есть 2 подхода для получения сведений об изменениях в системе: опрос через АПИ (polling) и подписка на вебхуки.
Опрос через АПИ предполагает циклические запросы, чтобы получить изменения. Подписка на вебхуки предполагает получение уведомления об изменении
в системе.
Можно провести следующую аналогию. Предположим вы заказали товар, но его не оказалось в наличии, поэтому вы каждый день звоните в магазин,
чтобы узнать о появлении товара, это похоже на опрос через АПИ. Но вы можете просто попросить менеджера в магазине позвонить вам по указанному
номеру телефона, когда товар появится, это подписка на вебхуки.
Очевидно, что подписка на вебхуки эффективнее и проще, так как гарантируется оперативное получение изменений в системе и меньшая нагрузка на
клиентское приложение.
Когда нужно использовать АПИ, а когда вебхук
Несмотря на преимущество использования вебхуков, важно понимать, что подписка на вебхуки это всего лишь форма уведомления об изменениях в системе.
Действия с сущностями (CRUD) необходимо выполнять с помощью АПИ.
Возможные сценарии, когда подписка на вебхуки выглядит предпочтительнее опросов через JSON API:
создание заказов покупателей и изменение их статусов
изменение цены товара
обновление номера телефона контрагента
Как использовать вебхуки через JSON API Вебхуки в JSON API
Работа с вебхуками в МоемСкладе возможна только через JSON API. Методы работы с вебхуками позволяют создать, удалить, обновить, получить и
отключить вебхуки.
Ключевыми признаками вебхука являются адрес отправки (url), тип сущности (entityType) и тип события (action). Пара признаков (entityType и action)
должна быть уникальной, т.е. не может повторяться в других вебхуках.
Существуют следующие типы событий (action):
Данные типы событий могут быть применимы ко всем типам сущностей (базовые сущности и документы). Обратите внимание, что отчеты и аудит не являются
сущностями.
Рассмотрим методы работы с вебхуками.
Для создания вебхука достаточно указать url, entityType и action, как в примере ниже
Запрос
Показать Свернуть
curl -X POST
https://api.moysklad.ru/api/remap/1.2/entity/webhook
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
-d '{
"url": "http://www.example.com",
"action": "CREATE",
"entityType": "service"
}'
В ответ должен придти json, содержащий описание вебхука
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "a5b3cd1f-caee-11e8-9ff4-34e80022dcb3" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"entityType" : "service" ,
"url" : "http://www.example.com" ,
"method" : "POST" ,
"enabled" : true ,
"action" : "CREATE"
}
Как и в других запросах сущностей JSON API другие действия над вебхуками возможны только при указании идентификатора.
В полученном json поле id. Пример получения вебхука по идентификатору.
Запрос
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
У вебхука можно изменить поля, указанные при создании, а также включить/отключить его. Для этого выполняется PUT запрос с указанием идентификатора.
Пример запроса с изменением события
Запрос
Показать Свернуть
curl -X PUT
https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
-d '{
"action": "UPDATE"
}'
Пример запроса с отключением вебхука.
Показать Свернуть
curl -X PUT
https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
-d '{
"enabled": false
}'
Удаление вебхука выполняется по аналогии, но только используется метод DELETE.
Показать Свернуть
curl -X DELETE
https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
Получить все вебхуки можно с помощью типичного GET запроса.
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/webhook
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
В ответ придет коллекция вебхуков.
Показать Свернуть
{
"context" :{
"employee" :{
"meta" :{
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" :{
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook" ,
"type" : "webhook" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 25 ,
"offset" : 0
},
"rows" :[
{
"meta" :{
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/a5b3cd1f-caee-11e8-9ff4-34e80022dcb3" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "a5b3cd1f-caee-11e8-9ff4-34e80022dcb3" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"entityType" : "service" ,
"url" : "http://www.example.com" ,
"method" : "POST" ,
"enabled" : true ,
"action" : "CREATE"
}
]
}
Ограничения при работе с вебхуками
При работе с вебхуками есть ряд важных замечаний:
вебхуки доступны только на платном тарифе
работа с вебхуками доступна только администратору аккаунта
работа с вебхуками возможна только через JSON API
Условия автоматического отлключения вебхуков описаны в статье Ограничения
Отправка вебхука в клиентское приложение
МойСклад отправляет вебхук в клиентское приложение с помощью метода POST, указывая заголовок User-Agent со значением MoySklad webhook touch agent
2.0 (/https://www.moysklad.ru) . МойСклад добавляет к указанному адресу отправки (url) параметр запроса requestId - идентификатор уведомления.
При отправке уведомления вебхука, МойСклад ожидает ответ от клиентского приложения со статусом 200 или 204 в течение 1500 миллисекунд, чтобы считать
уведомление доставленным. При невалидном ответе от клиентского приложения наша система осуществляет еще 3 попытки отправки.
Данные попытки осуществляются последовательно, без таймаутов между ними. Если все попытки закончились неудачно или истекло время ожидания ответа -
данное уведомление считается неотправленным и в дальнейшем удаляется, в клиентское приложение оно отправлено не будет,
т.к. проблема на стороне клиентского приложения. Чтобы избежать неудачи при отправке уведомления из-за истечения времени ожидания ответа сервером и повторной отправки того же уведомления, рекомендуется разделить прием вебхуков и их обработку. Понять, что уведомление о событии было отправлено повторно, можно по параметру запроса requestId - при повторной отправке уведомления идентификатор останется прежним.
Как проверить, что вебхук работает?
Для проверки работоспособности вебхука удобен сервис https://webhook.site/ . Он создает
уникальный тестовый url, который необходимо указать в вебхуке, и интерактивно показывает входящие запросы, т.е. уведомления вебхуков.
Переходим на сайт
Получаем уникальный url. Необходимо скопировать его, чтобы использовать при создании вебхука.
Запрос на создание вебхука на создание услуги
Показать Свернуть
curl -X POST
https://api.moysklad.ru/api/remap/1.2/entity/webhook
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '{
"url": "https://webhook.site/c314f269-d524-4b1a-bf9e-5c59060b220c",
"action": "CREATE",
"entityType": "service"
}'
3. Создаем вебхук, в примере ниже вебхук на создание услуги
Запрос на создание услуги
Показать Свернуть
curl -X POST
https://api.moysklad.ru/api/remap/1.2/entity/service
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Content-Type: application/json'
-d '{
"name": "Заточка коньков"
}'
4. Создаем услугу в МоемСкладе, в примере ниже создание услуги через JSON API
5. На наш уникальный адрес пришло уведомление!
Одним из ключевых понятий при работе с JSON API является понятие метаданных.
В JSON API существует несколько типов метаданных:
метаданные объекта,
метаданные коллекции,
метаданные сущности.
Под метаданными объекта (конкретный объект в МоемСкладе, например, товар "Мяч футбольный") понимается краткое представление этого самого объекта в
поле meta
.
Метаданные коллекции представляют элемент, описывающий размер коллекции, размер выборки, который вернулся запросом, пагинацию.
Метаданные сущности описывают поля, относящиеся ко всему классу (например, ко всем товарам): статусы, типы цен, доп.поля и т.д.
Рассмотрим перечисленные типы метаданных подробнее.
Возвращаемые JSON API объекты содержат поле meta
, которое, по сути, является ссылкой на объект. Однако, meta
не простое поле, a составной
json-элемент, содержащий краткое описание объекта.
Поле meta
состоит из следующих атрибутов:
href
- ссылка на объект;
metadataHref
- cсылка на метаданные сущности;
downloadHref
- ссылка на скачивание
type
- тип объекта;
mediaType
- тип данных, который приходят в ответ от сервиса, либо отправляется в теле запроса;
uuidHref
- cсылка на объект в веб-версии МоегоСклада. Присутствует не во всех сущностях.
Рассмотрим запрос контрагента ООО "Поставщик"
Запрос
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/counterparty/ab4dd5fc-d100-11e8-ac12-00080000006d
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/d92bcdc1-b0e2-11ea-ac12-000d00000073" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=d92bcdc1-b0e2-11ea-ac12-000d00000073"
},
"id" : "d92bcdc1-b0e2-11ea-ac12-000d00000073" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 00:38:14.083" ,
"name" : "ООО \" Поставщик \" " ,
"externalCode" : "nv4UeR5dhAStZ4X-5-ojn2" ,
"archived" : false ,
"created" : "2020-06-18 00:38:14.083" ,
"companyType" : "legal" ,
"legalTitle" : "Общество с ограниченной ответственностью \" Поставщик \" " ,
"legalAddress" : "г.Москва, ул.Строителей, д.12" ,
"legalAddressFull" : {
"addInfo" : "г.Москва, ул.Строителей, д.12"
},
"inn" : "7736570901" ,
"kpp" : "773601001" ,
"accounts" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/d92bcdc1-b0e2-11ea-ac12-000d00000073/accounts" ,
"type" : "account" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"tags" : [],
"contactpersons" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/d92bcdc1-b0e2-11ea-ac12-000d00000073/contactpersons" ,
"type" : "contactperson" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"notes" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/d92bcdc1-b0e2-11ea-ac12-000d00000073/notes" ,
"type" : "note" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"salesAmount" : 0.0
}
В ответе содержится несколько полей meta
.
Вначале описывается сам объект, с указанием типа объекта, ссылки в JSON API и ссылки на веб-версию
Метаданные поставщика
Показать Свернуть
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/d92bcdc1-b0e2-11ea-ac12-000d00000073" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=d92bcdc1-b0e2-11ea-ac12-000d00000073"
}
Ссылки на сотрудника, создавшего контрагента, и отдел сотрудника указаны в полях owner
и group
, и содержат также поля meta
.
Метаданные сотрудника и его отдела
Показать Свернуть
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
}
Очевидно, что поля href
и uuidHref
содержат url для доступа к объектам и могут быть использованы для запроса.
Например, используя значение поля href
, запросим данные сотрудника
Запрос
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/employee/ab306d83-d100-11e8-ac12-000800000042
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
},
"id" : "d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 00:38:13.655" ,
"name" : "123" ,
"externalCode" : "bCdnwOjliLRTxAp8277Xm1" ,
"archived" : false ,
"created" : "2020-06-18 00:38:13.655" ,
"uid" : "admin@123" ,
"email" : "123@123.ru" ,
"lastName" : "123" ,
"fullName" : "123" ,
"shortFio" : "123" ,
"cashiers" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/retailstore/d9ba0e32-b0e2-11ea-ac12-000d00000086/cashiers/d9ba22fe-b0e2-11ea-ac12-000d00000087" ,
"type" : "cashier" ,
"mediaType" : "application/json"
}
}
]
}
Аналогично и для значения из поля uuidHref
можно открыть объект в веб-версии.
meta
используется в качестве ссылки на другой объект, рассмотрим на примерах.
Имея метаданные товара
json
"meta":{
"href":"https://api.moysklad.ru/api/remap/1.2/entity/product/3b336cc5-d10a-11e8-ac12-000b00000021",
"metadataHref":"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type":"product",
"mediaType":"application/json",
"uuidHref":"https://online.moysklad.ru/app/#good/edit?id=3b335997-d10a-11e8-ac12-000b0000001f"
}
Выполним запрос на создание комплекта, указав товар в компонентах
Запрос
Показать Свернуть
curl -X POST
'https://api.moysklad.ru/api/remap/1.2/entity/bundle?expand=components'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '{
"name":"Набор карандашей",
"components":[
{
"assortment":{
"meta":{
"href":"https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002",
"metadataHref":"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type":"product",
"mediaType":"application/json",
"uuidHref":"https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
}
},
"quantity":10
}
]
}'
В ответ получим новый комплект, который содержит указанный товар
Результат
Показать Свернуть
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/bundle/e5da18eb-b152-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "bundle" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=e5d864ae-b152-11ea-ac12-000c00000000"
},
"id" : "e5da18eb-b152-11ea-ac12-000c00000002" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 14:00:18.664" ,
"name" : "Набор карандашей" ,
"code" : "00002" ,
"externalCode" : "V1kq3O3YhBcImmYCE7jxf3" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/bundle/e5da18eb-b152-11ea-ac12-000c00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/d97f0826-b0e2-11ea-ac12-000d00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "d97f0826-b0e2-11ea-ac12-000d00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"barcodes" : [
{
"ean13" : "2000000000039"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"trackingType" : "NOT_TRACKED" ,
"components" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/bundle/e5da18eb-b152-11ea-ac12-000c00000002/components" ,
"type" : "bundlecomponent" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
}
}
}
Изменим товар, указав ему единицу измерения. При условии, что у товара еще не указана единица измерения.
Запрос
Показать Свернуть
curl -X PUT
https://api.moysklad.ru/api/remap/1.2/entity/product/3b336cc5-d10a-11e8-ac12-000b00000021
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '{
"uom":{
"meta":{
"href":"https://api.moysklad.ru/api/remap/1.2/entity/uom/061721df-9197-49a5-b637-7f5b4d3be969",
"metadataHref":"https://api.moysklad.ru/api/remap/1.2/entity/uom/metadata",
"type":"uom",
"mediaType":"application/json"
}
}
}'
В ответе видно, что единица измерения, поле uom
, изменилось на переданный объект.
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
},
"id" : "0884d27a-b0e3-11ea-ac12-000b00000002" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 00:39:33.163" ,
"name" : "чудо товар" ,
"code" : "00001" ,
"externalCode" : "XwJmEyYOhI-Gx9HOtBxih2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/d97f0826-b0e2-11ea-ac12-000d00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "d97f0826-b0e2-11ea-ac12-000d00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Для работы с пагинацией у коллекций в JSON API формируется несколько иное поле meta
.
Поле meta
коллекций содержит частично те же атрибуты (href
, type
, mediaType
), что и meta
объектов, и ряд собственных атрибутов:
size
- количество элементов в коллекции,
limit
- максмимальное число элементов в коллекции, возвращаемых за один запрос,
offset
- смещение выборки коллекции от первого элемента.
Например, при запросе вебхуков
Запрос
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/webhook
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
будет следующий ответ
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook" ,
"type" : "webhook" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 25 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/01205b84-072c-11e8-6b01-4b1d0010fff6" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "01205b84-072c-11e8-6b01-4b1d0010fff6" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"entityType" : "product" ,
"url" : "https://webhook.site/40adcf20-83de-4bb0-9072-6a98fe96bc44" ,
"method" : "POST" ,
"enabled" : false ,
"action" : "CREATE"
}
]
}
где видно, что коллекция содержит один элемент, и size
также имеет значение равное 1.
Если значение атрибута size
больше limit
, то дополнительно выводятся атрибуты пагинации:
nextHref
- ссылка на следующую страницу коллекции,
previousHref
- ссылка на предыдущую страницу коллекции.
Добавим новые вебхуки и запросим их, но с лимитом равным 1
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/webhook?limit=1'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook?limit=1" ,
"type" : "webhook" ,
"mediaType" : "application/json" ,
"size" : 3 ,
"limit" : 1 ,
"offset" : 0 ,
"nextHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook?limit=1&offset=1"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/01205b84-072c-11e8-6b01-4b1d0010fff6" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "01205b84-072c-11e8-6b01-4b1d0010fff6" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"entityType" : "product" ,
"url" : "https://webhook.site/40adcf20-83de-4bb0-9072-6a98fe96bc44" ,
"method" : "POST" ,
"enabled" : false ,
"action" : "CREATE"
}
]
}
Применив лимит, была сформирована ссылка пагинации nextHref
на следующую страницу коллекции. Перейдем по ней.
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/webhook?limit=1&offset=1'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook?limit=1&offset=1" ,
"type" : "webhook" ,
"mediaType" : "application/json" ,
"size" : 3 ,
"limit" : 1 ,
"offset" : 1 ,
"nextHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook?offset=2&limit=1" ,
"previousHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook?offset=0&limit=1"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/07598ccd-072c-11e8-7a6c-d2a90010c896" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "07598ccd-072c-11e8-7a6c-d2a90010c896" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"entityType" : "variant" ,
"url" : "https://webhook-convert.ru/ms2s/T053UB0V8/B7WHWQTFF/yiTBjO5xoeuv6pXJOH1TLeBe" ,
"method" : "POST" ,
"enabled" : false ,
"action" : "UPDATE"
}
]
}
Как видим, были сформированы ссылки пагинации, доступные для перехода на следующую и предыдущую страницы коллекции.
Кроме использования поля метаданных в качестве внешней ссылки и представления коллекции, метаданные могут описывать непосредственно сами сущности.
Как правило, это описание вложенных сущностей, коллекций и дополнительных полей.
Чтобы получить метаданные сущности, необходимо использовать ссылку из поля metadataHref
.
Запросим метаданные сущности контрагента из примера выше
Запрос
Показать Свернуть
curl -X GET
https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"mediaType" : "application/json"
},
"attributes" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/attributes" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"states" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/d9ddf453-b0e2-11ea-ac12-000d0000008c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "d9ddf453-b0e2-11ea-ac12-000d0000008c" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"name" : "Новый" ,
"color" : 15106326 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/d9de00ec-b0e2-11ea-ac12-000d0000008d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "d9de00ec-b0e2-11ea-ac12-000d0000008d" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"name" : "Выслано предложение" ,
"color" : 10774205 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/d9de03fc-b0e2-11ea-ac12-000d0000008e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "d9de03fc-b0e2-11ea-ac12-000d0000008e" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"name" : "Переговоры" ,
"color" : 40931 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/d9de06e1-b0e2-11ea-ac12-000d0000008f" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "d9de06e1-b0e2-11ea-ac12-000d0000008f" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"name" : "Сделка заключена" ,
"color" : 8825440 ,
"stateType" : "Successful" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/d9de09b0-b0e2-11ea-ac12-000d00000090" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "d9de09b0-b0e2-11ea-ac12-000d00000090" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"name" : "Сделка не заключена" ,
"color" : 15280409 ,
"stateType" : "Unsuccessful" ,
"entityType" : "counterparty"
}
],
"createShared" : false
}
В данном примере по запросу вернулись значения доп.полей, статусов и групп контрагентов.
Подробнее о ресурсе метаданных сущностей можно узнать в документации .
Листание
Если у вас несколько документов
одного типа, то при запросе:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/{document type}"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
вы получите не полный список документов (далее коллекция), а только первую 1000 документов.
Так же под коллекцией понимаются позиции конкретного документа, получаемые по запросу позиций документов.
Запрос получения позиций документов
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/{document type}/{id}/positions"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
Параметр limit
Для того, чтобы задать количество документов в коллекции необходимо использовать параметр limit .
Например, если хотите получить первые 10 заказов:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder?limit=10"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
Результат:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?limi=10" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#customerorder/edit?id=51bb185a-b0e7-11ea-ac12-000d0000012a"
},
"id" : "51bb185a-b0e7-11ea-ac12-000d0000012a" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 01:10:14.316" ,
"name" : "00002" ,
"externalCode" : "TtlxUk20gsnwJDN4ikkc03" ,
"moment" : "2020-06-18 01:10:00.000" ,
"applicable" : true ,
"rate" : {
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"sum" : 10000.0 ,
"store" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/d92b8a46-b0e2-11ea-ac12-000d00000072" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#warehouse/edit?id=d92b8a46-b0e2-11ea-ac12-000d00000072"
}
},
"agent" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/d9253a1b-b0e2-11ea-ac12-000d00000070" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=d9253a1b-b0e2-11ea-ac12-000d00000070"
}
},
"organization" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/d9253a1b-b0e2-11ea-ac12-000d00000070" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=d9253a1b-b0e2-11ea-ac12-000d00000070"
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/states/d9e51641-b0e2-11ea-ac12-000d00000092" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"created" : "2020-06-18 01:10:14.337" ,
"positions" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
}
},
"vatEnabled" : true ,
"vatIncluded" : true ,
"vatSum" : 0.0 ,
"payedSum" : 10000.0 ,
"shippedSum" : 0.0 ,
"invoicedSum" : 0.0 ,
"reservedSum" : 0.0 ,
"payments" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/paymentin/58ba7a7f-b0e7-11ea-ac12-000d00000131" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/paymentin/metadata" ,
"type" : "paymentin" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#paymentin/edit?id=58ba7a7f-b0e7-11ea-ac12-000d00000131"
},
"linkedSum" : 10000.0
}
]
}
]
}
Если хотите получить первые 10 позиций конкретного заказа:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions?limit=10"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
Результат:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions?limi=10" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions/51bb23d8-b0e7-11ea-ac12-000d0000012b" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json"
},
"id" : "51bb23d8-b0e7-11ea-ac12-000d0000012b" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"quantity" : 1.0 ,
"price" : 10000.0 ,
"discount" : 0.0 ,
"vat" : 0 ,
"assortment" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/0884d27a-b0e3-11ea-ac12-000b00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=088303a8-b0e3-11ea-ac12-000b00000000"
}
},
"shipped" : 0.0 ,
"reserve" : 0.0
}
]
}
Параметр offset
Для того, чтобы пропустить вывод первых N объектов используется параметр offset . Данный параметр означает "сдвиг" указателя по коллекции,
его можно понимать как "покажи мне Limit объектов, пропустив первые offset объектов."
Пример запроса заказов, пропустив первые 2 заказа:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=1"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
Результат:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=1" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 1 ,
"previousHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=0&limit=999"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/b610f564-b155-11ea-ac12-000d0000001c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#customerorder/edit?id=b610f564-b155-11ea-ac12-000d0000001c"
},
"id" : "b610f564-b155-11ea-ac12-000d0000001c" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/d8ed648c-b0e2-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=d8ed648c-b0e2-11ea-ac12-000d00000034"
}
},
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/d867701a-b0e2-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-06-18 14:20:27.296" ,
"name" : "00003" ,
"externalCode" : "g8aaJ1vbiP6YDicZFPPXZ3" ,
"moment" : "2020-06-18 14:20:00.000" ,
"applicable" : true ,
"rate" : {
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/d92fb826-b0e2-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=d92fb826-b0e2-11ea-ac12-000d00000077"
}
}
},
"sum" : 0.0 ,
"store" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/d92b8a46-b0e2-11ea-ac12-000d00000072" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#warehouse/edit?id=d92b8a46-b0e2-11ea-ac12-000d00000072"
}
},
"agent" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/d9253a1b-b0e2-11ea-ac12-000d00000070" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=d9253a1b-b0e2-11ea-ac12-000d00000070"
}
},
"organization" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/d9253a1b-b0e2-11ea-ac12-000d00000070" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=d9253a1b-b0e2-11ea-ac12-000d00000070"
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/states/d9e51641-b0e2-11ea-ac12-000d00000092" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"created" : "2020-06-18 14:20:27.312" ,
"positions" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/b610f564-b155-11ea-ac12-000d0000001c/positions" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 1000 ,
"offset" : 0
}
},
"vatEnabled" : true ,
"vatIncluded" : true ,
"vatSum" : 0.0 ,
"payedSum" : 0.0 ,
"shippedSum" : 0.0 ,
"invoicedSum" : 0.0 ,
"reservedSum" : 0.0
}
]
}
Также можно использовать сдвиг и в списке позиций:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions?offset=1"
-u login:password
-H "Lognex-Pretty-Print-JSON: true"
Результат:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions?offset=1" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 1 ,
"previousHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions?offset=0&limit=999"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/51bb185a-b0e7-11ea-ac12-000d0000012a/positions/f002d8b4-b155-11ea-ac12-000d00000023" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json"
},
"id" : "f002d8b4-b155-11ea-ac12-000d00000023" ,
"accountId" : "d865ef6f-b0e2-11ea-ac12-000c00000001" ,
"quantity" : 1.0 ,
"price" : 0.0 ,
"discount" : 0.0 ,
"vat" : 0 ,
"assortment" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/bundle/e5da18eb-b152-11ea-ac12-000c00000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "bundle" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=e5d864ae-b152-11ea-ac12-000c00000000"
}
},
"shipped" : 0.0 ,
"reserve" : 0.0
}
]
}
Комбинации offset и limit
Давайте представим, что мы читаем книгу, содержание которой, это все заказы. Тогда каждый запрос это страница, на каждой странице limit слов.
Номер слова, с которого начинается страница, это offset . Например, мы прочли 4 страницы по 40 слов и хотим прочесть следующую страницу.
Тогда offset = 160, limit = 40, т.е. запрос будет таким:
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=160&limit=40"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
В таком виде вы получите в мете ответа 2 дополнительных параметра:
nextHref - значение - href (ссылка, в которой уже проставлены параметры limit & offset), для следующей страницы
previousHref - значение - href (ссылка, в которой уже проставлены параметры limit & offset), для предыдущей страницы
Запрос
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=160&limit=3"
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
При таком запросе
"nextHref": "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=163&limit=3"
"previousHref": "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=157&limit=3"
Результат:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=160&limit=3" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"size" : 1119 ,
"limit" : 3 ,
"offset" : 160 ,
"nextHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=163&limit=3" ,
"previousHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder?offset=157&limit=3"
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/f39729bd-adde-44e2-9583-3dd12ac7e9cd" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#customerorder/edit?id=f39729bd-adde-44e2-9583-3dd12ac7e9cd"
},
"id" : "f39729bd-adde-44e2-9583-3dd12ac7e9cd" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/8d701342-de17-4217-88fa-733f9c7ec1c7" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=8d701342-de17-4217-88fa-733f9c7ec1c7"
}
},
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0060ce12-d269-11e4-90a2-8ecb0001909b" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"version" : 1 ,
"updated" : "2018-04-25 21:26:18.000" ,
"name" : "00037" ,
"externalCode" : "DILeadRegtebxNqFw4Iyy3" ,
"moment" : "2012-04-04 11:35:00" ,
"applicable" : true ,
"rate" : {
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/c05298d8-dc34-11e6-8d16-0cc47a342c9a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=c05298d8-dc34-11e6-8d16-0cc47a342c9a"
}
}
},
"sum" : 22040 ,
"store" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/386b4336-c449-4a6c-802f-6d0f0b76e185" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#warehouse/edit?id=386b4336-c449-4a6c-802f-6d0f0b76e185"
}
},
"project" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/project/0b4bf954-ea53-408b-a387-ed3fae287b37" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/project/metadata" ,
"type" : "project" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#project/edit?id=0b4bf954-ea53-408b-a387-ed3fae287b37"
}
},
"agent" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/f3559191-6b22-496a-9ac7-41762d8440d3" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=f3559191-6b22-496a-9ac7-41762d8440d3"
}
},
"organization" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=72737908-8b3b-50d5-9184-2a442c621551"
}
},
"organizationAccount" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551/accounts/3f78b7a7-e5dc-11e3-1593-002590a28eca" ,
"type" : "account" ,
"mediaType" : "application/json"
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/states/9a7350d2-9e35-11e2-1dba-001b21d91495" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"documents" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/f39729bd-adde-44e2-9583-3dd12ac7e9cd/documents" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"created" : "2012-04-04 11:40:37.000" ,
"positions" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/f39729bd-adde-44e2-9583-3dd12ac7e9cd/positions" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 100 ,
"offset" : 0
}
},
"vatEnabled" : true ,
"vatIncluded" : true ,
"vatSum" : 3362 ,
"payedSum" : 0 ,
"shippedSum" : 0 ,
"invoicedSum" : 0 ,
"reservedSum" : 0
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/ce1314fc-f8b0-4743-85a2-8675c7b5dbb6" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#customerorder/edit?id=ce1314fc-f8b0-4743-85a2-8675c7b5dbb6"
},
"id" : "ce1314fc-f8b0-4743-85a2-8675c7b5dbb6" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0060ce12-d269-11e4-90a2-8ecb0001909b" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"version" : 0 ,
"updated" : "2012-04-05 22:37:28.000" ,
"name" : "00038" ,
"description" : "Заказ оформлен покупателем" ,
"code" : "49" ,
"externalCode" : "49" ,
"moment" : "2012-04-05 00:00:00" ,
"applicable" : true ,
"rate" : {
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/c05298d8-dc34-11e6-8d16-0cc47a342c9a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=c05298d8-dc34-11e6-8d16-0cc47a342c9a"
}
}
},
"sum" : 34700 ,
"agent" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/15dd5da5-0e50-459e-a97b-2d504a6ce7f3" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=15dd5da5-0e50-459e-a97b-2d504a6ce7f3"
}
},
"organization" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=72737908-8b3b-50d5-9184-2a442c621551"
}
},
"organizationAccount" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551/accounts/3f78b7a7-e5dc-11e3-1593-002590a28eca" ,
"type" : "account" ,
"mediaType" : "application/json"
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/states/2d860b73-22da-403d-9feb-92c51c4d1d78" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"documents" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/ce1314fc-f8b0-4743-85a2-8675c7b5dbb6/documents" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"created" : "2012-04-05 22:37:28.000" ,
"positions" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/ce1314fc-f8b0-4743-85a2-8675c7b5dbb6/positions" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 100 ,
"offset" : 0
}
},
"vatEnabled" : true ,
"vatIncluded" : true ,
"vatSum" : 0 ,
"payedSum" : 0 ,
"shippedSum" : 0 ,
"invoicedSum" : 0 ,
"reservedSum" : 4700
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/d232aa22-0b3e-4fd6-a5fb-429f32c83c3c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "customerorder" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#customerorder/edit?id=d232aa22-0b3e-4fd6-a5fb-429f32c83c3c"
},
"id" : "d232aa22-0b3e-4fd6-a5fb-429f32c83c3c" ,
"accountId" : "45eb22e0-0e7b-11e2-1c31-3c4a92f3a0a7" ,
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/0060ce12-d269-11e4-90a2-8ecb0001909b" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"version" : 0 ,
"updated" : "2012-04-05 22:37:28.000" ,
"name" : "00038" ,
"description" : "Заказ оформлен покупателем" ,
"code" : "48" ,
"externalCode" : "48" ,
"moment" : "2012-04-05 00:00:00" ,
"applicable" : true ,
"rate" : {
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/c05298d8-dc34-11e6-8d16-0cc47a342c9a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=c05298d8-dc34-11e6-8d16-0cc47a342c9a"
}
}
},
"sum" : 40000 ,
"agent" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/cdc1a908-0582-457d-a781-40e06bf0cbbe" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=cdc1a908-0582-457d-a781-40e06bf0cbbe"
}
},
"organization" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata" ,
"type" : "organization" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#mycompany/edit?id=72737908-8b3b-50d5-9184-2a442c621551"
}
},
"organizationAccount" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/organization/72737908-8b3b-50d5-9184-2a442c621551/accounts/3f78b7a7-e5dc-11e3-1593-002590a28eca" ,
"type" : "account" ,
"mediaType" : "application/json"
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/states/2d860b73-22da-403d-9feb-92c51c4d1d78" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"documents" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/d232aa22-0b3e-4fd6-a5fb-429f32c83c3c/documents" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"created" : "2012-04-05 22:37:28.000" ,
"positions" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/d232aa22-0b3e-4fd6-a5fb-429f32c83c3c/positions" ,
"type" : "customerorderposition" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 100 ,
"offset" : 0
}
},
"vatEnabled" : true ,
"vatIncluded" : true ,
"vatSum" : 0 ,
"payedSum" : 0 ,
"shippedSum" : 0 ,
"invoicedSum" : 0 ,
"reservedSum" : 10000
}
]
}
Сортировка
Для большинства коллекций, возвращаемых JSON API, доступна сортировка.
Сортировка поддерживается для следующих типов полей:
числовой,
строковый,
дата-время,
логический,
uuid.
Доступные поля для сортировки
В зависимости от вызываемого endpoint'а сортируемые поля могут отличаться.
В таблицах ниже представлены сортируемые поля справочников и документов.
Endpoint (справочники)
Сортируемые поля
Контрагент
id
, version
, updated
, updatedBy
, name
, description
, code
, externalCode
, archived
, created
, phone
, email
, fax
Ассортимент
name
, code
Валюта
id
, name
, archived
, default
, fullname
, code
, isoCode
, multiplicity
Товар
id
, version
, updated
, updatedBy
, name
, code
, externalCode
, archived
, pathName
, isSerialTrackable
, weighed
, weight
, volume
, syncId
Услуга
id
, version
, updated
, updatedBy
, name
, code
, externalCode
, archived
, pathName
, syncId
Комплект
id
, version
, updated
, updatedBy
, name
, description
, code
, externalCode
, archived
, pathName
, article
, weight
, volume
, syncId
Модификация
id
,version
, updated
,updatedBy
, name
, description
, code
,externalCode
Группа товаров
id
, version
, updated
, updatedBy
, name
, externalCode
, archived
, pathName
Серия
id
,version
, updated
,updatedBy
, name
, description
, code
,externalCode
Договор
id
, version
, updated
, updatedBy
, name
, description
, code
, externalCode
, archived
, moment
Проект
id
,version
, updated
,updatedBy
, name
, code
,externalCode
, archived
Статья расходов
id
,version
, updated
,updatedBy
, name
, description
, code
,externalCode
Страна
id
,version
, updated
,updatedBy
, name
, description
, code
,externalCode
Отдел
id
Единица измерения
id
, version
, updated
, name
, description
, code
, externalCode
Сотрудник
id
, version
, updated
, updatedBy
, name
, description
, externalCode
,archived
,email
,phone
,lastname
, firstname
, middlename
, uid
Склад
id
,version
, updated
,updatedBy
, name
, description
, code
, externalCode
, address
, archived
, pathName
Юрлицо
id
,version
, updated
,updatedBy
, name
, description
, code
,externalCode
, archived
, created
, inn
, actualAddress
, legalTitle
, legalAddress
, kpp
, phone
, email
, fax
Техкарта
id
, syncId
, version
, updated
, updatedBy
, name
, description
, externalCode
Точка продаж
id
,version
, updated
,updatedBy
, name
, description
, externalCode
, address
, active
Задача
id
, created
, version
, updated
, description
, dueToDate
, done
Endpoint (документы)
Сортируемые поля
Розничная смена
id
, syncId
, version
, updated
, updatedBy
, name
, description
, externalCode
, moment
, applicable
, sum
, created
, closeDate
Оприходования
id
, syncId
,version
, updated
,updatedBy
,name
, description
, externalCode
,moment
, applicable
,sum
, created
Заказ покупателя
id
, syncId
,version
, updated
,updatedBy
,name
, description
, externalCode
,moment
, applicable
,sum
, created
, deliveryPlannedMoment
Заказ поставщику
id
, syncId
,version
, updated
,updatedBy
,name
, description
, externalCode
,moment
, applicable
,sum
, created
, deliveryPlannedMoment
Счет покупателю
id
, syncId
, version
, updated
, updatedBy
, name
, description
, externalCode
, moment
, applicable
, sum
, created
, paymentPlannedMoment
Счет поставщика
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, incomingNumber
, incomingDate
, paymentPlannedMoment
Входящий платеж
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, paymentPurpose
, incomingNumber
, incomingDate
Исходящий платеж
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, paymentPurpose
Приходный ордер
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, paymentPurpose
Расходный ордер
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, paymentPurpose
Отгрузка
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Приемка
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Списание
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Перемещение
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Розничная продажа
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Розничный возврат
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Внесение денег
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Выплата денег
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Возврат покупателя
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Возврат поставщику
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Счет-фактура выданный
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Счет-фактура полученный
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Инвентаризация
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Полученный отчет комиссионера
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, incomingDate
Выданный отчет комиссионера
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Прайс-лист
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
Заказ на производство
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, deliveryPlannedMoment
, quantity
Техоперация
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, quantity
Внутренний заказ
id
, syncId
,version
, updated
,updatedBy
, name
, description
, externalCode
,moment
, applicable
, sum
, created
, quantity
Как использовать сортировку через JSON API
Для применения сортировки к коллекции необходимо добавить в запрос order=[field name],[asc/desc]
, где field name - имя поля для сортировки.
Опционально через запятую можно указать направление сортировки:
asc
- по возрастанию, значение по умолчанию,
desc
- по убыванию.
Например, для сортировки поля name
по возрастанию нужно использовать ?order=name, asc
или ?order=name
, а по убыванию ?order=name,desc
.
Сортировка также доступна одновременно для нескольких полей, поля для сортировки необходимо указывать через разделитель ;
.
Например, ?order=name,asc;code,desc
.
Рассмотрим применение сортировки.
Предварительно создадим товары с различными наименованиями, которые могут начинаться с латиницы, кириллицы, цифр или специальных символов.
Запрос
Показать Свернуть
curl -X POST
https://api.moysklad.ru/api/remap/1.2/entity/product
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '[
{
"name":"12345",
"weight":0.1,
"weighed":true,
"syncId":"8b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil",
"weight":0.01,
"syncId":"5b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil 123",
"weight":0.01,
"syncId":"3b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil Blue",
"weight":0.11,
"weighed":true
},
{
"name":"Pencil Red",
"weight":0.2,
"syncId":"1b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"!!! Карандаш",
"weight":0.1,
"syncId":"2b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш 123",
"weight":0.32,
"syncId":"4b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш желтый",
"weight":0.12,
"weighed":true,
"syncId":"7b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш зеленый",
"weight":0.4,
"syncId":"8c7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"!!! Это карандаш",
"weight":0.1,
"syncId":"3d7c97cf-cf77-4f7e-b200-d264125578ab"
}
]'
Чтобы получить коллекцию товаров, отсортированных по имени, необходимо указать поле name
и направление сортировки, как в примере ниже
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/product?order=name'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
Ответ будет содержать следующий порядок по возрастанию:
name
12345
Pencil
Pencil 123
Pencil Blue
Pencil Red
!!! Карандаш
Карандаш 123
Карандаш желтый
Карандаш зеленый
!!! Это карандаш
Изменим направление сортировки
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/product?order=name,desc'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
name
!!! Это карандаш
Карандаш зеленый
Карандаш желтый
Карандаш 123
!!! Карандаш
Pencil Red
Pencil Blue
Pencil 123
Pencil
12345
Попробуем отсортировать товары одновременно по убыванию логического поля weighed
и по возрастанию поля name
.
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/product?order=weighed,desc;name'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
weighed
name
true
12345
true
Pencil Blue
true
Карандаш желтый
false
Pencil
false
Pencil 123
false
Pencil Red
false
!!! Карандаш
false
Карандаш 123
false
Карандаш зеленый
false
!!! Это карандаш
Добавим еще сортировку по числовому полю weight
.
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/product?order=weighed,desc;weight,desc;name'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
weighed
weight
name
true
0.12
Карандаш желтый
true
0.11
Pencil Blue
true
0.1
12345
false
0.4
Карандаш зеленый
false
0.32
Карандаш 123
false
0.2
Pencil Red
false
0.1
!!! Карандаш
false
0.1
!!! Это карандаш
false
0.01
Pencil
false
0.01
Pencil 123
Кроме текстовых, числовых и логических полей доступна сортировка по полям типов uuid и дата-время.
Например, применим сортировку по полю syncId
.
Запрос
Показать Свернуть
curl -X GET
'https://api.moysklad.ru/api/remap/1.2/entity/product?order=syncId'
-H 'Authorization: Bearer <Access-Token>'
-H "Accept-Encoding: gzip"
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
syncId
name
1b7c97cf-cf77-4f7e-b200-d264125578ab
Pencil Red
2b7c97cf-cf77-4f7e-b200-d264125578ab
!!! Карандаш
3b7c97cf-cf77-4f7e-b200-d264125578ab
Pencil 123
3d7c97cf-cf77-4f7e-b200-d264125578ab
!!! Это карандаш
4b7c97cf-cf77-4f7e-b200-d264125578ab
Карандаш 123
5b7c97cf-cf77-4f7e-b200-d264125578ab
Pencil
7b7c97cf-cf77-4f7e-b200-d264125578ab
Карандаш желтый
8b7c97cf-cf77-4f7e-b200-d264125578ab
12345
8c7c97cf-cf77-4f7e-b200-d264125578ab
Карандаш зеленый
null
Pencil Blue
У товара Pencil Blue
отсутствует значение поля поэтому при сортировке по возрастанию, оно выводится в конце.
Аналогичное поведение и для других полей со значением null
.
Работа с остатками
JSON API позволяет получить информацию об остатках в разном виде в зависимости от задачи.
Полная синхронизация по товарам и остаткам
Вы можете провести полную синхронизацию с МоимСкладом, чтобы загрузить всю информацию о товарах (штрихкод, цены, описание, изображения) и их остатках. Для этого можно использовать Расширенный отчет об остатках или Отчет по остаткам в разрезе по складам . Также можно провести полную синхронизацию через запрос ассортимента .
Также полную синхронизацию можно периодически проводить в процессе работы, например один раз в день. Однако это достаточно долгий и тяжелый запрос, использовать его часто не рекомендуется.
Если в процессе работы нужно регулярно обновлять информацию только по остаткам, используйте Краткий отчет об остатках . Отчет содержит только ID товара и его количество на складе в момент запроса. Используйте отчет, чтобы следить за остатками большого количества товаров. Отчет можно запрашивать раз в несколько минут.
Чтобы сократить объем передаваемых данных, при запросе Краткого отчета об остатках
используйте параметр changedSince
. Параметр позволяет получать данные об остатках только для тех товаров, чьи остатки изменились за период с changedSince
по текущий момент. Это значительно сокращает время на обработку запроса.
Если заказы, приемки, отгрузки и другие документы создаются нерегулярно, подпишитесь на Вебхуки на изменение остатков по товарам или складам. Вебхуки позволяют получать уведомления об изменениях и запрашивать остатки только тогда, когда есть изменения. Получив уведомление, запросите данные по ссылке в вебхуке.
Регулярное обновление данных по товарам
Если в процессе работы информация о товарах меняется и нужно регулярно отслеживать эти изменения, подпишитесь на вебхуки создания, изменения, удаления товаров, услуг, модификаций, комплектов.
Публикация документов
МойСклад позволяет печатать документы - формировать файлы в формате pdf или xls по специальным шаблонам, которые называются шаблонами печатных
форм. Для большинства документов есть встроенные шаблоны, о создании собственных шаблонов можно прочитать в
статье поддержки .
Публикация - это ссылка на печатную форму документа. Ее можно отправить по электронной почте. При публикации файлы формируются только в
формате pdf . Публикации доступны для следующих видов документов:
Заказ покупателя
Счет покупателю
Отгрузка
Заказ поставщику
Счет поставщика
Приемка
Входящий платеж
Приходный ордер
Исходящий платеж
Расходный ордер
Внутренний заказ
Перемещение
Оприходование
Списание
Счет-фактура выданный
Счет-фактура полученный
Возврат поставщику
Возврат покупателя
Выплата денег
Внесение денег
Розничный возврат
Розничная продажа
Договор
В JSON API возможно запросить списки встроенных и пользовательских шаблонов печатных форм, чтобы впоследствии использовать их для печати и
публикации документов.
Запрос встроенных шаблонов заказов покупателей:
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/"
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/" ,
"type" : "embeddedtemplate" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 100 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/6ffea5e5-1b69-4a88-be59-4856281d439c" ,
"type" : "embeddedtemplate" ,
"mediaType" : "application/json"
},
"id" : "6ffea5e5-1b69-4a88-be59-4856281d439c" ,
"name" : "Заказ" ,
"type" : "entity" ,
"content" : "https://api.moysklad.ru/api/remap/1.2/download-template/order.xls"
}
]
}
Запрос пользовательских шаблонов заказов покупателей:
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/customtemplate/"
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/customtemplate/" ,
"type" : "customtemplate" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 100 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/customtemplate/13b49a38-0b64-4129-9fb8-0f9f936fa575" ,
"type" : "customtemplate" ,
"mediaType" : "application/json"
},
"id" : "13b49a38-0b64-4129-9fb8-0f9f936fa575" ,
"name" : "order_upakovka.xls" ,
"type" : "entity" ,
"content" : "https://api.moysklad.ru/api/remap/1.2/download/13b49a38-0b64-4129-9fb8-0f9f936fa575"
}
]
}
По ссылке из поля content можно скачать сам шаблон.
Изменение или удаление шаблонов печатных форм через JSON API невозможно.
Создание публикаций в JSON API
Создание публикаций возможно средствами JSON API. Чтобы создать публикацию нужен документ, например, заказ покупателя, и шаблон печатной формы -
встроенный или пользовательский.
Создадим публикацию для заказа покупателя
Запрос
Показать Свернуть
curl
-X POST
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication"
-d '{
"template": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/6ffea5e5-1b69-4a88-be59-4856281d439c",
"type": "embeddedtemplate",
"mediaType": "application/json"
}
}
}'
В ответ возвращается JSON представление публикации. Если такая публикация уже существовала, код ответа 200. Если публикация была создана - 201.
Ответ
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication/aec51463-bbd2-11e6-8a84-bae500000003" ,
"type" : "operationpublication" ,
"mediaType" : "application/json"
},
"template" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/6ffea5e5-1b69-4a88-be59-4856281d439c" ,
"type" : "embeddedtemplate" ,
"mediaType" : "application/json"
}
},
"href" : "https://mskld.ru/QS6YOArOjJ"
}
Список всех публикаций
Также можно запросить список всех публикаций документа.
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication"
Ответ:
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication" ,
"type" : "demand" ,
"mediaType" : "application/json" ,
"size" : 1 ,
"limit" : 100 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication/aec51463-bbd2-11e6-8a84-bae500000003" ,
"type" : "operationpublication" ,
"mediaType" : "application/json"
},
"template" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/embeddedtemplate/6ffea5e5-1b69-4a88-be59-4856281d439c" ,
"type" : "embeddedtemplate" ,
"mediaType" : "application/json"
}
},
"href" : "https://mskld.ru/fhzHJPqIM7"
}
]
}
Удаление публикаций
Через JSON API можно удалить публикацию:
Запрос
Показать Свернуть
curl
-X DELETE
-u login:password
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-H "Lognex-Pretty-Print-JSON: true"
"" https://api.moysklad.ru/api/remap/1.2/entity/customerorder/53e988fd-c7c9-11e8-9dd2-f3a3000000cd/publication/aec51463-bbd2-11e6-8a84-bae500000003"
Ссылки публикаций
По ссылке публикации (например, https://mskld.ru/7sDZyGqk5M) открывается страница, с которой можно скачать pdf-документ.
По ссылке будет доступна самая последняя версия документа, даже если вы вносите изменения в документ после его публикации.
Ссылка будет доступна, пока не удалена публикация.
Работа с дополнительными полями через JSON API
Для задания дополнительных свойств объекта в сервисе МойСклад есть возможность работы с дополнительными полями (атрибутами).
Они представляют собой свойства сущности (объекта или документа), которые формируются пользователем и могут быть использованы для более
подробного описания объекта или фильтрации по значениям этих полей. Подробнее о типах и свойствах дополнительных полей можно прочитать
в документации .
В данной статье рассмотрим на примере магазина ноутбуков просмотр, создание, редактирование и удаление дополнительных полей средствами JSON API.
Значения дополнительных полей можно менять, обращаясь к конкретному объекту (документу). Это подробно описано в
статье Дополнительные поля .
Предположим, что нам необходимо выбирать и сортировать ноутбуки по некоторым характеристикам, которых нет в свойствах товара по умолчанию.
Например, материал корпуса, наличие CD/DVD-Rom, наличие разъема Type-C и т.д. Нужна возможность создавать, редактировать и удалять свойства товаров.
Присваивать конкретным товарам значения этих свойств, а также осуществлять фильтрацию по ним. Фильтрация по значениям дополнительных полей в
JSON API описана в статье Дополнительные поля .
Для создания указанных характеристик будем использовать дополнительные поля (атрибуты) товара.
В web-приложении атрибуты объектов назначаются на странице списка объектов при нажатии на кнопку с шестеренкой справа.
Открывается окно редактирования свойств объектов, где последним пунктом идет "Дополнительные поля". Здесь доступен просмотр, создание,
редактирование и удаление атрибутов объекта. Весь этот функционал доступен и через JSON API.
Процесс создания атрибута товара через UI
Дополнительные поля Услуг, Модификаций и Комплектов
Дополнительные поля у Товаров, Услуг, Модификаций и Комплектов общие и располагаются в метаданных Товаров.
Создание нового дополнительного поля через JSON API
Рассмотрим задачу добавления новых атрибутов к сущности (товару). Предположим, что хотим для имеющихся и закупаемых в будущем ноутбуков
указывать материал корпуса. Для его указания будем пользоваться дополнительным полем типа строка. Этот пример рассмотрен в
скриншотах web-приложения выше. Теперь попробуем сделать то же через JSON API.
Выполним POST-запрос, в теле которого укажем название и тип дополнительного поля (атрибута). Для этого достаточно в теле запроса указать
обязательные поля "name" и "type". В данном случае добавим строковое поле, описывающее материал корпуса ноутбука.
Кроме имени и типа у создаваемого атрибута есть следующие поля:
meta - набор метаданных, заполняется автоматически при создании,
id - id атрибута, заполняется автоматически при создании,
required - флаг обязательности атрибута, если равен true - значение атрибута должно быть заполнено при создании или изменении сущности. (По умолчанию false. Для атрибутов типа Флажок не может быть изменен)
Создание двух дополнительных полей с одинаковыми именами запрещено.
Запрос
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes"
-d '{
"name": "Материал корпуса",
"type": "string"
}'
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "acd884ce-b44f-11e9-7ae5-884b00009002" ,
"name" : "Материал корпуса" ,
"type" : "string" ,
"required" : false
}
Создано дополнительное поле (атрибут), ему автоматически присвоен id. Значение свойства required по умолчанию устанавливается
в false, что делает созданный атрибут не обязательным для заполнения при создании товара.
Создание нового дополнительного поля типа Справочник через JSON API
Стоит обратить внимание на создание атрибута с типом Справочник. Этот тип позволяет атрибуту принимать в качестве значения другие объекты,
в том числе и пользовательские.
Описание атрибутов типа Справочник в документации
Предположим, что в нашем магазине есть также чехлы для ноутбуков. Создадим атрибут Справочник типа Товар. Теперь Появилась возможность для
каждого ноутбука указать подходящий ему чехол как одно из свойств ноутбука.
Для создания атрибута Справочник типа товар нужно указать в поле "type" значение "product". В поле "name" укажем "Чехол".
Запрос
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes"
-d '{
"name": "Чехол",
"type": "product"
}'
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/cc8ff599-c5c0-11e9-0a80-06b000000000" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "cc8ff599-c5c0-11e9-0a80-06b000000000" ,
"name" : "Чехол" ,
"type" : "productfolder" ,
"required" : false
}
Создан атрибут, в значение которого для каждого товара можно записать другой товар. Теперь можно, например, предлагать сразу приобрести
чехол для выбранного покупателем ноутбука.
Массовое создание(обновление) дополнительных полей через JSON API
С приходом в магазин новых моделей ноутбуков может появиться необходимость в создании новых атрибутов. Например, тип разъемов на ноутбуках
некоторых производителей меняется с такой частотой, что предугадать заранее их тип и наличие невозможно. В таком случае может понадобиться
добавление новых и редактирование существующих атрибутов.
В JSON API доступно массовое создание дополнительных полей. Для этого надо передать в теле POST-запроса массив со свойствами каждого из создаваемых атрибутов.
Массив должен содержать данные по каждому создаваемому полю, перечисленные через запятую и заключенные в фигурные скобки. Обязательные к передаче
свойства - это имя и тип поля. Если добавить к ним "meta" существующего дополнительного поля, то оно будет изменено.
Сформируем тело запроса из 3 элементов. Для поля "Материал корпуса" укажем его "meta", свойство "name" изменим на "Материал корпуса (дополнение)".
Новое значение свойства "name" не должно совпадать с существующими. Свойство "type" не может быть изменено. Два других элемента массива будут
созданы, им автоматически присвоятся метаданные.
Запрос
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes"
-d '[
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002",
"type": "attributemetadata",
"mediaType": "application/json"
},
"name": "Материал корпуса (дополнение)",
"type": "string"
},
{
"name": "Наличие CD-Rom",
"type": "boolean"
},
{
"name": "Наличие type-C разъема",
"type": "boolean"
}
]'
Результат:
Показать Свернуть
[
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "acd884ce-b44f-11e9-7ae5-884b00009002" ,
"name" : "Материал корпуса (дополнение)" ,
"type" : "string" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b2fe47-b465-11e9-7ae5-884b0001562f" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "33b2fe47-b465-11e9-7ae5-884b0001562f" ,
"name" : "Наличие CD-Rom" ,
"type" : "boolean" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b30b2e-b465-11e9-7ae5-884b00015630" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "33b30b2e-b465-11e9-7ae5-884b00015630" ,
"name" : "Наличие type-C разъема" ,
"type" : "boolean" ,
"required" : false
}
]
После выполнения данного запроса поле "Материал корпуса" обновится на "Материал корпуса (дополнение)". Добавятся новые поля "Наличие CD-Rom" и
"Наличие type-C разъема" с типом флажок.
Вывод дополнительных полей через JSON API
Для отображения списка атрибутов сущности (в данном случае товара) нужно выполнить GET-запрос
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes"
В ответ получим список созданных атрибутов
Показать Свернуть
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json" ,
"size" : 3 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "acd884ce-b44f-11e9-7ae5-884b00009002" ,
"name" : "Материал корпуса (дополнение)" ,
"type" : "string" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b2fe47-b465-11e9-7ae5-884b0001562f" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "33b2fe47-b465-11e9-7ae5-884b0001562f" ,
"name" : "Наличие CD-Rom" ,
"type" : "boolean" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b30b2e-b465-11e9-7ae5-884b00015630" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "33b30b2e-b465-11e9-7ae5-884b00015630" ,
"name" : "Наличие type-C разъема" ,
"type" : "boolean" ,
"required" : false
}
]
Если указать в запросе id конкретного атрибута, то получим только его.
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002"
Результат
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "acd884ce-b44f-11e9-7ae5-884b00009002" ,
"name" : "Материал корпуса (дополнение)" ,
"type" : "string" ,
"required" : false
}
Редактирование дополнительных полей через JSON API
Если нужно изменить одно дополнительное поле без затрагивания существующих, удобно пользоваться следующим запросом. Например, нужно изменить
название атрибута, чтоб сделать его блоее полным. Изменим название атрибута "Наличие CD-Rom" на "Наличие CD/DVD-Rom".
Для изменения свойств существующего дополнительного поля необходимо выполнить PUT-запрос, содержащий его id, а в теле запроса передать изменяемые
свойства. Следует учесть, что свойство "type" не может быть изменено. Изменим название атрибута "Наличие CD-Rom":
Запрос
Показать Свернуть
curl -X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b2fe47-b465-11e9-7ae5-884b0001562f"
-d '{
"name":"Наличие CD/DVD-Rom"
}'
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b2fe47-b465-11e9-7ae5-884b0001562f" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "9e9baa04-b455-11e9-7ae5-884b0000c7d9" ,
"name" : "Наличие CD/DVD-Rom" ,
"type" : "boolean" ,
"required" : false
}
Поле "Наличие CD-Rom" изменено на "Наличие CD/DVD-Rom". Неуказанные свойства останутся без изменений.
Удаление дополнительного поля через JSON API
Некоторые атрибуты могут стать неактуальными. Например такую полезную вещь как DVD-привод найти становится всё труднее. Такие дополнительные поля
можно удалить, даже если они были назначены обязательными и были заполнены.
Для удаления дополнительного поля через JSON API необходимо выполнить DELETE-запрос, содержащий id поля.
Запрос
Показать Свернуть
curl -X DELETE
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b2fe47-b465-11e9-7ae5-884b0001562f"
Получим пустой ответ со статусом 200. Атрибут с указанным id будет удален.
Массовое удаление дополнительных полей через JSON API
Для удаления сразу нескольких атрибутов нужно выполнить следующий POST-запрос, указав в теле meta-данные удаляемых полей:
Запрос
Показать Свернуть
curl -X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/delete"
-d '[
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/acd884ce-b44f-11e9-7ae5-884b00009002",
"type": "attributemetadata",
"mediaType": "application/json"
}
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/33b30b2e-b465-11e9-7ae5-884b00015630",
"type": "attributemetadata",
"mediaType": "application/json"
}
}
]'
Также получим пустой ответ со статусом 200. В результате удалены указанные атрибуты. Если в теле такого запроса указать meta несуществующего атрибута, то весь запрос не выполнится, даже если в нем присутствуют существующие meta.
Список сущностей
Список сущностей, для которых есть возможность создать доп. поля, вы можете посмотреть в документации
Работа с дополнительными полями в JSON API
В рамках JSON API можно создавать дополнительные поля и редактировать существующие. Подробно это описано в статье Работа с дополнительными полями через API.
Получение дополнительных полей
Доп. поля располагаются в метаданных необходимой сущности.
Пример получения дополнительных полей товара:
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes"
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json" ,
"size" : 3 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/839ca663-75f7-11e8-9107-5048001126a2" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "839ca663-75f7-11e8-9107-5048001126a2" ,
"name" : "Время работы от аккумулятора" ,
"type" : "double" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/7385ab6e-ad06-11e8-9ff4-34e80004fb35" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "7385ab6e-ad06-11e8-9ff4-34e80004fb35" ,
"name" : "Ссылка на интернет-магазин" ,
"type" : "link" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/52ae09f9-8fe7-11ed-0a80-07ae000000ef" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "52ae09f9-8fe7-11ed-0a80-07ae000000ef" ,
"name" : "Подсветка клавиатуры" ,
"type" : "boolean" ,
"required" : false
}
]
}
Задание значений дополнительных полей через JSON API
Задать значение дополнительному полю можно как при создании объекта, так и при его обновлении.
Полученные в предыдущем примере идентификаторы дополнительных полей товаров можно использовать при создании новых товаров.
Дополнительное поле "Подсветка клавиатуры" не является обязательным (required=false ) и не передается в примере ниже.
Запрос
Показать Свернуть
curl
-X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-d '{
"name": "Ноутбук",
"vat": 18,
"effectiveVat": 18,
"uom": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/uom/19f1edc0-fc42-4001-94cb-c9ec9c62ec10",
"type": "uom"
}
},
"minPrice": 50000.0,
"buyPrice": {
"value": 50000.0,
"currency": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/currency/6314188d-2c7f-11e6-8a84-bae500000055",
"type": "currency"
}
}
},
"salePrices": [
{
"value": 100000.0,
"currency": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/currency/6314188d-2c7f-11e6-8a84-bae500000055",
"type": "currency"
}
},
"priceType": "Цена продажи"
}
],
"attributes": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/839ca663-75f7-11e8-9107-5048001126a2",
"type": "attributemetadata"
},
"value": 9.6
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/7385ab6e-ad06-11e8-9ff4-34e80004fb35",
"type": "attributemetadata"
},
"id": "7385ab6e-ad06-11e8-9ff4-34e80004fb35",
"name": "Ссылка на интернет-магазин",
"value": "https://example.com"
}
]
}'
Для нового товара "Ноутбук" мы указали значения двух дополнительных полей -
Время работы от аккумулятора
и Ссылка на интернет-магазин
.
При обновлении товара мы можем как обновить уже имеющиеся значения дополнительных полей, так и задать новые.
Запрос
Показать Свернуть
curl
-X PUT
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product/630c578a-cb05-11e8-9109-f8fc0037889a"
-d '{
"name": "Ноутбук обновленный",
"attributes": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/839ca663-75f7-11e8-9107-5048001126a2",
"type": "attributemetadata"
},
"value": 10.6
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/52ae09f9-8fe7-11ed-0a80-07ae000000ef",
"type": "attributemetadata"
},
"value": "true"
}
]
}'
В примере мы обновили значение поля Время работы от аккумулятора
, проставленное при создании товара, а также задали значение полю Подсветка клавиатуры
- при создании мы оставили его пустым.
Также для необязательных полей есть возможность обнулить значение поля. Для этого в поле value необходимо передать значение null .
Если в теле запроса на обновление/создание сущности в массиве дополнительных полей:
Не указаны id каких-либо дополнительных полей - дополнительные поля обновлены не будут.
Указаны id дополнительных полей, которым в данной сущности ещё не присвоено значение - соответствующим дополнительным полям будут присвоены переданные значения.
Указаны id дополнительных полей, которым в данной сущности уже присвоено значение - соответствующим дополнительным полям будут присвоены новые значения.
Указан несуществующий id, которого нет в метаданных сущности - возникнет ошибка.
Возможные типы дополнительных полей
С возможными типами дополнительных полей вы можете ознакомиться в документации .
Дополнительное поле типа Файл
Для загрузки значения дополнительного поля типа файл нужно в поле file указать объект следующей структуры:
filename - Имя файла Необходимое
content - Байты файла, закодированные в base64 Необходимое
Для сброса значения в дополнительном поле необходимо передать поле file и значением null .
Ниже приведены примеры обновления товара с дополнительным полем типа Файл с присваиванием и сбросом значения.
Пример присваивания значения доп. полю типа Файл
Показать Свернуть
curl -X PUT
"https://api.moysklad.ru/api/remap/1.2/entity/product/dde7f6d3-1c09-11ef-ac12-000f00000025"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-d '{
"attributes": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/0ae972f0-2951-11ef-ac12-000e00000001",
"type": "attributemetadata",
"mediaType": "application/json"
},
"file": {
"filename": "filename",
"content": "5cYwMpOmNk5kSVr4YgZGKtXJb/7KpHVLDUawyZrD5Nf0WDhB7mS1I77VcAMqYQ8DkP/1wDLhb0X6b2JO4pdpKA=="
}
}
]
}'
Пример сброса значения доп. поля типа Файл
Показать Свернуть
curl -X PUT
"https://api.moysklad.ru/api/remap/1.2/entity/product/dde7f6d3-1c09-11ef-ac12-000f00000025"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-d '{
"attributes": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/0ae972f0-2951-11ef-ac12-000e00000001",
"type": "attributemetadata",
"mediaType": "application/json"
},
"file": null
}
]
}'
Дополнительное поле типа Справочник
Дополнительное поле типа Справочник ссылается на объект определенного справочника.
Это может быть один из встроенных справочников:
Товары, Контрагенты, Договоры, Сотрудники, Проекты, Склады.
Или справочник, созданный пользователем.
Рассмотрим пример работы с дополнительными полями типа Справочник на примере контрагентов.
В примере для них задано два дополнительных поля:
встроенный справочник Проект и пользовательский справочник Регион:
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H "Lognex-Pretty-Print-JSON: true"
"https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata"
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"mediaType" : "application/json"
},
"attributes" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/attributes/cf486cca-d383-11e8-ac12-000a000000d4" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "cf486cca-d383-11e8-ac12-000a000000d4" ,
"name" : "[Проект]" ,
"type" : "project" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/attributes/cf489b7c-d383-11e8-ac12-000a000000d5" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"customEntityMeta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/companysettings/metadata/customEntities/ac120c44-d383-11e8-ac12-000a000000c4" ,
"type" : "customentitymetadata" ,
"mediaType" : "application/json"
},
"id" : "cf489b7c-d383-11e8-ac12-000a000000d5" ,
"name" : "Регион" ,
"type" : "customentity" ,
"required" : false
}
],
"states" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77c63b-d047-11e8-ac12-000b0000006b" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "5b77c63b-d047-11e8-ac12-000b0000006b" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"name" : "Новый" ,
"color" : 15106326 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77ddd8-d047-11e8-ac12-000b0000006c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "5b77ddd8-d047-11e8-ac12-000b0000006c" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"name" : "Выслано предложение" ,
"color" : 10774205 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77eb48-d047-11e8-ac12-000b0000006d" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "5b77eb48-d047-11e8-ac12-000b0000006d" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"name" : "Переговоры" ,
"color" : 40931 ,
"stateType" : "Regular" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77f0c9-d047-11e8-ac12-000b0000006e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "5b77f0c9-d047-11e8-ac12-000b0000006e" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"name" : "Сделка заключена" ,
"color" : 8825440 ,
"stateType" : "Successful" ,
"entityType" : "counterparty"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77f469-d047-11e8-ac12-000b0000006f" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
},
"id" : "5b77f469-d047-11e8-ac12-000b0000006f" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"name" : "Сделка не заключена" ,
"color" : 15280409 ,
"stateType" : "Unsuccessful" ,
"entityType" : "counterparty"
}
],
"createShared" : false
}
Чтобы задать значение дополнительного поля типа Справочник
в поле value нужно передать объект, содержащий поле meta
с метаданными объекта, который будет значением дополнительного поля.
Создадим контрагента с этими дополнительными полями:
Запрос
Показать Свернуть
curl
-X POST
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/counterparty"
-d '{
"name": "ООО Восток",
"attributes": [
{
"id": "cf486cca-d383-11e8-ac12-000a000000d4",
"name": "[Проект]",
"type": "project",
"value": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/project/c5ed49c2-d384-11e8-ac12-000a000000d8",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/project/metadata",
"type": "project",
"mediaType": "application/json",
"uuidHref": "https://online.moysklad.ru/app/#project/edit?id=c5ed49c2-d384-11e8-ac12-000a000000d8"
}
}
},
{
"id": "cf489b7c-d383-11e8-ac12-000a000000d5",
"name": "Регион",
"type": "customentity",
"value": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/customentity/ac120c44-d383-11e8-ac12-000a000000c4/b971966b-d383-11e8-ac12-000a000000ce",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/companysettings/metadata/customEntities/ac120c44-d383-11e8-ac12-000a000000c4",
"type": "customentity",
"mediaType": "application/json",
"uuidHref": "https://online.moysklad.ru/app/#custom_ac120c44-d383-11e8-ac12-000a000000c4/edit?id=b971966b-d383-11e8-ac12-000a000000ce"
}
}
}
]
}'
Результат:
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/5a5597e3-d385-11e8-ac12-000800000000" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "counterparty" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#company/edit?id=5a5597e3-d385-11e8-ac12-000800000000"
},
"id" : "5a5597e3-d385-11e8-ac12-000800000000" ,
"accountId" : "5a0480c9-d047-11e8-ac12-000900000000" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/5a929317-d047-11e8-ac12-000b0000002e" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=5a929317-d047-11e8-ac12-000b0000002e"
}
},
"shared" : false ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/5a05b13e-d047-11e8-ac12-000900000001" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"version" : 0 ,
"updated" : "2018-10-19 12:57:13.000" ,
"name" : "ООО Восток" ,
"externalCode" : "fN3pbKAWhwfAOiz3MFMsA0" ,
"archived" : false ,
"created" : "2018-10-19 12:57:13.000" ,
"companyType" : "legal" ,
"attributes" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/attributes/cf486cca-d383-11e8-ac12-000a000000d4" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "cf486cca-d383-11e8-ac12-000a000000d4" ,
"name" : "[Проект]" ,
"type" : "project" ,
"value" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/project/c5ed49c2-d384-11e8-ac12-000a000000d8" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/project/metadata" ,
"type" : "project" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#project/edit?id=c5ed49c2-d384-11e8-ac12-000a000000d8"
},
"name" : "Проект 1"
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/attributes/cf489b7c-d383-11e8-ac12-000a000000d5" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "cf489b7c-d383-11e8-ac12-000a000000d5" ,
"name" : "Регион" ,
"type" : "customentity" ,
"value" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/customentity/ac120c44-d383-11e8-ac12-000a000000c4/b971966b-d383-11e8-ac12-000a000000ce" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/companysettings/metadata/customEntities/ac120c44-d383-11e8-ac12-000a000000c4" ,
"type" : "customentity" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#custom_ac120c44-d383-11e8-ac12-000a000000c4/edit?id=b971966b-d383-11e8-ac12-000a000000ce"
},
"name" : "Восточный"
}
}
],
"accounts" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/5a5597e3-d385-11e8-ac12-000800000000/accounts" ,
"type" : "account" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"tags" : [],
"contactpersons" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/5a5597e3-d385-11e8-ac12-000800000000/contactpersons" ,
"type" : "contactperson" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"notes" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/5a5597e3-d385-11e8-ac12-000800000000/notes" ,
"type" : "note" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 100 ,
"offset" : 0
}
},
"state" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata/states/5b77c63b-d047-11e8-ac12-000b0000006b" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/metadata" ,
"type" : "state" ,
"mediaType" : "application/json"
}
},
"salesAmount" : 0
}
Фильтрация по значению дополнительного поля
JSON API позволяет осуществлять фильтрацию по значению дополнительного поля. На примере дополнительных полей, приведенных выше, можно отфильтровать все товары, у которых значение дополнительного поля Время работы от аккумулятора
больше или равно 5:
Запрос
Показать Свернуть
curl
-X GET
-u login:password
-H "Accept-Encoding: gzip"
-H 'Accept: application/json'
-H 'Content-Type: application/json'
"https://api.moysklad.ru/api/remap/1.2/entity/product?filter=https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/630c578a-cb05-11e8-9109-f8fc0037889a%3E%3D5"
Для этого нам необходимо в параметре filter указать href дополнительного поля для фильтрации, знак сравнения (в нашем случае >=
) и значение. В ответе вернутся все сущности, подходящие под переданный критерий.
Сортировка по дополнительному полю
Сортировка по дополнительным полям в данный момент не поддерживается.
Работа с Изображениями в Товарах, Модификациях и Комплектах
Иногда требуется добавить или изменить несколько изображений для товара. Это можно сделать несколькими способами:
обновить список изображений в рамках обновления товара или воспользоваться эндпоинтами для работы с изображениями.
Для добавления изображения нужно задать поля filename
и content
, соответствующие названию и содержанию файла,
закодированному в Base64, соответственно.
Если нужно добавить или дублировать уже существующее изображение, то можно указать его meta
.
Например, нужно создать Товар с несколькими изображениями. Это можно сделать следующим образом:
Запрос на создание товара с двумя изображениями
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"name": "simplegood",
"images": [
{
"filename": "birdimage.png",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
},
{
"filename": "birdimage2.png",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
}
]
}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление созданного Товара с изображениями.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "b8b74698-9128-11e6-8a84-bae500000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/b905bfb0-9128-11e6-8a84-bae50000002a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/b8ba0d3f-9128-11e6-8a84-bae500000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2016-10-19 14:25:28" ,
"name" : "simplegood" ,
"code" : "00006" ,
"externalCode" : "0bmPIvHxgEDlNIZrZ6GLt2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 500.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/10772c12-36e7-11e7-8a7f-40d000000097" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0
},
"weight" : 0 ,
"volume" : 0 ,
"barcodes" : [
{
"ean13" : "2000000000107"
}
],
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Стоит заметить, что в ответе нет перечисления всех изображений, а лишь указана meta
для коллекции. Чтобы получить
список изображений в рамках товара необходимо дабавить в конец запроса &expand=images&limit=100
при
создании, получении или обновлении товара.
Запрос на получение Товара с указанным id.
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004&expand=images&limit=100"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
Response 200 (application/json)
Успешный запрос. Результат - JSON представление запрошенного Товара с изображениями.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "b8b74698-9128-11e6-8a84-bae500000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/b905bfb0-9128-11e6-8a84-bae50000002a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/b8ba0d3f-9128-11e6-8a84-bae500000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2016-10-19 14:25:28" ,
"name" : "simplegood" ,
"code" : "00006" ,
"externalCode" : "0bmPIvHxgEDlNIZrZ6GLt2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images/f2728180-6afd-4d37-8a13-f3b48069bbb6" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
},
"title" : "birdimage" ,
"filename" : "birdimage.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:24.567" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6?miniature=true" ,
"type" : "image" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/ebb10350-0272-45db-9d33-ca5a01fd5543/t.png" ,
"type" : "image" ,
"mediaType" : "image/png"
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images/933e41ac-1946-4bf0-9b21-51f2051f3e9f" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f"
},
"title" : "birdimage1" ,
"filename" : "birdimage1.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:25.047" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f?miniature=true" ,
"type" : "image" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/c960c879-8128-4511-addf-b933f37dc0d4/t.png" ,
"type" : "image" ,
"mediaType" : "image/png"
}
}
]
},
"minPrice" : {
"value" : 500.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/10772c12-36e7-11e7-8a7f-40d000000097" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0
},
"weight" : 0 ,
"volume" : 0 ,
"barcodes" : [
{
"ean13" : "2000000000107"
}
],
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Теперь рассмотрим другой вариант работы с изображениями. Предположим, что есть товар, и нужно обновить его изображения.
Для этого можно воспользоваться эндпоинтом для работы с изображениями товаров.
Запрос на обновление изображений у товара
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '[
{
"filename": "birdimage.png",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images/933e41ac-1946-4bf0-9b21-51f2051f3e9f",
"type": "image",
"mediaType": "application/json",
"downloadHref": "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f"
}
}
]'
Ответ - обновленный список изображений товара
Показать Свернуть
[
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images/f2728180-6afd-4d37-8a13-f3b48069bbb6" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
},
"title" : "birdimage" ,
"filename" : "birdimage.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:24.567" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6?miniature=true" ,
"type" : "image" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/ebb10350-0272-45db-9d33-ca5a01fd5543/t.png" ,
"type" : "image" ,
"mediaType" : "image/png"
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images/933e41ac-1946-4bf0-9b21-51f2051f3e9f" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f"
},
"title" : "birdimage1" ,
"filename" : "birdimage1.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:25.047" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f?miniature=true" ,
"type" : "image" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/c960c879-8128-4511-addf-b933f37dc0d4/t.png" ,
"type" : "image" ,
"mediaType" : "image/png"
}
}
]
Подробнее про работу с изображениями можно прочитать
тут .
Работа с Файлами в Документах, Номенклатуре и Контрагентах
Для расширенного описания и дополнения сущностей информацией, в сервисе МойСклад есть возможность работы с
Файлами в
Документах ,
Номенклатуре (Товары ,
Комплекты ,
Улуги ,
Модификации ),
Задачах и
Контрагентах .
Файлы можно прикрепить к сущностям и запросить их в любой удобный момент.
Информация по файлам выводится вместе с json представлением сущности, к которой относится данный файл. Для получения
файла необходимо использовать ссылку из описания json представления файла. Подробнее про Файлы и работу с ними можно
прочитать в разделе Файлы .
Иногда для описания товара требуется, помимо указания полей, приложить какой-нибудь файл, например сертификат на данный
товар или инструкцию по применению. Удобнее всего такие файлы держать рядом с описанием товара, к которому они
относятся. Для этого можно воспользоваться новой
функциональностью - работа с Файлами .
Например, нужно создать товар и прикрепить к нему инструкцию. Это можно сделать несколькими способами: через интерфейс
сайта https://www.moysklad.ru или используя JSON API.
В сервисе МойСклад добавить, удалить или отредактировать список файлов товара можно через
окно Карточки товара
.
Для добавления файла через JSON API нужно задать поля filename
и content
, соответствующие названию и содержанию файла,
закодированному в Base64, соответственно.
Если нужно добавить или дублировать уже существующей файл, то можно указать его meta
.
Запрос на создание товара с двумя прикрепленными файлами
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"name": "simplegood",
"files": [
{
"filename": "description.png",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
},
{
"filename": "additional_description.txt",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
}
]
}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление созданного Товара с изображениями.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "b8b74698-9128-11e6-8a84-bae500000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/b905bfb0-9128-11e6-8a84-bae50000002a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/b8ba0d3f-9128-11e6-8a84-bae500000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2016-10-19 14:25:28" ,
"name" : "simplegood" ,
"code" : "00006" ,
"externalCode" : "0bmPIvHxgEDlNIZrZ6GLt2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minprice" : {
"value" : 500.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/10772c12-36e7-11e7-8a7f-40d000000097" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0
},
"weight" : 0 ,
"volume" : 0 ,
"barcodes" : [
{
"ean13" : "2000000000107"
}
],
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED" ,
"files" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
}
}
}
Стоит заметить, что в ответе нет перечисления всех файлов, а лишь указана meta
для коллекции. Чтобы получить
список файлов в рамках товара необходимо добавить в конец запроса &expand=files&limit=100
при
создании, получении или обновлении товара.
Запрос на получение Товара с указанным id.
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004&expand=files&limit=100"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
Response 200 (application/json)
Успешный запрос. Результат - JSON представление запрошенного Товара с изображениями.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=69bcd8fd-d16f-11ea-ac12-000d000000ce"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "15777764-d16e-11ea-ac12-000c00000000" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/15dc9854-d16e-11ea-ac12-000d00000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=15dc9854-d16e-11ea-ac12-000d00000034"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/157890bb-d16e-11ea-ac12-000c00000001" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2020-07-29 10:45:03.364" ,
"name" : "Тестовый товар" ,
"code" : "00002" ,
"externalCode" : "QZ6OAxoMhaYyyE-yJp5pF0" ,
"archived" : false ,
"pathName" : "" ,
"uom" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/19f1edc0-fc42-4001-94cb-c9ec9c62ec10" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/uom/metadata" ,
"type" : "uom" ,
"mediaType" : "application/json"
}
},
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/69bcf5e7-d16f-11ea-ac12-000d000000d1/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 0 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/160cd290-d16e-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=160cd290-d16e-11ea-ac12-000d00000077"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/160cd290-d16e-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=160cd290-d16e-11ea-ac12-000d00000077"
}
},
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/1648fb5e-d16e-11ea-ac12-000d00000078" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "1648fb5e-d16e-11ea-ac12-000d00000078" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/160cd290-d16e-11ea-ac12-000d00000077" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#currency/edit?id=160cd290-d16e-11ea-ac12-000d00000077"
}
}
},
"barcodes" : [
{
"ean13" : "2000000000015"
}
],
"attributes" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/48b71254-d16f-11ea-ac12-000d000000c4" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "48b71254-d16f-11ea-ac12-000d000000c4" ,
"name" : "Тестовый справочник товар" ,
"type" : "product" ,
"value" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/5fc90499-d16f-11ea-ac12-000d000000c9" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#good/edit?id=5fc8840e-d16f-11ea-ac12-000d000000c7"
},
"name" : "ТОвар в справочнике"
}
}
],
"paymentItemType" : "GOOD" ,
"discountProhibited" : false ,
"weight" : 0.0 ,
"volume" : 0.0 ,
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED" ,
"files" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files/f2728180-6afd-4d37-8a13-f3b48069bbb6" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
},
"title" : "description" ,
"filename" : "description.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:24.567" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6?miniature=true" ,
"type" : "files" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/ebb10350-0272-45db-9d33-ca5a01fd5543/t.png" ,
"type" : "files" ,
"mediaType" : "image/png"
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files/933e41ac-1946-4bf0-9b21-51f2051f3e9f" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/933e41ac-1946-4bf0-9b21-51f2051f3e9f"
},
"title" : "additional_description" ,
"filename" : "additional_description.txt" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:25.047" ,
"createdBy" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/69f5683e-a49b-11ea-ac15-000e000000cf" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=69f5683e-a49b-11ea-ac15-000e000000cf"
}
}
}
]
}
}
Теперь рассмотрим другой вариант работы с файлами в Товарах. Предположим, со временем понадобилось обновить список
файлов для Товара. Например устарела инструкция и нужно
удалить старую и прикрепить новую. Это можно сделать через сервис МойСклад, как было указано ранее или воспользоваться
средствами JSON API.
Запрос на обновление списка файлов у Товара
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '[
{
"filename": "new_instruction.txt",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
},
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files/f2728180-6afd-4d37-8a13-f3b48069bbb6",
"type": "files",
"mediaType": "application/json",
"downloadHref": "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
}
]'
Ответ - обновленный список файлов Товара
Показать Свернуть
[
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files/f2728180-6afd-4d37-8a13-f3b48069bbb6" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
},
"title" : "new_instruction" ,
"filename" : "new_instruction.txt" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:24.567" ,
"createdBy" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/69f5683e-a49b-11ea-ac15-000e000000cf" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=69f5683e-a49b-11ea-ac15-000e000000cf"
}
}
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/files/f2728180-6afd-4d37-8a13-f3b48069bbb6" ,
"type" : "files" ,
"mediaType" : "application/json" ,
"downloadHref" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
},
"title" : "description" ,
"filename" : "description.png" ,
"size" : 14052 ,
"updated" : "2019-01-24 16:55:24.567" ,
"miniature" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6?miniature=true" ,
"type" : "files" ,
"mediaType" : "image/png" ,
"downloadHref" : "https://miniature-prod.moysklad.ru/miniature/79b17fec-2f08-11eb-0a80-052200009a8a/documentminiature/7129822c-2409-417c-977f-31a1e889039a"
},
"tiny" : {
"href" : "https://online.moysklad.ru/static/tinyimage/f2aab4d2-1fd3-11e9-ac12-000800000001/tinyimage/ebb10350-0272-45db-9d33-ca5a01fd5543/t.png" ,
"type" : "files" ,
"mediaType" : "image/png"
}
}
]
Как видно из примера, одним запросом был изменен полный список файлов для Товара. На одновременное добавление и изменение
списка файлов через JSON API существует ограничение в 10 элементов. Подробнее описание приведено в разделе
Файлы .
Для того, чтобы посмотреть файл, прикрепленный к сущности, его необходимо скачать. Это можно сделать используя ссылку,
указанную в downloadHref
в meta
файла.
Пример запроса на получения Файла Товара
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/download/f2728180-6afd-4d37-8a13-f3b48069bbb6"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
Ответ придет со статусом 302 (Found), где в заголовке ответа в Location
будет указанна ссылка на скачивание. Важно
учитывать то, что переход по данной ссылке уже не требуется заголовок Authorization
.
Работа со Штрихкодами
В JSON API появилась возможность работать с различными штрихкодами в товарах, комплектах, услугах, модификациях и
упаковках товаров. Поддерживается работа следующих типов штрихкодов:
ean13
ean8
code128
gtn
upc
Штрихкоды предоставляют удобный способ идентификации и работы с номенклатурой.
Предположим нужно продавать товар и для удобства его поиска в системе был куплен сканер штрихкодов. После покупки
сканера встает задача добавления штрихкодов к номенклатуре. Рассмотрим как это можно сделать на примере товара.
Создание товара со штрихкодом
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/product"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"name": "good",
"barcodes": [
{
"ean8": "20000000"
},
{
"ean13": "2000000000000"
},
{
"code128": "code128 barcode"
},
{
"gtin": "00000000000130"
},
{
"upc": "400000000015"
}
]
}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление созданного Товара со штрихкодами.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "b8b74698-9128-11e6-8a84-bae500000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/b905bfb0-9128-11e6-8a84-bae50000002a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/b8ba0d3f-9128-11e6-8a84-bae500000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2016-10-19 14:25:28" ,
"name" : "good" ,
"code" : "00006" ,
"externalCode" : "0bmPIvHxgEDlNIZrZ6GLt2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minprice" : {
"value" : 500.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/10772c12-36e7-11e7-8a7f-40d000000097" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0
},
"weight" : 0 ,
"volume" : 0 ,
"barcodes" : [
{
"ean8" : "20000000"
},
{
"ean13" : "2000000000000"
},
{
"code128" : "code128 barcode"
},
{
"gtin" : "00000000000130"
},
{
"upc" : "400000000015"
}
],
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
Обновление штрихкодов у товаров
Показать Свернуть
curl -X PUT
"https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"barcodes": [
{
"ean8": "20000001"
},
{
"ean13": "2000000000001"
},
{
"code128": "code128 barcode 1"
},
{
"gtin": "00000000000131"
},
{
"upc": "400000000015"
}
]
}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление обновленного Товара со штрихкодами.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"id" : "bd1c0a3e-95ee-11e6-8a84-bae500000004" ,
"accountId" : "b8b74698-9128-11e6-8a84-bae500000001" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/b905bfb0-9128-11e6-8a84-bae50000002a" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"shared" : true ,
"group" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/group/b8ba0d3f-9128-11e6-8a84-bae500000002" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/group/metadata" ,
"type" : "group" ,
"mediaType" : "application/json"
}
},
"updated" : "2016-10-19 14:25:28" ,
"name" : "good" ,
"code" : "00006" ,
"externalCode" : "0bmPIvHxgEDlNIZrZ6GLt2" ,
"archived" : false ,
"pathName" : "" ,
"images" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/bd1c0a3e-95ee-11e6-8a84-bae500000004/images" ,
"type" : "image" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
}
},
"minprice" : {
"value" : 500.0 ,
"currency" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/10772c12-36e7-11e7-8a7f-40d000000097" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/currency/metadata" ,
"type" : "currency" ,
"mediaType" : "application/json"
}
}
},
"salePrices" : [
{
"value" : 0.0 ,
"priceType" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/companysettings/pricetype/672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"type" : "pricetype" ,
"mediaType" : "application/json"
},
"id" : "672559f1-cbf3-11e1-9eb9-889ffa6f49fd" ,
"name" : "Цена продажи" ,
"externalCode" : "cbcf493b-55bc-11d9-848a-00112f43529a"
}
}
],
"buyPrice" : {
"value" : 0.0
},
"weight" : 0 ,
"volume" : 0 ,
"barcodes" : [
{
"ean8" : "20000001"
},
{
"ean13" : "2000000000001"
},
{
"code128" : "code128 barcode 1"
},
{
"gtin" : "00000000000131"
},
{
"upc" : "400000000016"
}
],
"variantsCount" : 0 ,
"isSerialTrackable" : false ,
"trackingType" : "NOT_TRACKED"
}
В случае, если штрихкоды больше не нужно использовать для номенклатуры, достаточно обновить товар, указав пустой список
штрихкодов.
Работа с характеристиками в Модификациях
Предположим, что имеется магазин по продаже вещей. Ассортимент в магазине обширный и нужно как-то его описать. Сначала
разделение было по типам: футболки, джинсы и брюки. Но имеется множество различных футболок, джинс и брюк. Они
имеют различные параметры: размер, цвет и т.д. Их нужно как-то различать в системе, чтобы продавать их как
отдельные товары. Модификации смогут решить данную проблему.
По сути модификация - это товар со специфичными характеристиками, такими как цвет, вес, размер и так далее. Подробнее
про работу с модификациями можно прочитать
тут .
Прежде чем добавлять новые или использовать старые характеристики модификации нужно понять, какие уже
были созданы и используются.
Запрос на получение характеристик модификаций
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
Response 200 (application/json)
Успешный запрос. Результат - JSON представление метаданных модификации с характеристиками.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata" ,
"mediaType" : "application/json"
},
"characteristics" : [
{
"id" : "fd68704f-f67d-11e5-8a84-bae50000006b" ,
"name" : "feature" ,
"type" : "string" ,
"required" : false
},
{
"id" : "66bcdde0-f7d2-11e5-8a84-bae500000072" ,
"name" : "Вес" ,
"type" : "string" ,
"required" : false
},
{
"id" : "66be57d2-f7d2-11e5-8a84-bae500000073" ,
"name" : "Размер" ,
"type" : "string" ,
"required" : false
},
{
"id" : "daec003b-fa34-11e5-9464-e4de0000006c" ,
"name" : "Мода" ,
"type" : "string" ,
"required" : false
}
]
}
После того, как стало понятно, что каких-то характеристик не хватает, чтобы описать товар, в JSON API имеется возможность
добавить недостающие характеристики. Это можно сделать через отдельный эндпоинт для работы с характеристиками.
Создание одной характеристики.
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata/characteristics"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"name": "Размер"
}'
Response 200 (application/json)
Успешный запрос. Результат - JSON представление созданной Характеристики.
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata/characteristics/6262b270-60c3-11e7-6adb-ede50000000d" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "6262b270-60c3-11e7-6adb-ede50000000d" ,
"name" : "Размер" ,
"type" : "string" ,
"required" : false
}
Пример создания нескольких Характеристик
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata/characteristics"
-H "Authorization: Basic <Credentials>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '[
{
"name": "Размер"
},
{
"name": "Цвет"
}
]'
Response 200 (application/json)
Успешный запрос. Результат - массив JSON представлений созданных Характеристик.
Показать Свернуть
[
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata/characteristics/b55d2ddf-60c3-11e7-6adb-ede500000010" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "b55d2ddf-60c3-11e7-6adb-ede500000010" ,
"name" : "Размер" ,
"type" : "string" ,
"required" : false
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/variant/metadata/characteristics/b56215dc-60c3-11e7-6adb-ede500000013" ,
"type" : "attributemetadata" ,
"mediaType" : "application/json"
},
"id" : "b56215dc-60c3-11e7-6adb-ede500000013" ,
"name" : "Цвет" ,
"type" : "string" ,
"required" : false
}
]
После того как нужные характеристики были созданы, можно создавать модификации с данными характеристиками.
Работа с асинхронным обменом
Асинхронный обмен предоставляет возможность получать результаты длительных запросов асинхронно,
не используя многократные запросы с листанием.
В случае большого объема выгружаемых данных использование асинхронного обмена позволяет получить тот же результат,
затрачивая меньше времени в блокировках.
Список запросов, для которых реализована возможность работы в асинхронном режиме, вы можете посмотреть в документации .
Рассмотрим преимущество работы с JSON API в асинхронном режиме на некотором примере.
Допустим, требуется получить информацию по остаткам всей номенклатуры, чтобы пополнить резервы в магазинах.
При большом количестве номенклатуры и складов, ранее необходимо было запрашивать отчет остатков по складам
несколько раз, указывая параметр offset , чтобы получить отчеты по всем позициям. Так как построение объемных отчетов занимает
некоторое время, вплоть до 5 минут, сбор всей информации может занять продолжительное время.
Кроме того, каждый отдельный запрос вынуждает держать открытое соединение в ожидании результата.
Асинхронный обмен предлагает иную последовательность действий.
1. Создание асинхронной задачи
Запрос на создание Асинхронной задачи
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
Ответ
Показать Свернуть
Без тела
Заголовки:
Location: https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089/result
Content-Location: https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089
Делаем запрос остатков с параметром async=true
. Параметры строки запроса limit и offset указывать не нужно, так как отчет будет построен полностью.
В заголовке ответа Location будет ссылка на получение результата асинхронной задачи, а в заголовке Сontent-Location хранится ссылка на получение статуса выполнения асинхронной задачи.
Пока задачи находятся в процессе выполнения, создание новых асинхронных задач будет ограничено текущими лимитами на очередь
асинхронных задач и при повторении запроса будет ошибка 61002:
Ошибка при создании асинхронной задачи: превышено ограничение на количество одновременно выполняемых асинхронных операций.
2. Опрос состояния асинхронной задачи
Опрос состояния асинхронной задачи
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
Ответ в случае, когда задача находится в процессе выполнения
Показать Свернуть
{
"id" : "498b8673-0308-11e6-9464-e4de00000089" ,
"accountId" : "84e60e93-f504-11e5-8a84-bae500000008" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/98fa7086-8aa1-11e8-7210-075e0000002c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=98fa7086-8aa1-11e8-7210-075e0000002c"
}
},
"state" : "PROCESSING" ,
"request" : "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true"
}
Ответ в случае, когда задача готова
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089" ,
"type" : "async" ,
"mediaType" : "application/json"
},
"id" : "498b8673-0308-11e6-9464-e4de00000089" ,
"accountId" : "84e60e93-f504-11e5-8a84-bae500000008" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/98fa7086-8aa1-11e8-7210-075e0000002c" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=98fa7086-8aa1-11e8-7210-075e0000002c"
}
},
"state" : "DONE" ,
"request" : "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true" ,
"resultUrl" : "https://api.moysklad.ru/api/remap/1.2/async/f97aa1fb-2e58-11e6-8a84-bae500000002/result" ,
"deletionDate" : "2021-02-16 16:21:09"
}
Чтобы определить, когда асинхронная задача будет выполнена, необходимо опрашивать статус выполнения асинхронной задачи.
Это можно сделать, отправляя запросы на URL из заголовка Content-Location ответа на запрос создания задачи.
Если статус задачи (поле state ) имеет значение PROCESSING
, значит результат задачи еще не готов, и запрос на получение результата нужно повторить через некоторое время.
Как только статус задачи примет значение DONE
- результат задачи готов, и можно переходить к получению результата.
Запрос на получение Асинхронных задач с результатом
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/async?filter=state=done&deletionDate<2021-02-16 16:21:09"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
Ответ
Показать Свернуть
{
"context" : {
"employee" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/async?filter=state=done;deletionDate%3C2021-02-16%2016:21:09" ,
"type" : "async" ,
"mediaType" : "application/json" ,
"size" : 2 ,
"limit" : 1000 ,
"offset" : 0
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/async/baade4ee-a1d0-11eb-ac12-000b00000000" ,
"type" : "async" ,
"mediaType" : "application/json"
},
"id" : "baade4ee-a1d0-11eb-ac12-000b00000000" ,
"accountId" : "4f811ce5-983a-11eb-0a80-1d0d00000002" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/4fe188f9-983a-11eb-0a80-39d600000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=4fe188f9-983a-11eb-0a80-39d600000034"
}
},
"state" : "DONE" ,
"request" : "https://api.moysklad.ru/api/remap/1.2/report/stock/all?async=true" ,
"resultUrl" : "https://api.moysklad.ru/api/remap/1.2/async/baade4ee-a1d0-11eb-ac12-000b00000000/result" ,
"deletionDate" : "2021-04-16 16:07:13.027"
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/async/d2bfbf9f-a1e0-11eb-ac12-000b00000000" ,
"type" : "async" ,
"mediaType" : "application/json"
},
"id" : "d2bfbf9f-a1e0-11eb-ac12-000b00000000" ,
"accountId" : "4f811ce5-983a-11eb-0a80-1d0d00000002" ,
"owner" : {
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/4fe188f9-983a-11eb-0a80-39d600000034" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/employee/metadata" ,
"type" : "employee" ,
"mediaType" : "application/json" ,
"uuidHref" : "https://online.moysklad.ru/app/#employee/edit?id=4fe188f9-983a-11eb-0a80-39d600000034"
}
},
"state" : "DONE" ,
"request" : "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true" ,
"resultUrl" : "https://api.moysklad.ru/api/remap/1.2/async/d2bfbf9f-a1e0-11eb-ac12-000b00000000/result" ,
"deletionDate" : "2021-04-16 16:07:19.301"
}
]
}
Также можно следить за статусами выполнения нескольких задач. Для этого можно отправлять запросы на ресурс получения статусов асинхронных задач.
Допустим, мы хотим получить все асинхронные задачи, для которых доступен результат. Для этого укажем фильтр на статус задачи со значением DONE
и на время удаления меньше текущего времени.
3. Получение результата задачи
Запрос на получение результата Асинхронной задачи
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089/result"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
Ответ
Показать Свернуть
302 FOUND
Без тела
Заголовки:
Location: https://123.selcdn.ru/batch-prod/batch/002b9772-8583-11eb-ac12-000c00000001/apiasynctaskresult/4d363a5f-ae72-4a14-9951-7038a4a67060?temp_url_sig= a24e12250f7428c2cc212362cebc97ed43333491&temp_url_expires= 1616516805&filename= asynctask_d1746c6c-8bf3-11eb-ac12-000b00000001_result.json
Пример полученного отчета
Показать Свернуть
{
"context" : {
"employee" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/context/employee" ,
"type" : "employee" ,
"mediaType" : "application/json"
}
},
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true" ,
"type" : "stockbystore" ,
"mediaType" : "application/json" ,
"size" : 2135
},
"rows" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/c02e3a5c-007e-11e6-9464-e4de00000006?expand=supplier" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"stockByStore" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/86c857d6-0302-11e6-9464-e4de00000072" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json"
},
"name" : "Не основной склад" ,
"stock" : -30 ,
"reserve" : 0 ,
"inTransit" : 0
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/850ee995-f504-11e5-8a84-bae500000160" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json"
},
"name" : "Основной склад" ,
"stock" : 0 ,
"reserve" : 0 ,
"inTransit" : 0
}
]
},
...
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/product/cc99c055-fa34-11e5-9464-e4de00000069?expand=supplier" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata" ,
"type" : "product" ,
"mediaType" : "application/json"
},
"stockByStore" : [
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/86c857d6-0302-11e6-9464-e4de00000072" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json"
},
"name" : "Не основной склад" ,
"stock" : 0 ,
"reserve" : 0 ,
"inTransit" : 0
},
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/store/850ee995-f504-11e5-8a84-bae500000160" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata" ,
"type" : "store" ,
"mediaType" : "application/json"
},
"name" : "Основной склад" ,
"stock" : 4 ,
"reserve" : 0 ,
"inTransit" : 0
}
]
}
]
}
Когда статус задачи принимает значение DONE
, запрос на получение статуса выполнения задачи содержит дополнительно 2 поля:
resultUrl - URL, по которому доступен результат выполненной задачи.
Совпадает с URL из заголовка Location ответа на запрос создания задачи.
deletionDate - дата, после которой результат задачи станет недоступен. Время жизни результата выполнения задачи составляет 1 час.
Результат запроса по URL из поля resultUrl является перенаправлением со статусом 302 FOUND
, и в заголовке Location находится ссылка на файл результата задачи.
Большинство HTTP-клиентов выполняют перенаправление автоматически. С момента получения ссылка действительна 5 минут.
Если ваш клиент не выполняет перенаправления автоматически, то для получения требуемого отчета остается отправить GET запрос на URL из заголовка Location .
Полученный отчет имеет незначительные отличия от синхронного варианта: meta не содержит полей limit и offset , а массив rows не ограничивается 1000 элементов.
Если статус задачи имеет значение API_ERROR
, то в json ответе на запрос получения результата задачи будет указана ошибка ,
аналогичная той, которую вернул синхронный вызов ресурса.
Пример запроса на получение результата Асинхронной задачи со статусом API_ERROR
Показать Свернуть
curl -X GET
"https://api.moysklad.ru/api/remap/1.2/async/498b8673-0308-11e6-9464-e4de00000089/result"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
Пример результата задачи, который содержит описание ошибки
Response 403 Forbidden
Показать Свернуть
{
"errors" : [
{
"error" : "Доступ запрещен: у вас нет прав на просмотр данного объекта" ,
"code" : 1016
}
]
}
Если в процессе выполнения задачи что-то пошло не так, например, у пользователя нет доступа к отчету или не указаны обязательные заголовки,
то задача будет помечена как успешно выполненная, а результат будет содержать текст с описанием ошибки.
4. Настройка вебхука на завершение выполнения Асинхронной задачи
Для того, чтобы не опрашивать эндпоинт статуса выполняемой асинхронной задачи можно настроить вебхук на оповещение, когда задача будет завершена.
Как и для обычных вебхуков, необходимо задать:
тип сущности entityType
, в нашем случае это будет async
действие action
, на которое должен сработать вебхук, в данном случае это будет PROCESSED
и адрес url
куда будет отправлено сообщение при срабатывании вебхука
Пример запроса на создание вебхука на событие выполнения Асинхронной задачи
Показать Свернуть
curl -X POST
"https://api.moysklad.ru/api/remap/1.2/entity/webhook"
-H "Authorization: Bearer <Access-Token>"
-H "Accept-Encoding: gzip"
-H "Content-Type: application/json"
-d '{
"url": "http://some_url.ru",
"action": "PROCESSED",
"entityType": "async"
}'
Response 200
Пример полученного отчета
Показать Свернуть
{
"meta" : {
"href" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/c6010bf9-a683-11eb-ac12-000900000001" ,
"metadataHref" : "https://api.moysklad.ru/api/remap/1.2/entity/webhook/metadata" ,
"type" : "webhook" ,
"mediaType" : "application/json"
},
"id" : "c6010bf9-a683-11eb-ac12-000900000001" ,
"accountId" : "6c240ac7-a683-11eb-ac12-000c00000000" ,
"entityType" : "async" ,
"url" : "http://some_url.ru" ,
"method" : "POST" ,
"enabled" : true ,
"action" : "PROCESSED"
}
На этом настройка оповещения о завершении выполнения асинхронной закончена. Теперь вам будут приходить вебхуки,
на указанный адрес, каждый раз, когда завершается выполнение асинхронной задачи. Таким образом вам не понадобится запрашивать
состояние асинхронной задачи, до тех пор, пока не придет вебхук.