go-moysklad

0
README.md

GitHub Tag GitHub License GitHub commit activity GitHub last commit

go-moysklad (МойСклад)

SDK для работы с МойСклад JSON API 1.2

SDK находится в стадии разработки!

Некоторые методы могут отсутствовать или работать неправильно!

Подробная документация в процессе написания.

Установка

Требуемая версия go >= 1.21

go get -u gitverse.ru/arcsub/go-moysklad@HEAD

Особенности

Возвращаемые аргументы

Каждый запрос на создание/изменение/удаление возвращает 3 аргумента. Рассмотрим объявление функции

В примере выше нас интересуют возвращаемые аргументы:

(*T, *resty.Response, error)

  1. *T
    – указатель на сущность/документ, например *Product при вызове
    Create()
    (возвращает
    bool
    при вызове метода
    Delete()
    ).
  2. *resty.Response
    – ответ на запрос, содержащий *http.Response и некоторую другую информацию.
  3. error
    – ошибки, если они были. При возникновении ошибок от API МойСклад в качестве ошибки будет заполненная структура
    ApiErrors

Указатели

Поля структур сущностей и документов являются указателями.

  • Чтобы получить значение по указателю необходимо вызвать метод структуры
    GetFieldName()
    .
    • FieldName
      - наименование поля.

Например:

  • Чтобы установить значение необходимо передать значение в соответствующий метод
    SetFieldName(value)
    • FieldName
      - наименование поля
    • value
      - передаваемое значение.

Note

Методы

SetFieldName()
возвращают указатель на объект, что позволяет вызывать методы по цепочке.

Например:

  • Для безопасного разыменовывания указателя необходимо передать указатель в метод
    Deref()
  • Чтобы установить указатель на примитивное значение поля также существуют вспомогательные методы:
    • Bool()
      возвращает *bool
    • Int()
      возвращает *int
    • Uint()
      возвращает *uint64
    • Float()
      возвращает *float64
    • String()
      возвращает *string

Использование

Создание экземпляра клиента

Создание экземпляра клиента со своим http клиентом

Создание экземпляра клиента с resty клиентом

Аутентификация

Имеется два способа аутентификации.

  • С помощью токена. Метод клиента
    WithTokenAuth()
  • С помощью пары логин/пароль. Метод клиента
    WithBasicAuth()

Методы клиента

WithTimeout(timeout)

Установить необходимый таймаут для http клиента.

WithTokenAuth(token)

Получить простой клиент с авторизацией через токен.

WithBasicAuth(username, password)

Получить простой клиент с авторизацией через пару логин/пароль.

WithDisabledWebhookContent(value)

Временное отключение уведомлений вебхуков

Параметры запроса

Создать экземпляр для работы с параметрами запроса

Методы для работы с параметрами запроса

Количество элементов на странице

limit=val
Пример:

Смещение от первого элемента
offset=val

Пример:

Контекстный поиск
search=val

Пример:

Замена ссылок объектами

Пример:

Фильтрация по значению
key=value

Пример:

Строго больше
key>value

Пример:

Строго меньше
key<value

Пример:

Больше или равно
key=>value

Пример:

Меньше или равно
key<=value

Пример:

Не равно
key!=value

Пример:

Частичное совпадение (обычное подобие)
key~value

Пример:

Полное совпадение в начале значения (левое подобие)
key~=value

Пример:

Полное совпадение в конце значения (правое подобие)
key=~value

Пример:

Частичное совпадение не выводится
key!~value

Пример:

Фильтрация по удалённым документам
isDeleted=val

Пример:

Фильтрация по напечатанным документам
printed=val

Пример:

Фильтрация по опубликованным документам
published=val

Пример:

Фильтрация по архивным сущностям
archived=val

Пример:

Группировка выдачи
groupBy=val

Пример:

Применение сохранённого фильтра
namedFilter=href

Метод принимает указатель на сохранённый фильтр.

Пример:

Сортировка по умолчанию
order=fieldName

Пример:

Сортировка по возрастанию
order=fieldName,asc

Пример:

Сортировка по убыванию
order=fieldName,desc

Пример:

Остатки и себестоимость в позициях документов
fields=stock

Метод устанавливает лимит позиций в 100 единиц, а также применяет замену ссылок объектами для поля

positions

Пример:

Тип остатка
stockType=val

Используется в отчёте "Остатки"

Пример:

Интервал, с которым будет построен отчет
interval=val

Используется в отчётах

Пример:

Начало периода
momentFrom=val

Метод принимает

time.Time
Пример:

Конец периода
momentTo=val

Метод принимает

time.Time
Пример:

Сервисы

Для перехода к определённому сервису необходимо вызвать цепочку методов, аналогично пути запроса.

Пример: ProductService

Сервис для работы с товарами.

Относительный путь:

/entity/product
Цепочка вызовов от клиента будет выглядеть следующим образом:

Запрос по объекту
Meta

Если возникает необходимость точечно запросить информацию о сущности, имея только её

Meta
, можно использовать метод
FetchMeta
.

Чтобы использовать данный функционал необходимо точно знать, какой тип данных мы ожидаем получить в ответ.

Метод имеет следующую сигнатуру:

Пример:

Пример работы

Обратная связь

Буду рад видеть ваши идеи и предложения в Issues.