@hubex/mcp 0.9.20260922 → 0.9.20260925

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openapi": "3.0.1",
3
3
  "info": {
4
- "title": "Authenticatin and authorization API for HubEx",
4
+ "title": "Authentication and authorization API for HubEx",
5
5
  "description": "Performs all of the operations, necessary to authenticate and authorize a user as a valid tenant member. Offers an API for registering, verifying e-mail, changing password, etc.",
6
6
  "contact": {
7
7
  "name": "SmartService Backend Team",
@@ -9,6 +9,11 @@
9
9
  },
10
10
  "version": "v1.0.0.0"
11
11
  },
12
+ "servers": [
13
+ {
14
+ "url": "/AUTH"
15
+ }
16
+ ],
12
17
  "paths": {
13
18
  "/Accounts/this/applications": {
14
19
  "get": {
@@ -16,17 +21,8 @@
16
21
  "Accounts"
17
22
  ],
18
23
  "summary": "Приложения учетной записи",
19
- "description": "<br />* Для выполнения данного метода требуется любое из перечисленных полномочий: **AccountClientApplicationList**<br />* Метод поддерживает диапазонный запрос через строку или заголовок запроса.",
24
+ "description": "Поддерживает ограничение результата через query-параметры `offset` и `fetch`.\r\n \r\n## Пример запроса:\r\n`GET /Accounts/this/applications?offset=0&fetch=25`\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n[\r\n {\r\n \"client\": {\r\n \"id\": 1,\r\n \"uniqueClientIdentifier\": \"abc-123-def-456\",\r\n \"agent\": \"Android 14\",\r\n \"clientType\": { \"id\": 1, \"name\": \"Mobile\" }\r\n },\r\n \"application\": {\r\n \"id\": 2,\r\n \"name\": \"HubEx Mobile\",\r\n \"version\": \"3.5.0\"\r\n },\r\n \"pushToken\": \"fcm-token-xyz\",\r\n \"timestamp\": \"2026-08-21T08:00:00Z\"\r\n }\r\n]\r\n```\r\n \r\n## Пример успешного ответа (206):\r\nТело ответа имеет тот же формат, что и для `200`, но содержит только часть диапазона. Заголовок `Content-Range` указывает общее количество.\r\n \r\n## Негативные сценарии:\r\n- 204 NoContent: приложения не найдены.\r\n- 401 Unauthorized: отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden: недостаточно прав `AccountClientApplicationList`.",
20
25
  "parameters": [
21
- {
22
- "name": "Authorization",
23
- "in": "header",
24
- "description": "Bearer",
25
- "required": true,
26
- "schema": {
27
- "type": "string"
28
- }
29
- },
30
26
  {
31
27
  "name": "Range",
32
28
  "in": "header",
@@ -46,21 +42,47 @@
46
42
  {
47
43
  "name": "fetch",
48
44
  "in": "query",
49
- "description": "количество эементов, которое необходимо вернуть",
45
+ "description": "количество элементов, которое необходимо вернуть",
50
46
  "schema": {
51
47
  "type": "string"
52
48
  }
49
+ },
50
+ {
51
+ "name": "X-Application-ID",
52
+ "in": "header",
53
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
54
+ "schema": {
55
+ "enum": [
56
+ 1,
57
+ 2,
58
+ 3,
59
+ 4,
60
+ 5,
61
+ 6
62
+ ],
63
+ "type": "integer",
64
+ "format": "int32",
65
+ "default": 3,
66
+ "x-enumNames": [
67
+ "EngineerMobile",
68
+ "CustomerMobile",
69
+ "MainWeb",
70
+ "AdminWeb",
71
+ "Api",
72
+ "PlateWeb"
73
+ ]
74
+ }
53
75
  }
54
76
  ],
55
77
  "responses": {
56
78
  "200": {
57
- "description": "OK",
79
+ "description": "Список приложений успешно получен.",
58
80
  "content": {
59
81
  "text/plain": {
60
82
  "schema": {
61
83
  "type": "array",
62
84
  "items": {
63
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.ApplicationListResult"
85
+ "$ref": "#/components/schemas/ApplicationListResult"
64
86
  }
65
87
  }
66
88
  },
@@ -68,7 +90,7 @@
68
90
  "schema": {
69
91
  "type": "array",
70
92
  "items": {
71
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.ApplicationListResult"
93
+ "$ref": "#/components/schemas/ApplicationListResult"
72
94
  }
73
95
  }
74
96
  },
@@ -76,136 +98,208 @@
76
98
  "schema": {
77
99
  "type": "array",
78
100
  "items": {
79
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.ApplicationListResult"
101
+ "$ref": "#/components/schemas/ApplicationListResult"
80
102
  }
81
103
  }
82
104
  }
83
105
  }
84
106
  },
85
- "401": {
86
- "description": "Unauthorized"
87
- },
88
- "403": {
89
- "description": "Forbidden"
90
- },
91
107
  "206": {
92
- "description": "PartialContent",
93
- "headers": {
94
- "Content-Range": {
95
- "description": "items=FROM-TILL/OF , где FROM - начальный элемент (включая), TILL - конечный элемент (включая) OF - общее количество элементов",
108
+ "description": "Возвращена часть списка в пределах запрошенного диапазона.",
109
+ "content": {
110
+ "text/plain": {
111
+ "schema": {
112
+ "type": "array",
113
+ "items": {
114
+ "$ref": "#/components/schemas/ApplicationListResult"
115
+ }
116
+ }
117
+ },
118
+ "application/json": {
119
+ "schema": {
120
+ "type": "array",
121
+ "items": {
122
+ "$ref": "#/components/schemas/ApplicationListResult"
123
+ }
124
+ }
125
+ },
126
+ "text/json": {
96
127
  "schema": {
97
- "type": "string"
128
+ "type": "array",
129
+ "items": {
130
+ "$ref": "#/components/schemas/ApplicationListResult"
131
+ }
98
132
  }
99
133
  }
100
134
  }
135
+ },
136
+ "204": {
137
+ "description": "Приложения не найдены."
138
+ },
139
+ "401": {
140
+ "description": "Отсутствует или некорректен Bearer-токен."
141
+ },
142
+ "403": {
143
+ "description": "Недостаточно прав для просмотра приложений."
101
144
  }
102
- }
145
+ },
146
+ "security": [
147
+ {
148
+ "Bearer": [ ]
149
+ }
150
+ ]
103
151
  },
104
152
  "put": {
105
153
  "tags": [
106
154
  "Accounts"
107
155
  ],
108
156
  "summary": "Актуализация данных о приложениях текущей учетной записи",
109
- "description": "<br />* Для выполнения данного метода пользователь должен быть **Authenticated**.",
157
+ "description": "## Пример запроса:\r\n`PUT /Accounts/this/applications`\r\n \r\n```json\r\n{\r\n \"clientTypeID\": 1,\r\n \"agent\": \"Android 14\",\r\n \"applicationVersion\": \"3.5.0\",\r\n \"pushToken\": \"fcm-token-xyz\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: отсутствует идентификатор учётной записи и участника тенанта в токене.",
110
158
  "parameters": [
111
159
  {
112
- "name": "Authorization",
160
+ "name": "X-Application-ID",
113
161
  "in": "header",
114
- "description": "Bearer",
115
- "required": true,
162
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
116
163
  "schema": {
117
- "type": "string"
164
+ "enum": [
165
+ 1,
166
+ 2,
167
+ 3,
168
+ 4,
169
+ 5,
170
+ 6
171
+ ],
172
+ "type": "integer",
173
+ "format": "int32",
174
+ "default": 3,
175
+ "x-enumNames": [
176
+ "EngineerMobile",
177
+ "CustomerMobile",
178
+ "MainWeb",
179
+ "AdminWeb",
180
+ "Api",
181
+ "PlateWeb"
182
+ ]
118
183
  }
119
184
  }
120
185
  ],
121
186
  "requestBody": {
187
+ "description": "Данные приложения для актуализации.",
122
188
  "content": {
123
189
  "application/json-patch+json": {
124
190
  "schema": {
125
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.MergeData"
191
+ "$ref": "#/components/schemas/AUTHACAMergeData"
126
192
  }
127
193
  },
128
194
  "application/json": {
129
195
  "schema": {
130
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.MergeData"
196
+ "$ref": "#/components/schemas/AUTHACAMergeData"
131
197
  }
132
198
  },
133
199
  "text/json": {
134
200
  "schema": {
135
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.MergeData"
201
+ "$ref": "#/components/schemas/AUTHACAMergeData"
136
202
  }
137
203
  },
138
204
  "application/*+json": {
139
205
  "schema": {
140
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.MergeData"
206
+ "$ref": "#/components/schemas/AUTHACAMergeData"
141
207
  }
142
208
  }
143
209
  }
144
210
  },
145
211
  "responses": {
146
212
  "202": {
147
- "description": "Accepted"
213
+ "description": "Данные приложения приняты к обработке."
148
214
  },
149
215
  "401": {
150
- "description": "Unauthorized"
216
+ "description": "Не удалось определить учётную запись из токена."
151
217
  },
152
218
  "403": {
153
219
  "description": "Forbidden"
154
220
  }
155
- }
221
+ },
222
+ "security": [
223
+ {
224
+ "Bearer": [ ]
225
+ }
226
+ ]
156
227
  },
157
228
  "delete": {
158
229
  "tags": [
159
230
  "Accounts"
160
231
  ],
161
232
  "summary": "Отвязка приложения и устройства от текущей учетной записи",
162
- "description": "<br />* Для выполнения данного метода пользователь должен быть **Authenticated**.",
233
+ "description": "## Пример запроса:\r\n`DELETE /Accounts/this/applications`\r\n \r\n```json\r\n{\r\n \"uniqueClientIdentifier\": \"abc-123-def-456\",\r\n \"applicationID\": 2\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: отсутствует идентификатор учётной записи и участника тенанта в токене.",
163
234
  "parameters": [
164
235
  {
165
- "name": "Authorization",
236
+ "name": "X-Application-ID",
166
237
  "in": "header",
167
- "description": "Bearer",
168
- "required": true,
238
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
169
239
  "schema": {
170
- "type": "string"
240
+ "enum": [
241
+ 1,
242
+ 2,
243
+ 3,
244
+ 4,
245
+ 5,
246
+ 6
247
+ ],
248
+ "type": "integer",
249
+ "format": "int32",
250
+ "default": 3,
251
+ "x-enumNames": [
252
+ "EngineerMobile",
253
+ "CustomerMobile",
254
+ "MainWeb",
255
+ "AdminWeb",
256
+ "Api",
257
+ "PlateWeb"
258
+ ]
171
259
  }
172
260
  }
173
261
  ],
174
262
  "requestBody": {
263
+ "description": "Данные приложения для отвязки.",
175
264
  "content": {
176
265
  "application/json-patch+json": {
177
266
  "schema": {
178
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.RemoveData"
267
+ "$ref": "#/components/schemas/AUTHACARemoveData"
179
268
  }
180
269
  },
181
270
  "application/json": {
182
271
  "schema": {
183
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.RemoveData"
272
+ "$ref": "#/components/schemas/AUTHACARemoveData"
184
273
  }
185
274
  },
186
275
  "text/json": {
187
276
  "schema": {
188
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.RemoveData"
277
+ "$ref": "#/components/schemas/AUTHACARemoveData"
189
278
  }
190
279
  },
191
280
  "application/*+json": {
192
281
  "schema": {
193
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.RemoveData"
282
+ "$ref": "#/components/schemas/AUTHACARemoveData"
194
283
  }
195
284
  }
196
285
  }
197
286
  },
198
287
  "responses": {
199
288
  "202": {
200
- "description": "Accepted"
289
+ "description": "Запрос на отвязку принят."
201
290
  },
202
291
  "401": {
203
- "description": "Unauthorized"
292
+ "description": "Не удалось определить учётную запись из токена."
204
293
  },
205
294
  "403": {
206
295
  "description": "Forbidden"
207
296
  }
208
- }
297
+ },
298
+ "security": [
299
+ {
300
+ "Bearer": [ ]
301
+ }
302
+ ]
209
303
  }
210
304
  },
211
305
  "/Accounts/logout": {
@@ -213,64 +307,70 @@
213
307
  "tags": [
214
308
  "Accounts"
215
309
  ],
216
- "summary": "Выход из системы. Сетод можно вызывать с просроченным токеном.",
217
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
310
+ "summary": "Выход из системы. Метод можно вызывать с просроченным токеном.",
311
+ "description": "## Пример запроса:\r\n`POST /Accounts/logout`\r\n \r\n```json\r\n{\r\n \"uniqueClientIdentifier\": \"abc-123-def-456\",\r\n \"applicationID\": 2\r\n}\r\n```\r\n \r\n## Пример успешного ответа (200):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: токен не содержит идентификатор учётной записи или участника тенанта.\r\n- 409 Conflict: отсутствует или некорректен заголовок Authorization, либо тело запроса не указано.",
312
+ "parameters": [
313
+ {
314
+ "name": "X-Application-ID",
315
+ "in": "header",
316
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
317
+ "schema": {
318
+ "enum": [
319
+ 1,
320
+ 2,
321
+ 3,
322
+ 4,
323
+ 5,
324
+ 6
325
+ ],
326
+ "type": "integer",
327
+ "format": "int32",
328
+ "default": 3,
329
+ "x-enumNames": [
330
+ "EngineerMobile",
331
+ "CustomerMobile",
332
+ "MainWeb",
333
+ "AdminWeb",
334
+ "Api",
335
+ "PlateWeb"
336
+ ]
337
+ }
338
+ }
339
+ ],
218
340
  "requestBody": {
341
+ "description": "Данные клиентского приложения для выхода.",
219
342
  "content": {
220
343
  "application/json-patch+json": {
221
344
  "schema": {
222
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.Base.BaseLogoutData"
345
+ "$ref": "#/components/schemas/BaseLogoutData"
223
346
  }
224
347
  },
225
348
  "application/json": {
226
349
  "schema": {
227
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.Base.BaseLogoutData"
350
+ "$ref": "#/components/schemas/BaseLogoutData"
228
351
  }
229
352
  },
230
353
  "text/json": {
231
354
  "schema": {
232
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.Base.BaseLogoutData"
355
+ "$ref": "#/components/schemas/BaseLogoutData"
233
356
  }
234
357
  },
235
358
  "application/*+json": {
236
359
  "schema": {
237
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Data.Base.BaseLogoutData"
360
+ "$ref": "#/components/schemas/BaseLogoutData"
238
361
  }
239
362
  }
240
363
  }
241
364
  },
242
365
  "responses": {
243
366
  "200": {
244
- "description": "OK"
367
+ "description": "Выход выполнен успешно."
245
368
  },
246
- "500": {
247
- "description": "Internal Server Error",
248
- "content": {
249
- "text/plain": {
250
- "schema": {
251
- "type": "array",
252
- "items": {
253
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
254
- }
255
- }
256
- },
257
- "application/json": {
258
- "schema": {
259
- "type": "array",
260
- "items": {
261
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
262
- }
263
- }
264
- },
265
- "text/json": {
266
- "schema": {
267
- "type": "array",
268
- "items": {
269
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
270
- }
271
- }
272
- }
273
- }
369
+ "401": {
370
+ "description": "Не удалось определить учётную запись или участника тенанта из токена."
371
+ },
372
+ "409": {
373
+ "description": "Некорректный Authorization или тело запроса."
274
374
  }
275
375
  }
276
376
  }
@@ -280,52 +380,104 @@
280
380
  "tags": [
281
381
  "Accounts"
282
382
  ],
283
- "summary": "Создаёт аккаунт с указанной электронной почтой (если ещё не создан),\r\nблокирует его по причине непройденноё верификации почты и отправляет в Кролика\r\nнотификацию для отправки письма на указанный адрес эл. почты со ссылкой\r\nдля верификации.",
284
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
383
+ "summary": "Создаёт аккаунт с указанной электронной почтой (если ещё не создан),\r\nблокирует его по причине непройденной верификации почты и отправляет\r\nнотификацию для отправки письма или SMS со ссылкой для верификации.",
384
+ "description": "## Пример запроса:\r\n`POST /Accounts/register`\r\n \r\n```json\r\n{\r\n \"email\": \"user%40example.com\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (200) — существующая учётная запись:\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"verificationRequestValidTill\": \"2026-08-21T12:00:00Z\",\r\n \"isEmailVerified\": false,\r\n \"isMobilePhoneVerified\": false,\r\n \"isPasswordDefined\": false,\r\n \"isNewAccount\": false\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202) — новая учётная запись (email или SMS):\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"verificationRequestValidTill\": \"2026-08-21T12:00:00Z\",\r\n \"isEmailVerified\": false,\r\n \"isMobilePhoneVerified\": false,\r\n \"isPasswordDefined\": false,\r\n \"isNewAccount\": true\r\n}\r\n```\r\nОтправляется уведомление для верификации (письмо или SMS).\r\n \r\n## Пример успешного ответа (202) — новая учётная запись (domainLogin):\r\nТело ответа аналогично примеру выше с `\"isNewAccount\": true`. Уведомление **не отправляется**.\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict: тело запроса не указано, ошибки валидации, не указаны email/телефон/domainLogin или указаны некорректные данные.",
385
+ "parameters": [
386
+ {
387
+ "name": "X-Application-ID",
388
+ "in": "header",
389
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
390
+ "schema": {
391
+ "enum": [
392
+ 1,
393
+ 2,
394
+ 3,
395
+ 4,
396
+ 5,
397
+ 6
398
+ ],
399
+ "type": "integer",
400
+ "format": "int32",
401
+ "default": 3,
402
+ "x-enumNames": [
403
+ "EngineerMobile",
404
+ "CustomerMobile",
405
+ "MainWeb",
406
+ "AdminWeb",
407
+ "Api",
408
+ "PlateWeb"
409
+ ]
410
+ }
411
+ }
412
+ ],
285
413
  "requestBody": {
414
+ "description": "Данные для регистрации учётной записи.",
286
415
  "content": {
287
416
  "application/json-patch+json": {
288
417
  "schema": {
289
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.CreateData"
418
+ "$ref": "#/components/schemas/CreateData"
290
419
  }
291
420
  },
292
421
  "application/json": {
293
422
  "schema": {
294
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.CreateData"
423
+ "$ref": "#/components/schemas/CreateData"
295
424
  }
296
425
  },
297
426
  "text/json": {
298
427
  "schema": {
299
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.CreateData"
428
+ "$ref": "#/components/schemas/CreateData"
300
429
  }
301
430
  },
302
431
  "application/*+json": {
303
432
  "schema": {
304
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.CreateData"
433
+ "$ref": "#/components/schemas/CreateData"
305
434
  }
306
435
  }
307
436
  }
308
437
  },
309
438
  "responses": {
310
439
  "200": {
311
- "description": "OK",
440
+ "description": "Учётная запись уже существует.",
441
+ "content": {
442
+ "text/plain": {
443
+ "schema": {
444
+ "$ref": "#/components/schemas/AccountAddResultEntity"
445
+ }
446
+ },
447
+ "application/json": {
448
+ "schema": {
449
+ "$ref": "#/components/schemas/AccountAddResultEntity"
450
+ }
451
+ },
452
+ "text/json": {
453
+ "schema": {
454
+ "$ref": "#/components/schemas/AccountAddResultEntity"
455
+ }
456
+ }
457
+ }
458
+ },
459
+ "202": {
460
+ "description": "Новая учётная запись создана. Для email/SMS отправлено уведомление; для domainLogin уведомление не отправляется.",
312
461
  "content": {
313
462
  "text/plain": {
314
463
  "schema": {
315
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Entities.AUTH.AccountAddResultEntity"
464
+ "$ref": "#/components/schemas/AccountAddResultEntity"
316
465
  }
317
466
  },
318
467
  "application/json": {
319
468
  "schema": {
320
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Entities.AUTH.AccountAddResultEntity"
469
+ "$ref": "#/components/schemas/AccountAddResultEntity"
321
470
  }
322
471
  },
323
472
  "text/json": {
324
473
  "schema": {
325
- "$ref": "#/components/schemas/HubEx.DataProvider.Api.Entities.AUTH.AccountAddResultEntity"
474
+ "$ref": "#/components/schemas/AccountAddResultEntity"
326
475
  }
327
476
  }
328
477
  }
478
+ },
479
+ "409": {
480
+ "description": "Тело запроса не указано, ошибки валидации или некорректные входные данные."
329
481
  }
330
482
  }
331
483
  }
@@ -336,106 +488,131 @@
336
488
  "Accounts"
337
489
  ],
338
490
  "summary": "Возвращает данные учетной записи по учетным данным",
339
- "description": "<br />* Для выполнения данного метода требуется любое из перечисленных полномочий: **AccountGet**",
491
+ "description": "## Пример запроса:\r\n`GET /Accounts?credential=user@example.com`\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"credential\": \"user@example.com\",\r\n \"ban\": {\r\n \"dateTill\": \"2026-08-22T00:00:00Z\",\r\n \"banReason\": { \"id\": 1, \"name\": \"Email not verified\" }\r\n },\r\n \"isAnonymous\": false,\r\n \"isCrossTenantAdmin\": false,\r\n \"domainLogin\": null,\r\n \"socialProfiles\": [\r\n {\r\n \"id\": 1,\r\n \"name\": \"Google\",\r\n \"dateFrom\": \"2025-01-01T00:00:00Z\",\r\n \"dateTill\": \"2099-12-31T23:59:59Z\"\r\n }\r\n ]\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 204 NoContent: учётная запись по указанным credential не найдена.\r\n- 401 Unauthorized: отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden: недостаточно прав `AccountGet`.",
340
492
  "parameters": [
341
493
  {
342
494
  "name": "credential",
343
495
  "in": "query",
344
- "description": "Адрес эл.почты, телефон, логин или логин домена для аккаунта",
496
+ "description": "Адрес эл.почты, телефон, логин или логин домена для аккаунта.",
345
497
  "schema": {
346
498
  "type": "string"
347
499
  }
348
500
  },
349
501
  {
350
- "name": "Authorization",
502
+ "name": "X-Application-ID",
351
503
  "in": "header",
352
- "description": "Bearer",
353
- "required": true,
504
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
354
505
  "schema": {
355
- "type": "string"
506
+ "enum": [
507
+ 1,
508
+ 2,
509
+ 3,
510
+ 4,
511
+ 5,
512
+ 6
513
+ ],
514
+ "type": "integer",
515
+ "format": "int32",
516
+ "default": 3,
517
+ "x-enumNames": [
518
+ "EngineerMobile",
519
+ "CustomerMobile",
520
+ "MainWeb",
521
+ "AdminWeb",
522
+ "Api",
523
+ "PlateWeb"
524
+ ]
356
525
  }
357
526
  }
358
527
  ],
359
528
  "responses": {
360
529
  "200": {
361
- "description": "OK",
530
+ "description": "Учётная запись найдена.",
362
531
  "content": {
363
532
  "text/plain": {
364
533
  "schema": {
365
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.GetResult"
534
+ "$ref": "#/components/schemas/GetResult"
366
535
  }
367
536
  },
368
537
  "application/json": {
369
538
  "schema": {
370
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.GetResult"
539
+ "$ref": "#/components/schemas/GetResult"
371
540
  }
372
541
  },
373
542
  "text/json": {
374
543
  "schema": {
375
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.GetResult"
544
+ "$ref": "#/components/schemas/GetResult"
376
545
  }
377
546
  }
378
547
  }
379
548
  },
380
- "500": {
381
- "description": "Internal Server Error",
382
- "content": {
383
- "text/plain": {
384
- "schema": {
385
- "type": "array",
386
- "items": {
387
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
388
- }
389
- }
390
- },
391
- "application/json": {
392
- "schema": {
393
- "type": "array",
394
- "items": {
395
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
396
- }
397
- }
398
- },
399
- "text/json": {
400
- "schema": {
401
- "type": "array",
402
- "items": {
403
- "$ref": "#/components/schemas/SmartService.Common.ExceptionHandling.Models.ErrorModel"
404
- }
405
- }
406
- }
407
- }
549
+ "204": {
550
+ "description": "Учётная запись не найдена."
408
551
  },
409
552
  "401": {
410
- "description": "Unauthorized"
553
+ "description": "Отсутствует или некорректен Bearer-токен."
411
554
  },
412
555
  "403": {
413
- "description": "Forbidden"
556
+ "description": "Недостаточно прав для просмотра учётной записи."
414
557
  }
415
- }
558
+ },
559
+ "security": [
560
+ {
561
+ "Bearer": [ ]
562
+ }
563
+ ]
416
564
  },
417
565
  "head": {
418
566
  "tags": [
419
567
  "Accounts"
420
568
  ],
421
- "summary": "Проверяет присутствие учетной записи по указанным полномочийм",
422
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
569
+ "summary": "Проверяет присутствие учетной записи по указанным полномочиям",
570
+ "description": "## Пример запроса:\r\n`HEAD /Accounts?credential=user@example.com`\r\n \r\n## Пример успешного ответа (200):\r\nТело ответа пустое. Заголовок `Content-Range` не используется.\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict: параметр `credential` не указан.\r\n- 404 Not Found: учётная запись не найдена или не прошла верификацию (кроме случая `NotVerifiedException`, который возвращает 200).",
423
571
  "parameters": [
424
572
  {
425
573
  "name": "credential",
426
574
  "in": "query",
427
- "description": "Адрес эл.почты, телефон или логин",
575
+ "description": "Адрес эл.почты, телефон или логин.",
428
576
  "schema": {
429
577
  "type": "string"
430
578
  }
579
+ },
580
+ {
581
+ "name": "X-Application-ID",
582
+ "in": "header",
583
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
584
+ "schema": {
585
+ "enum": [
586
+ 1,
587
+ 2,
588
+ 3,
589
+ 4,
590
+ 5,
591
+ 6
592
+ ],
593
+ "type": "integer",
594
+ "format": "int32",
595
+ "default": 3,
596
+ "x-enumNames": [
597
+ "EngineerMobile",
598
+ "CustomerMobile",
599
+ "MainWeb",
600
+ "AdminWeb",
601
+ "Api",
602
+ "PlateWeb"
603
+ ]
604
+ }
431
605
  }
432
606
  ],
433
607
  "responses": {
434
608
  "200": {
435
- "description": "OK"
609
+ "description": "Учётная запись существует или ожидает верификации."
610
+ },
611
+ "409": {
612
+ "description": "Параметр credential не указан."
436
613
  },
437
614
  "404": {
438
- "description": "Not Found"
615
+ "description": "Учётная запись не найдена."
439
616
  }
440
617
  }
441
618
  }
@@ -446,17 +623,8 @@
446
623
  "Accounts"
447
624
  ],
448
625
  "summary": "Список уведомлений из лога",
449
- "description": "<br />* Для выполнения данного метода требуется любое из перечисленных полномочий: **NotificationLogList**<br />* Метод поддерживает диапазонный запрос через строку или заголовок запроса.",
626
+ "description": "Поддерживает ограничение результата через query-параметры `offset` и `fetch`.\r\n \r\n## Пример запроса:\r\n`GET /Accounts/this/notifications?offset=0&fetch=25`\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n[\r\n {\r\n \"notificationID\": 501,\r\n \"providerID\": 1,\r\n \"subject\": \"Подтверждение адреса электронной почты\",\r\n \"content\": \"Для подтверждения перейдите по ссылке...\",\r\n \"sent\": \"2026-08-21T08:01:00Z\"\r\n }\r\n]\r\n```\r\n \r\n## Пример успешного ответа (206):\r\nТело ответа имеет тот же формат, что и для `200`, но содержит только часть диапазона. Заголовок `Content-Range` указывает общее количество.\r\n \r\n## Негативные сценарии:\r\n- 204 NoContent: уведомления не найдены.\r\n- 401 Unauthorized: отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden: недостаточно прав `NotificationLogList`.",
450
627
  "parameters": [
451
- {
452
- "name": "Authorization",
453
- "in": "header",
454
- "description": "Bearer",
455
- "required": true,
456
- "schema": {
457
- "type": "string"
458
- }
459
- },
460
628
  {
461
629
  "name": "Range",
462
630
  "in": "header",
@@ -476,21 +644,47 @@
476
644
  {
477
645
  "name": "fetch",
478
646
  "in": "query",
479
- "description": "количество эементов, которое необходимо вернуть",
647
+ "description": "количество элементов, которое необходимо вернуть",
480
648
  "schema": {
481
649
  "type": "string"
482
650
  }
651
+ },
652
+ {
653
+ "name": "X-Application-ID",
654
+ "in": "header",
655
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
656
+ "schema": {
657
+ "enum": [
658
+ 1,
659
+ 2,
660
+ 3,
661
+ 4,
662
+ 5,
663
+ 6
664
+ ],
665
+ "type": "integer",
666
+ "format": "int32",
667
+ "default": 3,
668
+ "x-enumNames": [
669
+ "EngineerMobile",
670
+ "CustomerMobile",
671
+ "MainWeb",
672
+ "AdminWeb",
673
+ "Api",
674
+ "PlateWeb"
675
+ ]
676
+ }
483
677
  }
484
678
  ],
485
679
  "responses": {
486
680
  "200": {
487
- "description": "OK",
681
+ "description": "Список уведомлений успешно получен.",
488
682
  "content": {
489
683
  "text/plain": {
490
684
  "schema": {
491
685
  "type": "array",
492
686
  "items": {
493
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Notification.ListResult"
687
+ "$ref": "#/components/schemas/ListResult"
494
688
  }
495
689
  }
496
690
  },
@@ -498,7 +692,7 @@
498
692
  "schema": {
499
693
  "type": "array",
500
694
  "items": {
501
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Notification.ListResult"
695
+ "$ref": "#/components/schemas/ListResult"
502
696
  }
503
697
  }
504
698
  },
@@ -506,30 +700,56 @@
506
700
  "schema": {
507
701
  "type": "array",
508
702
  "items": {
509
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Notification.ListResult"
703
+ "$ref": "#/components/schemas/ListResult"
510
704
  }
511
705
  }
512
706
  }
513
707
  }
514
708
  },
515
- "401": {
516
- "description": "Unauthorized"
517
- },
518
- "403": {
519
- "description": "Forbidden"
520
- },
521
709
  "206": {
522
- "description": "PartialContent",
523
- "headers": {
524
- "Content-Range": {
525
- "description": "items=FROM-TILL/OF , где FROM - начальный элемент (включая), TILL - конечный элемент (включая) OF - общее количество элементов",
710
+ "description": "Возвращена часть списка в пределах запрошенного диапазона.",
711
+ "content": {
712
+ "text/plain": {
713
+ "schema": {
714
+ "type": "array",
715
+ "items": {
716
+ "$ref": "#/components/schemas/ListResult"
717
+ }
718
+ }
719
+ },
720
+ "application/json": {
721
+ "schema": {
722
+ "type": "array",
723
+ "items": {
724
+ "$ref": "#/components/schemas/ListResult"
725
+ }
726
+ }
727
+ },
728
+ "text/json": {
526
729
  "schema": {
527
- "type": "string"
730
+ "type": "array",
731
+ "items": {
732
+ "$ref": "#/components/schemas/ListResult"
733
+ }
528
734
  }
529
735
  }
530
736
  }
737
+ },
738
+ "204": {
739
+ "description": "Уведомления не найдены."
740
+ },
741
+ "401": {
742
+ "description": "Отсутствует или некорректен Bearer-токен."
743
+ },
744
+ "403": {
745
+ "description": "Недостаточно прав для просмотра лога уведомлений."
531
746
  }
532
- }
747
+ },
748
+ "security": [
749
+ {
750
+ "Bearer": [ ]
751
+ }
752
+ ]
533
753
  }
534
754
  },
535
755
  "/Messages/verifyEmail": {
@@ -537,52 +757,90 @@
537
757
  "tags": [
538
758
  "Messages"
539
759
  ],
540
- "summary": "Отправляет письмо проверки почты на указаннаый адрес эл почты (если не был указан, то на адрес уч.записи)",
541
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
760
+ "summary": "Отправляет письмо проверки почты на указанный адрес эл. почты (если не был указан, то на адрес уч.записи)",
761
+ "description": "## Пример запроса:\r\n`POST /Messages/verifyEmail`\r\n \r\n```json\r\n{\r\n \"email\": \"user%40example.com\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"isEmailVerified\": false,\r\n \"isPhoneVerified\": false,\r\n \"verificationRequestValidTill\": \"2026-08-21T12:00:00Z\",\r\n \"isPasswordDefined\": false,\r\n \"isNewAccount\": false,\r\n \"verificationCodeRepeatTimeout\": 60\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: не указан идентификатор учётной записи (ни в токене, ни в теле запроса).\r\n- 204 NoContent: учётная запись не найдена.\r\n- 409 Conflict: указан некорректный адрес электронной почты.",
762
+ "parameters": [
763
+ {
764
+ "name": "X-Application-ID",
765
+ "in": "header",
766
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
767
+ "schema": {
768
+ "enum": [
769
+ 1,
770
+ 2,
771
+ 3,
772
+ 4,
773
+ 5,
774
+ 6
775
+ ],
776
+ "type": "integer",
777
+ "format": "int32",
778
+ "default": 3,
779
+ "x-enumNames": [
780
+ "EngineerMobile",
781
+ "CustomerMobile",
782
+ "MainWeb",
783
+ "AdminWeb",
784
+ "Api",
785
+ "PlateWeb"
786
+ ]
787
+ }
788
+ }
789
+ ],
542
790
  "requestBody": {
791
+ "description": "Данные для отправки письма верификации.",
543
792
  "content": {
544
793
  "application/json-patch+json": {
545
794
  "schema": {
546
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyEmailData"
795
+ "$ref": "#/components/schemas/VerifyEmailData"
547
796
  }
548
797
  },
549
798
  "application/json": {
550
799
  "schema": {
551
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyEmailData"
800
+ "$ref": "#/components/schemas/VerifyEmailData"
552
801
  }
553
802
  },
554
803
  "text/json": {
555
804
  "schema": {
556
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyEmailData"
805
+ "$ref": "#/components/schemas/VerifyEmailData"
557
806
  }
558
807
  },
559
808
  "application/*+json": {
560
809
  "schema": {
561
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyEmailData"
810
+ "$ref": "#/components/schemas/VerifyEmailData"
562
811
  }
563
812
  }
564
813
  }
565
814
  },
566
815
  "responses": {
567
- "200": {
568
- "description": "OK",
816
+ "202": {
817
+ "description": "Письмо верификации отправлено.",
569
818
  "content": {
570
819
  "text/plain": {
571
820
  "schema": {
572
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
821
+ "$ref": "#/components/schemas/VerificationResult"
573
822
  }
574
823
  },
575
824
  "application/json": {
576
825
  "schema": {
577
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
826
+ "$ref": "#/components/schemas/VerificationResult"
578
827
  }
579
828
  },
580
829
  "text/json": {
581
830
  "schema": {
582
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
831
+ "$ref": "#/components/schemas/VerificationResult"
583
832
  }
584
833
  }
585
834
  }
835
+ },
836
+ "401": {
837
+ "description": "Не указан идентификатор учётной записи."
838
+ },
839
+ "204": {
840
+ "description": "Учётная запись не найдена."
841
+ },
842
+ "409": {
843
+ "description": "Некорректный адрес электронной почты."
586
844
  }
587
845
  }
588
846
  }
@@ -592,52 +850,90 @@
592
850
  "tags": [
593
851
  "Messages"
594
852
  ],
595
- "summary": "Отправляет SMS проверки номера телефона почты на указаннаый телефон, (если не был указан, то на телефон учетной записи)",
596
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
853
+ "summary": "Отправляет SMS проверки номера телефона на указанный телефон (если не был указан, то на телефон учетной записи)",
854
+ "description": "## Пример запроса:\r\n`POST /Messages/verifyPhone`\r\n \r\n```json\r\n{\r\n \"phone\": \"+79001234567\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"isEmailVerified\": false,\r\n \"isPhoneVerified\": false,\r\n \"verificationRequestValidTill\": \"2026-08-21T12:00:00Z\",\r\n \"isPasswordDefined\": false,\r\n \"isNewAccount\": false,\r\n \"verificationCodeRepeatTimeout\": 60\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: не указан идентификатор учётной записи (ни в токене, ни в теле запроса).\r\n- 204 NoContent: учётная запись не найдена.\r\n- 409 Conflict: указан некорректный номер телефона.",
855
+ "parameters": [
856
+ {
857
+ "name": "X-Application-ID",
858
+ "in": "header",
859
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
860
+ "schema": {
861
+ "enum": [
862
+ 1,
863
+ 2,
864
+ 3,
865
+ 4,
866
+ 5,
867
+ 6
868
+ ],
869
+ "type": "integer",
870
+ "format": "int32",
871
+ "default": 3,
872
+ "x-enumNames": [
873
+ "EngineerMobile",
874
+ "CustomerMobile",
875
+ "MainWeb",
876
+ "AdminWeb",
877
+ "Api",
878
+ "PlateWeb"
879
+ ]
880
+ }
881
+ }
882
+ ],
597
883
  "requestBody": {
884
+ "description": "Данные для отправки SMS верификации.",
598
885
  "content": {
599
886
  "application/json-patch+json": {
600
887
  "schema": {
601
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyPhoneData"
888
+ "$ref": "#/components/schemas/VerifyPhoneData"
602
889
  }
603
890
  },
604
891
  "application/json": {
605
892
  "schema": {
606
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyPhoneData"
893
+ "$ref": "#/components/schemas/VerifyPhoneData"
607
894
  }
608
895
  },
609
896
  "text/json": {
610
897
  "schema": {
611
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyPhoneData"
898
+ "$ref": "#/components/schemas/VerifyPhoneData"
612
899
  }
613
900
  },
614
901
  "application/*+json": {
615
902
  "schema": {
616
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.VerifyPhoneData"
903
+ "$ref": "#/components/schemas/VerifyPhoneData"
617
904
  }
618
905
  }
619
906
  }
620
907
  },
621
908
  "responses": {
622
- "200": {
623
- "description": "OK",
909
+ "202": {
910
+ "description": "SMS верификации отправлено.",
624
911
  "content": {
625
912
  "text/plain": {
626
913
  "schema": {
627
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
914
+ "$ref": "#/components/schemas/VerificationResult"
628
915
  }
629
916
  },
630
917
  "application/json": {
631
918
  "schema": {
632
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
919
+ "$ref": "#/components/schemas/VerificationResult"
633
920
  }
634
921
  },
635
922
  "text/json": {
636
923
  "schema": {
637
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
924
+ "$ref": "#/components/schemas/VerificationResult"
638
925
  }
639
926
  }
640
927
  }
928
+ },
929
+ "401": {
930
+ "description": "Не указан идентификатор учётной записи."
931
+ },
932
+ "204": {
933
+ "description": "Учётная запись не найдена."
934
+ },
935
+ "409": {
936
+ "description": "Некорректный номер телефона."
641
937
  }
642
938
  }
643
939
  }
@@ -647,52 +943,87 @@
647
943
  "tags": [
648
944
  "Messages"
649
945
  ],
650
- "summary": "Отправляет запрос на изменение пароля на указанный адрес эл почты, для аутентифицированного пользователя - на адрес. эл. почты уч.записи",
651
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
946
+ "summary": "Отправляет запрос на изменение пароля на указанный адрес эл. почты; для аутентифицированного пользователя — на адрес эл. почты уч.записи",
947
+ "description": "## Пример запроса:\r\n`POST /Messages/requestPasswordChange`\r\n \r\n```json\r\n{\r\n \"credentials\": \"user%40example.com\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\n```json\r\n{\r\n \"id\": 1001,\r\n \"isEmailVerified\": true,\r\n \"isPhoneVerified\": false,\r\n \"verificationRequestValidTill\": \"2026-08-21T12:00:00Z\",\r\n \"isPasswordDefined\": true,\r\n \"isNewAccount\": false,\r\n \"verificationCodeRepeatTimeout\": 60\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized: учётная запись не найдена.\r\n- 409 Conflict: указаны некорректные credentials или восстановление недоступно для указанного типа учётных данных.",
948
+ "parameters": [
949
+ {
950
+ "name": "X-Application-ID",
951
+ "in": "header",
952
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
953
+ "schema": {
954
+ "enum": [
955
+ 1,
956
+ 2,
957
+ 3,
958
+ 4,
959
+ 5,
960
+ 6
961
+ ],
962
+ "type": "integer",
963
+ "format": "int32",
964
+ "default": 3,
965
+ "x-enumNames": [
966
+ "EngineerMobile",
967
+ "CustomerMobile",
968
+ "MainWeb",
969
+ "AdminWeb",
970
+ "Api",
971
+ "PlateWeb"
972
+ ]
973
+ }
974
+ }
975
+ ],
652
976
  "requestBody": {
977
+ "description": "Учётные данные для запроса смены пароля.",
653
978
  "content": {
654
979
  "application/json-patch+json": {
655
980
  "schema": {
656
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.RequestPasswordChangeData"
981
+ "$ref": "#/components/schemas/RequestPasswordChangeData"
657
982
  }
658
983
  },
659
984
  "application/json": {
660
985
  "schema": {
661
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.RequestPasswordChangeData"
986
+ "$ref": "#/components/schemas/RequestPasswordChangeData"
662
987
  }
663
988
  },
664
989
  "text/json": {
665
990
  "schema": {
666
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.RequestPasswordChangeData"
991
+ "$ref": "#/components/schemas/RequestPasswordChangeData"
667
992
  }
668
993
  },
669
994
  "application/*+json": {
670
995
  "schema": {
671
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Messages.RequestPasswordChangeData"
996
+ "$ref": "#/components/schemas/RequestPasswordChangeData"
672
997
  }
673
998
  }
674
999
  }
675
1000
  },
676
1001
  "responses": {
677
- "200": {
678
- "description": "OK",
1002
+ "202": {
1003
+ "description": "Запрос на смену пароля отправлен.",
679
1004
  "content": {
680
1005
  "text/plain": {
681
1006
  "schema": {
682
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
1007
+ "$ref": "#/components/schemas/VerificationResult"
683
1008
  }
684
1009
  },
685
1010
  "application/json": {
686
1011
  "schema": {
687
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
1012
+ "$ref": "#/components/schemas/VerificationResult"
688
1013
  }
689
1014
  },
690
1015
  "text/json": {
691
1016
  "schema": {
692
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult"
1017
+ "$ref": "#/components/schemas/VerificationResult"
693
1018
  }
694
1019
  }
695
1020
  }
1021
+ },
1022
+ "401": {
1023
+ "description": "Учётная запись не найдена."
1024
+ },
1025
+ "409": {
1026
+ "description": "Некорректные credentials или недоступный способ восстановления."
696
1027
  }
697
1028
  }
698
1029
  }
@@ -703,35 +1034,69 @@
703
1034
  "Passwords"
704
1035
  ],
705
1036
  "summary": "Изменяет пароль учётной записи.",
706
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
1037
+ "description": "## Пример запроса (по SMS-коду):\r\n`POST /Passwords/change`\r\n \r\n```json\r\n{\r\n \"password\": \"MyNewP%40ssw0rd\",\r\n \"code\": \"123456\",\r\n \"mobilePhone\": \"+79001234567\"\r\n}\r\n```\r\n \r\n## Пример запроса (по текущему паролю):\r\n`POST /Passwords/change`\r\n \r\n```json\r\n{\r\n \"password\": \"MyNewP%40ssw0rd\",\r\n \"currentPassword\": \"OldP%40ssw0rd\"\r\n}\r\n```\r\n \r\n## Пример запроса (по хэшу из e-mail):\r\n`POST /Passwords/change`\r\n \r\n```json\r\n{\r\n \"password\": \"MyNewP%40ssw0rd\",\r\n \"codeHash\": \"a1b2c3d4e5f6\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 403 Forbidden: указан `currentPassword`, но пользователь не аутентифицирован.\r\n- 409 Conflict: неверный текущий пароль или некорректный верификационный код.",
1038
+ "parameters": [
1039
+ {
1040
+ "name": "X-Application-ID",
1041
+ "in": "header",
1042
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
1043
+ "schema": {
1044
+ "enum": [
1045
+ 1,
1046
+ 2,
1047
+ 3,
1048
+ 4,
1049
+ 5,
1050
+ 6
1051
+ ],
1052
+ "type": "integer",
1053
+ "format": "int32",
1054
+ "default": 3,
1055
+ "x-enumNames": [
1056
+ "EngineerMobile",
1057
+ "CustomerMobile",
1058
+ "MainWeb",
1059
+ "AdminWeb",
1060
+ "Api",
1061
+ "PlateWeb"
1062
+ ]
1063
+ }
1064
+ }
1065
+ ],
707
1066
  "requestBody": {
708
- "description": "Объект, содержащий данные, необходимый для установки пароля.",
1067
+ "description": "Объект, содержащий данные, необходимые для установки пароля.",
709
1068
  "content": {
710
1069
  "application/json-patch+json": {
711
1070
  "schema": {
712
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.PasswordSetData"
1071
+ "$ref": "#/components/schemas/PasswordSetData"
713
1072
  }
714
1073
  },
715
1074
  "application/json": {
716
1075
  "schema": {
717
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.PasswordSetData"
1076
+ "$ref": "#/components/schemas/PasswordSetData"
718
1077
  }
719
1078
  },
720
1079
  "text/json": {
721
1080
  "schema": {
722
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.PasswordSetData"
1081
+ "$ref": "#/components/schemas/PasswordSetData"
723
1082
  }
724
1083
  },
725
1084
  "application/*+json": {
726
1085
  "schema": {
727
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.Account.PasswordSetData"
1086
+ "$ref": "#/components/schemas/PasswordSetData"
728
1087
  }
729
1088
  }
730
1089
  }
731
1090
  },
732
1091
  "responses": {
733
- "200": {
734
- "description": "OK"
1092
+ "202": {
1093
+ "description": "Пароль успешно изменён."
1094
+ },
1095
+ "403": {
1096
+ "description": "Смена по текущему паролю без аутентификации запрещена."
1097
+ },
1098
+ "409": {
1099
+ "description": "Конфликт при проверке пароля или верификационного кода."
735
1100
  }
736
1101
  }
737
1102
  }
@@ -741,56 +1106,84 @@
741
1106
  "tags": [
742
1107
  "VerificationCodes"
743
1108
  ],
744
- "summary": "Проверяет верификационый код.",
745
- "description": "<br />* Выполнение данного метода резрешино от **анонимного пользователя**.",
1109
+ "summary": "Проверяет верификационный код.",
1110
+ "description": "Заголовок `Authorization` **не обязателен**. Для проверки по SMS достаточно тела запроса с `code` и `mobilePhone`.\r\n \r\n## Пример запроса (по хэшу из e-mail):\r\n`POST /VerificationCodes/check`\r\n \r\n```json\r\n{\r\n \"codeHash\": \"a1b2c3d4e5f6\"\r\n}\r\n```\r\n \r\n## Пример запроса (по SMS-коду):\r\n`POST /VerificationCodes/check`\r\n \r\n```json\r\n{\r\n \"code\": \"123456\",\r\n \"mobilePhone\": \"+79001234567\"\r\n}\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"accountID\": 1001,\r\n \"oneTimeLoginToken\": \"olt-abc123xyz\",\r\n \"verificationCodeRepeatTimeout\": 60\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict: тело запроса не указано, ошибки валидации, верификационный код не найден или недействителен.",
1111
+ "parameters": [
1112
+ {
1113
+ "name": "X-Application-ID",
1114
+ "in": "header",
1115
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
1116
+ "schema": {
1117
+ "enum": [
1118
+ 1,
1119
+ 2,
1120
+ 3,
1121
+ 4,
1122
+ 5,
1123
+ 6
1124
+ ],
1125
+ "type": "integer",
1126
+ "format": "int32",
1127
+ "default": 3,
1128
+ "x-enumNames": [
1129
+ "EngineerMobile",
1130
+ "CustomerMobile",
1131
+ "MainWeb",
1132
+ "AdminWeb",
1133
+ "Api",
1134
+ "PlateWeb"
1135
+ ]
1136
+ }
1137
+ }
1138
+ ],
746
1139
  "requestBody": {
747
- "description": "Объект, содержащий хэш верификационного кода, который будет проверяться",
1140
+ "description": "Объект, содержащий хэш верификационного кода или код из SMS.",
748
1141
  "content": {
749
1142
  "application/json-patch+json": {
750
1143
  "schema": {
751
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.VerificationCode.CheckData"
1144
+ "$ref": "#/components/schemas/CheckData"
752
1145
  }
753
1146
  },
754
1147
  "application/json": {
755
1148
  "schema": {
756
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.VerificationCode.CheckData"
1149
+ "$ref": "#/components/schemas/CheckData"
757
1150
  }
758
1151
  },
759
1152
  "text/json": {
760
1153
  "schema": {
761
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.VerificationCode.CheckData"
1154
+ "$ref": "#/components/schemas/CheckData"
762
1155
  }
763
1156
  },
764
1157
  "application/*+json": {
765
1158
  "schema": {
766
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Data.VerificationCode.CheckData"
1159
+ "$ref": "#/components/schemas/CheckData"
767
1160
  }
768
1161
  }
769
1162
  }
770
1163
  },
771
1164
  "responses": {
772
1165
  "200": {
773
- "description": "OK",
1166
+ "description": "Верификационный код подтверждён.",
774
1167
  "content": {
775
1168
  "text/plain": {
776
1169
  "schema": {
777
- "type": "integer",
778
- "format": "int32"
1170
+ "$ref": "#/components/schemas/CheckResult"
779
1171
  }
780
1172
  },
781
1173
  "application/json": {
782
1174
  "schema": {
783
- "type": "integer",
784
- "format": "int32"
1175
+ "$ref": "#/components/schemas/CheckResult"
785
1176
  }
786
1177
  },
787
1178
  "text/json": {
788
1179
  "schema": {
789
- "type": "integer",
790
- "format": "int32"
1180
+ "$ref": "#/components/schemas/CheckResult"
791
1181
  }
792
1182
  }
793
1183
  }
1184
+ },
1185
+ "409": {
1186
+ "description": "Верификационный код недействителен или входные данные некорректны."
794
1187
  }
795
1188
  }
796
1189
  }
@@ -798,7 +1191,7 @@
798
1191
  },
799
1192
  "components": {
800
1193
  "schemas": {
801
- "HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.MergeData": {
1194
+ "AUTHACAMergeData": {
802
1195
  "required": [
803
1196
  "applicationID",
804
1197
  "clientTypeID",
@@ -833,7 +1226,7 @@
833
1226
  },
834
1227
  "additionalProperties": false
835
1228
  },
836
- "HubEx.DataProvider.Api.Data.AUTH.AccountClientApplication.RemoveData": {
1229
+ "AUTHACARemoveData": {
837
1230
  "required": [
838
1231
  "applicationID",
839
1232
  "uniqueClientIdentifier"
@@ -851,25 +1244,7 @@
851
1244
  },
852
1245
  "additionalProperties": false
853
1246
  },
854
- "HubEx.DataProvider.Api.Data.Base.BaseLogoutData": {
855
- "required": [
856
- "applicationID",
857
- "uniqueClientIdentifier"
858
- ],
859
- "type": "object",
860
- "properties": {
861
- "uniqueClientIdentifier": {
862
- "minLength": 1,
863
- "type": "string"
864
- },
865
- "applicationID": {
866
- "type": "integer",
867
- "format": "int32"
868
- }
869
- },
870
- "additionalProperties": false
871
- },
872
- "HubEx.DataProvider.Api.Entities.AUTH.AccountAddResultEntity": {
1247
+ "AccountAddResultEntity": {
873
1248
  "type": "object",
874
1249
  "properties": {
875
1250
  "id": {
@@ -896,247 +1271,233 @@
896
1271
  },
897
1272
  "additionalProperties": false
898
1273
  },
899
- "HubEx.Service.AUTH.Api.Data.Account.CreateData": {
1274
+ "ApplicationListResult": {
900
1275
  "type": "object",
901
1276
  "properties": {
902
- "email": {
903
- "type": "string",
904
- "description": "Адрес эл.почты (UrlEncoded)",
905
- "nullable": true
1277
+ "client": {
1278
+ "$ref": "#/components/schemas/ClientResult"
906
1279
  },
907
- "mobilePhone": {
1280
+ "application": {
1281
+ "$ref": "#/components/schemas/ApplicationResult"
1282
+ },
1283
+ "pushToken": {
908
1284
  "type": "string",
909
- "description": "Номер мобильного телефона",
910
- "nullable": true
1285
+ "description": "Токен push-уведомлений",
1286
+ "nullable": true,
1287
+ "example": "fcm-token-xyz"
911
1288
  },
912
- "domainLogin": {
1289
+ "timestamp": {
913
1290
  "type": "string",
914
- "description": "Логин домена аккаунта пользователя",
915
- "nullable": true
1291
+ "description": "Метка времени актуальности данных",
1292
+ "format": "date-time",
1293
+ "example": "2026-08-21T08:00:00Z"
916
1294
  }
917
1295
  },
918
1296
  "additionalProperties": false,
919
- "description": "Базовые данные"
1297
+ "description": "Приложение учетной записи"
920
1298
  },
921
- "HubEx.Service.AUTH.Api.Data.Account.PasswordSetData": {
922
- "required": [
923
- "password"
924
- ],
1299
+ "ApplicationResult": {
925
1300
  "type": "object",
926
1301
  "properties": {
927
- "codeHash": {
928
- "type": "string",
929
- "description": "Хэш верификационного кода. Отправляется по элетронной почте. Если поле заполнено, все остольные поля будут проигнорированы.",
930
- "nullable": true
931
- },
932
- "code": {
933
- "type": "string",
934
- "description": "Верификационный код из SMS.",
935
- "nullable": true
936
- },
937
- "mobilePhone": {
938
- "type": "string",
939
- "description": "Номер мобильного телефона, на котрый был отправлен код подтверждения.",
940
- "nullable": true
1302
+ "id": {
1303
+ "type": "integer",
1304
+ "format": "int32"
941
1305
  },
942
- "email": {
1306
+ "name": {
943
1307
  "type": "string",
944
- "description": "Адрес электронной почты, на который был отправлен код подтверждения.",
945
1308
  "nullable": true
946
1309
  },
947
- "password": {
948
- "minLength": 1,
949
- "type": "string",
950
- "description": "Новый пароль (UrlEncoded)"
951
- },
952
- "currentPassword": {
1310
+ "version": {
953
1311
  "type": "string",
954
- "description": "Текущий пароль пользователя (для смены пароля без верификации через SMS или Email)",
955
- "nullable": true
1312
+ "description": "Версия",
1313
+ "nullable": true,
1314
+ "example": "3.5.0"
956
1315
  }
957
1316
  },
958
1317
  "additionalProperties": false,
959
- "description": "Данные дял смены пароля"
1318
+ "description": "Данные приложения"
960
1319
  },
961
- "HubEx.Service.AUTH.Api.Data.Messages.RequestPasswordChangeData": {
962
- "required": [
963
- "credentials"
964
- ],
1320
+ "BanResult": {
965
1321
  "type": "object",
966
1322
  "properties": {
967
- "credentials": {
968
- "minLength": 1,
1323
+ "dateTill": {
969
1324
  "type": "string",
970
- "description": "Адрес эл.почты, номер телефона или логин, для которых необходима смена пароля (UriEncoded)"
971
- }
972
- },
973
- "additionalProperties": false,
974
- "description": "Данные для смены пароля"
975
- },
976
- "HubEx.Service.AUTH.Api.Data.Messages.VerifyEmailData": {
977
- "type": "object",
978
- "properties": {
979
- "accountID": {
980
- "type": "integer",
981
- "description": "Идентификатор уч.записи, которя запросила провекру почты (указывается только для неаутентифицированного пользователя)",
982
- "format": "int32",
983
- "nullable": true
1325
+ "description": "Срок действия бана",
1326
+ "format": "date-time",
1327
+ "example": "2026-08-22T00:00:00Z"
984
1328
  },
985
- "email": {
986
- "type": "string",
987
- "description": "Адрес эл.почты, который необходимо верифицировать (если не указан, то будет проверен основной адрес уч.записи)",
988
- "nullable": true
1329
+ "banReason": {
1330
+ "$ref": "#/components/schemas/IdNameResultOfByte"
989
1331
  }
990
1332
  },
991
1333
  "additionalProperties": false,
992
- "description": "Данные для проверки эл.почты"
1334
+ "description": "Данные блокировки пользователя"
993
1335
  },
994
- "HubEx.Service.AUTH.Api.Data.Messages.VerifyPhoneData": {
1336
+ "BaseLogoutData": {
1337
+ "required": [
1338
+ "applicationID",
1339
+ "uniqueClientIdentifier"
1340
+ ],
995
1341
  "type": "object",
996
1342
  "properties": {
997
- "accountID": {
998
- "type": "integer",
999
- "description": "Идентификатор уч.записи, которя запросила провекру телефона (указывается только для неаутентифицированного пользователя)",
1000
- "format": "int32",
1001
- "nullable": true
1343
+ "uniqueClientIdentifier": {
1344
+ "minLength": 1,
1345
+ "type": "string"
1002
1346
  },
1003
- "phone": {
1004
- "type": "string",
1005
- "description": "Телефон, который необходимо верифицировать (если не указан, то будет проверен основной телефон уч.записи)",
1006
- "nullable": true
1347
+ "applicationID": {
1348
+ "type": "integer",
1349
+ "format": "int32"
1007
1350
  }
1008
1351
  },
1009
- "additionalProperties": false,
1010
- "description": "Данные для проверки эл.почты"
1352
+ "additionalProperties": false
1011
1353
  },
1012
- "HubEx.Service.AUTH.Api.Data.VerificationCode.CheckData": {
1354
+ "CheckData": {
1013
1355
  "type": "object",
1014
1356
  "properties": {
1015
1357
  "codeHash": {
1016
1358
  "type": "string",
1017
- "description": "Хэш верификационного кода. Отправляется по элетронной почте. Если поле заполнено, все остольные поля будут проигнорированы.",
1018
- "nullable": true
1359
+ "description": "Хэш верификационного кода. Отправляется по электронной почте. Если поле заполнено, все остальные поля будут проигнорированы.",
1360
+ "nullable": true,
1361
+ "example": "a1b2c3d4e5f6"
1019
1362
  },
1020
1363
  "code": {
1021
1364
  "type": "string",
1022
1365
  "description": "Верификационный код из SMS.",
1023
- "nullable": true
1366
+ "nullable": true,
1367
+ "example": "123456"
1024
1368
  },
1025
1369
  "mobilePhone": {
1026
1370
  "type": "string",
1027
- "description": "Номер мобильного телефона, на котрый был отправлен код подтверждения.",
1028
- "nullable": true
1371
+ "description": "Номер мобильного телефона, на который был отправлен код подтверждения.",
1372
+ "nullable": true,
1373
+ "example": "+79001234567"
1029
1374
  },
1030
1375
  "email": {
1031
1376
  "type": "string",
1032
1377
  "description": "Адрес электронной почты, на который был отправлен код подтверждения.",
1033
- "nullable": true
1378
+ "nullable": true,
1379
+ "example": "user@example.com"
1034
1380
  }
1035
1381
  },
1036
1382
  "additionalProperties": false,
1037
1383
  "description": "Данные для валидации верификационного кода"
1038
1384
  },
1039
- "HubEx.Service.AUTH.Api.Results.Accounts.ApplicationListResult": {
1385
+ "CheckResult": {
1040
1386
  "type": "object",
1041
1387
  "properties": {
1042
- "client": {
1043
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.ClientResult"
1044
- },
1045
- "application": {
1046
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Accounts.ApplicationResult"
1388
+ "accountID": {
1389
+ "type": "integer",
1390
+ "description": "Идентификатор учетной записи",
1391
+ "format": "int32",
1392
+ "example": 1001
1047
1393
  },
1048
- "pushToken": {
1394
+ "oneTimeLoginToken": {
1049
1395
  "type": "string",
1050
- "description": "Токен push-уведомлений",
1051
- "nullable": true
1396
+ "description": "Токен для единоразовой авторизации в тенанте",
1397
+ "nullable": true,
1398
+ "example": "olt-abc123xyz"
1052
1399
  },
1053
- "timestamp": {
1054
- "type": "string",
1055
- "description": "Метка времени актуальности данных",
1056
- "format": "date-time"
1400
+ "verificationCodeRepeatTimeout": {
1401
+ "type": "integer",
1402
+ "description": "Количество секунд через сколько можно повторить запрос на верификацию",
1403
+ "format": "int32",
1404
+ "example": 60
1057
1405
  }
1058
1406
  },
1059
1407
  "additionalProperties": false,
1060
- "description": "Приложение учетной записи"
1408
+ "description": "Результат проверки верификационного кода"
1061
1409
  },
1062
- "HubEx.Service.AUTH.Api.Results.Accounts.ApplicationResult": {
1410
+ "ClientResult": {
1063
1411
  "type": "object",
1064
1412
  "properties": {
1065
1413
  "id": {
1066
1414
  "type": "integer",
1067
- "format": "int32"
1415
+ "description": "Идентификатор",
1416
+ "format": "int32",
1417
+ "example": 1
1068
1418
  },
1069
- "name": {
1419
+ "uniqueClientIdentifier": {
1070
1420
  "type": "string",
1071
- "nullable": true
1421
+ "description": "UniqueClientIdentifier",
1422
+ "nullable": true,
1423
+ "example": "abc-123-def-456"
1072
1424
  },
1073
- "version": {
1425
+ "agent": {
1074
1426
  "type": "string",
1075
- "description": "Версия",
1076
- "nullable": true
1427
+ "description": "Операционная система",
1428
+ "nullable": true,
1429
+ "example": "Android 14"
1430
+ },
1431
+ "clientType": {
1432
+ "$ref": "#/components/schemas/IdNameResultOfByte"
1077
1433
  }
1078
1434
  },
1079
1435
  "additionalProperties": false,
1080
- "description": "Данные приложения"
1436
+ "description": "Данные устройства"
1081
1437
  },
1082
- "HubEx.Service.AUTH.Api.Results.Accounts.ClientResult": {
1438
+ "CreateData": {
1083
1439
  "type": "object",
1084
1440
  "properties": {
1085
- "id": {
1086
- "type": "integer",
1087
- "description": "Идентификатор",
1088
- "format": "int32"
1089
- },
1090
- "uniqueClientIdentifier": {
1441
+ "email": {
1091
1442
  "type": "string",
1092
- "description": "UniqueClientIdentifier",
1093
- "nullable": true
1443
+ "description": "Адрес эл.почты (UrlEncoded)",
1444
+ "nullable": true,
1445
+ "example": "user%40example.com"
1094
1446
  },
1095
- "agent": {
1447
+ "mobilePhone": {
1096
1448
  "type": "string",
1097
- "description": "Операционная система",
1098
- "nullable": true
1449
+ "description": "Номер мобильного телефона",
1450
+ "nullable": true,
1451
+ "example": "+79001234567"
1099
1452
  },
1100
- "clientType": {
1101
- "$ref": "#/components/schemas/SmartService.Common.Results.IdNameResult`1[[System.Byte, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
1453
+ "domainLogin": {
1454
+ "type": "string",
1455
+ "description": "Логин домена аккаунта пользователя",
1456
+ "nullable": true,
1457
+ "example": "DOMAIN\\user"
1102
1458
  }
1103
1459
  },
1104
1460
  "additionalProperties": false,
1105
- "description": "Данные устройства"
1461
+ "description": "Базовые данные"
1106
1462
  },
1107
- "HubEx.Service.AUTH.Api.Results.Accounts.GetResult": {
1463
+ "GetResult": {
1108
1464
  "type": "object",
1109
1465
  "properties": {
1110
1466
  "id": {
1111
1467
  "type": "integer",
1112
1468
  "description": "Идентификатор учетной записи",
1113
- "format": "int32"
1469
+ "format": "int32",
1470
+ "example": 1001
1114
1471
  },
1115
1472
  "credential": {
1116
1473
  "type": "string",
1117
1474
  "description": "Учетные данные",
1118
- "nullable": true
1475
+ "nullable": true,
1476
+ "example": "user@example.com"
1119
1477
  },
1120
1478
  "ban": {
1121
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Common.BanResult"
1479
+ "$ref": "#/components/schemas/BanResult"
1122
1480
  },
1123
1481
  "isAnonymous": {
1124
1482
  "type": "boolean",
1125
- "description": "Признак, указывающий на то, что под данной учетной запись имеется возможность входа без указания пароля"
1483
+ "description": "Признак, указывающий на то, что под данной учетной запись имеется возможность входа без указания пароля",
1484
+ "example": false
1126
1485
  },
1127
1486
  "isCrossTenantAdmin": {
1128
1487
  "type": "boolean",
1129
- "description": "Признак, указывающий на то, что учетная запись используется для администирования тенантов"
1488
+ "description": "Признак, указывающий на то, что учетная запись используется для администирования тенантов",
1489
+ "example": false
1130
1490
  },
1131
1491
  "domainLogin": {
1132
1492
  "type": "string",
1133
1493
  "description": "Логин домена аккаунта пользователя",
1134
- "nullable": true
1494
+ "nullable": true,
1495
+ "example": "DOMAIN\\user"
1135
1496
  },
1136
1497
  "socialProfiles": {
1137
1498
  "type": "array",
1138
1499
  "items": {
1139
- "$ref": "#/components/schemas/HubEx.Service.AUTH.Api.Results.Common.SocialProfileResult"
1500
+ "$ref": "#/components/schemas/SocialProfileResult"
1140
1501
  },
1141
1502
  "description": "Связь с социальными профилями",
1142
1503
  "nullable": true
@@ -1145,61 +1506,128 @@
1145
1506
  "additionalProperties": false,
1146
1507
  "description": "Результат поиска учетной записи"
1147
1508
  },
1148
- "HubEx.Service.AUTH.Api.Results.Accounts.VerificationResult": {
1509
+ "IdNameResultOfByte": {
1149
1510
  "type": "object",
1150
1511
  "properties": {
1151
1512
  "id": {
1152
1513
  "type": "integer",
1153
- "description": "Идентификатор уч.записи",
1154
1514
  "format": "int32"
1155
1515
  },
1156
- "isEmailVerified": {
1157
- "type": "boolean",
1158
- "description": "Признак пройденной проверки адреса эл.почты"
1516
+ "name": {
1517
+ "type": "string",
1518
+ "nullable": true
1519
+ }
1520
+ },
1521
+ "additionalProperties": false
1522
+ },
1523
+ "ListResult": {
1524
+ "type": "object",
1525
+ "properties": {
1526
+ "notificationID": {
1527
+ "type": "integer",
1528
+ "description": "Идентификатор уведомления",
1529
+ "format": "int32",
1530
+ "example": 501
1159
1531
  },
1160
- "isPhoneVerified": {
1161
- "type": "boolean",
1162
- "description": "Признак пройденной проверки телефона"
1532
+ "providerID": {
1533
+ "type": "integer",
1534
+ "description": "Идентификатор метода отсылки уведомления",
1535
+ "format": "int32",
1536
+ "example": 1
1163
1537
  },
1164
- "verificationRequestValidTill": {
1538
+ "subject": {
1165
1539
  "type": "string",
1166
- "description": "Признак пройденной проверки телефона",
1167
- "format": "date-time",
1168
- "nullable": true
1540
+ "description": "Тема уведомления",
1541
+ "nullable": true,
1542
+ "example": "Подтверждение адреса электронной почты"
1169
1543
  },
1170
- "isPasswordDefined": {
1171
- "type": "boolean",
1172
- "description": "Признак наличия пароля"
1544
+ "content": {
1545
+ "type": "string",
1546
+ "description": "Содержимое уведомления",
1547
+ "nullable": true,
1548
+ "example": "Для подтверждения перейдите по ссылке..."
1173
1549
  },
1174
- "isNewAccount": {
1175
- "type": "boolean",
1176
- "description": "Признак новой уч.записи"
1550
+ "created": {
1551
+ "type": "string",
1552
+ "description": "Дата и время создания уведомления",
1553
+ "format": "date-time",
1554
+ "nullable": true,
1555
+ "example": "2026-08-21T08:00:00Z"
1177
1556
  },
1178
- "verificationCodeRepeatTimeout": {
1179
- "type": "integer",
1180
- "description": "Количество секунд через сколько можно повторить запрос на верификацию",
1181
- "format": "int32"
1557
+ "sent": {
1558
+ "type": "string",
1559
+ "description": "Дата и время отправки уведомления",
1560
+ "format": "date-time",
1561
+ "nullable": true,
1562
+ "example": "2026-08-21T08:01:00Z"
1182
1563
  }
1183
1564
  },
1184
1565
  "additionalProperties": false,
1185
- "description": "Результат проверки"
1566
+ "description": "Записи из лога уведомлений"
1186
1567
  },
1187
- "HubEx.Service.AUTH.Api.Results.Common.BanResult": {
1568
+ "PasswordSetData": {
1569
+ "required": [
1570
+ "password"
1571
+ ],
1188
1572
  "type": "object",
1189
1573
  "properties": {
1190
- "dateTill": {
1574
+ "codeHash": {
1191
1575
  "type": "string",
1192
- "description": "Срок действия бана",
1193
- "format": "date-time"
1576
+ "description": "Хэш верификационного кода. Отправляется по электронной почте. Если поле заполнено, все остальные поля будут проигнорированы.",
1577
+ "nullable": true,
1578
+ "example": "a1b2c3d4e5f6"
1194
1579
  },
1195
- "banReason": {
1196
- "$ref": "#/components/schemas/SmartService.Common.Results.IdNameResult`1[[System.Byte, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
1580
+ "code": {
1581
+ "type": "string",
1582
+ "description": "Верификационный код из SMS.",
1583
+ "nullable": true,
1584
+ "example": "123456"
1585
+ },
1586
+ "mobilePhone": {
1587
+ "type": "string",
1588
+ "description": "Номер мобильного телефона, на который был отправлен код подтверждения.",
1589
+ "nullable": true,
1590
+ "example": "+79001234567"
1591
+ },
1592
+ "email": {
1593
+ "type": "string",
1594
+ "description": "Адрес электронной почты, на который был отправлен код подтверждения.",
1595
+ "nullable": true,
1596
+ "example": "user@example.com"
1597
+ },
1598
+ "password": {
1599
+ "minLength": 1,
1600
+ "type": "string",
1601
+ "description": "Новый пароль (UrlEncoded)",
1602
+ "example": "MyNewP%40ssw0rd"
1603
+ },
1604
+ "currentPassword": {
1605
+ "type": "string",
1606
+ "description": "Текущий пароль пользователя (для смены пароля без верификации через SMS или Email)",
1607
+ "nullable": true,
1608
+ "example": "OldP%40ssw0rd"
1197
1609
  }
1198
1610
  },
1199
1611
  "additionalProperties": false,
1200
- "description": "Данные блокировки пользователя"
1612
+ "description": "Данные для смены пароля"
1613
+ },
1614
+ "RequestPasswordChangeData": {
1615
+ "required": [
1616
+ "credentials"
1617
+ ],
1618
+ "type": "object",
1619
+ "properties": {
1620
+ "credentials": {
1621
+ "minLength": 1,
1622
+ "type": "string",
1623
+ "description": "Адрес эл.почты, номер телефона или логин, для которых необходима смена пароля (UriEncoded)",
1624
+ "example": "user%40example.com"
1625
+ }
1626
+ },
1627
+ "additionalProperties": false,
1628
+ "description": "Данные для смены пароля"
1201
1629
  },
1202
- "HubEx.Service.AUTH.Api.Results.Common.SocialProfileResult": {
1630
+ "SocialProfileResult": {
1203
1631
  "type": "object",
1204
1632
  "properties": {
1205
1633
  "id": {
@@ -1213,96 +1641,147 @@
1213
1641
  "dateFrom": {
1214
1642
  "type": "string",
1215
1643
  "description": "Дата начала использования соц.сети для аутентификации",
1216
- "format": "date-time"
1644
+ "format": "date-time",
1645
+ "example": "2025-01-01T00:00:00Z"
1217
1646
  },
1218
1647
  "dateTill": {
1219
1648
  "type": "string",
1220
1649
  "description": "Дата окончания использования соц.сети для аутентификации",
1221
- "format": "date-time"
1650
+ "format": "date-time",
1651
+ "example": "2099-12-31T23:59:59Z"
1222
1652
  }
1223
1653
  },
1224
1654
  "additionalProperties": false,
1225
1655
  "description": "Данные социального профиля"
1226
1656
  },
1227
- "HubEx.Service.AUTH.Api.Results.Notification.ListResult": {
1657
+ "VerificationResult": {
1228
1658
  "type": "object",
1229
1659
  "properties": {
1230
- "notificationID": {
1231
- "type": "integer",
1232
- "description": "дентификатор уведомления",
1233
- "format": "int32"
1234
- },
1235
- "providerID": {
1660
+ "id": {
1236
1661
  "type": "integer",
1237
- "description": "Идентификатор метода отсылки уведомления",
1238
- "format": "int32"
1662
+ "description": "Идентификатор уч.записи",
1663
+ "format": "int32",
1664
+ "example": 1001
1239
1665
  },
1240
- "subject": {
1241
- "type": "string",
1242
- "description": "Тема уведомления",
1243
- "nullable": true
1666
+ "isEmailVerified": {
1667
+ "type": "boolean",
1668
+ "description": "Признак пройденной проверки адреса эл.почты",
1669
+ "example": false
1244
1670
  },
1245
- "content": {
1246
- "type": "string",
1247
- "description": "Содержимое уведомления",
1248
- "nullable": true
1671
+ "isPhoneVerified": {
1672
+ "type": "boolean",
1673
+ "description": "Признак пройденной проверки телефона",
1674
+ "example": false
1249
1675
  },
1250
- "created": {
1676
+ "verificationRequestValidTill": {
1251
1677
  "type": "string",
1252
- "description": "Дата и время создания уведомления",
1678
+ "description": "Срок действия запроса на верификацию",
1253
1679
  "format": "date-time",
1254
- "nullable": true
1680
+ "nullable": true,
1681
+ "example": "2026-08-21T12:00:00Z"
1255
1682
  },
1256
- "sent": {
1257
- "type": "string",
1258
- "description": "Дата и время отправки уведомления",
1259
- "format": "date-time",
1260
- "nullable": true
1683
+ "isPasswordDefined": {
1684
+ "type": "boolean",
1685
+ "description": "Признак наличия пароля",
1686
+ "example": false
1687
+ },
1688
+ "isNewAccount": {
1689
+ "type": "boolean",
1690
+ "description": "Признак новой уч.записи",
1691
+ "example": true
1692
+ },
1693
+ "verificationCodeRepeatTimeout": {
1694
+ "type": "integer",
1695
+ "description": "Количество секунд через сколько можно повторить запрос на верификацию",
1696
+ "format": "int32",
1697
+ "example": 60
1261
1698
  }
1262
1699
  },
1263
1700
  "additionalProperties": false,
1264
- "description": "Записи из лога уведомлений"
1701
+ "description": "Результат проверки"
1265
1702
  },
1266
- "SmartService.Common.ExceptionHandling.Models.ErrorModel": {
1703
+ "VerifyEmailData": {
1267
1704
  "type": "object",
1268
1705
  "properties": {
1269
- "traceIdentifier": {
1270
- "type": "string",
1271
- "nullable": true
1272
- },
1273
- "code": {
1274
- "type": "string",
1275
- "nullable": true
1706
+ "accountID": {
1707
+ "type": "integer",
1708
+ "description": "Идентификатор уч.записи, которая запросила проверку почты (указывается только для неаутентифицированного пользователя)",
1709
+ "format": "int32",
1710
+ "nullable": true,
1711
+ "example": 1001
1276
1712
  },
1277
- "message": {
1713
+ "email": {
1278
1714
  "type": "string",
1279
- "nullable": true
1280
- },
1281
- "arguments": {
1282
- "type": "object",
1283
- "additionalProperties": {
1284
- "type": "string",
1285
- "nullable": true
1286
- },
1287
- "nullable": true
1715
+ "description": "Адрес эл.почты, который необходимо верифицировать (если не указан, то будет проверен основной адрес уч.записи)",
1716
+ "nullable": true,
1717
+ "example": "user%40example.com"
1288
1718
  }
1289
1719
  },
1290
- "additionalProperties": false
1720
+ "additionalProperties": false,
1721
+ "description": "Данные для проверки эл.почты"
1291
1722
  },
1292
- "SmartService.Common.Results.IdNameResult`1[[System.Byte, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
1723
+ "VerifyPhoneData": {
1293
1724
  "type": "object",
1294
1725
  "properties": {
1295
- "id": {
1726
+ "accountID": {
1296
1727
  "type": "integer",
1297
- "format": "int32"
1728
+ "description": "Идентификатор уч.записи, которая запросила проверку телефона (указывается только для неаутентифицированного пользователя)",
1729
+ "format": "int32",
1730
+ "nullable": true,
1731
+ "example": 1001
1298
1732
  },
1299
- "name": {
1733
+ "phone": {
1300
1734
  "type": "string",
1301
- "nullable": true
1735
+ "description": "Телефон, который необходимо верифицировать (если не указан, то будет проверен основной телефон уч.записи)",
1736
+ "nullable": true,
1737
+ "example": "+79001234567"
1302
1738
  }
1303
1739
  },
1304
- "additionalProperties": false
1740
+ "additionalProperties": false,
1741
+ "description": "Данные для проверки эл.почты"
1305
1742
  }
1743
+ },
1744
+ "securitySchemes": {
1745
+ "Bearer": {
1746
+ "type": "http",
1747
+ "description": "Введите токен для авторизации",
1748
+ "scheme": "Bearer",
1749
+ "bearerFormat": "JWT"
1750
+ }
1751
+ }
1752
+ },
1753
+ "tags": [
1754
+ {
1755
+ "name": "Accounts",
1756
+ "description": "Контроллер для аутентификации и авторизации учетных записей"
1757
+ },
1758
+ {
1759
+ "name": "Messages",
1760
+ "description": "Контроллер управления сообщениями"
1761
+ },
1762
+ {
1763
+ "name": "Passwords",
1764
+ "description": "Контроллер управления паролями"
1765
+ },
1766
+ {
1767
+ "name": "VerificationCodes",
1768
+ "description": "Контроллер управления проверочными кодами"
1769
+ },
1770
+ {
1771
+ "name": "Accounts",
1772
+ "description": "Контроллер для аутентификации и авторизации учетных записей"
1773
+ },
1774
+ {
1775
+ "name": "Messages",
1776
+ "description": "Контроллер управления сообщениями"
1777
+ },
1778
+ {
1779
+ "name": "Passwords",
1780
+ "description": "Контроллер управления паролями"
1781
+ },
1782
+ {
1783
+ "name": "VerificationCodes",
1784
+ "description": "Контроллер управления проверочными кодами"
1306
1785
  }
1307
- }
1786
+ ]
1308
1787
  }