API
МойСклад предоставляет API для обмена данными с внешними системами. Обмен данными реализован при помощи веб-сервиса, передающего данные в формате XML.
Для ручного обмена данными в формате XMl в административное приложение сервиса включен специальный раздел - Импорт и экспорт данных.
Однако для полноценной интеграции с внешними источниками и потребителями данных необходим инструмент, не зависящий от ручных операций. МойСклад содержит такой инструмент - это служебный сервис обмена данными.
Доступ к сервису обмена данными открыт зарегистрированным пользователям сервиса МойСклад, обладающим соответствующими правами и подписанным на один из платных тарифов. У пользователей, получивших при подключении к МойСклад пробный доступ к стандартному тарифу, возможность использовать служебные сервисы обмеyа данными отсутствует. При необходимости эта возможность может быть включена по обращении в службу поддержки.
Сервис обмена данными содержит два компонента - службу экспорта данных и службу импорта данных.
Служба экспорта данных доступна по адресу:
https://online.moysklad.ru/exchange/xml/export
При обращении к службе экспорта обязательно должен быть указан параметр name, для которого могут быть указаны значения:
- Metadata - метаданные об объектах (определения атрибутов и пользовательских справочников)
- Templates - шаблоны печатных форм
- CustomEntity - Элементы пользовательских справочников
- Reason - Причины списания-оприходования
- Country - Страны
- Gtd - ГТД
- Currency - Валюты
- Uom - Единицы измерения
- GoodFolder - Папки справочника товаров
- Good - Товары
- Service - Услуги
- Goods (GoodFolder, Good, Service) - Справочник товаров и услуг (включает товары, услуги, папки)
- Thing - Серийные номера
- Consignment - Серии
- MyCompany - Моя компания и филиалы
- Agent - Папки справочника контрагентов
- Company - Компании
- Person - Частные лица
- Agents (Agent, Company, Person) - Справочник контрагентов
- Warehouse - Склады
- Project - Проекты
- Contract - Контракты
- ProcessingPlan - Технологические карты
- Dictionary (CustomEntity, Reason, Country, Gtd, Currency, Uom, Goods, Thing, Consignment, MyCompany, Agents, Warehouse, Project, Contract, ProcessingPlan) - словари
- PriceList - Прайс-листы
- Demand - Отгрузки
- Supply - Приемки
- Inventory - Инвентаризации
- Move - Перемещения
- Processing - Технологические операции
- InvoiceOut - Счета выданные
- InvoiceIn - Счета полученные
- Invoices (InvoiceIn, InvoiceOut) - Счета
- Loss - Списания
- Enter - Оприходывания
- CustomerOrder - Заказы клиентов
- PurchaseOrder - Заказы поставщикам
- Orders (CustomerOrder, PurchaseOrder) - Заказы
- PaymentIn - Входящий платеж
- PaymentOut - Исходящий платеж
- CashIn - Приходный кассовый ордер
- CashOut - Расходный кассовый ордер
- Finance (PaymentIn, PaymentOut, CashIn, CashOut) - Платежи
- Operation ((PriceList,Demand,Supply,Inventory,Move,Processing,Invoices,Loss,Enter,Orders,Finance)) - документы
- All - все данные компании
Опционально могут быть указаны параметры:
- type
- operationsFrom
- operationsTo
- updatedFrom
- updatedTo
Параметр type определяет тип выгружаемого файла:
- inline - данные выгружаются без сжатия
- zip - результат экспорта будет упакован zip
- gzip - результат экспорта будет упакован gzip
Параметры operationsFrom и operationsTo позволяют отфильтровать выгружаемые документы по их дате.
Параметры updatedFrom и updatedTo позволяют отфильтровать выгружаемые данные по дате их модификации.
Значения параметров operationsFrom, operationsTo, updatedFrom, updatedTo должны соответствовать формату:
yyyyMMddHHmmss
- yyyy - год
- MM - месяц года
- dd - день месяца
- HH - час суток (24-часовой)
- mm - минуты часа
- ss - секунды минуты
Пример обращения к сервису:
https://online.moysklad.ru/exchange/xml/export?name=Operation&type=gzip&updatedFrom=20090420000000
При обработке приведенного выше вызова сервиса будут выгружены все документы, обновленные позднее 00:00 20 апреля 2009 года.
Служба импорта данных доступна по адресу:
https://online.moysklad.ru/exchange/xml/import
Для импорта данных в формате XML необходимо послать по указанному адресу POST-запрос, указав для него параметр формы encoding со значением multipart/form-data и передав загружаемый файл как часть запроса. Результат импорта будет отображен как результат вызова сервиса.
Опционально могут быть указаны параметры:
Параметр resolveByCode. Если этот параметр указан при импорте, то будет использован механизм распознавания по коду. То есть если поиск существующего объекта в БД будет производиться не по идентификатору, а сначала по коду, и, если объект не найден, то по идентификатору.
При импорте новых и обновлении существующих данных файл с данными обрабатывается по следующим правилам:
- Если Вы не указываете идентификатор или указываете идентификатор, которого нет в базе, то будет создан новый объект.
- Если Вы указываете идентификатор существующего объекта, то объект будет обновлен.
- Для загрузки взаимосвязанных данных (например для загрузки папок и связанных с ними товаров) внутри файла импорта можно использовать "суррогатные" идентификаторы. То есть папка с таким идентификатором после загрузки будет содержать все те товары, для которых в атрибуте parentId будет указан идентификатор этой папки. Сам идентификатор при этом будет использован только при загрузке и будет заменен на новый по создании соответствующего объекта.
- Если в загружаемом узле XML есть узел version, то тогда при загрузке будет учтена версия объекта и при попытке загрузить объект с версией не совпадающей с существующей будет выдана ошибка.
- Если Вы работаете с несколькими филиалами, то с помощью узла company, указываемого для каждого объекта, вы можете манипулировать припиской этого объекта к соответствующему филиалу. В ином случае узел company можно опустить.
Описание формата файла XML на языке XSD Schema можно загрузить по адресу http://www.moysklad.ru/schema/exchange-1.2.0.xsd.