Поставщики
Поставщики компании: реквизиты, валюты расчётов и баланс взаиморасчётов по каждой валюте. Положительный баланс — наш долг поставщику, отрицательный — долг поставщика нам.
| Метод | Адрес | Назначение |
|---|---|---|
| PATCH | /company/supplier/supplier/{model}/start-balance | Задать начальный остаток |
| GET | /company/supplier/supplier | Список поставщиков |
| GET | /company/supplier/supplier/{model} | Поставщик |
| POST | /company/supplier/supplier | Создать поставщика |
| PUT | /company/supplier/supplier/{model} | Изменить поставщика |
| DELETE | /company/supplier/supplier/{model} | Удалить поставщика |
| DELETE | /company/supplier/supplier/{value}/restore | Восстановить поставщика |
Задать начальный остаток
/company/supplier/supplier/{model}/start-balanceЗадаёт или пересматривает начальный остаток поставщика по валютам (ключи — коды валют, значение со знаком: плюс — мы должны, минус — должен поставщик). Баланс меняется на разницу с прежним начальным остатком, а для валют расчётов в журнал добавляется строка opening_balance на эту разницу.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
start_balances | array | Да | |
start_balances[] | number | Нет | До 2 знаков после запятой. Не меньше -1000000000. Не больше 1000000000 |
{
"start_balances": {
"usd": 500,
"uzs": 1000
}
}curl -X PATCH "https://api.wasyt.uz/company/supplier/supplier/2/start-balance" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"start_balances":{"usd":500,"uzs":1000}}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Список поставщиков
/company/supplier/supplierПостраничный список поставщиков доступных компаний. with[]=balance добавляет долг по валютам в каждую строку и итог по всей выборке (debt_full_filtered_total); show[]=transactions_total — обороты за период filter[transactions_created_at] (по умолчанию текущий месяц) и текущий долг. format=excel отдаёт выгрузку.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Параметр | Описание |
|---|---|
filter[id] | ID — точное значение |
filter[creator_id] | Создатель — точное значение |
filter[company_id] | Компания — точное значение |
filter[type] | Тип — точное значение |
filter[currency] | Валюта — точное значение |
filter[currencies] | Валюты — содержит любое из значений |
filter[category] | Категория — поиск по части строки |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
filter[common] | Общий — точное значение (с учётом вложенных) |
sort[] | Сортировка, - — по убыванию: id, -id, last_purchase_at, -last_purchase_at, purchases_total, -purchases_total, balance, -balance |
with[] | Подгрузить связи: creator.profile, company, balances |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
show[] | Дополнительные вычисляемые данные (см. описание метода) |
GET /company/supplier/supplier?show[0]=transactions_total&filter[transactions_created_at][0]=2026-09-29&filter[transactions_created_at][1]=2026-09-30Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].creator_id | integer | Создатель |
data[].company_id | integer | Компания |
data[].name | string | Название |
data[].full_name | string | ФИО |
data[].type | string | Тип |
data[].phone | string | Телефон |
data[].additional_phones | array | Дополнительные телефоны |
data[].inn | string | ИНН |
data[].address | string | Адрес |
data[].category | null | Категория |
data[].currency | null | Валюта |
data[].currencies | array | Валюты |
data[].bank_account | null | Расчётный счёт |
data[].mfo | null | МФО |
data[].bank_name | null | Банк |
data[].photo | null | |
data[].photo_thumbs | array | |
data[].start_balances | object | |
data[].start_balances.eur | integer | |
data[].start_balances.rub | integer | |
data[].start_balances.usd | integer | |
data[].start_balances.uzs | integer | |
data[].start_balance_set_at | null | |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].purchases_total | array | Всего закупки |
data[].is_deleted | boolean | |
data[].transactions_total | null |
{
"data": [
{
"id": 2,
"creator_id": 2,
"company_id": 1,
"name": "Supplier 2",
"full_name": "Full name 2",
"type": "person",
"phone": "998000000002",
"additional_phones": [],
"inn": "000000002",
"address": "Address 2",
"category": null,
"currency": null,
"currencies": [],
"bank_account": null,
"mfo": null,
"bank_name": null,
"photo": null,
"photo_thumbs": [],
"start_balances": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 0
},
"start_balance_set_at": null,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"purchases_total": [],
"is_deleted": false,
"transactions_total": null
},
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Supplier 1",
"full_name": "Full name 1",
"type": "person",
"phone": "998000000001",
"additional_phones": [
"998000000011",
"998000000012"
],
"inn": "000000001",
"address": "Address 1",
"category": null,
"currency": null,
"currencies": [],
"bank_account": null,
"mfo": null,
"bank_name": null,
"photo": null,
"photo_thumbs": [],
"start_balances": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 1000
},
"start_balance_set_at": null,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"purchases_total": [],
"is_deleted": false,
"transactions_total": {
"supplier_id": 1,
"amount": {
"income": {
"uzs": "1000.00",
"usd": "0",
"eur": "0",
"rub": "0"
},
"outcome": {
"uzs": "0",
"usd": "2000.00",
"eur": "0",
"rub": "0"
}
},
"balance": {
"start": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
},
"end": {
"uzs": "1000.00",
"usd": "-2000.00",
"eur": "0",
"rub": "0"
}
}
}
}
],
"links": {
"first": "https://api.wasyt.uz/company/supplier/supplier?page=1",
"last": "https://api.wasyt.uz/company/supplier/supplier?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/supplier/supplier",
"per_page": 20,
"to": 2,
"total": 2
},
"transactions_total": {
"amount": {
"income": {
"uzs": "1000.00",
"usd": "0",
"eur": "0",
"rub": "0"
},
"outcome": {
"uzs": "0",
"usd": "2000.00",
"eur": "0",
"rub": "0"
}
},
"balance": {
"start": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"end": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}
},
"current_debt": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}Поставщик
/company/supplier/supplier/{model}Один поставщик по ID. С show[]=transactions_total добавляются обороты за период, текущий долг (current_debt) и сумма возвратов (returns_total).
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
company_id | integer | Компания |
name | string | Название |
full_name | string | ФИО |
type | string | Тип |
phone | string | Телефон |
additional_phones | array | Дополнительные телефоны |
inn | string | ИНН |
address | string | Адрес |
category | null | Категория |
currency | null | Валюта |
currencies | array | Валюты |
bank_account | null | Расчётный счёт |
mfo | null | МФО |
bank_name | null | Банк |
photo | null | |
photo_thumbs | array | |
start_balances | object | |
start_balances.eur | integer | |
start_balances.rub | integer | |
start_balances.usd | integer | |
start_balances.uzs | integer | |
start_balance_set_at | null | |
created_at | string | Создано |
updated_at | string | Обновлено |
purchases_total | array | Всего закупки |
is_deleted | boolean |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Supplier 1",
"full_name": "Full name 1",
"type": "person",
"phone": "998000000001",
"additional_phones": [
"998000000011",
"998000000012"
],
"inn": "000000001",
"address": "Address 1",
"category": null,
"currency": null,
"currencies": [],
"bank_account": null,
"mfo": null,
"bank_name": null,
"photo": null,
"photo_thumbs": [],
"start_balances": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 1000
},
"start_balance_set_at": null,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"purchases_total": [],
"is_deleted": false
}Создать поставщика
/company/supplier/supplierСоздаёт поставщика; название уникально в компании, нужна хотя бы одна валюта расчётов из валют компании. Переданные start_balances сразу становятся балансом, а по валютам расчётов пишутся строки журнала opening_balance.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Название. Макс. 255 символов. Уникальное значение в компании |
full_name | string | Да | ФИО. Макс. 255 символов |
type | string | Да | Тип. Допустимые значения: person, entity |
phone | string | Да | Телефон. Формат 998xxyyyzzzz |
additional_phones | array | Нет | Дополнительные телефоны. Макс. 10 элементов |
additional_phones[] | string | Да | Дополнительные телефоны. Без повторов. Формат 998xxyyyzzzz |
inn | string | Нет | ИНН. Макс. 255 символов |
address | string | Нет | Адрес. Макс. 1000 символов |
category | string | Нет | Категория. Макс. 255 символов |
photo | file | Нет | Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160 |
photo_old_keys | string (JSON) | Да | |
currencies | array | Да | Валюты. Мин. 1 элементов |
currencies[] | string | Да | Валюты. Без повторов. Допустимые значения: uzs, usd, eur, rub |
bank_account | string | Нет | Расчётный счёт. Макс. 255 символов |
mfo | string | Нет | МФО. Макс. 255 символов |
bank_name | string | Нет | Банк. Макс. 255 символов |
start_balances | array | Нет | |
start_balances[] | number | Нет | До 2 знаков после запятой. Не меньше -1000000000. Не больше 1000000000 |
{
"name": "Supplier 3",
"full_name": "Full name 3",
"type": "entity",
"phone": "998000000003",
"additional_phones": [
"998000000031",
"998000000032"
],
"inn": "000000003",
"address": "Address 3",
"category": "Продукты питания",
"currencies": [
"uzs"
],
"bank_account": "20208000000000000001",
"mfo": "00014",
"bank_name": "Bank 3",
"start_balances": {
"uzs": 1000,
"usd": 1000,
"eur": 1000,
"rub": 1000
}
}curl -X POST "https://api.wasyt.uz/company/supplier/supplier" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name":"Supplier 3","full_name":"Full name 3","type":"entity","phone":"998000000003","additional_phones":["998000000031","998000000032"],"inn":"000000003","address":"Address 3","category":"Продукты питания","currencies":["uzs"],"bank_account":"20208000000000000001","mfo":"00014","bank_name":"Bank 3","start_balances":{"uzs":1000,"usd":1000,"eur":1000,"rub":1000}}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
name | string | Название |
full_name | string | ФИО |
type | string | Тип |
phone | string | Телефон |
inn | string | ИНН |
address | string | Адрес |
category | string | Категория |
bank_account | string | Расчётный счёт |
mfo | string | МФО |
bank_name | string | Банк |
start_balances | object | |
start_balances.uzs | integer | |
start_balances.usd | integer | |
start_balances.eur | integer | |
start_balances.rub | integer | |
additional_phones | array | Дополнительные телефоны |
currencies | array | Валюты |
currency | string | Валюта |
updated_at | string | Обновлено |
created_at | string | Создано |
start_balance_set_at | string | |
creator_id | integer | Создатель |
company_id | integer | Компания |
id | integer | ID |
is_deleted | boolean |
{
"name": "Supplier 3",
"full_name": "Full name 3",
"type": "entity",
"phone": "998000000003",
"inn": "000000003",
"address": "Address 3",
"category": "Продукты питания",
"bank_account": "20208000000000000001",
"mfo": "00014",
"bank_name": "Bank 3",
"start_balances": {
"uzs": 1000,
"usd": 1000,
"eur": 1000,
"rub": 1000
},
"additional_phones": [
"998000000031",
"998000000032"
],
"currencies": [
"uzs"
],
"currency": "uzs",
"updated_at": "2026-09-30 12:53:33",
"created_at": "2026-09-30 12:53:33",
"start_balance_set_at": "2026-09-30 12:53:33",
"creator_id": 2,
"company_id": 1,
"id": 9,
"is_deleted": false
}Изменить поставщика
/company/supplier/supplier/{model}Обновляет данные поставщика; start_balances здесь игнорируется (для него есть отдельный метод). Убрать валюту расчётов, по которой уже есть операции или ненулевой баланс, нельзя.
Из формы (
multipart/form-data) методPUTотправляется какPOSTс параметром?_method=PUT.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Название. Макс. 255 символов. Уникальное значение в компании |
full_name | string | Да | ФИО. Макс. 255 символов |
type | string | Да | Тип. Допустимые значения: person, entity |
phone | string | Да | Телефон. Формат 998xxyyyzzzz |
additional_phones | array | Нет | Дополнительные телефоны. Макс. 10 элементов |
additional_phones[] | string | Да | Дополнительные телефоны. Без повторов. Формат 998xxyyyzzzz |
inn | string | Нет | ИНН. Макс. 255 символов |
address | string | Нет | Адрес. Макс. 1000 символов |
category | string | Нет | Категория. Макс. 255 символов |
photo | file | Нет | Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160 |
photo_old_keys | string (JSON) | Да | |
currencies | array | Нет | Валюты |
currencies[] | string | Да | Валюты. Без повторов. Допустимые значения: uzs, usd, eur, rub |
bank_account | string | Нет | Расчётный счёт. Макс. 255 символов |
mfo | string | Нет | МФО. Макс. 255 символов |
bank_name | string | Нет | Банк. Макс. 255 символов |
start_balances | array | Нет | |
start_balances[] | number | Нет | До 2 знаков после запятой. Не меньше -1000000000. Не больше 1000000000 |
{
"name": "Supplier 1",
"full_name": "Full name 1",
"type": "person",
"phone": "998000000001",
"additional_phones": [
"998000000011",
"998000000012"
],
"inn": "000000001",
"address": "Address 1"
}curl -X PUT "https://api.wasyt.uz/company/supplier/supplier/1" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name":"Supplier 1","full_name":"Full name 1","type":"person","phone":"998000000001","additional_phones":["998000000011","998000000012"],"inn":"000000001","address":"Address 1"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
company_id | integer | Компания |
name | string | Название |
full_name | string | ФИО |
type | string | Тип |
phone | string | Телефон |
additional_phones | array | Дополнительные телефоны |
inn | string | ИНН |
address | string | Адрес |
category | null | Категория |
currency | null | Валюта |
currencies | array | Валюты |
bank_account | null | Расчётный счёт |
mfo | null | МФО |
bank_name | null | Банк |
photo | null | |
photo_thumbs | array | |
start_balances | object | |
start_balances.uzs | integer | |
start_balances.usd | integer | |
start_balances.eur | integer | |
start_balances.rub | integer | |
start_balance_set_at | null | |
created_at | string | Создано |
updated_at | string | Обновлено |
is_deleted | boolean |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Supplier 1",
"full_name": "Full name 1",
"type": "person",
"phone": "998000000001",
"additional_phones": [
"998000000011",
"998000000012"
],
"inn": "000000001",
"address": "Address 1",
"category": null,
"currency": null,
"currencies": [],
"bank_account": null,
"mfo": null,
"bank_name": null,
"photo": null,
"photo_thumbs": [],
"start_balances": {
"uzs": 1000,
"usd": 0,
"eur": 0,
"rub": 0
},
"start_balance_set_at": null,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:53:45",
"is_deleted": false
}Удалить поставщика
/company/supplier/supplier/{model}Мягко удаляет поставщика; его можно восстановить.
Из формы (
multipart/form-data) методDELETEотправляется какPOSTс параметром?_method=DELETE.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Восстановить поставщика
/company/supplier/supplier/{value}/restoreВосстанавливает удалённого поставщика по ID.
Из формы (
multipart/form-data) методDELETEотправляется какPOSTс параметром?_method=DELETE.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
value | ID записи (в том числе удалённой) |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}
