Ба саҳифаи асосӣ

Барои таҳиягарон

API Taska Open

Платформаи REST API: контрагенттер, транзаксияҳо, вазифаҳо, равандҳои бизнес, анбор, молия, истеҳсолот, вохӯриҳо ва вебхукҳо. 1C, вебсайт ё ягон системаи берунаро пайваст кунед - дархости аввал дар 5 дақиқа.

v1 · 52 амалиётREST + JSONАутентификатсияи токенВебхукҳои содиротӣ

Оғози зуд

Панҷ қадам аз сифр то дархости аввал.

  1. 1

    Токен бароред

    Дар платформа: Танзимот → аломатҳои API → "Эҷод". Миқёс (ҳуқуқҳои аломат) ҳангоми эҷод интихоб карда мешаванд. Нишон як маротиба нишон дода мешавад - онро захира кунед.

  2. 2

    URL-и асосиро интихоб кунед

    Ягона нуқта api.taska.uz - нишонаи формати tsk_ худи дархостро ба ташкилоти шумо равон мекунад. Ё усули классикӣ домени созмони шумост (ниг. “Аттентификатсия”).

  3. 3

    Аввалин дархости худро кунед

    GET /ping аломатро тафтиш мекунад ва миқёси онро бармегардонад - барои ислоҳи пайвастшавӣ қулай.

    Дархост
    curl https://api.taska.uz/api/public/v1/ping \
      -H "X-API-Token: tsk_<слаг>_<секрет>"
  4. 4

    Ҷавоб гиред

    хуб: дуруст - нишона кор мекунад. Дар миқёс - ҳуқуқҳои додашуда: агар баъзеҳо нопадид шаванд, токенро бо чизҳои зарурӣ дубора нашр кунед.

    Ҷавоб · JSON
    {
      "ok": true,
      "apiVersion": "v1",
      "scopes": ["crm:read", "inventory:read"]
    }
  5. 5

    Тайёр

    Баъдан феҳристи нуқтаи ниҳоӣ дар зер аст. Барои хатогиҳои 401/403, ба бахши "Тасдиқ" нигаред; барои дигарон, нигаред ба "Хатоҳо ва маҳдудиятҳо".

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

Ҳар як дархост сарлавҳаи X-API-Token бо аломати дастрасии шахсӣ дорад. Кукиҳо ва токенҳои CSRF истифода намешаванд ва лозим нестанд. Ҳуқуқҳои натиҷа = доираи интихобшуда ∩ ҳуқуқи нақши соҳиби нишона.

URL-и асосӣ - ду роҳи пайвастшавӣ

Нуқтаи ягона (тавсия дода мешавад)

https://api.taska.uz/api/public/v1

Ташкилот аз ҷониби slug аз аломати формати tsk_ муайян карда мешавад - зердомени созмон донистан лозим нест. Танҳо бо аломатҳои формати нав кор мекунад.

Домени созмон

https://<домен>.taska.uz/api/public/v1

Тарзи классикӣ: ҳамон домене, ки шумо ба он ворид мешавед. Бо ҳама гуна нишонаҳо кор мекунад - ҳам tsk_ ва ҳам tk_ кӯҳна.

Формати токен

Токенҳои нав ба tsk_<slug>_<сирри> монанданд. Слаг ба ҳеҷ кас пӯшида нест: он танҳо барои масир дар як нуқта лозим аст; худи нишона бо истифода аз hash HMAC дар базаи созмон тасдиқ карда мешавад. Токенҳои кӯҳна tk_… корро тавассути домени созмон идома медиҳанд.

http
X-API-Token: tsk_<слаг-организации>_<секрет>

# пример
X-API-Token: tsk_acme_4f9d21c07ab356e8c2d90b1f6a47e5d3901c8b2a7f6e5d4c

Доираи - ҳуқуқҳои нишонаҳо

ScopeТавсифи
crm:readЧтение контрагентов, контактов, сделок
crm:writeСоздание и изменение контрагентов, контактов, сделок
inventory:readЧтение номенклатуры, складов, остатков, движений
inventory:writeЗапись номенклатуры и движений по складу
finance:readЧтение заявок на оплату, статей и дебиторки
finance:writeСоздание и изменение заявок на оплату
tasks:readЧтение задач и проектов
tasks:writeСоздание и изменение задач
bpm:readЧтение шаблонов и запущенных бизнес-процессов
bpm:executeЗапуск бизнес-процессов
hr:readЧтение справочника сотрудников (без кадровых данных)
production:readЧтение производственных заказов
calendar:readЧтение встреч (календарь)
calendar:writeСоздание встреч
admin:allПолный доступ, включая управление вебхуками

Барои амалиёти навиштан, ба ғайр аз миқёс, соҳиби нишона бояд ҳуқуқи нақши мувофиқ дошта бошад - он дар корти нуқтаи ниҳоӣ нишон дода шудааст (масалан, crm.clients ё org.inventory.edit). admin: ҳама тамоми миқёсро мекушояд.

Ҷавобҳои 401 ва 403

Токен нест ё беэътибор - 401:

401 Unauthorized
{
  "error": "unauthorized",
  "message": "Открытое API требует заголовок X-API-Token (Personal Access Token).",
  "request_id": "1f6c1f9e-3f2b-4a8b-9c01-2e5f7a8b9c0d",
  "details": { "error": "api_token_required" }
}

Токен миқёс надорад - 403:

403 Forbidden
{
  "error": "forbidden",
  "message": "Токену нужен один из scope: crm:read.",
  "request_id": "7a2d9b1c-8e4f-4c6a-b0d2-3f5e7a9b1c2d",
  "details": { "error": "insufficient_scope" }
}

Феҳристи нуқтаи ниҳоӣ

Ҳама роҳҳо нисбат ба URL-и асосӣ (.../api/public/v1) мебошанд. Ҷавобҳо - application/json; charset = utf-8, санаҳо - ISO 8601.

Қоидаҳои умумӣ

  • Саҳифабандии рӯйхат: ?limit=&offset= (лимити 1–200, пешфарз 50), посух { адад, ҷамъ, маҳдуд, ҷуброн }. Ҳаракатҳо тавассути анбор - саҳифабандии курсор: next_cursor -ро аз посух захира кунед.
  • Идентификаторҳо сатрҳо мебошанд (UUID). Маблағҳои пулӣ: рақамҳо дар субъектҳои CRM, сатрҳо бо ду аломат дар нақшаи молиявӣ.
  • PATCH қулфи оптимистиро дастгирӣ мекунад: If-Match: сарлавҳаи <version>. Агар объект дар мувозӣ иваз карда шуда бошад - 409: тавассути GET дубора хонед ва такрор кунед.
  • Ба ҷои ҳазф бойгонӣ кардан: Аксари объектҳо is_archived шудаанд; рӯйхатҳо бо нобаёнӣ бойгониҳоро пинҳон мекунанд (include_archived=true - нишон).

Хизмат1

Проверка подключения и выданных прав токена — первый запрос любой интеграции.

GET/ping
ҳама гуна аломати дуруст

Проверка токена. Возвращает выданные scope — удобно для отладки подключения.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/ping \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "ok": true,
  "apiVersion": "v1",
  "scopes": ["crm:read", "inventory:read"],
  "tokenId": "3f2b1c9a-6d4e-4a8b-9c01-2e5f7a8b9c0d",
  "orgUserId": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c"
}

Тарафхои мукобил4

Контрагенты (клиенты/компании). Ответы — в snake_case. Телефон и email валидируются на сервере (422 при неверном формате).

GET/clients
scope: crm:read

Список контрагентов с поиском и пагинацией.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
searchquery · stringпоиск по названию / телефону / email
include_archivedquery · boolвключать архивные (по умолчанию false)
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/clients?limit=50&offset=0&search=baraka" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "c1a2b3d4-0000-4000-8000-000000000001",
      "version": 3,
      "name": "ООО «Барака Трейд»",
      "phone": "+998901234567",
      "email": "info@baraka.uz",
      "company_name": "Baraka Trade LLC",
      "inn": "301234567",
      "vat_number": null,
      "industry": "Оптовая торговля",
      "segment": "b2b",
      "city": "Ташкент",
      "source": "1c",
      "tags": ["опт"],
      "is_archived": false
    }
  ],
  "total": 134,
  "limit": 50,
  "offset": 0
}
GET/clients/{id}
scope: crm:read

Контрагент по идентификатору. 404 — если не найден.

ПараметрДар куҷо · нависедТавсифи
id *path · stringидентификатор контрагента (UUID)
Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/clients/c1a2b3d4-0000-4000-8000-000000000001 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "c1a2b3d4-0000-4000-8000-000000000001",
  "version": 3,
  "name": "ООО «Барака Трейд»",
  "phone": "+998901234567",
  "email": "info@baraka.uz",
  "company_name": "Baraka Trade LLC",
  "inn": "301234567",
  "city": "Ташкент",
  "tags": ["опт"],
  "is_archived": false
}
POST/clients
scope: crm:writeроли дуруст: crm.clients

Создать контрагента. Можно передать свой id (UUID) — удобно для синхронизации с 1С; иначе сгенерируется. Дубликат id → 409.

ПараметрДар куҷо · нависедТавсифи
name *body · stringназвание контрагента
idbody · stringсвой UUID (опционально)
phone / email / inn / company_name / city / source / tagsbody · остальные поля контрагента (опционально)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/clients \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ООО «Барака Трейд»",
    "phone": "+998901234567",
    "email": "info@baraka.uz",
    "inn": "301234567",
    "source": "1c"
  }'
Ҷавоб · JSON
{
  "id": "c1a2b3d4-0000-4000-8000-000000000001",
  "version": 1,
  "name": "ООО «Барака Трейд»",
  "phone": "+998901234567",
  "email": "info@baraka.uz",
  "inn": "301234567",
  "source": "1c",
  "tags": [],
  "is_archived": false
}
PATCH/clients/{id}
scope: crm:writeроли дуруст: crm.clientsIf-Match

Изменить контрагента: передавайте только меняемые поля. При конфликте версий — 409 (перечитайте объект и повторите).

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/clients/c1a2b3d4-0000-4000-8000-000000000001 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 3" \
  -d '{ "phone": "+998907654321" }'
Ҷавоб · JSON
{
  "id": "c1a2b3d4-0000-4000-8000-000000000001",
  "version": 4,
  "name": "ООО «Барака Трейд»",
  "phone": "+998907654321",
  "is_archived": false
}

Шахсони тамос4

Контактные лица (люди), привязанные к контрагентам. Поле channels — нормализованные каналы связи человека (телефон/email/telegram/instagram).

GET/contacts
scope: crm:read

Список контактных лиц.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
client_idquery · stringфильтр по контрагенту
searchquery · stringпоиск по имени / телефону / email
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/contacts?client_id=c1a2b3d4-0000-4000-8000-000000000001" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "a0b1c2d3-0000-4000-8000-000000000011",
      "version": 2,
      "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
      "name": "Алишер Каримов",
      "phone": "+998935551122",
      "email": "alisher@baraka.uz",
      "telegram": "alisher_k",
      "job_title": "Директор по закупкам",
      "tags": [],
      "channels": [
        { "kind": "phone", "value": "+998935551122", "isPrimary": true, "verified": false }
      ],
      "is_archived": false
    }
  ],
  "total": 12,
  "limit": 50,
  "offset": 0
}
GET/contacts/{id}
scope: crm:read

Контактное лицо по идентификатору.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/contacts/a0b1c2d3-0000-4000-8000-000000000011 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "a0b1c2d3-0000-4000-8000-000000000011",
  "version": 2,
  "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
  "name": "Алишер Каримов",
  "phone": "+998935551122",
  "email": "alisher@baraka.uz",
  "job_title": "Директор по закупкам",
  "is_archived": false
}
POST/contacts
scope: crm:writeроли дуруст: crm.clients

Создать контактное лицо (обязательно name; client_id — привязка к контрагенту).

ПараметрДар куҷо · нависедТавсифи
name *body · stringимя человека
client_idbody · stringконтрагент
phone / email / telegram / instagram / job_titlebody · stringканалы и должность (опционально)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/contacts \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Алишер Каримов",
    "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
    "phone": "+998935551122"
  }'
Ҷавоб · JSON
{
  "id": "a0b1c2d3-0000-4000-8000-000000000011",
  "version": 1,
  "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
  "name": "Алишер Каримов",
  "phone": "+998935551122",
  "is_archived": false
}
PATCH/contacts/{id}
scope: crm:writeроли дуруст: crm.clientsIf-Match

Изменить контактное лицо (только меняемые поля).

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/contacts/a0b1c2d3-0000-4000-8000-000000000011 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 2" \
  -d '{ "job_title": "Коммерческий директор" }'
Ҷавоб · JSON
{
  "id": "a0b1c2d3-0000-4000-8000-000000000011",
  "version": 3,
  "name": "Алишер Каримов",
  "job_title": "Коммерческий директор",
  "is_archived": false
}

Муомилот4

Сделки в воронках продаж. stage — название этапа (строка), stage_id — канонический UUID этапа. Перевод сделки в выигранную запускает внутренние процессы (комиссии, производство и т.д.).

GET/deals
scope: crm:read

Список сделок с фильтрами по контрагенту, воронке и этапу.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
client_idquery · stringфильтр по контрагенту
funnel_idquery · stringфильтр по воронке
stagequery · stringфильтр по этапу
searchquery · stringпоиск по названию сделки
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/deals?client_id=c1a2b3d4-0000-4000-8000-000000000001" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "d4e5f6a7-0000-4000-8000-000000000021",
      "version": 5,
      "title": "Поставка упаковки, июль",
      "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
      "contact_id": "a0b1c2d3-0000-4000-8000-000000000011",
      "amount": 25000000.0,
      "currency": "UZS",
      "stage": "Переговоры",
      "stage_id": "f7a8b9c0-0000-4000-8000-000000000031",
      "funnel_id": "funnel-main",
      "source": "1c",
      "assignee_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "tags": [],
      "is_archived": false,
      "created_at": "2026-07-01T09:15:00+00:00",
      "updated_at": "2026-07-03T14:02:00+00:00"
    }
  ],
  "total": 8,
  "limit": 50,
  "offset": 0
}
GET/deals/{id}
scope: crm:read

Сделка по идентификатору.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/deals/d4e5f6a7-0000-4000-8000-000000000021 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "d4e5f6a7-0000-4000-8000-000000000021",
  "version": 5,
  "title": "Поставка упаковки, июль",
  "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
  "amount": 25000000.0,
  "currency": "UZS",
  "stage": "Переговоры",
  "stage_id": "f7a8b9c0-0000-4000-8000-000000000031",
  "funnel_id": "funnel-main",
  "is_archived": false
}
POST/deals
scope: crm:writeроли дуруст: crm.deals.edit

Создать сделку.

ПараметрДар куҷо · нависедТавсифи
title *body · stringназвание сделки
client_id / contact_idbody · stringпривязка к контрагенту / контакту
amountbody · numberсумма (≥ 0)
currencybody · stringвалюта, по умолчанию UZS
funnel_id / stagebody · stringворонка и этап
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/deals \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Поставка упаковки, июль",
    "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
    "amount": 25000000,
    "currency": "UZS"
  }'
Ҷавоб · JSON
{
  "id": "d4e5f6a7-0000-4000-8000-000000000021",
  "version": 1,
  "title": "Поставка упаковки, июль",
  "client_id": "c1a2b3d4-0000-4000-8000-000000000001",
  "amount": 25000000.0,
  "currency": "UZS",
  "stage": "new",
  "is_archived": false
}
PATCH/deals/{id}
scope: crm:writeроли дуруст: crm.deals.editIf-Match

Изменить сделку (этап, сумму и т.д.). Только меняемые поля.

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/deals/d4e5f6a7-0000-4000-8000-000000000021 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 5" \
  -d '{ "amount": 27500000 }'
Ҷавоб · JSON
{
  "id": "d4e5f6a7-0000-4000-8000-000000000021",
  "version": 6,
  "title": "Поставка упаковки, июль",
  "amount": 27500000.0,
  "currency": "UZS",
  "is_archived": false
}

Номенклатура4

Номенклатура (товары, материалы, услуги, готовая продукция). item_type: product | service | material | finished_good. Услуги не складируются — движения по ним вернут 422.

GET/products
scope: inventory:read

Список позиций номенклатуры.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
searchquery · stringпоиск по названию / SKU / штрихкоду
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/products?search=короб" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "i1a2b3c4-0000-4000-8000-000000000041",
      "sku": "BOX-40",
      "name": "Короб картонный 400×300×300",
      "unit": "шт",
      "item_type": "product",
      "category_id": "cat-packaging",
      "cost_per_unit": 6500.0,
      "price": 9000.0,
      "barcode": "4780000000017",
      "manufacturer": null,
      "minStockLevel": 200.0,
      "maxStockLevel": null,
      "isArchived": false,
      "version": 2
    }
  ],
  "total": 57,
  "limit": 50,
  "offset": 0
}
GET/products/{id}
scope: inventory:read

Позиция номенклатуры по идентификатору.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/products/i1a2b3c4-0000-4000-8000-000000000041 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "i1a2b3c4-0000-4000-8000-000000000041",
  "sku": "BOX-40",
  "name": "Короб картонный 400×300×300",
  "unit": "шт",
  "item_type": "product",
  "cost_per_unit": 6500.0,
  "price": 9000.0,
  "isArchived": false,
  "version": 2
}
POST/products
scope: inventory:writeроли дуруст: org.inventory.edit

Создать позицию номенклатуры.

ПараметрДар куҷо · нависедТавсифи
name *body · stringназвание позиции
skubody · stringартикул
unitbody · stringединица измерения (шт, кг, м…)
item_typebody · stringproduct | service | material | finished_good
barcode / category_id / cost_per_unitbody · штрихкод, категория, себестоимость (опционально)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/products \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "BOX-40",
    "name": "Короб картонный 400×300×300",
    "unit": "шт",
    "cost_per_unit": 6500
  }'
Ҷавоб · JSON
{
  "id": "i1a2b3c4-0000-4000-8000-000000000041",
  "sku": "BOX-40",
  "name": "Короб картонный 400×300×300",
  "unit": "шт",
  "item_type": "product",
  "cost_per_unit": 6500.0,
  "isArchived": false,
  "version": 1
}
PATCH/products/{id}
scope: inventory:writeроли дуруст: org.inventory.editIf-Match

Изменить позицию номенклатуры.

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/products/i1a2b3c4-0000-4000-8000-000000000041 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 2" \
  -d '{ "cost_per_unit": 7000 }'
Ҷавоб · JSON
{
  "id": "i1a2b3c4-0000-4000-8000-000000000041",
  "sku": "BOX-40",
  "name": "Короб картонный 400×300×300",
  "cost_per_unit": 7000.0,
  "isArchived": false,
  "version": 3
}

Анборҳо ва боқимондаҳо3

Склады — справочник (чтение). Остатки: onHand — физически на складе, reserved — зарезервировано, available = onHand − reserved. Остатки меняются ТОЛЬКО через движения (см. следующую группу).

GET/warehouses
scope: inventory:read

Список складов.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/warehouses \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "w1a2b3c4-0000-4000-8000-000000000051",
      "name": "Основной склад",
      "code": "MAIN",
      "city": "Ташкент",
      "address_line": "ул. Бунёдкор, 12",
      "isDefault": true,
      "isArchived": false
    }
  ],
  "total": 3,
  "limit": 50,
  "offset": 0
}
GET/warehouses/{id}
scope: inventory:read

Склад по идентификатору.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/warehouses/w1a2b3c4-0000-4000-8000-000000000051 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "w1a2b3c4-0000-4000-8000-000000000051",
  "name": "Основной склад",
  "code": "MAIN",
  "isDefault": true,
  "isArchived": false
}
GET/stock
scope: inventory:read

Остатки номенклатуры по складам. Сопоставление: itemId → /products, warehouseId → /warehouses.

ПараметрДар куҷо · нависедТавсифи
warehouse_idquery · stringфильтр по складу
item_idquery · stringфильтр по позиции
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/stock?warehouse_id=w1a2b3c4-0000-4000-8000-000000000051" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "sb-000000000061",
      "warehouseId": "w1a2b3c4-0000-4000-8000-000000000051",
      "itemId": "i1a2b3c4-0000-4000-8000-000000000041",
      "onHand": 480.0,
      "reserved": 120.0,
      "available": 360.0,
      "lastMovementAt": "2026-07-03T11:20:00",
      "version": 14
    }
  ],
  "total": 57,
  "limit": 50,
  "offset": 0
}

Ҳаракатҳо дар анбор3

Движения — источник изменения остатков; запись атомарно меняет баланс (блокировки на уровне БД). Основной механизм синхронизации склада из 1С. Пагинация списка — курсорная: сохраняйте next_cursor и запрашивайте только новые движения.

GET/movements
scope: inventory:read

Список движений (новые сверху). Курсорная пагинация — идеально для инкрементальной выгрузки.

ПараметрДар куҷо · нависедТавсифи
warehouse_idquery · stringфильтр по складу (источник или получатель)
item_idquery · stringфильтр по позиции
kindquery · stringin | out | transfer | adjustment (+ produce | consume)
cursorquery · stringкурсор следующей страницы (next_cursor из ответа)
limitquery · int1–200, по умолчанию 50
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/movements?kind=in&limit=50" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "m1a2b3c4-0000-4000-8000-000000000071",
      "kind": "in",
      "date": "2026-07-03T11:20:00",
      "from_warehouse_id": null,
      "to_warehouse_id": "w1a2b3c4-0000-4000-8000-000000000051",
      "reason": "Приход по накладной №123 из 1С",
      "created_by_user_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "lines": [
        {
          "id": "ml-000000000081",
          "item_id": "i1a2b3c4-0000-4000-8000-000000000041",
          "qty": "100.000",
          "cost_per_unit": "6500.00",
          "cost_currency": "UZS",
          "batch_id": null,
          "serial_numbers": null,
          "notes": null
        }
      ]
    }
  ],
  "total": 212,
  "limit": 50,
  "next_cursor": "gAAAAABl..."
}
GET/movements/{id}
scope: inventory:read

Движение по идентификатору (со строками).

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/movements/m1a2b3c4-0000-4000-8000-000000000071 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "m1a2b3c4-0000-4000-8000-000000000071",
  "kind": "in",
  "date": "2026-07-03T11:20:00",
  "to_warehouse_id": "w1a2b3c4-0000-4000-8000-000000000051",
  "reason": "Приход по накладной №123 из 1С",
  "lines": [
    { "item_id": "i1a2b3c4-0000-4000-8000-000000000041", "qty": "100.000", "cost_per_unit": "6500.00" }
  ]
}
POST/movements
scope: inventory:writeроли дуруст: org.inventory.edit

Провести движение: приход (in), расход (out), перемещение (transfer, нужен to_warehouse_id), корректировка (adjustment — qty может быть отрицательным). Остатки обновляются сразу и атомарно.

ПараметрДар куҷо · нависедТавсифи
kind *body · stringin | out | transfer | adjustment
warehouse_id *body · stringсклад (для transfer — источник)
to_warehouse_idbody · stringсклад-получатель (только transfer)
lines *body · array[{ item_id, qty, cost_per_unit? }] — минимум одна строка
notesbody · stringкомментарий (попадает в reason)
reference_type / reference_idbody · stringсвязь с документом внешней системы

reference_type / reference_id — связь с документом внешней системы (например, номером накладной 1С). Для transfer перечислите оба склада; warehouse_id — источник.

Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/movements \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "warehouse_id": "w1a2b3c4-0000-4000-8000-000000000051",
    "kind": "in",
    "notes": "Приход по накладной №123 из 1С",
    "reference_type": "1c_document",
    "reference_id": "НК-000123",
    "lines": [
      { "item_id": "i1a2b3c4-0000-4000-8000-000000000041", "qty": 100, "cost_per_unit": 6500 }
    ]
  }'
Ҷавоб · JSON
{
  "id": "m1a2b3c4-0000-4000-8000-000000000071",
  "kind": "in",
  "date": "2026-07-03T11:20:00",
  "to_warehouse_id": "w1a2b3c4-0000-4000-8000-000000000051",
  "reason": "Приход по накладной №123 из 1С",
  "lines": [
    { "item_id": "i1a2b3c4-0000-4000-8000-000000000041", "qty": "100.000", "cost_per_unit": "6500.00" }
  ]
}

Молия9

Финансовый контур: заявки на оплату, справочник статей и дебиторка. Заявки доступны по двум эквивалентным путям — историческому /finance-requests и каноническому /finance/requests (одна реализация). Ответы — в camelCase; amount — строка с двумя знаками. Заявитель проставляется автоматически — владелец токена. Внутренние правила согласования сохраняются.

GET/finance-requests
scope: finance:read

Список заявок на оплату.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
statusquery · stringdraft | pending | approved | rejected | paid
searchquery · stringпоиск по названию
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/finance-requests?status=pending" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "fr-000000000091",
      "version": 2,
      "title": "Оплата поставщику упаковки",
      "amount": "25000000.00",
      "currency": "UZS",
      "category": "Закупка материалов",
      "counterparty": "ООО «Барака Трейд»",
      "counterpartyInn": "301234567",
      "status": "pending",
      "paymentDate": "2026-07-10",
      "invoiceNumber": "INV-2026-0715",
      "vatAmount": "2500000.00",
      "amountWithVat": "27500000.00",
      "requestedBy": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "createdAt": "2026-07-04T08:30:00+00:00",
      "isArchived": false
    }
  ],
  "total": 6,
  "limit": 50,
  "offset": 0
}
GET/finance-requests/{id}
scope: finance:read

Заявка на оплату по идентификатору.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/finance-requests/fr-000000000091 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "fr-000000000091",
  "version": 2,
  "title": "Оплата поставщику упаковки",
  "amount": "25000000.00",
  "currency": "UZS",
  "status": "pending",
  "paymentDate": "2026-07-10",
  "isArchived": false
}
POST/finance-requests
scope: finance:write

Создать заявку на оплату. Заявитель — владелец токена (подмена невозможна).

ПараметрДар куҷо · нависедТавсифи
title *body · stringназвание заявки
amount *body · number | stringсумма
currencybody · stringвалюта, по умолчанию UZS
counterparty / category / paymentDate / descriptionbody · реквизиты заявки (опционально)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/finance-requests \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Оплата поставщику упаковки",
    "amount": 25000000,
    "currency": "UZS",
    "counterparty": "ООО «Барака Трейд»"
  }'
Ҷавоб · JSON
{
  "id": "fr-000000000091",
  "version": 1,
  "title": "Оплата поставщику упаковки",
  "amount": "25000000.00",
  "currency": "UZS",
  "status": "pending",
  "isArchived": false
}
PATCH/finance-requests/{id}
scope: finance:writeIf-Match

Изменить заявку. Внутренние гейты согласования (запрет self-approve и т.д.) сохраняются.

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/finance-requests/fr-000000000091 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 2" \
  -d '{ "paymentDate": "2026-07-12" }'
Ҷавоб · JSON
{
  "id": "fr-000000000091",
  "version": 3,
  "title": "Оплата поставщику упаковки",
  "paymentDate": "2026-07-12",
  "status": "pending",
  "isArchived": false
}
GET/finance/requests
scope: finance:read

Список заявок на оплату — канонический алиас GET /finance-requests (та же реализация, те же параметры и поля ответа).

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
statusquery · stringdraft | pending | approved | rejected | paid
searchquery · stringпоиск по названию
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/finance/requests?status=pending" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [ { "id": "fr-000000000091", "title": "Оплата поставщику упаковки", "amount": "25000000.00", "currency": "UZS", "status": "pending" } ],
  "total": 6,
  "limit": 50,
  "offset": 0
}
GET/finance/requests/{id}
scope: finance:read

Заявка на оплату по идентификатору — алиас GET /finance-requests/{id}.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/finance/requests/fr-000000000091 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "fr-000000000091",
  "version": 2,
  "title": "Оплата поставщику упаковки",
  "amount": "25000000.00",
  "currency": "UZS",
  "status": "pending",
  "isArchived": false
}
POST/finance/requests
scope: finance:write

Создать заявку на оплату — алиас POST /finance-requests. Штатная внутренняя цепочка: курс валюты, инициализация согласования, уведомление согласующим. Заявитель — владелец токена; статус "approved" из тела без права finance.approve понижается до "pending".

ПараметрДар куҷо · нависедТавсифи
title *body · stringназвание заявки
amountbody · number | stringсумма
currencybody · stringвалюта, по умолчанию UZS
category_idbody · stringстатья расходов — id из GET /finance/categories
commentbody · stringкомментарий
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/finance/requests \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Оплата хостинга",
    "amount": 1200000,
    "currency": "UZS",
    "comment": "Продление на год"
  }'
Ҷавоб · JSON
{
  "id": "fr-000000000092",
  "version": 1,
  "title": "Оплата хостинга",
  "amount": "1200000.00",
  "currency": "UZS",
  "status": "pending",
  "isArchived": false
}
GET/finance/categories
scope: finance:read

Справочник статей расходов / фондов. id статьи подставляется в category_id заявки на оплату.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
include_archivedquery · boolвключать архивные
Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/finance/categories \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "fc-000000000011",
      "name": "Закупка материалов",
      "type": "fixed",
      "value": "0",
      "color": "#2C7E20",
      "order": 1,
      "parent_category_id": null,
      "isArchived": false
    }
  ],
  "total": 12,
  "limit": 50,
  "offset": 0
}
GET/receivables
scope: finance:read

Дебиторская задолженность (только чтение). status вычисляется из сумм и срока: open | partial | paid | overdue.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
client_idquery · stringфильтр по контрагенту
deal_idquery · stringфильтр по сделке
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/receivables?client_id=c-000000000001" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "ar-000000000031",
      "clientId": "c-000000000001",
      "dealId": "d-000000000042",
      "amount": 18000000,
      "paidAmount": 6000000,
      "currency": "UZS",
      "dueDate": "2026-07-20",
      "status": "partial",
      "paidDate": null,
      "description": "Оплата по договору №14",
      "createdAt": "2026-06-25T09:00:00+00:00"
    }
  ],
  "total": 4,
  "limit": 50,
  "offset": 0
}

Вазифаҳо ва лоиҳаҳо5

Задачи трекера и справочник проектов. Поля задачи — в snake_case (как у внутреннего API). Видимость зеркалит платформу: без права tasks.view_all владелец токена видит только свои, назначенные ему и наблюдаемые задачи. Создание/изменение дополнительно требуют право tasks.edit у владельца токена.

GET/tasks
scope: tasks:read

Список задач (не-архивные). updated_since — инкрементальная выгрузка: только задачи, изменённые или созданные не раньше метки.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
statusquery · stringточное имя статуса, как в справочнике статусов
assignee_idquery · stringфильтр по ответственному (id пользователя)
project_idquery · stringфильтр по проекту (id из GET /projects)
updated_sincequery · stringISO 8601 — для инкрементального обмена
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/tasks?status=В работе&updated_since=2026-07-01T00:00:00Z" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "3f2b1a90-1111-4c56-9d0e-aaaaaaaaaaaa",
      "version": 4,
      "title": "Подготовить спецификацию для клиента",
      "description": "Согласовать состав поставки",
      "status": "В работе",
      "priority": "Высокий",
      "assignee_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "assignee_ids": ["8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c"],
      "project_id": "p-000000000003",
      "start_date": "2026-07-01",
      "end_date": "2026-07-10",
      "end_time": "18:00",
      "deal_id": null,
      "tags": ["клиент"],
      "created_by_user_id": "1c2d3e4f-0000-4a5b-8c9d-bbbbbbbbbbbb",
      "created_at": "2026-07-01T05:12:00+00:00",
      "updated_at": "2026-07-03T11:40:00+00:00"
    }
  ],
  "total": 18,
  "limit": 50,
  "offset": 0
}
GET/tasks/{id}
scope: tasks:read

Задача по идентификатору. Чужая задача (вне видимости токена) возвращает 404 — существование не раскрывается.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/tasks/3f2b1a90-1111-4c56-9d0e-aaaaaaaaaaaa \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "3f2b1a90-1111-4c56-9d0e-aaaaaaaaaaaa",
  "version": 4,
  "title": "Подготовить спецификацию для клиента",
  "status": "В работе",
  "priority": "Высокий",
  "assignee_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
  "end_date": "2026-07-10",
  "end_time": "18:00"
}
POST/tasks
scope: tasks:writeроли дуруст: tasks.edit

Создать задачу. Штатная внутренняя цепочка: валидация дедлайна (дата в прошлом → 422), событие task.assigned, Telegram/in-app уведомление исполнителю, журнал. Создатель — владелец токена (подмена невозможна).

ПараметрДар куҷо · нависедТавсифи
title *body · stringназвание задачи
descriptionbody · stringописание
statusbody · stringстатус; по умолчанию начальный статус справочника
prioritybody · stringприоритет
assignee_idbody · stringответственный (id пользователя)
assignee_idsbody · arrayсоисполнители
project_idbody · stringпроект
start_date / end_datebody · stringYYYY-MM-DD; дедлайн в прошлом → 422
end_timebody · stringвремя дедлайна HH:MM
deal_idbody · stringпривязка к сделке
tagsbody · arrayтеги
watcher_idsbody · arrayнаблюдатели (id пользователей)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/tasks \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Выставить счёт по заказу 1С-00042",
    "assignee_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
    "end_date": "2026-07-15",
    "end_time": "17:00"
  }'
Ҷавоб · JSON
{
  "id": "5e6f7a80-2222-4d67-8e1f-cccccccccccc",
  "version": 1,
  "title": "Выставить счёт по заказу 1С-00042",
  "status": "К выполнению",
  "assignee_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
  "end_date": "2026-07-15",
  "end_time": "17:00",
  "created_at": "2026-07-06T06:00:00+00:00"
}
PATCH/tasks/{id}
scope: tasks:writeроли дуруст: tasks.editIf-Match

Изменить задачу (только переданные поля): status, title, assignee_id, end_date и др. Валидация статусного перехода и дедлайна — как во внутреннем API. Изменение priority дополнительно требует право tasks.set_priority. Ответ несёт заголовок ETag с новой версией.

Намунаи дархост ва посух
Дархост
curl -X PATCH https://api.taska.uz/api/public/v1/tasks/5e6f7a80-2222-4d67-8e1f-cccccccccccc \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -H "If-Match: 1" \
  -d '{ "status": "Выполнено" }'
Ҷавоб · JSON
{
  "id": "5e6f7a80-2222-4d67-8e1f-cccccccccccc",
  "version": 2,
  "title": "Выставить счёт по заказу 1С-00042",
  "status": "Выполнено"
}
GET/projects
scope: tasks:read

Справочник проектов (не-архивные). id подставляется в фильтр GET /tasks?project_id=…

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/projects \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    { "id": "p-000000000003", "name": "Внедрение CRM", "icon": "🚀", "color": "#2C7E20" }
  ],
  "total": 5,
  "limit": 50,
  "offset": 0
}

Равандҳои тиҷоратӣ4

Движок бизнес-процессов: чтение шаблонов и запущенных процессов, запуск нового процесса из внешней системы. Видимость зеркалит платформу: не-администратор БП видит только процессы, которые инициировал или в которых участвует (исполнитель этапа).

GET/process-templates
scope: bpm:read

Активные (опубликованные) шаблоны процессов. id шаблона используется в POST /processes.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/process-templates \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "pt-000000000007",
      "title": "Согласование договора",
      "trigger_entity": "deal",
      "category": "Продажи",
      "description": "Юрист → финдир → подпись"
    }
  ],
  "total": 3,
  "limit": 50,
  "offset": 0
}
GET/processes
scope: bpm:read

Запущенные процессы (инстансы) с активными этапами и прогрессом 0–100.

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
statusquery · stringrunning | completed | cancelled | failed
template_idquery · stringфильтр по шаблону
entity_typequery · stringтип привязанной сущности (deal/client/task)
entity_idquery · stringid привязанной сущности
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/processes?status=running" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "pi-000000000021",
      "template_id": "pt-000000000007",
      "template_title": "Согласование договора",
      "status": "running",
      "entity_type": "deal",
      "entity_id": "d-000000000042",
      "initiated_by_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "current_stage_ids": ["st-000000000102"],
      "progress": 40,
      "started_at": "2026-07-05T10:00:00+00:00",
      "completed_at": null
    }
  ],
  "total": 2,
  "limit": 50,
  "offset": 0
}
GET/processes/{id}
scope: bpm:read

Один процесс с полным списком этапов stage_instances (статус, исполнитель, решение, отметки времени). Вне видимости токена → 404.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/processes/pi-000000000021 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "pi-000000000021",
  "template_title": "Согласование договора",
  "status": "running",
  "current_stage_ids": ["st-000000000102"],
  "stage_instances": [
    { "id": "st-000000000101", "stage_title": "Проверка юристом", "stage_type": "approval", "status": "completed", "decision": "approved" },
    { "id": "st-000000000102", "stage_title": "Виза финдиректора", "stage_type": "approval", "status": "active", "assignee_id": "1c2d3e4f-0000-4a5b-8c9d-bbbbbbbbbbbb" }
  ]
}
POST/processes
scope: bpm:execute

Запустить процесс из опубликованного шаблона. Инициатор — владелец токена; активируется стартовый этап, пишется журнал. Шаблон не найден → 404, не опубликован → 409, нет стартового этапа → 422. Поддерживает Idempotency-Key.

ПараметрДар куҷо · нависедТавсифи
template_id *body · stringid шаблона из GET /process-templates
entity_typebody · stringпривязка: deal | client | task
entity_idbody · stringid привязанной сущности
variablesbody · objectстартовые переменные процесса (принимается и ключ initial_variables)
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/processes \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "pt-000000000007",
    "entity_type": "deal",
    "entity_id": "d-000000000042",
    "variables": { "contract_no": "Д-2026/114" }
  }'
Ҷавоб · JSON
{
  "id": "pi-000000000022",
  "template_id": "pt-000000000007",
  "status": "running",
  "current_stage_ids": ["st-000000000110"],
  "started_at": "2026-07-06T06:10:00+00:00"
}

Кормандон1

Справочник сотрудников — только безопасные поля (whitelist-проекция). Кадровые данные — оклад, дата рождения, документы — через открытое API недоступны никогда.

GET/employees
scope: hr:read

Список сотрудников (не-архивные).

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
department_idquery · stringфильтр по подразделению
statusquery · stringфильтр по статусу (active/…)
searchquery · stringпоиск по ФИО
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/employees?search=Алиев" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "emp-000000000012",
      "user_id": "8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c",
      "full_name": "Алиев Шерзод",
      "position": "Менеджер по продажам",
      "department_id": "dep-000000000002",
      "status": "active"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

Истехсолот2

Производственные заказы — только чтение (camelCase, как во внутреннем API). Запись сознательно не даётся: заказ рождается из сделки или конвейера платформы с BOM/маршрутом — внешняя запись мимо этих инвариантов опасна.

GET/production/orders
scope: production:read

Список производственных заказов (не-архивные).

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
statusquery · stringopen | in_progress | completed | …
pipeline_idquery · stringфильтр по конвейеру
deal_idquery · stringфильтр по сделке
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/production/orders?status=in_progress" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "po-000000000009",
      "title": "Заказ №9 — стеллажи",
      "status": "in_progress",
      "pipelineId": "pp-000000000001",
      "currentStageId": "stage-cut",
      "dealId": "d-000000000042",
      "items": [ { "name": "Стеллаж 2000×600", "qty": 10 } ],
      "qtyToProduce": 10,
      "qtyProduced": 4,
      "customerName": "ООО «Барака Трейд»",
      "plannedDeliveryDate": "2026-07-18",
      "monitorStatus": "ok"
    }
  ],
  "total": 3,
  "limit": 50,
  "offset": 0
}
GET/production/orders/{id}
scope: production:read

Один заказ — те же поля, что в списке, плюс currentStage {id, title} — текущий этап маршрута (null, если этап/конвейер не назначены).

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/production/orders/po-000000000009 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "po-000000000009",
  "title": "Заказ №9 — стеллажи",
  "status": "in_progress",
  "qtyToProduce": 10,
  "qtyProduced": 4,
  "currentStage": { "id": "stage-cut", "title": "Раскрой" }
}

Вохӯриҳо (тақвим)2

Календарь встреч. Повторяющиеся встречи разворачиваются по RRULE — каждое вхождение отдельным элементом. Видимость: владелец токена видит встречи, где он владелец или участник; администратор — все.

GET/meetings
scope: calendar:read

Встречи за период. Окно from/to обязательно; максимум 500 элементов.

ПараметрДар куҷо · нависедТавсифи
from *query · stringначало окна, ISO 8601
to *query · stringконец окна, ISO 8601
limitquery · int1–500, по умолчанию 500
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/meetings?from=2026-07-06T00:00:00Z&to=2026-07-13T00:00:00Z" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "m-000000000055",
      "title": "Планёрка отдела продаж",
      "start_at": "2026-07-07T04:00:00+00:00",
      "end_at": "2026-07-07T04:30:00+00:00",
      "duration_minutes": 30,
      "location": "Переговорная 1",
      "video_url": null,
      "participantIds": ["8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c"],
      "recurrence_rule": "FREQ=WEEKLY;BYDAY=TU",
      "owner_user_id": "1c2d3e4f-0000-4a5b-8c9d-bbbbbbbbbbbb"
    }
  ],
  "total": 6,
  "limit": 500,
  "offset": 0
}
POST/meetings
scope: calendar:writeроли дуруст: content.meetings.manage

Создать встречу. Штатная внутренняя цепочка: участники для напоминаний, событие meeting.created, in-app + Telegram уведомления участникам и в общий чат. Владелец встречи — владелец токена; start_at в прошлом → 422.

ПараметрДар куҷо · нависедТавсифи
title *body · stringназвание встречи
start_at *body · stringначало, ISO 8601
end_atbody · stringконец; если не задан — start_at + 60 минут
participant_idsbody · arrayучастники (id пользователей); создатель добавляется автоматически
location / video_url / summarybody · stringместо, ссылка на видеозвонок, повестка
recurrence_rulebody · stringRRULE повторения (RFC 5545)
reminder_minutesbody · intнапоминание за N минут
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/meetings \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Демо для клиента",
    "start_at": "2026-07-09T10:00:00+05:00",
    "participant_ids": ["8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c"]
  }'
Ҷавоб · JSON
{
  "id": "m-000000000056",
  "title": "Демо для клиента",
  "start_at": "2026-07-09T05:00:00+00:00",
  "end_at": "2026-07-09T06:00:00+00:00",
  "participantIds": ["8a7e6d5c-4b3a-2f1e-0d9c-8b7a6f5e4d3c", "1c2d3e4f-0000-4a5b-8c9d-bbbbbbbbbbbb"]
}

Фармоишҳо (CP)2

Заказы / коммерческие предложения — только чтение. deal_id пуст у standalone-заказов (созданных без сделки). items[] — позиции заказа.

GET/commercial-orders
scope: crm:read

Список заказов/КП (не-архивные).

ПараметрДар куҷо · нависедТавсифи
limitquery · int1–200, по умолчанию 50
offsetquery · intсмещение, по умолчанию 0
deal_idquery · stringфильтр по сделке
client_idquery · stringфильтр по контрагенту (standalone-заказы)
statusquery · stringdraft | sent | confirmed | approved | transferred | fulfilled
Намунаи дархост ва посух
Дархост
curl "https://api.taska.uz/api/public/v1/commercial-orders?status=approved" \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "co-000000000017",
      "deal_id": "d-000000000042",
      "client_id": "c-000000000001",
      "title": "КП №17 — стеллажи",
      "status": "approved",
      "currency": "UZS",
      "items": [ { "name": "Стеллаж 2000×600", "qty": 10, "price": 1800000 } ],
      "production_order_id": "po-000000000009",
      "approved_at": "2026-07-05T12:00:00+00:00",
      "created_at": "2026-07-04T09:00:00+00:00"
    }
  ],
  "total": 2,
  "limit": 50,
  "offset": 0
}
GET/commercial-orders/{id}
scope: crm:read

Один заказ/КП — тот же набор полей, что в списке.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/commercial-orders/co-000000000017 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "id": "co-000000000017",
  "deal_id": "d-000000000042",
  "title": "КП №17 — стеллажи",
  "status": "approved",
  "items": [ { "name": "Стеллаж 2000×600", "qty": 10, "price": 1800000 } ]
}

Вебхукҳо (обунаҳо)4

Исходящие вебхуки: Taska сама отправляет POST на ваш URL при событиях (создана сделка, оплата проведена и т.д.). Управление подпиской требует scope admin:all. Формат доставки и проверка подписи — в разделе «Вебхуки» ниже.

GET/webhooks/event-catalog
scope: admin:all

Каталог событий, на которые можно подписаться.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/webhooks/event-catalog \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "events": [
    "client.created", "client.updated",
    "deal.created", "deal.updated", "deal.won", "deal.lost",
    "finance_request.created", "finance_request.approved", "finance_request.paid",
    "*"
  ]
}
GET/webhooks
scope: admin:all

Список зарегистрированных вебхуков со статистикой доставки.

Намунаи дархост ва посух
Дархост
curl https://api.taska.uz/api/public/v1/webhooks \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{
  "items": [
    {
      "id": "wh-000000000101",
      "name": "1С интеграция",
      "url": "https://erp.example.uz/taska/webhook",
      "events": ["deal.won", "finance_request.paid"],
      "isActive": true,
      "failureCount": 0,
      "lastSuccessAt": "2026-07-04T10:00:00+00:00",
      "lastFailureAt": null
    }
  ]
}
POST/webhooks
scope: admin:all

Зарегистрировать вебхук. secret возвращается ОДИН РАЗ — сохраните его для проверки HMAC-подписи. events — список из каталога или ["*"] для всех событий.

ПараметрДар куҷо · нависедТавсифи
name *body · stringназвание подписки
url *body · stringHTTPS-URL вашего обработчика
events *body · arrayсобытия из каталога или ["*"]
Намунаи дархост ва посух
Дархост
curl -X POST https://api.taska.uz/api/public/v1/webhooks \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "1С интеграция",
    "url": "https://erp.example.uz/taska/webhook",
    "events": ["deal.won", "finance_request.paid"]
  }'
Ҷавоб · JSON
{
  "id": "wh-000000000101",
  "name": "1С интеграция",
  "url": "https://erp.example.uz/taska/webhook",
  "events": ["deal.won", "finance_request.paid"],
  "isActive": true,
  "secret": "whsec_Zm9vYmFyYmF6cXV4...",
  "note": "Секрет показывается один раз — сохраните его для проверки HMAC-подписи X-Webhook-Signature."
}
DELETE/webhooks/{id}
scope: admin:all

Отключить вебхук.

Намунаи дархост ва посух
Дархост
curl -X DELETE https://api.taska.uz/api/public/v1/webhooks/wh-000000000101 \
  -H "X-API-Token: tsk_acme_4f9d21c07ab356e8..."
Ҷавоб · JSON
{ "ok": true }

Вебхукҳо: интиқол, имзо, такрорӣ

Ба ҷои пурсишҳои доимӣ, худи Taska ҳангоми рух додани ҳодисаҳо ба URL-и шумо POST мефиристад: муомила сохта мешавад, пардохт анҷом дода мешавад ва ғайра. Обуна - тавассути гурӯҳи "Webhooks" -и директория (дар доираи admin: ҳама).

Формати интиқол

Ҳар як URL-и танзимшуда POST-ро бо бадани JSON мегирад: ҳодиса - навъи ҳодиса, маълумот - маълумот (entityType, entityId ва контексти ҳодиса), ts - вақти ҳодиса.

POST → ваш URL
{
  "event": "deal.won",
  "data": {
    "entityType": "deal",
    "entityId": "d4e5f6a7-0000-4000-8000-000000000021"
  },
  "ts": "2026-07-04T10:00:00+00:00"
}

X-Webhook-Имзо

Ҳар як таҳвил имзо карда мешавад: Сарлавҳаи X-Webhook-Signature - HMAC-SHA256 (шонздаҳӣ) аз мақоми дархости хом бо сирри шумо (як бор ҳангоми сохтани вебхук дода мешавад). Пеш аз коркард имзоро санҷед.

python
import hashlib, hmac

def verify(secret: str, raw_body: bytes, signature: str) -> bool:
    expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)

# signature — значение заголовка X-Webhook-Signature

Ретраи

Ҳарчи зудтар ба 2xx ҷавоб диҳед (асинхронӣ коркард кунед). Агар Taska ноком шавад, он интиқолро то 5 маротиба бо фосилаҳои зиёд такрор мекунад: 1 дақиқа → 5 дақиқа → 30 дақиқа → 2 соат → 8 соат.

Вебхукҳо як такони беҳтарин дар вақти воқеӣ мебошанд. Барои кафолат додани синхронизатсия, онҳоро бо пурсишҳои даврӣ илова кунед (GET /movements?cursor=..., GET /deals) - агар сервери шумо дастнорас бошад, ба рӯйдодҳо "қафо мемонад".

Хатогиҳо ва маҳдудиятҳо

Ҳама хатогиҳо дар як лифофаи JSON меоянд:

error envelope
{
  "error": "conflict",
  "message": "Объект изменён параллельно — перечитайте и повторите.",
  "request_id": "9c1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
  "details": { "error": "stale_version" }
}

хато — рамзи мошини синфи хато; хабар — тавсифи ба одам хондашаванда; тафсилот — контекст (рамзи хатои домен, майдонҳои тасдиқ); request_id — идентификатори дархост, онро ба дархости дастгирии худ замима кунед.

Рамзҳои ҷавоб

200 / 201Муваффақият (201 - объект сохта шудааст)
401Токен нест ё беэътибор (api_token_required)
403Ҳаҷми нокифоя ё ҳуқуқҳои нақш (нақшаи_миқёс / мамнӯъ)
404Объект ёфт нашуд (not_found)
409Низоъ: ID-и такрорӣ ё версияи кӯҳна бо If-Match (stale_version)
422Хатогии тасдиқи маълумоти воридотӣ (validation_error)
429Маҳдудияти дархост аз ҳад зиёд гузашт - пас аз такрор кӯшиш кунед

Маҳдудиятҳо

Нишондиҳанда - то 300 дархост дар як дақиқа дар як нишона; дар 429 сарлавҳаҳои Retry-After ва X-RateLimit-* меоянд. Дархостҳои POST сарлавҳаи Idempotency-Keyро дастгирӣ мекунанд: кӯшиши такрорӣ бо ҳамон калид ва бадан ҷавоби кэшшударо ба ҷои амалиёти такрорӣ бармегардонад.

Интегратсия бо 1C

API-и кушода барои мубодилаи стандартӣ бо 1C тарҳрезӣ шудааст: маълумотномаҳо, тавозунҳо, ҳуҷҷатҳои ҳаракат ва рӯйдодҳои вақти воқеӣ.

  • Директорияҳо: контрагентҳо ва ашёҳоро холӣ кунед (GET / мизоҷ, GET / маҳсулот). Ҳангоми зеркашӣ аз 1C, ID-и худро (UUID) гузаронед - синхронизатсия такрорӣ такрор намекунад (дубликати ID → 409).
  • Анбор: квитансияҳо ва хароҷотҳо тавассути POST /ҳаракатҳо бо истинод_type/reference_id (рақами ҳуҷҷати 1C) - тавозунҳо ба таври атомӣ нав карда мешаванд, /захира ҳамеша нав аст.
  • Мубодилаи афзоянда: GET /ҳаракатҳо бо курсор - 1C курсори охирини ояндаро нигоҳ медорад ва танҳо ҳаракатҳои навро мегирад.
  • Вақти воқеӣ: хидмати 1C HTTP-ро ба вебхукҳо имзо кунед (deal.won, finance_request.paid) ва пеш аз коркарди X-Webhook-Signature-ро санҷед.
1С (BSL)
Соединение = Новый HTTPСоединение("api.taska.uz", 443,,,,, Новый ЗащищённоеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/api/public/v1/ping");
Запрос.Заголовки.Вставить("X-API-Token", "tsk_<слаг>_<секрет>");
Ответ = Соединение.Получить(Запрос);
// Ответ.ПолучитьТелоКакСтроку() → {"ok":true,"apiVersion":"v1","scopes":[...]}

Агар ба шумо барои пайваст кардани 1C ё сенарияи мубодилаи ғайристандартӣ кӯмак лозим бошад - дархост гузоред, мо ба шумо дар тарҳрезии интегратсия кӯмак хоҳем кард.

Дидани демо-и модулҳои Taska

Барои презентатсияи фардӣ тамосҳоятонро гузоред ё демо-и онлайнро ҳозир кушоед.