СТРУКТУРА ПРОЕКТОВ ПРЕДПРИЯТИЯ (СПП), АТРИБУТЫ И ЗНАЧЕНИЯ

Структура проектов предприятия

Таблица 1. Модель данных СПП

Поле Тип Описание
id UUID v4 Уникальный идентификатор узла
parentId UUID v4 Идентификатор родительского узла СПП
name string Заголовок узла
key string Уникальный в пределах пространства строковый код узла структуры СПП
type string Тип узла СПП
sortOrder integer Порядок сортировки в пределах уровня
createBy UUID v4 Идентификатор пользователя, создавшего узел СПП
createAt Date Время создания узла СПП

Таблица 2. Типы узлов СПП

Тип Описание
space Пространство
facility Группа проектов
project Проект
schedule График
version Версия графика

Пример: Получить список узлов, доступных для пользователя.

shell;

curl -X 'GET' \
  'https://your-org.domain/public-api/eps' \
  -H 'accept: application/json' \
  -H 'x-version: 409' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad'
javascript;

const epsPath = 'https://your-org.domain/public-api/eps';

const baseHeaders = {
  Authorization: 'your-api-key',
  'x-tenant-id': '5db13376-ba5c-4fd5-ba7f-dc56347956ad',
  'x-version': '409',
  accept: 'application/json',
};

fetch(epsPath, { headers: baseHeaders })
  .then((response) => {
    if (response.ok) {
      return response.json();
    } else {
      throw new Error(`Ошибка: ${response.status}, ${response.statusText}`);
    }
  })
  .then((epsList) => {
    epsList.forEach((eps) => {
      console.log(eps);
    });
  })
  .catch((error) => {
    console.error(error.message);
  });
python;

# https://www.python-httpx.org/quickstart/#passing-parameters-in-urls
import httpx

epsPath = 'https://your-org.domain/public-api/eps'

baseHeaders = {
    'Authorization': 'your-api-key',
    'x-tenant-id': '5db13376-ba5c-4fd5-ba7f-dc56347956ad',
    'x-version': '409',
    'accept': 'application/json'
}

getEpsListResponse = httpx.get(epsPath, headers=baseHeaders)

if getEpsListResponse.status_code == 200:
    epsList = getEpsListResponse.json()

    for eps in epsList:
        print(f"{eps['id']} -- {eps['name']}", sep='\n')
else:
    print(f'Ошибка: {getEpsListResponse.status_code}, {getEpsListResponse.text}')

Пример: Получить список проектов, доступных для пользователя, с помощью протокола OData. В ответе получить поля: name и type.

shell;

curl -X 'GET' \
  ''https://your-org.domain/public-api/eps?select=type,name,id&filter=type eq 'project''' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 409' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad'

Создать новый узел в структуре проектов предприятия.

shell;

curl -X 'POST' \
  'https://your-org.domain/public-api/eps' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 409' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
  -d '{
  "type": "facility",
  "name": "Малоэтажное строительство",
  "parentId": "5db13376-ba5c-4fd5-ba7f-dc56347956ad"
}'

Пример: Изменить существующий узел СПП.

shell;

curl -X 'PUT' \
  'https://your-org.domain/public-api/eps/36b60d7c-fba9-4fb6-8d5a-a054f2043827' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 409' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
  -d '{
    "name": "Малоэтажное строительство",
}'

Пример: Удалить узел СПП.

shell;

curl -X 'DELETE' \
  'https://your-org.domain/public-api/eps/36b60d7c-fba9-4fb6-8d5a-a054f2043827' \
  -H 'accept: */*' \
  -H 'x-version: 409' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad'

Атрибуты

Таблица 3. Модель данных атрибутов СПП

Поле Тип Описание
id UUID v4 Уникальный идентификатор атрибута
label string Заголовок атрибута
type string Тип атрибута
directoryId UUID v4 Идентификатор справочника
directoryAttributeId UUID v4 Идентификатор атрибута справочника
editable boolean Флаг возможности редактировать атрибута

Таблица 4. Типы атрибутов СПП

Тип Описание
date Дата в формате timestamp
number Число в формате float
string Строка
money Число в формате float
boolean Логический в формате 1 или 0

Примеры использования

Пример: Получить список атрибутов.

curl -X 'GET' \
  'https://your-org.domain/public-api/eps-attributes' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true'

Пример: Получить список атрибутов типа date с помощью протокола OData.

curl -X 'GET' \
  ''https://your-org.domain/public-api/eps-attributes?filter=type eq 'date''' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true'

Пример: Создать новый атрибут типа date.

curl -X 'POST' \
  'https://your-org.domain/public-api/eps-attributes' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
  -d '{
    "label": "Дата выпуска документации",
    "type": "date",
  }'

Пример: Создать новый атрибут типа date из справочника.

curl -X 'POST' \
  'https://your-org.domain/public-api/eps-attributes' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
  -d '{
    "label": "Дата выпуска документации",
    "type": "date",
    "directoryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "directoryAttributeId": "5da85f64-5717-4562-b3fc-2c963f66dfdf"
  }'

Пример: Изменить наименование существующего атрибута.

curl -X 'PUT' \
  'https://your-org.domain/public-api/eps-attributes/3fa85f64-5717-4562-b3fc-2c963f66afa6' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
  -d '{
    "label": "Дата выпуска документации",
  }'

Пример: Удалить существующий атрибут.

curl -X 'DELETE' \
  'https://your-org.domain/public-api/eps-attributes/3fa85f64-5717-4562-b3fc-2c963f66afa6' \
  -H 'accept: */*' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad'

Значения атрибутов

Таблица 5. Модель данных значений атрибутов СПП

Поле Тип Описание
epsId UUID v4 Уникальный идентификатор структуры проектов предприятия
attributeId UUID v4 Идентификатор атрибута структуры проектов предприятия
value any Значение атрибута структуры проектов предприятия

Примеры использования

Пример: Получить значения атрибутов для указанного узла.

curl -X 'GET' \
  'https://your-org.domain/public-api/eps-attribute-values?filter=epsId eq 'a3329414-1059-476f-93d5-fd7c1927d966'' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \

Пример: Получить список значений конкретных атрибутов для указанного узла СПП.

curl -X 'GET' \
  'https://your-org.domain/public-api/eps-attribute-values?filter=epsId eq 'a3329414-1059-476f-93d5-fd7c1927d966' and (attrId eq '6b59bfc4-52a6-4c5f-bbae-1b3baa2da5c7') ' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \

Пример: Получить список узлов СПП, чьи значения указанного атрибута равны значению 'your string'.

curl -X 'GET' \
  'https://your-org.domain/public-api/eps-attribute-values?$filter=attrId eq 'a9e8611b-e874-4324-b901-413b4cbd104e' and value eq 'your string' &select=epsId' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \

Пример: Получить список узлов СПП, чьи значения атрибута с идентификатором 9a0a9e7f-2244-4e56-9772-0293fbaabb41 равны 2 и значения атрибута с идентификатором 22ad98e7-123c-48ec-8c76-69f97a4add00 равны 'your string'.

curl -X 'GET' \
  'https://your-org.domain/public-api/eps-attribute-values?$apply=filter((attrId eq '9a0a9e7f-2244-4e56-9772-0293fbaabb41' and number(value) eq 2) OR (attrId eq '22ad98e7-123c-48ec-8c76-69f97a4add00' and value eq 'your string'))/groupby(epsId, aggregate($count as count))/filter(count eq 2)' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \

Пример: Создать новое значение для указанного атрибута.

curl -X 'PUT' \
  'https://your-org.domain/public-api/eps-attribute-values' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type:  application/json' \
  -d '{
    "epsId": "5qa85f64-5717-4562-b3fc-2c963f66afrt",
    "attributeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "value": 90
  }'

Пример: Обновить значение для указанного атрибута.

curl -X 'PUT' \
  'https://your-org.domain/public-api/eps-attribute-values' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type:  application/json' \
  -d '{
    "epsId": "5qa85f64-5717-4562-b3fc-2c963f66afrt",
    "attributeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "value": 100
  }'

Пример: Удалить значение для указанного атрибута.

curl -X 'PUT' \
  'https://your-org.domain/public-api/eps-attribute-values' \
  -H 'accept: application/json;odata.metadata=minimal;odata.streaming=true' \
  -H 'x-version: 507' \
  -H 'Authorization: your-api-key' \
  -H 'x-tenant-id: 5db13376-ba5c-4fd5-ba7f-dc56347956ad' \
  -H 'Content-Type:  application/json' \
  -d '{
    "epsId": "5qa85f64-5717-4562-b3fc-2c963f66afrt",
    "attributeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "value": null
  }'

Значение поля value может быть любым типом данных, например:

Дата в миллисекундах

"value": 1646132400000

Число

"value": 552

Строка

"value": "Строковое значение"

Логическое значение

"value": false

Если значение заполнить null, то значение атрибута удалится

"value": null

509.1-59ba7826