📋 API

Основные коды состояния ответа HTTP

КодОписание
200Операция успешно завершена
400Плохой запрос
401Не авторизован
500Другие ошибки

🌍 Локализация

Параметр {culture} отвечает за локализацию API, которая представляет собой код языка в соответствии со стандартом ISO 639-1.

💬 Информационное сообщение

Вызовы некоторых методов возвращают только информационные сообщения. В этом случае код состояния ответа HTTP всегда будет 200, а возвращаемое сообщение будет выглядеть следующим образом:

{
  "message": "Операция успешно завершена"
}

где message - это сообщение от системы о результате выполнения какого-либо действия.

⛔ Сообщение об ошибке

Если что-то пойдет не так во время вызова метода или выполнения, код состояния ответа HTTP всегда будет отличаться от 200. В этом случае возвращаемое сообщение будет выглядеть следующим образом:

{
  "error": "Операция завершилась неудачей"
}

где error - это сообщение от системы, содержащее причину ошибки.

⚡ Для всех следующих методов этого API, если код состояния ответа HTTP не равен 200, будет возвращено сообщение об ошибке.



👮 Аутентификация/Авторизация

Получение токена

/{culture}/api/issue-access-token - метод позволяет получить токен для последующей аутентификации и авторизации в системе.

POST, Content-Type: application/json

Запрос:

{
  "username": "user@example.com",
  "password": "64e09891d828"
}

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "expiration": "2077-01-01T00:00:00Z",
  "token": "..."
}

где поле expiration содержит дату истечения срока действия токена, а поле token содержит сам токен.

Заголовок HTTP-аутентификации/авторизации

Токен, полученный на первом шаге, должен использоваться во всех перечисленных ниже методах API путем добавления заголовка Authorization со значением Bearer <Token>.

Пример заголовка в HTTP-запросе:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

где eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 это полученный токен.

Перевыпуск токена

/{culture}/api/refresh-access-token - метод позволяет обновить токен аутентификации и авторизации в системе.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "expiration": "2077-01-01T00:00:00Z",
  "token": "..."
}

где поле expiration содержит дату истечения срока действия токена, а поле token содержит сам токен.

⚡ Для продолжения работы с API необходимо предыдущий токен заменить на новый.



📇 Основная информация

Получение оргструктур

/{culture}/api/user-structures - метод получает полную иерархию организационных структур.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
    "name": null,
    "id": 0,
    "childNodes": [
        {
            "name": "...",
            "id": 1,
            "childNodes": []
        }
    ]
}

Получение папок пользователя

/{culture}/api/user-folders - метод получает полную иерархию папок пользователя.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
    "name": null,
    "id": 0,
    "childNodes": [
        {
            "name": "...",
            "id": 1,
            "childNodes": []
        }
    ]
}



🔎 Поисковый индекс

Добавление документа в поисковый индекс

/{culture}/api/add-to-search-index - метод позволяет добавить документ в поисковый индекс, который закреплен за пользователем или его организацией.

PUT, Authorization: Bearer <Token>, Content-Type: application/json

Запрос:

{
  "filename": "example.txt",
  "title": "Брейнданс Пасифики",
  "author": "Виктор Вектор, Дакота Смит",
  "year": 2024,
  "url": "https://example.com/doc/9fe76511d0ee",
  "body": "0YHRitC10YjRjCDQttC1INC10YnRkSDRjdGC0LjRhSDQvNGP
  0LPQutC40YUg0YTRgNCw0L3RhtGD0LfRgdC60LjRhSDQsdGD0
  LvQvtC6LCDQtNCwINCy0YvQv9C10Lkg0YfQsNGO"
}
ПолеОписаниеОбязательно
filenameИмя файла, обязательно с расширением✔️
urlURL-адрес документа может быть виртуальным, но уникальным✔️
bodyТело файла в формате Base64✔️
titleНазвание документа
authorАвторы документа через запятую
yearГод создания документа

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "message": "Документ добавлен в поисковый индекс"
}

Удаление документа из поискового индекса

/{culture}/api/remove-from-search-index - метод позволяет удалить документ из поискового индекса, закрепленного за пользователем или его организацией.

DELETE, Authorization: Bearer <Token>, Content-Type: application/json

Запрос:

{
  "url": "https://example.com/doc/9fe76511d0ee"
}

где url - это URL документа в поисковом индексе.

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "message": "Документ удален из поискового индекса"
}

Массовые операции с поисковым индексом

/{culture}/api/remove-from-search-index?refresh=false

/{culture}/api/add-to-search-index?refresh=false

Для массового добавления или удаления документов необходимо использовать вышеперечисленные методы с параметром refresh и установленным значением в false. Чтобы применить изменения после массовых операций, нужно вызвать метод обновления индекса /{culture}/api/refresh-search-index.

Обновление поискового индекса

/{culture}/api/refresh-search-index - метод позволяет обновить поисковый индекс, закрепленный за пользователем или его организацией.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "message": "Поисковый индекс обновлен"
}

Очистка поискового индекса

/{culture}/api/clear-search-index - метод позволяет удалить все документы из поискового индекса, закрепленного за пользователем или его организацией.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "message": "Поисковый индекс очищен"
}



🕵🏿‍♀️ Проверка на плагиат

Отправка документа на проверку

/{culture}/api/plagiarism-check - метод позволяет отправить документ на проверку в систему обнаружения заимствований.

POST, Authorization: Bearer <Token>, Content-Type: application/json

Запрос:

{
  "structureId": 1000,
  "folderId": 1,
  "filename": "example.txt",
  "author": "Андерс Хелман, Брэндон Фрост",
  "year": 2024,
  "body": "0YHRitC10YjRjCDQttC1INC10YnRkSDRjdGC0LjRhSDQvNGP
  0LPQutC40YUg0YTRgNCw0L3RhtGD0LfRgdC60LjRhSDQsdGD0
  LvQvtC6LCDQtNCwINCy0YvQv9C10Lkg0YfQsNGO",
  "disableDuplicateChecking": false
}
ПолеОписаниеОбязательно
structureIdИдентификатор организационной структуры✔️
folderIdИдентификатор пользовательской папки
filenameИмя файла, обязательно с расширением✔️
authorАвторы документа через запятую
yearГод создания документа
bodyТело файла в формате Base64✔️
disableDuplicateCheckingОтключение проверки на дублирование

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "id": 1000,
  "state": 2
}

где id - это идентификатор проверки, а state - текущее состояние проверки.

Получение состояния проверки

/{culture}/api/plagiarism-check-se/{id} - метод позволяет получить текущее состояние проверки.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "id": 1000,
  "state": 2
}

где id - это идентификатор проверки, а state - текущее состояние проверки.


Код состоянияОписание
1Дубликат
2В очереди на проверку
3Отменено
4В процессе
5Выполнено
6Ошибка


Управление результатом проверки

/{culture}/api/plagiarism-check-rs/{id} - метод позволяет получить или удалить результат проверки.

Authorization: Bearer <Token>

СпособОписание
DELETEУдалить результат проверки
GETПолучить результат проверки

Если операция успешно выполнена при вызове метода GET, ответное сообщение будет выглядеть следующим образом:

{
    "isContainsDeception": false,
    "metrics": {
      "originality": 0.0,
      "citation": 0.0,
      "match": 1.0
    },
    "sources": [
        {
          "metrics": {
             "citation": 0.0,
             "match": 1.0
          },
          "url": "https://www.example.org/abcd/1970.00001",
          "title": null,
          "author": null,
          "year": null
        },
        ...
    ]
}

ПолеОписание
isContainsDeceptionУказывает на то, что используются технические средства повышения оригинальности
metricsПоказатели для документа или отдельного источника
sourcesИсточники, из которых были обнаружены заимствования
ПолеОписание
originalityДоля оригинальности
citationДоля цитирования
matchДоля заимствований
ПолеОписание
urlАдрес ресурса, на котором находится документ или страница
titleНазвание
authorАвторы
yearГод создания

Если проверка завершилась неудачей, метод возвращает сообщение об ошибке.

Подробный отчет в формате PDF

/{culture}/api/plagiarism-check-rp/{id}/extended - метод позволяет получить расширенный отчет о проверке в формате PDF.

GET, Authorization: Bearer <Token>

Возвращает файл формата PDF с заголовком HTTP content-type: application/pdf.

Краткий отчет в формате PDF

/{culture}/api/plagiarism-check-rp/{id}/summary - метод позволяет получить краткий отчет о проверке в формате PDF. Если вы хотите включить в отчет оригинальный документ, просто добавьте ?withOriginal=true.

GET, Authorization: Bearer <Token>

Возвращает файл формата PDF с заголовком HTTP content-type: application/pdf.

Справка в формате PDF

/{culture}/api/plagiarism-check-rp/{id}/reference - метод позволяет получить справку в формате PDF.

GET, Authorization: Bearer <Token>

Возвращает файл формата PDF с заголовком HTTP content-type: application/pdf.



📝 Интерактивный просмотр отчета

Постоянная ссылка на средство просмотра отчета [editable]

/{culture}/api/permanent-viewer/{id} - метод возвращает постоянную ссылку для открытия средства просмотра отчета.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "permanent-link": "https://example.com/document/[\d]"
}

где permanent-link - это бессрочная ссылка на средство просмотра отчетов.

Одноразовая ссылка на средство просмотра отчета [readonly]

/{culture}/api/one-time-viewer/{id} - метод возвращает одноразовую ссылку для открытия средства просмотра отчета.

GET, Authorization: Bearer <Token>

В случае успешного выполнения ответ будет выглядеть следующим образом:

{
  "one-time-link": "https://example.com/document/[\d]",
  "expires": "2024-03-21T20:17:00.0903957Z"    
}

где one-time-link - это одноразовая ссылка на средство просмотра отчета, а expires - дата и время истечения срока действия ссылки