Примеры использования Records API для внешних систем

API-интерфейс позволяет работать с данными системы ECOS в привычном интерфейсе вашей информационной системы.

С помощью Records API вы можете выполнять любые действия с данными, которые хранятся в любом из микросервисов ECOS. Подробнее про Records API

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

  • получение и изменение информации о маршрутах;

  • управление набором и составом групп пользователей.

Важно

Для обеспечения корректной отправки http-запросов произведите настройки аутентификации в соответствии со статьей

Поиск и скачивание документа

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{
  "query": {
    "sourceId": "emodel/aro-internal-type",
    "query": {
      "att": "_status",
      "t": "eq",
      "val": "new"
    },
    "language": "predicate"
  },
  "attributes": [
    "_content.url"
  ]
}

Ответ

{
  "records": [
    {
      "id": "emodel/aro-internal-type@86edb336-7816-41fa-9809-680a077e0b5e",
      "attributes": {
        "_content.url": "/gateway/emodel/api/ecos/webapp/content?ref=aro-internal-type%4086edb336-7816-41fa-9809-680a077e0b5e&att=content"
      }
    },
    {
      "id": "emodel/aro-internal-type@dde85aac-e875-471c-a44d-a4135fc7c56a",
      "attributes": {
        "_content.url": "/gateway/emodel/api/ecos/webapp/content?ref=aro-internal-type%40dde85aac-e875-471c-a44d-a4135fc7c56a&att=content"
      }
    }
  ],
  "errors": [],
  "hasMore": false,
  "totalCount": 2
}

Далее сделать GET запрос для скачивания контента:

GET {{host}}/gateway/emodel/api/ecos/webapp/content?ref=aro-internal-type%40dde85aac-e875-471c-a44d-a4135fc7c56a&att=content

Скачивание документа

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{
  "records": [
    "emodel/aro-internal-type@e3b81a2b-cdc9-42bc-abbc-a6a564aedbb8"
  ],
  "attributes": [
    "_content.url"
  ]
}

Ответ

{
    "records": [
        {
            "id": "emodel/aro-internal-type@e3b81a2b-cdc9-42bc-abbc-a6a564aedbb8",
            "attributes": {
                "_content.url": "/gateway/emodel/api/ecos/webapp/content?ref=aro-internal-type%40e3b81a2b-cdc9-42bc-abbc-a6a564aedbb8&att=content"
            }
        }
    ],
    "errors": []
}

Далее сделать GET запрос для скачивания контента:

GET {{host}}/gateway/emodel/api/ecos/webapp/content?ref=aro-internal-type%40e3b81a2b-cdc9-42bc-abbc-a6a564aedbb8&att=content

Управление маршрутами

Получение списка маршрутов

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{"query":{
    "sourceId":"alfresco/",
    "query":{
        "att":"_type",
        "val":"emodel/type@testdl-routeTemplateItem",
        "t":"eq"
        },
        "language":"predicate",
        "page":{"skipCount":0,"maxItems":10,"page":1},
        "consistency":"EVENTUAL",
        "sortBy":[{"attribute":"cm:created","ascending":false}]},
        "attributes":["testdl:rtCode?disp"]
}

Ответ

{
    "records": [
        {
            "id": "alfresco/@workspace://SpacesStore/820f88b5-e722-4bc0-933f-926d57e728aa",
            "attributes": {
                "testdl:rtCode?disp": "1"
            }
        }
    ],
    "errors": [],
    "hasMore": false,
    "totalCount": 1
}

Получение иерархии по уровням

URL

{{host}}/gateway/alfresco/alfresco/s/api/orgstruct/v2/group/_orgstruct_home_/children?addAdminGroup=true&branch=true&excludeAuthorities=&group=true&role=true&user=true

Type

GET

Ответ

[
    {
        "nodeRef": "workspace://SpacesStore/03094bf2-1395-4ded-98ff-3aba20698260",
        "fullName": "GROUP_all",
        "shortName": "all",
        "displayName": "Все пользователи",
        "authorityType": "GROUP",
        "groupType": "branch",
        "groupSubType": "company"
    },
    {
        "nodeRef": "workspace://SpacesStore/6ac1289b-45c6-43b5-ad95-fdbbe1302d69",
        "fullName": "GROUP_company",
        "shortName": "company",
        "displayName": "Организация",
        "authorityType": "GROUP",
        "groupType": "branch",
        "groupSubType": "company"
    }
]

Изменение маршрута (Добавление/удаление пользователей/группы в маршрут)

URL

{{host}}/gateway/api/records/mutate

Type

POST

Запрос

{
    "records": [
        {
            "id":"alfresco/@workspace://SpacesStore/820f88b5-e722-4bc0-933f-926d57e728aa", // ID маршрута
            "attributes":{
                "testdl:templateRouteSignerAssoc?str":"workspace://SpacesStore/15d05def-45fd-41cf-bf8d-96ecd422edea", // этап, на который необходимо добавить пользователя/группу (указать ID пользователя/группы), если необходимо удалить с этапа, то указать “”
                "_state?str":"submitted"
                         }
        }
               ]
}

Ответ

{
    "records": [
        {
            "id": "alfresco/@workspace://SpacesStore/820f88b5-e722-4bc0-933f-926d57e728aa",
            "attributes": {}
        }
    ],
    "errors": []
}

Управление набором и составом групп

Просмотр списка пользователей

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{
    "query":{
        "query":{
        "t":"and",
        "val":[{"t":"eq","att":"TYPE","val":"cm:person"}]},
        "language":"predicate",
        "consistency":"EVENTUAL",
        "page":{"maxItems":10,"skipCount":0}},
        "attributes":{"fullName":".disp","userName":"userName"}
    }

Ответ

{
"records": [
    {
        "id": "alfresco/@workspace://SpacesStore/e0d4333e-97e1-4d42-a4d0-83e4259ed936",
        "attributes": {
            "fullName": "Guest",
            "userName": "guest"
        }
    },
    {
        "id": "alfresco/@workspace://SpacesStore/6985ba61-155a-4ae8-aeb3-28acbc59f5f4",
        "attributes": {
            "fullName": "system",
            "userName": "system"
        }
    },
    {
        "id": "alfresco/@workspace://SpacesStore/15d05def-45fd-41cf-bf8d-96ecd422edea",
        "attributes": {
            "fullName": "Administrator",
            "userName": "admin"
        }
    }
],
"errors": [],
"hasMore": false,
"totalCount": 3
    }

Получение списка групп, в которой состоит пользователь

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{"records":
    ["people@admin"],
    "attributes":
        ["groups[]"]
}

Ответ

{
"records": [
    {
        "id": "people@admin",
        "attributes": {
            "groups[]": [
                "ALFRESCO_ADMINISTRATORS",
                "ALFRESCO_MODEL_ADMINISTRATORS"
            ]
        }
    }
],
"errors": []
}

Удаление/добавление пользователя в группу

URL

{{host}}/gateway/api/records/mutate

Type

POST

Запрос

{"records":[
    {
    "id":"emodel/person@admin",
    "attributes":{
        "att_add_authorityGroups":"emodel/authority-group@GROUP_company_accountancy"
}}]}

att_add_authorityGroups – добавление в группу

att_rem_authorityGroups – удаление из группы

Просмотр содержимого группы

Просмотр пользователей в группе

URL

{{host}}/gateway/api/records/query

Type

POST

Запрос

{"query":{
    "sourceId": "emodel/person",
        "query": {"t": "contains", "a": "authorityGroups", "v": "emodel/authority-group@orders-technologist"},
    "language": "predicate"
}}

Ответ

{
    "records": [
        "emodel/person@admin"
    ],
    "errors": [],
    "hasMore": false,
    "totalCount": 1
}

Просмотр групп в группах

Просмотр групп в группе аналогичен просмотру пользователей в группе, но sourceId равен “emodel/authority-group“.

Просмотр пользователей или групп с учетом иерархии вниз (т.е. указать корень оргструктуры или любую другую группу, но так же ищется и во всех подгруппах) - то же что и просмотр пользователей в группе, но вместо “authorityGroups” использовать “authorityGroupsFull“

Таблица 1 Описание полей

Поле

Наименование

fullName

Полное наименование

shortName

Сокращенное наименование

id

ID записи

nodeRef

Ссылка на запись в системе Citeck

displayName

Отображаемое наименование

authorityType

Тип полномочий User/Group

groupType

Тип группы

groupSubType

Тип подгруппы

userName

Логин

templateRouteSignerAssoc

Этап, на который необходимо добавить пользователя/группу (указать ID пользователя/группы), если необходимо удалить с этапа указать “”

att_add_authorityGroups

att_add_authorityGroups – добавление в группу
att_rem_authorityGroups – удаление из группы

rtCode

Код шаблона

_state

Тип состояния

errors

Значение ошибки, если при запросе она произошла

hasMore

Есть ли дальше рекорды (записи)

totalCount

Общее количество найденных записей

disp

Значение для вывода

value

Значение

Таблица 2 Описание параметров

Параметр

Значение

Блок “page”

Параметр для настройки пагинации.
Необязательный параметр.

Блок “sortBy”

Параметр для сортировки.
Необязательный параметр.

Блок “attributes“

Параметры (см. Таблица 1), которые необходимо получить на выходе.
Необязательный параметр.
Можно не указывать параметры в “attributes“ или убрать данный блок и на выходе получить список Id записей.

sourceId

Источник данных для поиска. В данном случае alfresco.
Возможные варианты:
• reports-data
• alfresco

query

Необходимый predicate query для поиска записей

att

Название аттрибута

val

Значение

t

Типы предикатов.
Возможные варианты:
• starts
• ends
• or
• and
• empty
• not
• eq
• gt
• ge
• lt
• le
• like
• in
• contains

language

Язык запроса. На текущий момент поддерживается только predicate

consistency

Консистенция (Согласованность)
Возможные варианты:
• EVENTUAL
• TRANSACTIONAL
• DEFAULT
• TRANSACTIONAL_IF_POSSIBLE

Внесение изменений в запись

{
  "records": [
    {
      "id":  "alfresco/@workspace://SpacesStore/10a8c2e8-2c14-4c64-83b3-06b8bfc45006", //id workspace, в который данные необходимо добавить
      "attributes": {
        "testpkg: poAssoc?assoc": [
          "dict@testpkg:po-alias-4" // alias должен быть уникальным в пределах запроса, можно задать константой
        ]
      }
    },
    {
      "id": "dict@testpkg: po",
      "attributes": {
        "_alias?str": "dict@testpkg:po-alias-4",
        "testpkg:poValue?str": "1234567890",
        "testpkg: poPpsDate?str":"2023-05-19T00:00:00Z",
        "_state?str": "submitted",
        "_formInfo?json": {
          "submitName": {
            "en": "Cохранить"
          }
          "formId": "testpkg-po-form"
        }
      }
    }
  ]
}

Добавление данных

{
  "records": [
    {
      "id":  "alfresco/@workspace://SpacesStore/10a8c2e8-2c14-4c64-83b3-06b8bfc45006",
      "attributes": {
        "att_add_testpkg: poAssoc?assoc": [
          "dict@testpkg:po-alias-4"
        ]
      }
    },
    {
      "id": "dict@testpkg: po",
      "attributes": {
        "_alias?str": "dict@testpkg:po-alias-4",
        "testpkg:poValue?str": "1234567890",
        "testpkg: poPpsDate?str":"2023-05-19T00:00:00Z",
        "_state?str": "submitted",
        "_formInfo?json": {
          "submitName": {
            "en": "Cохранить"
          }
          "formId": "testpkg-po-form"
        }
      }
    }
  ]
}