PHPackages                             ktscript/moysklad - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. ktscript/moysklad

ActiveLibrary[HTTP &amp; Networking](/categories/http)

ktscript/moysklad
=================

PHP SDK Moysklad API 1.2 AddOn

v1.3(1y ago)241MITPHPPHP &gt;=7.3

Since Sep 8Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ktscript/moysklad)[ Packagist](https://packagist.org/packages/ktscript/moysklad)[ Docs](https://github.com/ktscript/moysklad)[ RSS](/packages/ktscript-moysklad/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (4)Versions (11)Used By (0)

PHP SDK Moysklad API 1.2 AddOn
==============================

[](#php-sdk-moysklad-api-12-addon)

---

Введение:
---------

[](#введение)

Данная библиотека предназначена для удобной работы с API Remap версии 1.2 МоегоСклада. Она содержит набор функций, позволяющий совершать базовые операции над сущностями (создание, чтение, изменение, удаление).

Установка
---------

[](#установка)

- `composer require ktscript/moysklad`
- `composer dump-autoload`

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

[](#пример-работы)

### 1. Начало работы

[](#1-начало-работы)

Основной класс, посредством которого осуществляется работа с SDK: `MoySklad\ApiClient`.

Для того, чтобы начать работу, требуется создать экземпляр этого класса, передав в конструктор поля:

- адрес хоста API (`online.moysklad.ru`)
- флаг принудительного соединения по https
- логин в формате \[имя пользователя\]@\[название компании\] и пароль или готовый token для доступа к API:

```
use MoySklad\ApiClient;

$api = new ApiClient('host', true, [
    'login' => 'your_login',
    'password' => 'your_password',
]);

//or

$api = new ApiClient('host', true, [
   'token' => 'your_token',
]);
```

### 2. Работа с сущностями

[](#2-работа-с-сущностями)

#### 2.1. Получение сущностей

[](#21-получение-сущностей)

Для доступа к эндпоинтам отдельных сущностей используется метод `ApiClient->entity()`, который возвращает базовый клиент для сущностей. Этот объект позволяет получить клиент для работы с конкретной сущностью. Например, чтобы получить список всех контрагентов или одного контрагента, достаточно выполнить следующий код:

```
$counterpartyList = $api->entity()->counterparty()->getList();
$counterparty = $api->entity()->counterparty()->get('id');
```

Список возможных фильтров:

- EntityFilter - фильтр по сущности, можно назначить нескольким полям
- Limit - лимит для пагинации, максимальное значение 1000
- Offset - позиция начала отображения
- Order - сортировка, может быть назначена по нескольким полям
- Search - фильтр поиска, который принимает только значение
- StandardFilter - стандартный фильтр поле|значение, можно назначить нескольким полям Работа с фильтрами:

```
use MoySklad\Util\Param\Limit;
use MoySklad\Util\Param\Offset;
use MoySklad\Util\Param\Order;
use MoySklad\Util\Param\Search;
use MoySklad\Util\Param\EntityFilter;
use MoySklad\Util\Param\StandardFilter;

$params = [
    Limit::eq(50),
    Offset::eq(10),
    Order::asc('name'),
    Order::desc('date'),
    Search::eq('some interesting thing'),
    EntityFilter::eq('product', $product),
    EntityFilter::neq('pricetype', $pricetype),
    StandardFilter::eq('region_id', $regionId),
    StandardFilter::gte('created', $createdDate),
    StandardFilter::like('name', 'ame'),
];

$counterpartyList = $api->entity()->counterparty()->getList($params);
```

Массив фильтров передается аргументом при вызове методов клиентов сущностей, там где это возможно.

#### 2.2. Создание сущностей

[](#22-создание-сущностей)

Чтобы отправить запрос к API на создание сущности, достаточно создать объект класса, заполнить необходимые поля, и затем при помощи соответствующего клиента вызвать метод `create()`, передав в качестве параметра созданный объект:

```
$product = new Product();
$product->name = 'Новый продукт';

$product = $api->entity()->product()->create($product);
```

После выполнения кода и при успешном создании вернется объект product, с заполенными полями, полученными из ответа API (`id`, `href` и др.).

#### 2.3. Изменение сущностей

[](#23-изменение-сущностей)

Для изменения уже созданной сущности используются метод `editById()` или `editByEntity()` клиента сущности:

```
$product->name = 'new name';
$product = $api->entity()->product()->update($product);
```

#### 2.4. Вложенные сущности

[](#24-вложенные-сущности)

Работа с вложенными сущностями производится при помощи специальных методов клиентов сущностей. Например, метод получения аккаунтов или аккаунта контрагента:

```
$counterpartyAccountsList = $api->entity()->counterparty()->getAccountsList('counterparty_id');

$counterpartyAccount = $api->entity()->counterparty()->getAccount('counterparty_id', 'account_id');
```

Полностью аналогично производится работа с остальными методами.

В некоторых сущностях имеются свойства - вложенные сущности (например у контрагента есть полный адрес), такие вложенные сущности, как полный адрес, при ответе с API заполняются только метаданными, для того чтобы заполнить ее основные свойства необходимо вызвать метод `fetch()`:

```
$counterparty = $api->entity()->counterparty()->get('id');
$addressCity = $counterparty->legalAddressFull->city; // null

$counterparty->legalAddressFull->fetch();
$addressCity = $counterparty->legalAddressFull->city; // название города
```

Метод `fetch()` есть у каждой сущности, его можно использовать и для простого обновления сущности.

Дальнейшее знакомство
---------------------

[](#дальнейшее-знакомство)

Список доступных методов и сущностей, а также накладываемые ограничения по работе с API можно узнать в [Moysklad API 1.2 Doc](https://dev.moysklad.ru/doc/api/remap/1.2/)

Перечень изменений :
--------------------

[](#перечень-изменений-)

2022-09-08: Добавлена возможность работы с Заявками поставщика (purchaseorder) пример работы:

```
$api->entity()->purchaseorder()->getList([StandardFilter::eq('name', 'my_name')]);
```

2022-09-20: Добавлена возможность выборки единого варианта, метод first() пример работы:

```
$api->entity()->purchaseorder()->first(); //берет первый из возвращаемого списка
$api->entity()->purchaseorder()->first('name', 'my_name'); //берет первый из фильтрованного возвращаемого списка
```

где name - полe по которому осуществляется выборка, можно указывать любые желаемые (code, id и т.д.)

-Заменен вариант обращения по части заявок поставщику, productEnter() заменен на enter(), чтобы логика не отличалась от документации Мой Склад.

2022-09-24: -Устранены проблемы срабатывания исключания jms на пустые поля.

2022-09-25: Добавлен метод fill() пример работы:

```
$productSupply = new ProductSupply();
$productSupply->fill([
    'name' => 'my_name',
    'organization' => $organization,
    'store' => $store,
    'agent' => $counterparty,
    'positions' => $positionsList,
]);
```

2022-09-26: Добавлена сущность supply (приемка) пример работы:

```
$supply = $api->entity()->supply()->create($productSupply);
```

2023-05-14: Добавлены эндпоинты

2023-12-20: актуализировано api

2024-04-26: Добавлена сущность demand (отгрузка) пример работы:

```
$demand = $api->entity()->demand()->create($customerOrder);
```

2024-06-25: актуализировано api в части авторизации

2024-07-17: добавлены сущности Processing, ProcessingMaterial, ProcessingPlan, ProcessingPlanFolder, ProcessingPlanMaterial, ProcessingPlanProduct, ProcessingPlanStage, ProcessingProcess, ProductionTask, ProductionTaskPosition, ProductionTaskProduct и клиенты для работы с ними

2024-07-17: доработан сериализатор

2024-07-23: добавлены сущности ProcessingOrder, ProcessingOrderPosition и клиенты для работы с ними

2025-02-12 отлажена работа отдельных компонентов

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance43

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~98 days

Recently: every ~209 days

Total

10

Last Release

458d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7bb5f354ad974c6c81330060224f4da7488fedea4e1851e6da2a0e26e72f9fd6?d=identicon)[ktscript](/maintainers/ktscript)

---

Top Contributors

[![ktscript](https://avatars.githubusercontent.com/u/63599041?v=4)](https://github.com/ktscript "ktscript (22 commits)")

---

Tags

apirestmoysklad

### Embed Badge

![Health badge](/badges/ktscript-moysklad/health.svg)

```
[![Health](https://phpackages.com/badges/ktscript-moysklad/health.svg)](https://phpackages.com/packages/ktscript-moysklad)
```

###  Alternatives

[xeroapi/xero-php-oauth2

Xero official PHP SDK for oAuth2 generated with OpenAPI spec 3

1054.3M14](/packages/xeroapi-xero-php-oauth2)[cybercog/youtrack-rest-php

YouTrack REST API PHP Client.

37149.2k3](/packages/cybercog-youtrack-rest-php)[onesignal/onesignal-php-api

A powerful way to send personalized messages at scale and build effective customer engagement strategies. Learn more at onesignal.com

34170.2k2](/packages/onesignal-onesignal-php-api)[ory/hydra-client

Documentation for all of Ory Hydra's APIs.

17435.9k](/packages/ory-hydra-client)[zenditplatform/zendit-php-sdk

PHP client for Zendit API

1204.3k](/packages/zenditplatform-zendit-php-sdk)[whatarmy/fedex-rest

New FedEx Rest API wrapper

2440.5k1](/packages/whatarmy-fedex-rest)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
