# API для розробників

> Документація з API для розробників. За допомогою API ви зможете інтегрувати WorkPan зі своєю програмою або сайтом

https://workpan.com/uk/doc/api/  
Опубліковано: 2018-11-29  
Оновлено: 2026-09-11

---

API «WorkPan» містить набір викликуваних методів.

Ви можете інтегрувати «WorkPan» з будь-яким застосунком, отримавши доступ до бази даних через API.

Для всіх запитів діє обмеження за кількістю: не більше ніж 8 запитів на секунду.

Перш ніж використовувати **API**, його потрібно увімкнути й згенерувати ключ `token` — це робиться в розділі «Модулі» панелі управління. Після цього всі запити до API мають містити цей параметр `token`.

Запити можна надсилати методом `GET|POST`.

Усі відповіді надаються у форматі `JSON`.

`URL:` — це адреса розташування вашої системи, наприклад `https://_ВАШ_ЛОГІН_.workpan.com`.

У цьому уроці ми використовуватимемо **DEMO-систему** з такими даними

<dl>
  <dt><code>URL:</code></dt>
  <dd>https://demo.workpan.com</dd>
  <dt><code>token:</code></dt>
  <dd>wt3sctw89sl</dd>
  </dl> 
#### Зміст:

- [Розділ №1: Отримання статусу замовлення](#menu_orderStatus)
- [Розділ №2: Отримання ID усіх замовлень](#menu_orderIds)
- [Розділ №3: Отримання інформації про замовлення за ID](#menu_orderById)
- [Розділ №4: Отримання інформації про контакт за ID](#menu_contactById)
- [Розділ №5: Отримання інформації про статус за ID](#menu_statusById)
- [Розділ №6: Отримання інформації про співробітника за ID](#menu_userById)
- [Розділ №7: Отримання текстових даних за ID (поля із закінченням \_tid)](#menu_textById)
- [Розділ №8: Отримання даних із довідника за ID (поля із закінченням \_rid)](#menu_rosterById)

### Розділ №1: Отримання статусу замовлення

##### Опис запиту:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/order-status/`     |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` Номер замовлення |

##### Опис відповіді:

| Ключ | Тип | Опис |
|----------|-------------|---------------------------------|
| `status` | `(boolean)` | Статус запиту: **TRUE\|FALSE** |
| `data`   | `(object)`  | Об’єкт із даними                  |

Докладна інформація про об’єкт `data`.

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr>
<th>Ключ</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id</code></td>
<td>Ключ замовлення</td>
</tr>
<tr>
<td><code>contacts_id</code></td>
<td>Ключ контакту</td>
</tr>
<tr>
<td><code>contacts_name</code></td>
<td>Найменування контакту</td>
</tr>
<tr>
<td><code>global_sid</code></td>
<td>Ключ статусу</td>
</tr>
<tr>
<td><code>global_status_name</code></td>
<td>Повний опис статусу</td>
</tr>
<tr>
<td><code>global_status_name_sm</code></td>
<td>Короткий опис статусу</td>
</tr>
<tr>
<td><code>global_status_class</code></td>
<td>Клас статусу: <code>('none','warning','success','important','info','inverse')</code></td>
</tr>
<tr>
<td><code>global_status_type</code></td>
<td>Тип статусу: <code>(1 = очікування, 2 = відкритий, 3 = у роботі, 4 = успіх, 5 = помилка, 6 = закритий)</code></td>
</tr>
<tr>
<td><code>gid</code></td>
<td>Ключ типу апарата</td>
</tr>
<tr>
<td><code>g_name</code></td>
<td>Тип апарата</td>
</tr>
<tr>
<td><code>bid</code></td>
<td>Ключ бренду</td>
</tr>
<tr>
<td><code>b_name</code></td>
<td>Бренд</td>
</tr>
<tr>
<td><code>models_id</code></td>
<td>Ключ моделі</td>
</tr>
<tr>
<td><code>m_name</code></td>
<td>Модель</td>
</tr>
<tr>
<td><code>imei</code></td>
<td>IMEI апарата</td>
</tr>
<tr>
<td><code>bt_data</code></td>
<td>Опис поломки</td>
</tr>
<tr>
<td><code>nt_data</code></td>
<td>Примітка до замовлення</td>
</tr>
<tr>
<td><code>discount_name</code></td>
<td>Знижка</td>
</tr>
<tr>
<td><code>sumPrice</code></td>
<td>Сума послуг</td>
</tr>
<tr>
<td><code>sumDiscount</code></td>
<td>Сума знижки</td>
</tr>
<tr>
<td><code>sumTotal</code></td>
<td>Підсумкова сума</td>
</tr>
<tr>
<td><code>repairs</code></td>
<td>Масив об’єктів із видами ремонту:<br />
<br />
&#10;<ul>
<li><code>orders_repairs_id</code> — тікет ремонту</li>
<li><code>products_rosters_id</code> — ключ виду ремонту</li>
<li><code>products_rosters_name</code> — найменування</li>
<li><code>price</code> — вартість</li>
</ul></td>
</tr>
<tr>
<td><code>details</code></td>
<td>Масив об’єктів із комплектуючими:<br />
<br />
&#10;<ul>
<li><code>orders_details_id</code> — тікет закупівлі</li>
<li><code>details_rosters_id</code> — ключ деталі</li>
<li><code>details_rosters_name</code> — найменування</li>
<li><code>price</code> — вартість</li>
</ul></td>
</tr>
</tbody>
</table>

#### [Приклад запиту:](#request_orderStatus)

    <?php
    $url = 'https://demo.workpan.com/api/order-status/';
    $token = 'wt3sctw89sl'; // Приблизний token, його можна отримати в особистому кабінеті
    $id = 10; // Приблизний ключ замовлення
    $postData = array(
        'token' => $token,
        'id' => $id
    );
    $post = http_build_query($postData);

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    $response = curl_exec($ch);
    curl_close($ch);

    // Виведення даних
    $obj = json_decode($response);
    var_dump($obj);

#### [Приклад відповіді:](#result_orderStatus)

    {
        "data": {
            "id": "10",
            "contacts_id": "23",
            "contacts_name": "Мария",
            "global_sid": "27",
            "global_status_name": "Выдан с ремонтом",
            "global_status_name_sm": "Выдан с ремонтом",
            "global_status_class": "info",
            "global_status_type": "4",
            "gid": "2",
            "g_name": "Планшет",
            "bid": "1",
            "b_name": "3Q",
            "models_id": "17",
            "m_name": "3Q Q-pad MT0729D",
            "imei": null,
            "bt_data": "После попадания воды планшет не включается, так же разбит дисплей",
            "nt_data": null,
            "discount_name": null,
            "sumPrice": "7500.00",
            "sumDiscount": "0.00",
            "sumTotal": "7500.00",
            "repairs": [
                {
                    "orders_repairs_id": "34",
                    "products_rosters_id": "1",
                    "products_rosters_name": "Диагностика",
                    "price": "0"
                },
                {
                    "orders_repairs_id": "35",
                    "products_rosters_id": "2",
                    "products_rosters_name": "Чистка после попадания воды",
                    "price": "1500"
                },
                {
                    "orders_repairs_id": "36",
                    "products_rosters_id": "85",
                    "products_rosters_name": "Замена модуля (стекло, тачскрин и дисплей)",
                    "price": "1500"
                }
            ],
            "details": [
                {
                    "orders_details_id": "5",
                    "details_rosters_id": "48",
                    "details_rosters_name": "Модуль (стекло, тачскрин и дисплей)",
                    "price": "4500"
                }
            ]
        },
        "status": true
    }

### Розділ №2: Отримання ID усіх замовлень

##### Опис запиту:

|  |  |
|----|----|
| `Метод` | `/api/get-orders-ids/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `page` | `(integer)` Номер сторінки |
| `create_date_start` | `(integer)` Дата створення замовлення, початок (UNIXTIMESTAMP) |
| `create_date_end` | `(integer)` Дата створення замовлення, кінець (UNIXTIMESTAMP) |

##### Опис відповіді:

| Ключ | Тип | Опис |
|-------------|------------|-----------------------------------------------------|
| `paginator` | `(object)` | Об’єкт із даними для обходу за запитом              |
| `items`     | `(object)` | ID замовлень для подальшого отримання повних даних |

#### [Приклад відповіді:](#result_orderIds)

    {
      "paginator": {
        "pageCount": 2,
        "itemCountPerPage": 10,
        "first": 1,
        "current": 1,
        "last": 2,
        "next": 2,
        "pagesInRange": {
          "1": 1,
          "2": 2
        },
        "firstPageInRange": 1,
        "lastPageInRange": 2,
        "currentItemCount": 10,
        "totalItemCount": 11,
        "firstItemNumber": 1,
        "lastItemNumber": 10
      },
      "items": [
        "1",
        "2",
        "9",
        "22",
        "29",
        "30",
        "31",
        "32",
        "33",
        "34"
      ]
    }

### Розділ №3: Отримання інформації про замовлення за ID

##### Опис запиту:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/get-order-by-id/`  |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` Номер замовлення |

##### Опис відповіді:

| Ключ | Тип | Опис |
|----|----|----|
| `id` | `(integer)` | ID замовлення |
| `contacts_id` | `(integer)` | ID контакту/клієнта <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `models_id` | `(integer)` | ID моделі |
| `models_name` | `(string)` | Назва моделі |
| `models_gadgets_id` | `(integer)` | ID типу пристрою |
| `models_gadgets_name` | `(string)` | Назва типу пристрою |
| `models_brands_id` | `(integer)` | ID бренду |
| `models_brands_name` | `(string)` | Назва бренду |
| `services_id` | `(integer)` | ID сервісного центру |
| `create_uid` | `(integer)` | ID користувача, який створив замовлення (для отримання даних див. відповідний розділ) |
| `create_date` | `(datetime)` | Дата створення замовлення |
| `create_date_u` | `(integer)` | Дата створення замовлення (UNIXTIMESTAMP) |
| `priority` | `(integer)` | Пріоритет замовлення `(1, 2, 3)` |
| `isService` | `(boolean)` | Де перебуває апарат `(0 => у клієнта, 1 => у сервісному центрі)` |
| `isWarranty` | `(boolean)` | Гарантійне замовлення? `(0 => ні, 1 => так)` |
| `isClose` | `(boolean)` | Замовлення закрите? `(0 => ні, можна редагувати, 1 => так, закрите)` |
| `bug_tid` | `(integer)` | Ключ опису поломки <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `note_tid` | `(integer)` | Примітка до замовлення <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `color_rid` | `(integer)` | Колір апарата <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `discount_rid` | `(integer)` | Знижка за замовленням <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `discount_type` | `(integer)` | Тип знижки `(1 => на роботу, 2 => на все)` |
| `oriented` | `(integer)` | Узгоджена сума |
| `imei` | `(string)` | Серійний номер апарата |
| `cond` | `(string)` | Стан |
| `appearance` | `(string)` | Зовнішній вигляд |
| `complete` | `(string)` | Комплектація |
| `global_sid` | `(integer)` | Глобальний статус замовлення <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `client_sid` | `(integer)` | Клієнтський статус <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `acceptance_sid` | `(integer)` | Статус приймання <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `detail_sid` | `(integer)` | Статус деталей <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `repair_sid` | `(integer)` | Статус ремонтів <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `delivery_sid` | `(integer)` | Статус видачі <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `acceptance_uid` | `(integer)` | ID співробітника, який прийняв апарат <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `acceptance_date` | `(datetime)` | Дата приймання |
| `acceptance_date_u` | `(integer)` | Дата приймання (UNIXTIMESTAMP) |
| `delivery_uid` | `(integer)` | ID користувача, який видав апарат <sup>(для отримання повних даних див. відповідний розділ)</sup> |
| `delivery_date` | `(datetime)` | Дата видачі |
| `delivery_date_u` | `(integer)` | Дата видачі (UNIXTIMESTAMP) |
| `delivery_type` | `(integer)` | Тип видачі `(1 => з ремонтом, 2 => без ремонту)` |
| `expect_date` | `(date)` | Очікувана дата видачі |
| `expect_date_u` | `(integer)` | Очікувана дата видачі (UNIXTIMESTAMP) |
| `sumPrice` | `(float)` | Сума всіх послуг |
| `sumDiscount` | `(float)` | Сума знижки |
| `sumTotal` | `(float)` | Підсумкова сума (сума послуг мінус знижка) |
| `sumExpense` | `(float)` | Сума витрат |
| `sumPaid` | `(float)` | Оплачено |
| `sumIncome` | `(string)` | Прибуток |
| `guarantee_rid` | `(string)` | ID ключа гарантії <sup>(для отримання повних даних див. відповідний розділ)</sup> |

#### [Приклад відповіді:](#result_orderById)

    {
      "id": "31",
      "contacts_id": "23",
      "models_id": "1928",
      "models_name": "Apple iPhone 2G",
      "models_gadgets_id": "1",
      "models_gadgets_name": "Apple",
      "models_brands_id": "5",
      "models_brands_name": "Телефон",
      "services_id": "2",
      "create_uid": "1",
      "create_date": "2018-07-05 16:30:55",
      "create_date_u": "1530790255",
      "priority": "2",
      "isService": "1",
      "isWarranty": "0",
      "isClose": "0",
      "bug_tid": "10",
      "note_tid": null,
      "color_rid": "107",
      "discount_rid": null,
      "discount_type": null,
      "oriented": "0",
      "imei": "",
      "cond": "Б/У",
      "appearance": "Потертости,Царапины",
      "complete": "Без упаковки,Без флешки,Без СЗУ,Без аккумлятора",
      "global_sid": "14",
      "client_sid": "7",
      "acceptance_sid": "10",
      "detail_sid": "14",
      "repair_sid": "21",
      "delivery_sid": null,
      "acceptance_uid": "1",
      "acceptance_date": "2019-01-19 14:36:40",
      "acceptance_date_u": "1547890600",
      "delivery_uid": null,
      "delivery_date": null,
      "delivery_date_u": null,
      "delivery_type": null,
      "expect_date": "2019-03-11",
      "expect_date_u": "1552244400",
      "sumPrice": "1000.00",
      "sumDiscount": "0.00",
      "sumTotal": "1000.00",
      "sumExpense": "0.00",
      "sumPaid": "1000.00",
      "sumIncome": "1000.00",
      "guarantee_rid": null
    }

### Розділ №4: Отримання інформації про контакт за ID

##### Опис запиту:

|                               |                            |
|-------------------------------|----------------------------|
| `Метод`                       | `/api/get-contact-by-id/`  |
| `token` <sup>(required)</sup> | `(string)` token           |
| `id` <sup>(required)</sup>    | `(integer)` Номер контакту |

##### Опис відповіді:

| Ключ | Тип | Опис |
|----|----|----|
| `id` | `(integer)` | ID контакту |
| `name` | `(string)` | Назва |
| `create_users_id` | `(integer)` | Користувач, який створив контакт |
| `date_create` | `(datetime)` | Дата створення |
| `date_create_u` | `(integer)` | Дата створення (UNIXTIMESTAMP) |
| `date_update` | `(datetime)` | Дата оновлення |
| `date_update_u` | `(integer)` | Дата оновлення (UNIXTIMESTAMP) |
| `types` | `(string)` | Тип контакту `(ENUM('client','organization','provider'))` |
| `status` | `(integer)` | Статус |
| `update_users_id` | `(integer)` | ID користувача, який оновив контакт |
| `communications` | `(object)` | Масив із даними для зв’язку з контактом (телефон, сайт, адреса тощо) |

#### [Приклад відповіді:](#result_contactById)

    {
      "id": "23",
      "name": "Мария",
      "create_users_id": "1",
      "date_create": "2018-06-11 18:38:11",
      "date_create_u": "1528724291",
      "date_update": "2019-03-29 16:44:23",
      "date_update_u": "1553859863",
      "types": "client",
      "status": "1",
      "update_users_id": "1",
      "communications": [
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": "17",
          "rosters_type_name": "Мобильный",
          "data": "78124987856"
        },
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": "16",
          "rosters_type_name": "Рабочий",
          "data": "7495123456"
        }
      ]
    }

### Розділ №5: Отримання інформації про статус за ID

##### Опис запиту:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/get-status-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` ID статусу   |

##### Опис відповіді:

| Ключ | Тип | Опис |
|----|----|----|
| `id` | `(integer)` | ID статусу |
| `name` | `(string)` | Назва |
| `name_small` | `(string)` | Коротка назва |
| `status_groups_id` | `(integer)` | ID групи статусу |
| `status_groups_name` | `(string)` | Назва групи статусу |
| `class` | `(string)` | class `ENUM('none','warning','success','important','info','inverse')` |
| `class_i` | `(integer)` | class integer |
| `type` | `(string)` | type `ENUM(очікування, відкритий, у роботі, успіх, помилка, закритий)` |
| `type_i` | `(integer)` | type integer |

#### [Приклад відповіді:](#result_statusById)

    {
      "id": "14",
      "name": "Требуется назначить закупщика",
      "name_small": "Тр. назначить закупщика",
      "status_groups_id": "4",
      "status_groups_name": "Запчасти",
      "class": "warning",
      "class_i": "2",
      "type": "ожидание",
      "type_i": "1"
    }

### Розділ №6: Отримання інформації про співробітника за ID

##### Опис запиту:

|                               |                           |
|-------------------------------|---------------------------|
| `Метод`                       | `/api/get-user-by-id/`    |
| `token` <sup>(required)</sup> | `(string)` token          |
| `id` <sup>(required)</sup>    | `(integer)` ID співробітника |

##### Опис відповіді:

| Ключ | Тип | Опис |
|------------|-------------|---------------|
| `id`       | `(integer)` | ID співробітника |
| `name`     | `(string)`  | Ім’я |
| `lastname` | `(string)`  | Прізвище |

#### [Приклад відповіді:](#result_userById)

    {
      "id": "1",
      "create_date": "2018-04-18 19:11:42",
      "create_date_u": "1524060702",
      "create_uid": "1",
      "name": "Иван",
      "lastname": "Иванов",
      "patronymic": null,
      "login": "ivanov123",
      "auths_groups_id": "1",
      "isAdmin": "1",
      "services_id": "1",
      "status_id": "50",
      "rosters_posts_id": "1",
      "date_birth": "1989-01-01",
      "date_birth_u": "614372400",
      "note": null,
      "career_start": "2018-02-01",
      "career_end": null,
      "communications": [
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "+749512346"
        },
        {
          "rosters_id": "3",
          "rosters_name": "E-mail",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "info@example.com"
        },
        {
          "rosters_id": "12",
          "rosters_name": "Мессенджер",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "skype_name"
        }
      ]
    }

### Розділ №7: Отримання текстових даних за ID (поля із закінченням \_tid)

##### Опис запиту:

|  |  |
|----|----|
| `Метод` | `/api/get-text-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `id` <sup>(required)</sup> | `(integer)` ID потрібного запису \| поля із закінченням `_tid` у запитах вище |

##### Опис відповіді:

| Ключ | Тип | Опис |
|--------|-------------|----------|
| `id`   | `(integer)` | ID       |
| `data` | `(string)`  | Дані |

#### [Приклад відповіді:](#result_textById)

    {
      "id": "15",
      "data": "Не заряжается"
    }

### Розділ №8: Отримання даних із довідника за ID (поля із закінченням \_rid)

##### Опис запиту:

|  |  |
|----|----|
| `Метод` | `/api/get-roster-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `id` <sup>(required)</sup> | `(integer)` ID потрібного запису \| поля із закінченням `_rid` у запитах вище |

##### Опис відповіді:

| Ключ | Тип | Опис |
|--------|-------------|----------|
| `id`   | `(integer)` | ID       |
| `name` | `(string)`  | Назва |

#### [Приклад відповіді:](#result_rosterById)

    {
      "id": "15",
      "name": "Банковские реквизиты"
    }