Задача [0413]: API поиск по оргструктуре

Формулировка проблемы: необходимо по полям(код показателя, название и т.д.) получить информацию о должности/подразделении

Решение: необходимо реализовать методы API, которые выполняют поиск по полям (код показателя, название и т.д.) сущностей должность/подразделение

Метод поиска подразделений

URL метода: /rest/api/departments/search.

Тип запроса: GET.

Метод принимает следующие входные параметры:

  • pointer_code - код показателя (необяз.), может быть передано несколько значений;

  • name - название подразделения (необяз.), может быть передано несколько значений;

  • recordsCount - количество результатов, которые необходимо вернуть (по умолчанию 30). Максимальное значение параметра 100;

  • startRecord - номер записи результатов, начиная с которой будут возвращены записи (по умолчанию 0);

  • searchTypePC- тип сравнения для параметра pointer_code (по умолчанию exact). Может принимать следующие значения:

    • exact - точное совпадение поискового запроса и значения поля;

    • partial - вхождение поискового запроса в значение поля.

  • searchTypeN- тип сравнения для параметра name (по умолчанию partial). Может принимать следующие значения:

    • exact - точное совпадение поискового запроса и значения поля;

    • partial - вхождение поискового запроса в значение поля.

  • locale (не обяз.) - код локали (при отсутствии параметра используется язык системы по умолчанию). Данный параметр учитывается при поиске по названию подразделения.

В случае успешного выполнения метод возвращает массив строк, являющихся идентификаторами подразделений.

Пример запроса:
/rest/api/departments/search?pointer_code=dep1&pointer_code=dep3

Пример возвращаемого ответа:

[ "c4ddd6b1-ade2-4ee2-ace5-ac6a81d02a", "vg71a4c6-888a-4dd4-86de-4a394f5749" ]

При указании одновременно разных параметров результат запроса будет связан логическим И. Пример запроса: /rest/api/departments/search?pointer_code=dep5&name=Департамент5

А при указании одновременно одинаковых параметров, результат будет производится по логическому ИЛИ. Пример запроса: /rest/api/departments/search?pointer_code=code1&pointer_code=code2

В случае если по переданным входным параметрам ничего не найдено, сервер возвращает пустой массив.

Альтернативные потоки событий:

Альтернативный поток №1. Не передан ни один из параметров поиска pointer_code,
name. Сервер возвращает ошибку HTTP 400 с сообщением:

{
  "errorCode": 13,
  "errorMessage": "Не передан ни один из параметров поиска: pointer_code, name"
}

поиск не выполняется.

Альтернативный поток №2. Передан некорректный параметр searchTypePC. Сервер возвращает ошибку HTTP 400 с сообщением:

{
   "errorCode":13,
   "errorMessage":"Передан некорректный параметр searchTypePC"
}

поиск не выполняется.

Альтернативный поток №3. Передан некорректный параметр searchTypeN. Сервер возвращает ошибку HTTP 400 с сообщением:

{
   "errorCode":13,
   "errorMessage":"Передан некорректный параметр searchTypeN"
}

поиск не выполняется.

Альтернативный поток №4. Значение переданного параметра recordsCount превышает максимальное значение. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode":13,
    "errorMessage":"Значение параметра recordsCount превышает максимальное
    значение равное 100. Для просмотра дальнейших результатов воспользуйтесь
    параметром `startRecord`"
}

поиск не выполняется.

Метод поиска должностей

URL метода: /rest/api/positions/search.

Тип запроса: GET.

Метод принимает следующие входные параметры:

  • name - название должности (необяз.), может быть передано несколько значений;

  • code - шифр должности (необяз.), может быть передано несколько значений;

  • pointer_code - код показателя (необяз.), может быть передано несколько значений;

  • recordsCount - количество результатов, которые необходимо вернуть (по умолчанию 30). Максимальное значение параметра 100;

  • startRecord - номер записи результатов, начиная с которой будут возвращены записи (по умолчанию 0);

  • searchTypeN- тип сравнения для параметра name (по умолчанию partial). Может принимать следующие значения:

    • exact - точное совпадение поискового запроса и значения поля;

    • partial - вхождение поискового запроса в значение поля.

  • searchTypeC- тип сравнения для параметра code (по умолчанию partial). Может принимать следующие значения:

    • exact - точное совпадение поискового запроса и значения поля;

    • partial - вхождение поискового запроса в значение поля.

  • searchTypePC- тип сравнения для параметра pointer_code (по умолчанию exact). Может принимать следующие значения:

    • exact - точное совпадение поискового запроса и значения поля;

    • partial - вхождение поискового запроса в значение поля.

  • locale - локаль пользователя, ru/en/kz (по умолчанию ru). Данный параметр учитывается при поиске по названию должности.

В случае успешного выполнения метод возвращает массив строк, являющихся идентификаторами должностей.

Пример запроса:

/rest/api/positions/search?name=Администратор&name=Менеджер

Пример возвращаемого ответа:

[ "rgg66d1-ad54-5462-aef5-aggrr55fd02a", "vgikwj4c6-88gh-ef44-3ffe-oepjfee5d6" ]     

При указании одновременно разных параметров результат запроса будет связан логическим И. Пример запроса: /rest/api/positions/search?pointer_code=dep5&code=TRJ163

А при указании одновременно одинаковых параметров, результат будет производится по логическому ИЛИ. Пример запроса: /rest/api/positions/search?name=Админ&name=Ассистент

В случае если по переданным входным параметрам ничего не найдено, сервер возвращает пустой массив.

Альтернативные потоки событий:

Альтернативный поток №1. Не передан ни один из параметров поиска name, code, pointer_code. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Не передан ни один из параметров поиска: name, code, pointer_code"
}

поиск не выполняется.

Альтернативный поток №2. Передан некорректный параметр searchTypeN. Сервер возвращает ошибку HTTP 400 с сообщением:

{
   "errorCode":13,
   "errorMessage":"Передан некорректный параметр searchTypeN"
}

поиск не выполняется.

Альтернативный поток №3. Передан некорректный параметр searchTypeC. Сервер возвращает ошибку HTTP 400 с сообщением:

{
   "errorCode":13,
   "errorMessage":"Передан некорректный параметр searchTypeC"
}

поиск не выполняется.

Альтернативный поток №4. Передан некорректный параметр searchTypePC. Сервер возвращает ошибку HTTP 400 с сообщением:

{
   "errorCode":13,
   "errorMessage":"Передан некорректный параметр searchTypePC"
}

поиск не выполняется.

Альтернативный поток №5. Значение переданного параметра recordsCount превышает максимальное значение. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode":13,
    "errorMessage":"Значение параметра recordsCount превышает максимальное
    значение равное 50. Для просмотра дальнейших результатов воспользуйтесь
    параметром startRecord"
}

поиск не выполняется.