Перейти к содержимому
НЕВЕЛГРАД документация
На сайт
Справочник API

Справочник API

Конечные точки платформы: маршруты, параметры запросов и структура ответов. Справочник собирается автоматически из маршрутизации приложения.

  • Версия 1.0
  • Обновлено
  • Статус АВТО-ГЕНЕРАЦИЯ
  • Язык RU
УВЕДОМЛЕНИЕ Статус документации

Справочник формируется автоматически из атрибутов [ApiDocumentation] и фактической маршрутизации. Если метод не документирован — он сюда не попадает. Проверяйте актуальность параметров перед интеграцией.

БЫСТРЫЙ СТАРТ Базовая информация

Базовый URL: https://nevelgrad.ru
Формат ответов: JSON
Аутентификация: Authorization: Bearer <token>

§1.Обзор

API платформы НевелГрад — HTTP/JSON-интерфейс к сервисам форума, файлов, почты и задач. Все адреса относительны базового URL; защищённые конечные точки требуют JWT-токен.

§2.Сводка

Конечных точек
16
Категорий
3
Публичных
7
Требуют токен
9

§3.Конечные точки

Почта 5

POST /api/Mail/link_tasks

Привязка задач к письму

🔒 токен v1.0

Маркировка письма определяется привязанными задачами

ПАРАМЕТРЫ 1
Поле Тип Где Описание
dto* {MailLinkTaskDto}body—
ТЕЛО ЗАПРОСА
JSON
{
"messageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"taskIds": [
"01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ"
]
}
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Mail/link_tasks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"taskIds": [
"01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ"
]
}'
GET /api/Mail/spam

Спам-лист

🔒 токен v1.0

Отправители, чьи письма переносятся в папку «Спам»

ПАРАМЕТРЫ 0

Параметры не требуются

ОТВЕТarray<MailSpamRuleDto>
Поле Тип Описание
items= [] [MailSpamRuleDto]Массив элементов MailSpamRuleDto
JSON
[
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"address": "string",
"displayName": "string",
"domain": "string",
"createdAt": "2025-01-01T00:00:00Z",
"title": "string",
"hasDistinctAddress": true
}
]
200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X GET "https://nevelgrad.ru/api/Mail/spam" \
-H "Authorization: Bearer $TOKEN"
POST /api/Mail/spam/add

Отправить в спам

🔒 токен v1.0

Отправитель попадает в чёрный список; его письма уходят в «Спам»

ПАРАМЕТРЫ 1
Поле Тип Где Описание
dto* {MailSpamAddDto}body—
ТЕЛО ЗАПРОСА
JSON
{
"address": "string",
"displayName": "string",
"messageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"threadId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"moveExisting": true
}
ОТВЕТMailSpamAddResultDto
Поле Тип Описание
rule {MailSpamRuleDto}Созданное (или уже существовавшее) правило.
movedMessages intСколько уже полученных писем перенесено в «Спам».
JSON
{
"rule": {
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"address": "string",
"displayName": "string",
"domain": "string",
"createdAt": "2025-01-01T00:00:00Z",
"title": "string",
"hasDistinctAddress": true
},
"movedMessages": 0
}
200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Mail/spam/add" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address": "string",
"displayName": "string",
"messageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"threadId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"moveExisting": true
}'
POST /api/Mail/sync/{accountId}

Синхронизация почты

🔒 токен v1.0

Загружает новые письма через IMAP

ПАРАМЕТРЫ 1
Поле Тип Где Описание
accountId* ulidroute—
ОТВЕТMailSyncResultDto
Поле Тип Описание
newMessages intСколько новых писем загружено за проход.
error stringТекст ошибки, если синхронизация не удалась. Пусто — проход завершился без ошибок.
JSON
{
"newMessages": 0,
"error": "string"
}
200 успешно401 нет токена400 плохой запрос404 не найдено500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Mail/sync/{accountId}" \
-H "Authorization: Bearer $TOKEN"
POST /api/Mail/threads

Список тредов почты

🔒 токен v1.0

Возвращает треды с фильтрами по области, папкам, меткам

ПАРАМЕТРЫ 1
Поле Тип Где Описание
filter* {MailThreadFilterDto}body—
ТЕЛО ЗАПРОСА
JSON
{
"currentPage": 0,
"totalCount": 0,
"pageCount": 0,
"totalPages": 0,
"searchQuery": "string",
"sortBy": "string",
"sortDirection": "string",
"filters": null,
"indexObject": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"entityObject": null,
"scope": null,
"folder": null,
"…": "ещё 25 пол."
}
ОТВЕТPaginationResultList<MailThreadDto>
Поле Тип Описание
items [MailThreadDto]Элементы текущей страницы.
totalCount intОбщее число элементов по фильтру, без учёта разбиения на страницы.
JSON
{
"items": [
{
"threadId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"subject": "string",
"lastFromAddress": "string",
"lastFromName": "string",
"lastToAddress": "string",
"lastMessageAt": "2025-01-01T00:00:00Z",
"messageCount": 0,
"loadedMessageCount": 0,
"hasOlderMessages": true,
"notLoadedCount": 0,
"unreadCount": 0,
"isStarred": true,
"…": "ещё 27 пол."
}
],
"totalCount": 0
}
200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Mail/threads" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"currentPage": 0,
"totalCount": 0,
"pageCount": 0,
"totalPages": 0,
"searchQuery": "string",
"sortBy": "string",
"sortDirection": "string",
"filters": null,
"indexObject": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"entityObject": null,
"scope": null,
"folder": null,
"…": "ещё 25 пол."
}'

Файлы 6

POST /Files/update-description

Обновление описания файла

🔒 токен v1.0

Позволяет изменить описание файла

ПАРАМЕТРЫ 1
Поле Тип Где Описание
dto* {FileDescriptionUpdateDto}body—
ТЕЛО ЗАПРОСА
JSON
{
"fileId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"description": "string"
}
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/Files/update-description" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fileId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"description": "string"
}'
GET /Files/{id}

Получение файла

публичная v1.0кэш 300 с

Возвращает файл по его ID с возможностью получения превью

ПАРАМЕТРЫ 5
Поле Тип Где Описание
id* ulidroute—
download= false boolquery—
width= null intquery—
height= null intquery—
savePreview= true boolquery—
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно400 плохой запрос404 не найдено500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X GET "https://nevelgrad.ru/Files/{id}"
DELETE /Files/{id}

Удаление файла

🔒 токен v1.0

Удаляет файл по его ID и возвращает статус успеха, производиться автором или человеком с ролью

ПАРАМЕТРЫ 1
Поле Тип Где Описание
id* ulidroute—
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно401 нет токена400 плохой запрос404 не найдено500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X DELETE "https://nevelgrad.ru/Files/{id}" \
-H "Authorization: Bearer $TOKEN"
POST /файлы/update-description

Обновление описания файла

🔒 токен v1.0

Позволяет изменить описание файла

ПАРАМЕТРЫ 1
Поле Тип Где Описание
dto* {FileDescriptionUpdateDto}body—
ТЕЛО ЗАПРОСА
JSON
{
"fileId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"description": "string"
}
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно401 нет токена400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/файлы/update-description" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fileId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"description": "string"
}'
GET /файлы/{id}

Получение файла

публичная v1.0кэш 300 с

Возвращает файл по его ID с возможностью получения превью

ПАРАМЕТРЫ 5
Поле Тип Где Описание
id* ulidroute—
download= false boolquery—
width= null intquery—
height= null intquery—
savePreview= true boolquery—
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно400 плохой запрос404 не найдено500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X GET "https://nevelgrad.ru/файлы/{id}"
DELETE /файлы/{id}

Удаление файла

🔒 токен v1.0

Удаляет файл по его ID и возвращает статус успеха, производиться автором или человеком с ролью

ПАРАМЕТРЫ 1
Поле Тип Где Описание
id* ulidroute—
ОТВЕТ

Схема не описана — метод возвращает IActionResult

200 успешно401 нет токена400 плохой запрос404 не найдено500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X DELETE "https://nevelgrad.ru/файлы/{id}" \
-H "Authorization: Bearer $TOKEN"

Форум 5

POST /api/Forum/categoryid

Информация о категории

публичная v1.0

предоставляет доступную информацию о категории

ПАРАМЕТРЫ 1
Поле Тип Где Описание
categoryid* ulidbody—
ОТВЕТCategoryDto
Поле Тип Описание
id ulidИдентификатор категории
name stringНаименование категории
description stringОписание категории
forumName stringНаименование форума-владельца (для карточек категорий всех форумов)
forumId ulidИдентификатор привязанного форума - если нету, категория свободная
parentId ulidРодительская категория или объект
children [CategoryDto]Дочерние категории
topicCount intКоличество статей/тем в категории
commentCount intКоличесво комментариев всех тем в категории
lastActivity {LastActivityDto}Последняя активность - показывает последнего пользователя и время
topics [TopicDto]Список статей категории
tags [TagDto]Список тегов для категории
coverId ulidСвязь по FileId. Основная картинка категории
imageUrl stringUrl ссылка из значения CoverId
sortOrder intПриоритет сортировка, где 1 - высший, а 2 ниже
JSON
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"…": "ещё 9 пол."
}
],
"…": "ещё 8 пол."
}
],
"…": "ещё 8 пол."
}
],
"…": "ещё 8 пол."
}
200 успешно400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Forum/categoryid"
POST /api/Forum/forumid

Информация о форуме

публичная v1.0

предоставляет доступную информацию о форуме

ПАРАМЕТРЫ 1
Поле Тип Где Описание
forumid* ulidbody—
ОТВЕТForumDto
Поле Тип Описание
id ulidидентификатор форума
name stringОсновное наименование форума
description stringОписание форума
layout stringСтиль форума по CSS типу
categories [CategoryDto]Список категорий форума (может быть ограничен в рамках запроса)
coverId ulidId файла основного изображения
backgroundId ulidId файла изображения задника
imageUrl stringUrl ссылка из значения CoverId
backgroundUrl stringUrl ссылка из значения BackgroundId
tags [TagDto]Принадлежащие форуму теги
tabs [ForumTabDto]Список вкладок форума
JSON
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"layout": "string",
"categories": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"description": "string",
"forumName": "string",
"forumId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"parentId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"children": [
null
],
"topicCount": 0,
"…": "ещё 7 пол."
}
],
"…": "ещё 8 пол."
}
],
"…": "ещё 8 пол."
}
],
"…": "ещё 6 пол."
}
200 успешно400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Forum/forumid"
POST /api/Forum/topicid

Информация о статье/теме

публичная v1.0

предоставляет доступную информацию о статье/теме

ПАРАМЕТРЫ 1
Поле Тип Где Описание
tpopicid* ulidbody—
ОТВЕТTopicDto
Поле Тип Описание
id ulidИдентификатор темы.
title stringЗаголовок темы.
content stringТекст первого сообщения темы.
commentCount intЧисло комментариев в теме.
createdAt datetimeДата создания темы.
updatedAt datetimeДата последнего изменения; пусто — тема не редактировалась.
userId stringИдентификатор автора темы.
user {UserDto}Автор темы: имя, аватар, роли.
categoryId ulidКатегория, в которой создана тема.
forumId ulidВспомогательное поле, указатель форума
comments [CommentDto]Комментарии темы; заполняются в карточке темы.
tags [TagDto]Теги, привязанные к теме.
coverUrl stringОсновная картинка
JSON
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"title": "string",
"content": "string",
"commentCount": 0,
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z",
"userId": "string",
"user": {
"id": "string",
"userName": "string",
"nickName": "string",
"createdAt": "2025-01-01T00:00:00Z",
"displayName": "string",
"avatarImageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"avatarImageUrl": "string",
"avatarUrl": "string",
"tags": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"colorHex": "string",
"countTaging": 0,
"author": {
"id": "string",
"userName": "string",
"nickName": "string",
"createdAt": "2025-01-01T00:00:00Z",
"displayName": "string",
"…": "ещё 15 пол."
},
"…": "ещё 1 пол."
}
],
"…": "ещё 11 пол."
},
"…": "ещё 5 пол."
}
200 успешно400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X POST "https://nevelgrad.ru/api/Forum/topicid"
GET /api/ForumLasts/topics_random

Случайные статьи

публичная v1.0кэш 60 с

Предоставляет случайные статьи для конкретного форума с целью показа различных статей в пределах конкретного форума

ПАРАМЕТРЫ 2
Поле Тип Где Описание
indexObject ulidquery—
pageCount= 10 intquery—
ОТВЕТPaginationResultList<TopicDto>
Поле Тип Описание
items [TopicDto]Элементы текущей страницы.
totalCount intОбщее число элементов по фильтру, без учёта разбиения на страницы.
JSON
{
"items": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"title": "string",
"content": "string",
"commentCount": 0,
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z",
"userId": "string",
"user": {
"id": "string",
"userName": "string",
"nickName": "string",
"createdAt": "2025-01-01T00:00:00Z",
"displayName": "string",
"avatarImageId": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"avatarImageUrl": "string",
"avatarUrl": "string",
"tags": [
{
"id": "01АБВГДЕЖЗИКЛМНПРСТУФХЦЧ",
"name": "string",
"colorHex": "string",
"countTaging": 0,
"author": null,
"createdAt": "2025-01-01T00:00:00Z"
}
],
"roles": [
"string"
],
"claims": [
"string"
],
"logins": [
"string"
],
"…": "ещё 8 пол."
},
"…": "ещё 5 пол."
}
],
"…": "ещё 1 пол."
}
200 успешно400 плохой запрос500 ошибка сервера
ПРИМЕР ВЫЗОВА
BASH
curl -X GET "https://nevelgrad.ru/api/ForumLasts/topics_random"
  • ТИП: REST API
  • ФОРМАТ: JSON
  • АУТЕНТИФИКАЦИЯ: JWT
  • ИСТОЧНИК: АВТО-ГЕНЕРАЦИЯ
  • ВЕРСИЯ: 1.0

[СВЯЗЬ] ВОССТАНОВЛЕНИЕ СВЯЗИ С СЕРВЕРОМ...

[ПОВТОР] ПОВТОРНОЕ ПОДКЛЮЧЕНИЕ НЕ УДАЛОСЬ... ПОПЫТКА ЧЕРЕЗ СЕК.

[ОШИБКА] НЕ УДАЛОСЬ ВОССТАНОВИТЬ СВЯЗЬ.
ПРОВЕРЬТЕ СЕТЬ ИЛИ ПЕРЕЗАГРОЗИТЕ СТРАНИЦУ.

[ПАУЗА] СЕССИЯ ПРИОСТАНОВЛЕНА СЕРВЕРОМ.

[ОШИБКА] НЕ УДАЛОСЬ ВОЗОБНОВИТЬ СЕССИЮ.
ТРЕБУЕТСЯ ПЕРЕЗАГРОЗКА.