using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Reflection; using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Keyapis.EF.DataAnnotations; using Keyapis.EF.Extensions; using Keyapis.EF.ValueConverters; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; // ReSharper disable once CheckNamespace namespace Keyapis.EF.Vc.V1.Data.VcDb; public interface IVcDbContext : IAsyncDisposable, IDisposable { public DbSet CameraAccesses { get; set; } public Task SaveChangesAsync(CancellationToken cancellationToken = default); } public abstract class VcDbContextBase : DbContext, IVcDbContext { protected VcDbContextBase(DbContextOptions options) : base(options) { } public DbSet CameraAccesses { get; set; } = null!; protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.HasPostgresExtension("pg_trgm"); foreach(var entity in builder.Model.GetEntityTypes()) { foreach(var property in entity.GetProperties()) { var memberInfo = property.PropertyInfo ?? (MemberInfo ?)property.FieldInfo; if (memberInfo == null) continue; var customRangeAttribute = memberInfo.GetCustomAttribute(); if (customRangeAttribute != null) { var actualType = Nullable.GetUnderlyingType(property.ClrType) ?? property.ClrType; if (actualType == typeof(string) || typeof(IEnumerable).IsAssignableFrom(actualType)) { property.SetMaxLength(customRangeAttribute.Maximum > int.MaxValue ? int.MaxValue : (int)customRangeAttribute.Maximum); } } var customRequiredAttribute = memberInfo.GetCustomAttribute(); if (customRequiredAttribute != null) { property.IsNullable = false; } } } builder.Entity(e => { // Для поля external_id дополнительные конфигурации свойства не нужны // Для поля external_id сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.AccessorType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля accessor_type сопоствалений с фильтром и сортировкой не найденно // Для поля accessor_id дополнительные конфигурации свойства не нужны // Для поля accessor_id сопоствалений с фильтром и сортировкой не найденно // Для поля vc_company_id дополнительные конфигурации свойства не нужны // Для поля vc_company_id сопоствалений с фильтром и сортировкой не найденно // WARNING Не удалось найти свойство навигации для поля CameraAccess.external_id // WARNING Не удалось найти свойство навигации для поля CameraAccess.accessor_id // WARNING Не удалось найти свойство навигации для поля CameraAccess.vc_company_id }); builder.HasDefaultSchema("vc"); } } /// /// Доступ к камере. /// # Описание модели /// [ Display(Name = @"Доступ к камере"), Description(@"Описание модели") ] public partial class CameraAccessModel { /// /// Идентификатор камеры в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid ExternalId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraAccess.external_id /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public CameraAccessModel.CameraAccessAccessorType AccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CameraAccess.accessor_id /// /// Идентификатор компании в vcfront. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании в vcfront"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int VcCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraAccess.vc_company_id /// /// Тип субъекта доступа /// public enum CameraAccessAccessorType { /// /// Значение не указно /// [ Display(Name = @"Значение не указно"), JsonPropertyName("ACCESSOR_TYPE_UNKNOWN") ] Unknown = 0, /// /// Пользователь /// [ Display(Name = @"Пользователь"), JsonPropertyName("USER") ] User = 1, /// /// ГРуппа /// [ Display(Name = @"ГРуппа"), JsonPropertyName("GROUP") ] Group = 2, } } /// /// Коллекция камер /// [ Display(Name = @"Коллекция камер") ] public partial class CameraCollectionModel { /// /// Идентификатор коллекции камер. /// Тип: Guid /// [ Display(Name = @"Идентификатор коллекции камер"), Description(@"Тип: Guid"), CustomRequired ] public string Id { get; set; } = null!; /// /// Наименование. /// Диапазон: 3..256 /// [ Display(Name = @"Наименование"), Description(@"Диапазон: 3..256"), CustomRequired ] public string Name { get; set; } = null!; /// /// Дата изменения коллекции камер. /// Поле используется при редактировании и создании для контроля актуальности изменяемой версии /// [ Display(Name = @"Дата изменения коллекции камер"), Description(@"Поле используется при редактировании и создании для контроля актуальности изменяемой версии"), CustomRequired ] public DateTime ChangedAt { get; set; } /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании"), CustomRequired ] public long CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraCollection.company_id /// /// Дата удаления коллекции камер. /// Поле изменяется через методы Delete и Restore /// [ Display(Name = @"Дата удаления коллекции камер"), Description(@"Поле изменяется через методы Delete и Restore"), Editable(false) ] public DateTime DeletedAt { get; set; } /// /// Описание. /// Диапазон: 0..256 /// [ Display(Name = @"Описание"), Description(@"Диапазон: 0..256") ] public string? Description { get; set; } /// /// Теги коллекции. /// Диапазон: 0..10 /// [ Display(Name = @"Теги коллекции"), Description(@"Диапазон: 0..10") ] public List Tags { get; set; } = new(0); /// /// Привязанные к коллекции камеры /// [ Display(Name = @"Привязанные к коллекции камеры") ] public List ExternalCameraIds { get; set; } = new(0); /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public CameraCollectionModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Попытка сохранить коллекцию камер с company_id не своей компании /// [ Display(Name = @"Попытка сохранить коллекцию камер с company_id не своей компании") ] public CameraCollectionModel.SavingErrorModel.WrongCompanyIdModel? WrongCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraCollection.SavingError.wrong_company_id /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at отличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at отличаются") ] public partial class ConflictModel { } /// /// Попытка сохранить коллекцию камер с company_id не своей компании. /// Для ролей owner, employee сохранение разрешено только с company_id своей компании /// [ Display(Name = @"Попытка сохранить коллекцию камер с company_id не своей компании"), Description(@"Для ролей owner, employee сохранение разрешено только с company_id своей компании") ] public partial class WrongCompanyIdModel { } } } /// /// Фильтр коллекций камер /// [ Display(Name = @"Фильтр коллекций камер") ] public partial class CameraCollectionFilterModel { /// /// По тексту. /// Если значение не передано то поиск по нему не производится. /// # Диапазон: 3..64. /// # Поиск производится по полям: /// # - Наименование. /// # - Описание. /// # - Теги коллекции /// [ Display(Name = @"По тексту"), Description(@"Если значение не передано то поиск по нему не производится. Диапазон: 3..64. Поиск производится по полям: - Наименование. - Описание. - Теги коллекции"), CustomRange(3, 64) ] public string? Text { get; set; } /// /// По тегам. /// Диапазон: 0..10 /// [ Display(Name = @"По тегам"), Description(@"Диапазон: 0..10") ] public List Tags { get; set; } = new(0); /// /// По компаниям. /// Диапазон: 0..10 /// [ Display(Name = @"По компаниям"), Description(@"Диапазон: 0..10") ] public List CompanyIds { get; set; } = new(0); /// /// Показывать удаленные. /// Если поле не передано, по умолчанию false, фильтр исключает удаленные /// [ Display(Name = @"Показывать удаленные"), Description(@"Если поле не передано, по умолчанию false, фильтр исключает удаленные") ] public bool? IsDeleted { get; set; } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class CameraCollectionPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public CameraCollectionPagingModel.CameraCollectionPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public CameraCollectionPagingModel.CameraCollectionPagingDirectionType DirectionType { get; set; } /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// Диапазон: 0..100. /// По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20") ] public int Limit { get; set; } /// /// Сдвиг. /// Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647") ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// Тип: byte /// [ Description("Тип: byte") ] public enum CameraCollectionPagingOrderByType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По имени /// [ Display(Name = @"По имени"), JsonPropertyName("NAME") ] Name = 2, /// /// По времени изменения /// [ Display(Name = @"По времени изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 3, } /// /// Справочник типов направлений сортировки. /// Тип: byte /// [ Description("Тип: byte") ] public enum CameraCollectionPagingDirectionType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос удаления коллекции камер /// [ Display(Name = @"Запрос удаления коллекции камер") ] public partial class DeleteCameraCollectionRequestModel { /// /// Идентификатор коллекции камер. /// Тип: Guid /// [ Display(Name = @"Идентификатор коллекции камер"), Description(@"Тип: Guid"), CustomRequired ] public string Id { get; set; } = null!; } /// /// Ответ на запрос удаления коллекции камер /// [ Display(Name = @"Ответ на запрос удаления коллекции камер") ] public partial class DeleteCameraCollectionResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public DeleteCameraCollectionResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения количества коллекций камер /// [ Display(Name = @"Запрос получения количества коллекций камер") ] public partial class GetCameraCollectionCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraCollectionFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества коллекций камер /// [ Display(Name = @"Ответ на запрос получения количества коллекций камер") ] public partial class GetCameraCollectionCountResponseModel { /// /// Всего /// [ Display(Name = @"Всего") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraCollectionCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка коллекций камер /// [ Display(Name = @"Запрос получения списка коллекций камер") ] public partial class GetCameraCollectionListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraCollectionFilterModel? Filter { get; set; } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public CameraCollectionPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка коллекций камер /// [ Display(Name = @"Ответ на запрос получения списка коллекций камер") ] public partial class GetCameraCollectionListResponseModel { /// /// Коллекция камер /// [ Display(Name = @"Коллекция камер") ] public CameraCollectionModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraCollectionListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения коллекции камер /// [ Display(Name = @"Запрос получения коллекции камер") ] public partial class GetCameraCollectionRequestModel { /// /// Идентификатор коллекции камер. /// Тип: Guid /// [ Display(Name = @"Идентификатор коллекции камер"), Description(@"Тип: Guid"), CustomRequired ] public string Id { get; set; } = null!; } /// /// Ответ на запрос получения коллекции камер /// [ Display(Name = @"Ответ на запрос получения коллекции камер") ] public partial class GetCameraCollectionResponseModel { /// /// Коллекция камер /// [ Display(Name = @"Коллекция камер") ] public CameraCollectionModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraCollectionResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос восстановления удаленной коллекции камер /// [ Display(Name = @"Запрос восстановления удаленной коллекции камер") ] public partial class PostCameraCollectionRestoreRequestModel { /// /// Идентификатор коллекции камер. /// Тип: Guid /// [ Display(Name = @"Идентификатор коллекции камер"), Description(@"Тип: Guid"), CustomRequired ] public string Id { get; set; } = null!; } /// /// Ответ на запрос восстановления удаленной коллекции камер /// [ Display(Name = @"Ответ на запрос восстановления удаленной коллекции камер") ] public partial class PostCameraCollectionRestoreResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostCameraCollectionRestoreResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на создание коллекции камер /// [ Display(Name = @"Запрос на создание коллекции камер") ] public partial class SaveCameraCollectionRequestModel { /// /// Коллекция камер /// [ Display(Name = @"Коллекция камер"), CustomRequired ] public CameraCollectionModel Data { get; set; } = null!; } /// /// Ответ на запрос на создание коллекции камер /// [ Display(Name = @"Ответ на запрос на создание коллекции камер") ] public partial class SaveCameraCollectionResponseModel { /// /// Коллекция камер /// [ Display(Name = @"Коллекция камер") ] public CameraCollectionModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public SaveCameraCollectionResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса создания /// [ Display(Name = @"Ошибка запроса создания") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public CameraCollectionModel.SavingErrorModel? Saving { get; set; } } } /// /// Данные o местонахождении камеры /// [ Display(Name = @"Данные o местонахождении камеры") ] public partial class CameraLocationDataModel { /// /// Идентификатор видеопотока в системе Видеокомфорт. /// Тип: Guid /// [ Display(Name = @"Идентификатор видеопотока в системе Видеокомфорт"), Description(@"Тип: Guid"), CustomRequired ] public string Uid { get; set; } = null!; /// /// Тип устройства. /// # Тип: byte /// [ Display(Name = @"Тип устройства"), Description(@"Тип: byte") ] public byte DeviceType { get; set; } /// /// Модель устройства /// [ Display(Name = @"Модель устройства") ] public string? Model { get; set; } /// /// Серийный номер устройства /// [ Display(Name = @"Серийный номер устройства") ] public string? SerialNumber { get; set; } /// /// Версия аппаратного обеспечения /// [ Display(Name = @"Версия аппаратного обеспечения") ] public string? HwVersion { get; set; } /// /// Версия программного обеспечения /// [ Display(Name = @"Версия программного обеспечения") ] public string? SwVersion { get; set; } /// /// MAC-адрес. /// # Диапазон: 17..17. /// # Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/ /// [ Display(Name = @"MAC-адрес"), Description(@"Диапазон: 17..17. Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/"), CustomRange(17, 17), CustomPattern(@"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$") ] public string? Mac { get; set; } /// /// Наименование устройства. /// # Диапазон: 3..256 /// [ Display(Name = @"Наименование устройства"), Description(@"Диапазон: 3..256"), CustomRange(3, 256) ] public string? Title { get; set; } /// /// Сетевой адрес. /// # Диапазон: 0..250 /// [ Display(Name = @"Сетевой адрес"), Description(@"Диапазон: 0..250"), CustomRange(0, 250) ] public string? Host { get; set; } /// /// Статус устройства /// [ Display(Name = @"Статус устройства") ] public CameraLocationDataModel.CameraLocationDataStatusType StatusType { get; set; } /// /// Номер подъезда. /// # Диапазон: 1..100 /// [ Display(Name = @"Номер подъезда"), Description(@"Диапазон: 1..100"), CustomRange(1, 100) ] public List EntranceNumbers { get; set; } = new(0); /// /// Идентификатор квартирограммы. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартирограммы"), Description(@"Диапазон: 1..2147483647"), CustomRange(1, 2147483647) ] public int FlatgrammId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.flatgramm_id /// /// Компания владелец устройства /// [ Display(Name = @"Компания владелец устройства") ] public CameraLocationDataModel.CompanyModel? Company { get; set; } /// /// Массив домов камеры /// [ Display(Name = @"Массив домов камеры") ] public List Buildings { get; set; } = new(0); /// /// Компания /// [ Display(Name = @"Компания") ] public partial class CompanyModel { /// /// Идентификатор компании. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании"), Description(@"Диапазон: 1..2147483647"), CustomRange(1, 2147483647) ] public int Id { get; set; } /// /// Идентификатор компании в системе Видеокомфорт /// [ Display(Name = @"Идентификатор компании в системе Видеокомфорт") ] public long VcCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.Company.vc_company_id /// /// Наименование компании /// [ Display(Name = @"Наименование компании") ] public string? Name { get; set; } /// /// ИНН /// [ Display(Name = @"ИНН") ] public string? Inn { get; set; } /// /// КПП /// [ Display(Name = @"КПП") ] public string? Kpp { get; set; } /// /// ОГРН /// [ Display(Name = @"ОГРН") ] public string? Ogrn { get; set; } } /// /// Дом /// [ Display(Name = @"Дом") ] public partial class BuildingModel { /// /// Идентификатор дома /// [ Display(Name = @"Идентификатор дома") ] public int Id { get; set; } /// /// Идентификатор РФ /// [ Display(Name = @"Идентификатор РФ"), CustomRequired ] public int RfId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.Building.rf_id /// /// Идентификатор МРФ /// [ Display(Name = @"Идентификатор МРФ"), CustomRequired ] public int MrfId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.Building.mrf_id /// /// ОРПОН /// [ Display(Name = @"ОРПОН"), CustomRequired ] public long Orpon { get; set; } /// /// Город /// [ Display(Name = @"Город"), CustomRequired ] public string City { get; set; } = null!; /// /// Улица /// [ Display(Name = @"Улица"), CustomRequired ] public string Street { get; set; } = null!; /// /// Номер дома /// [ Display(Name = @"Номер дома") ] public string? Number { get; set; } /// /// Корпус /// [ Display(Name = @"Корпус") ] public string? Part { get; set; } /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании"), CustomRequired ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.Building.company_id /// /// Префикс /// [ Display(Name = @"Префикс") ] public string? Prefix { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата удаления. /// # Тип: DateTime /// [ Display(Name = @"Дата удаления"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime DeletedAt { get; set; } /// /// Идентификатор квартирограммы /// [ Display(Name = @"Идентификатор квартирограммы"), CustomRequired ] public int FlatgrammId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraLocationData.Building.flatgramm_id /// /// ОРПОН города, в котором находится дом /// [ Display(Name = @"ОРПОН города, в котором находится дом") ] public long CityOrpon { get; set; } /// /// Идентификатор в федеральной информационной адресной системе. /// Тип: Guid /// [ Display(Name = @"Идентификатор в федеральной информационной адресной системе"), Description(@"Тип: Guid") ] public string? Fias { get; set; } /// /// Наименования района. /// # Диапазон: 0..200 /// [ Display(Name = @"Наименования района"), Description(@"Диапазон: 0..200"), CustomRange(0, 200) ] public string? District { get; set; } /// /// Уникальный номер адреса. /// # Диапазон: 0..9999999999 /// [ Display(Name = @"Уникальный номер адреса"), Description(@"Диапазон: 0..9999999999"), CustomRange(0, 9999999999) ] public string? Unom { get; set; } /// /// ОРПОН региона /// [ Display(Name = @"ОРПОН региона") ] public long RegionOrpon { get; set; } } /// /// Тип устройства /// public enum CameraLocationDataDeviceType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DEVICE_TYPE_UNKNOWN") ] Unknown = 0, /// /// Домофон /// [ Display(Name = @"Домофон"), JsonPropertyName("INTERCOM") ] Intercom = 1, /// /// Видеокамера /// [ Display(Name = @"Видеокамера"), JsonPropertyName("VIDEOCAMERA") ] Videocamera = 2, /// /// Шлагбаум /// [ Display(Name = @"Шлагбаум"), JsonPropertyName("BARRIER") ] Barrier = 3, /// /// Калитка /// [ Display(Name = @"Калитка"), JsonPropertyName("GATE") ] Gate = 4, /// /// СКУД /// [ Display(Name = @"СКУД"), JsonPropertyName("ACCESS_CONTROL_PANEL") ] AccessControlPanel = 5, /// /// Наружняя видеокамера /// [ Display(Name = @"Наружняя видеокамера"), JsonPropertyName("OUTDOOR_CAMERA") ] OutdoorCamera = 6, } /// /// Справочник статусов устройства /// public enum CameraLocationDataStatusType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Не в сети /// [ Display(Name = @"Не в сети"), JsonPropertyName("OFFLINE") ] Offline = 1, /// /// В сети /// [ Display(Name = @"В сети"), JsonPropertyName("ONLINE") ] Online = 2, } } /// /// Запрос на получение данных o местонахождении камеры /// [ Display(Name = @"Запрос на получение данных o местонахождении камеры") ] public partial class GetCameraLocationDataRequestModel { /// /// uid видеопотока камеры /// [ Display(Name = @"uid видеопотока камеры"), CustomRequired ] public string Uid { get; set; } = null!; } /// /// Ответ на запрос на получение данных o местонахождении камеры /// [ Display(Name = @"Ответ на запрос на получение данных o местонахождении камеры") ] public partial class GetCameraLocationDataResponseModel { /// /// Данные o местонахождении камеры /// [ Display(Name = @"Данные o местонахождении камеры") ] public CameraLocationDataModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraLocationDataResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Камера /// [ Display(Name = @"Камера") ] public partial class CameraModel { /// /// Идентификатор камеры /// [ Display(Name = @"Идентификатор камеры"), CustomRequired, Editable(false) ] public string Id { get; set; } = null!; /// /// uid камеры /// [ Display(Name = @"uid камеры"), CustomRequired, Editable(false) ] public string Uid { get; set; } = null!; /// /// Название камеры /// [ Display(Name = @"Название камеры"), CustomRequired, Editable(false) ] public string Name { get; set; } = null!; /// /// Признак: онлайн камера или нет /// [ Display(Name = @"Признак: онлайн камера или нет"), Editable(false) ] public bool IsOnline { get; set; } /// /// Признак: Есть ли у камеры активный пользователь /// [ Display(Name = @"Признак: Есть ли у камеры активный пользователь"), Editable(false) ] public bool IsActiveUserCamera { get; set; } /// /// Дата и время изменения статуса камеры /// [ Display(Name = @"Дата и время изменения статуса камеры"), Editable(false) ] public DateTime StatusChangedAt { get; set; } /// /// MAC-адрес камеры /// [ Display(Name = @"MAC-адрес камеры") ] public string? Mac { get; set; } /// /// IP камеры /// [ Display(Name = @"IP камеры"), CustomRequired, Editable(false) ] public string Ip { get; set; } = null!; /// /// Внешний IP камеры /// [ Display(Name = @"Внешний IP камеры"), CustomRequired, Editable(false) ] public string RemoteIp { get; set; } = null!; /// /// Дата начала действия текущего тарифа /// [ Display(Name = @"Дата начала действия текущего тарифа"), Editable(false) ] public DateTime TariffStartedAt { get; set; } /// /// Дата окончания действия текущего тарифа /// [ Display(Name = @"Дата окончания действия текущего тарифа"), Editable(false) ] public DateTime TariffEndedAt { get; set; } /// /// Наименование тарифа /// [ Display(Name = @"Наименование тарифа"), CustomRequired, Editable(false) ] public string TariffTitle { get; set; } = null!; /// /// Тип камеры /// [ Display(Name = @"Тип камеры") ] public CameraModel.CameraType Type { get; set; } /// /// Идентификатор категории. /// Камера - 1, домофон - 2, скуд - 3, шлагбаум - 4 /// [ Display(Name = @"Идентификатор категории"), Description(@"Камера - 1, домофон - 2, скуд - 3, шлагбаум - 4") ] public int CameraCategoryId { get; set; } // WARNING Не удалось найти свойство навигации для поля Camera.camera_category_id /// /// РТСП-ссылка /// [ Display(Name = @"РТСП-ссылка"), CustomRequired ] public string RtspUrl { get; set; } = null!; /// /// Серийный номер /// [ Display(Name = @"Серийный номер"), CustomRequired ] public string SerialNumber { get; set; } = null!; /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании") ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Camera.company_id /// /// Ошибки валидации /// [ Display(Name = @"Ошибки валидации") ] public partial class ValidationErrorModel { /// /// Поле rtsp_url должно быть заполнено /// [ Display(Name = @"Поле rtsp_url должно быть заполнено") ] public CameraModel.ValidationErrorModel.RtspUrlRequiredModel? RtspUrlRequired { get; set; } /// /// Только одно поле обязательно к заполнению mac или serial_number /// [ Display(Name = @"Только одно поле обязательно к заполнению mac или serial_number") ] public CameraModel.ValidationErrorModel.OneFieldMacOrSerialNumberRequiredModel? OneFieldMacOrSerialNumberRequired { get; set; } /// /// Поле rtsp_url должно быть заполнено. /// Только для камер с типом ROSE /// [ Display(Name = @"Поле rtsp_url должно быть заполнено"), Description(@"Только для камер с типом ROSE") ] public partial class RtspUrlRequiredModel { } /// /// Только одно поле обязательно к заполнению mac или serial_number. /// Для камер с типом VIOLET и DVR /// [ Display(Name = @"Только одно поле обязательно к заполнению mac или serial_number"), Description(@"Для камер с типом VIOLET и DVR") ] public partial class OneFieldMacOrSerialNumberRequiredModel { } } /// /// Справочник типов камер /// public enum CameraType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("TYPE_UNKNOWN") ] Unknown = 0, /// /// Регистратор /// [ Display(Name = @"Регистратор"), JsonPropertyName("DVR") ] Dvr = 1, /// /// Система управления видео /// [ Display(Name = @"Система управления видео"), JsonPropertyName("VMS") ] Vms = 2, /// /// RTSP-камера /// [ Display(Name = @"RTSP-камера"), JsonPropertyName("ROSE") ] Rose = 3, /// /// IP-камера /// [ Display(Name = @"IP-камера"), JsonPropertyName("VIOLET") ] Violet = 4, } } /// /// Фильтр камер /// [ Display(Name = @"Фильтр камер") ] public partial class CameraFilterModel { /// /// Признак активности камеры /// [ Display(Name = @"Признак активности камеры") ] public bool? IsActive { get; set; } /// /// Признак активности канала /// [ Display(Name = @"Признак активности канала") ] public bool? IsChannelAlive { get; set; } /// /// Статус камеры /// [ Display(Name = @"Статус камеры") ] public bool? IsOnline { get; set; } /// /// Тип камеры /// [ Display(Name = @"Тип камеры") ] public CameraModel.CameraType CameraType { get; set; } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class CameraPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию") ] public CameraPagingModel.CameraPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public CameraPagingModel.CameraPagingDirectionType DirectionType { get; set; } = CameraPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("UID") ] Uid = 1, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Связь камеры и квартиры /// [ Display(Name = @"Связь камеры и квартиры") ] public partial class CameraRoomModel { /// /// Идентификатор камеры /// [ Display(Name = @"Идентификатор камеры"), CustomRequired ] public string CameraUid { get; set; } = null!; /// /// ОРПОН дома /// [ Display(Name = @"ОРПОН дома"), CustomRequired ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..4 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..4"), CustomRequired, CustomRange(1, 4) ] public string RoomNumber { get; set; } = null!; } /// /// Фильтр связок камеры и квартиры. /// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. /// При передаче нескольких разных параметров фильтра они работают в выборке через И /// [ Display(Name = @"Фильтр связок камеры и квартиры"), Description(@"При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. При передаче нескольких разных параметров фильтра они работают в выборке через И") ] public partial class CameraRoomFilterModel { /// /// По Идентификаторам камер. /// # Диапазон: 0..100 /// [ Display(Name = @"По Идентификаторам камер"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public List CameraUids { get; set; } = new(0); /// /// По ОРПОНам. /// # Диапазон: 0..100 /// [ Display(Name = @"По ОРПОНам"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public List Orpons { get; set; } = new(0); /// /// По квартирам. /// # Диапазон: 0..100 /// [ Display(Name = @"По квартирам"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public List RoomNumbers { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class CameraRoomPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию CAMERA_UID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию CAMERA_UID") ] public CameraRoomPagingModel.CameraRoomPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public CameraRoomPagingModel.CameraRoomPagingDirectionType DirectionType { get; set; } = CameraRoomPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraRoomPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По Идентификатору камеры /// [ Display(Name = @"По Идентификатору камеры"), JsonPropertyName("CAMERA_UID") ] CameraUid = 1, /// /// По ОРПОН и номеру квартиры /// [ Display(Name = @"По ОРПОН и номеру квартиры"), JsonPropertyName("ORPON_ROOM_NUMBER") ] OrponRoomNumber = 2, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraRoomPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Ограничение выборки камер /// [ Display(Name = @"Ограничение выборки камер") ] public partial class CameraScopeModel { /// /// Внешний идентификатор компании /// [ Display(Name = @"Внешний идентификатор компании") ] public int VcCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraScope.vc_company_id } /// /// Запрос удаления камеры /// [ Display(Name = @"Запрос удаления камеры") ] public partial class DeleteCameraRequestModel { /// /// Идентификатор камеры в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Uid { get; set; } /// /// Флаг полного (безвозвратного) удаления камеры /// [ Display(Name = @"Флаг полного") ] public bool IsDeletePermanently { get; set; } } /// /// Ответ на запрос удаления камеры /// [ Display(Name = @"Ответ на запрос удаления камеры") ] public partial class DeleteCameraResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public DeleteCameraResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения дней, когда доступны записи /// [ Display(Name = @"Запрос получения дней, когда доступны записи") ] public partial class GetCameraCalendarRequestModel { /// /// Идентификатор камеры в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Uid { get; set; } /// /// Смещение от UTC в минутах /// [ Display(Name = @"Смещение от UTC в минутах") ] public int? Offset { get; set; } } /// /// Ответ на запрос получения дней, когда доступны записи /// [ Display(Name = @"Ответ на запрос получения дней, когда доступны записи") ] public partial class GetCameraCalendarResponseModel { /// /// Дни с записями /// [ Display(Name = @"Дни с записями") ] public GetCameraCalendarResponseModel.CaledarModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraCalendarResponseModel.ErrorModel? Error { get; set; } /// /// Дни с записями /// [ Display(Name = @"Дни с записями") ] public partial class CaledarModel { /// /// День с записью /// [ Display(Name = @"День с записью") ] public List Items { get; set; } = new(0); } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public GetCameraCalendarResponseModel.ErrorModel.VcErrorModel? Vc { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public partial class VcErrorModel { /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? Text { get; set; } } } } /// /// Запрос получения интервалов, когда доступны записи /// [ Display(Name = @"Запрос получения интервалов, когда доступны записи") ] public partial class GetCameraIntervalsRequestModel { /// /// Идентификатор камеры в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Uid { get; set; } /// /// Смещение от UTC в минутах /// [ Display(Name = @"Смещение от UTC в минутах") ] public int? Offset { get; set; } } /// /// Ответ на запрос получения интервалов, когда доступны записи /// [ Display(Name = @"Ответ на запрос получения интервалов, когда доступны записи") ] public partial class GetCameraIntervalsResponseModel { /// /// Интервалы /// [ Display(Name = @"Интервалы") ] public GetCameraIntervalsResponseModel.IntervalModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraIntervalsResponseModel.ErrorModel? Error { get; set; } /// /// Интервалы /// [ Display(Name = @"Интервалы") ] public partial class IntervalModel { /// /// Список интервалов /// [ Display(Name = @"Список интервалов") ] public List Items { get; set; } = new(0); /// /// Интервал /// [ Display(Name = @"Интервал") ] public partial class ItemModel { /// /// Значение интервала с. /// # Тип: DateTime /// [ Display(Name = @"Значение интервала с"), Description(@"Тип: DateTime") ] public DateTime SinceAt { get; set; } /// /// Значение интервала до. /// # Тип: DateTime /// [ Display(Name = @"Значение интервала до"), Description(@"Тип: DateTime") ] public DateTime TillAt { get; set; } } } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public GetCameraIntervalsResponseModel.ErrorModel.VcErrorModel? Vc { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public partial class VcErrorModel { /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? Text { get; set; } } } } /// /// Запрос на получение списка камер /// [ Display(Name = @"Запрос на получение списка камер") ] public partial class GetCameraListRequestModel { /// /// Ограничение выборки /// [ Display(Name = @"Ограничение выборки") ] public CameraScopeModel? Scope { get; set; } /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraFilterModel? Filter { get; set; } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public CameraPagingModel? Paging { get; set; } } /// /// Ответ на получение списка камер /// [ Display(Name = @"Ответ на получение списка камер") ] public partial class GetCameraListResponseModel { /// /// Список /// [ Display(Name = @"Список") ] public GetCameraListResponseModel.DataModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraListResponseModel.ErrorModel? Error { get; set; } /// /// Список /// [ Display(Name = @"Список") ] public partial class DataModel { /// /// Список Camera /// [ Display(Name = @"Список Camera") ] public List Items { get; set; } = new(0); /// /// Всего количество /// [ Display(Name = @"Всего количество") ] public int Total { get; set; } } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения камеры /// [ Display(Name = @"Запрос получения камеры") ] public partial class GetCameraRequestModel { /// /// Ограничение выборки /// [ Display(Name = @"Ограничение выборки"), CustomRequired ] public CameraScopeModel Scope { get; set; } = null!; /// /// uid камеры /// [ Display(Name = @"uid камеры"), CustomRequired ] public string Uid { get; set; } = null!; } /// /// Ответ на запрос получения камеры /// [ Display(Name = @"Ответ на запрос получения камеры") ] public partial class GetCameraResponseModel { /// /// Камера /// [ Display(Name = @"Камера") ] public CameraModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения количества связей камеры и квартиры /// [ Display(Name = @"Запрос получения количества связей камеры и квартиры") ] public partial class GetCameraRoomCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraRoomFilterModel? Filter { get; set; } } /// /// Ответ получения количества связей камеры и квартиры /// [ Display(Name = @"Ответ получения количества связей камеры и квартиры") ] public partial class GetCameraRoomCountResponseModel { /// /// Всего количество /// [ Display(Name = @"Всего количество") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraRoomCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка связей камеры и квартиры /// [ Display(Name = @"Запрос получения списка связей камеры и квартиры") ] public partial class GetCameraRoomListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraRoomFilterModel? Filter { get; set; } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public CameraRoomPagingModel? Paging { get; set; } } /// /// Ответ получения списка связей камеры и квартиры /// [ Display(Name = @"Ответ получения списка связей камеры и квартиры") ] public partial class GetCameraRoomListResponseModel { /// /// Связь камеры и квартиры /// [ Display(Name = @"Связь камеры и квартиры") ] public CameraRoomModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraRoomListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения камеры /// [ Display(Name = @"Запрос получения камеры") ] public partial class GetCameraRtspUrlExternalIdRequestModel { /// /// Идентификатор камеры в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid ExternalId { get; set; } // WARNING Не удалось найти свойство навигации для поля GetCameraRtspUrlExternalIdRequest.external_id } /// /// Ответ на запрос получения RTSP-ссылки по идентификатору камеры в vcfront /// [ Display(Name = @"Ответ на запрос получения RTSP-ссылки по идентификатору камеры в vcfront") ] public partial class GetCameraRtspUrlExternalIdResponseModel { /// /// RTSP-ссылка /// [ Display(Name = @"RTSP-ссылка") ] public GetCameraRtspUrlExternalIdResponseModel.CameraRtspUrlModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraRtspUrlExternalIdResponseModel.ErrorModel? Error { get; set; } /// /// RTSP-ссылка /// [ Display(Name = @"RTSP-ссылка") ] public partial class CameraRtspUrlModel { /// /// RTSP-ссылка /// [ Display(Name = @"RTSP-ссылка") ] public string? RtspUrl { get; set; } } /// /// Ошибка запроса получения списка камер /// [ Display(Name = @"Ошибка запроса получения списка камер") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос создания камеры /// [ Display(Name = @"Запрос создания камеры") ] public partial class PostCameraRequestModel { /// /// Камера /// [ Display(Name = @"Камера"), CustomRequired ] public CameraModel Data { get; set; } = null!; } /// /// Ответ на запрос создания камеры /// [ Display(Name = @"Ответ на запрос создания камеры") ] public partial class PostCameraResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostCameraResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public CameraModel.ValidationErrorModel? CameraValidation { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public PostCameraResponseModel.ErrorModel.VcErrorModel? Vc { get; set; } /// /// Ошибка в сервисе ВН /// [ Display(Name = @"Ошибка в сервисе ВН") ] public partial class VcErrorModel { /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? Text { get; set; } } } } /// /// Запрос пакетной привязки камер и квартир /// [ Display(Name = @"Запрос пакетной привязки камер и квартир") ] public partial class PutCameraRoomAttachListRequestModel { /// /// Массив связей Camera и Room /// [ Display(Name = @"Массив связей Camera и Room") ] public List Data { get; set; } = new(0); } /// /// Ответ на запрос пакетной привязки камер и квартир /// [ Display(Name = @"Ответ на запрос пакетной привязки камер и квартир") ] public partial class PutCameraRoomAttachListResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutCameraRoomAttachListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос привязки камеры и квартиры /// [ Display(Name = @"Запрос привязки камеры и квартиры") ] public partial class PutCameraRoomAttachRequestModel { /// /// Связь Camera и Room /// [ Display(Name = @"Связь Camera и Room"), CustomRequired ] public CameraRoomModel Data { get; set; } = null!; } /// /// Ответ привязки камеры и квартиры /// [ Display(Name = @"Ответ привязки камеры и квартиры") ] public partial class PutCameraRoomAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutCameraRoomAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос пакетной отвязки камер и квартир /// [ Display(Name = @"Запрос пакетной отвязки камер и квартир") ] public partial class PutCameraRoomDetachListRequestModel { /// /// Массив связей Camera и Room /// [ Display(Name = @"Массив связей Camera и Room") ] public List Data { get; set; } = new(0); } /// /// Ответ на запрос пакетной отвязки камер и квартир /// [ Display(Name = @"Ответ на запрос пакетной отвязки камер и квартир") ] public partial class PutCameraRoomDetachListResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutCameraRoomDetachListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос отвязки камеры и квартиры /// [ Display(Name = @"Запрос отвязки камеры и квартиры") ] public partial class PutCameraRoomDetachRequestModel { /// /// Связь Camera и Room /// [ Display(Name = @"Связь Camera и Room"), CustomRequired ] public CameraRoomModel Data { get; set; } = null!; } /// /// Ответ отвязки камеры и квартиры /// [ Display(Name = @"Ответ отвязки камеры и квартиры") ] public partial class PutCameraRoomDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutCameraRoomDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Ошибки валидации. /// Эти проверки выполняются до обращения в базу данных /// [ Display(Name = @"Ошибки валидации"), Description(@"Эти проверки выполняются до обращения в базу данных") ] public partial class ValidationErrorModel { /// /// Путь к полю в формате наименования прото /// [ Display(Name = @"Путь к полю в формате наименования прото"), CustomRequired ] public string Path { get; set; } = null!; /// /// Валидационное сообщение /// [ Display(Name = @"Валидационное сообщение"), CustomRequired ] public string Message { get; set; } = null!; } /// /// Камера /// [ Display(Name = @"Камера") ] public partial class CameraVideoDataModel { /// /// Идентификатор камеры в системе Видеокомфорт. /// Тип: Guid /// [ Display(Name = @"Идентификатор камеры в системе Видеокомфорт"), Description(@"Тип: Guid"), CustomRequired ] public string Uid { get; set; } = null!; /// /// Категория камеры /// [ Display(Name = @"Категория камеры") ] public CameraVideoDataModel.CategoryModel? Category { get; set; } /// /// Наименование камеры /// [ Display(Name = @"Наименование камеры"), CustomRequired ] public string Title { get; set; } = null!; /// /// Серийный номер камеры /// [ Display(Name = @"Серийный номер камеры"), CustomRequired ] public string SerialNumber { get; set; } = null!; /// /// IP камеры /// [ Display(Name = @"IP камеры"), CustomRequired ] public string Ip { get; set; } = null!; /// /// Адрес видео-потока (https соединение) /// [ Display(Name = @"Адрес видео-потока"), CustomRequired ] public string StreamerUrl { get; set; } = null!; /// /// MAC-адрес камеры /// [ Display(Name = @"MAC-адрес камеры"), CustomRequired ] public string Mac { get; set; } = null!; /// /// Модель камеры /// [ Display(Name = @"Модель камеры") ] public string? Model { get; set; } /// /// Производитель камеры /// [ Display(Name = @"Производитель камеры") ] public string? Vendor { get; set; } /// /// Статус камеры /// [ Display(Name = @"Статус камеры"), CustomRequired ] public CameraVideoDataModel.StatusModel Status { get; set; } = null!; /// /// URL скриншотов разных размеров в JPG-формате /// [ Display(Name = @"URL скриншотов разных размеров в JPG-формате"), CustomRequired ] public string ScreenshotUrlTemplate { get; set; } = null!; /// /// Шаблон для “точных” скриншотов. Выдаёт скриншоты всех размеров /// [ Display(Name = @"Шаблон для “точных” скриншотов. Выдаёт скриншоты всех размеров"), CustomRequired ] public string ScreenshotPreciseUrlTemplate { get; set; } = null!; /// /// U-Токен, кука, которая выдается Умному Дому /// [ Display(Name = @"U-Токен, кука, которая выдается Умному Дому"), CustomRequired ] public string UserToken { get; set; } = null!; /// /// Токен для воспроизведения видео с камеры /// [ Display(Name = @"Токен для воспроизведения видео с камеры"), CustomRequired ] public string StreamerToken { get; set; } = null!; /// /// Токен для получения контента с cdn (например, файлов изображений) /// [ Display(Name = @"Токен для получения контента с cdn"), CustomRequired ] public string ScreenshotToken { get; set; } = null!; /// /// Глубина хранения видео в минутах /// [ Display(Name = @"Глубина хранения видео в минутах") ] public int ArchiveLength { get; set; } /// /// Координаты месторасположения /// [ Display(Name = @"Координаты месторасположения") ] public CameraVideoDataModel.LocationModel? Location { get; set; } /// /// Дата создания /// [ Display(Name = @"Дата создания"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата обновления /// [ Display(Name = @"Дата обновления"), Editable(false) ] public DateTime UpdatedAt { get; set; } /// /// Смещение таймзоны в минутах. /// # Диапазон: -720..840 /// [ Display(Name = @"Смещение таймзоны в минутах"), Description(@"Диапазон: -720..840"), CustomRange(-720, 840) ] public int UtcOffset { get; set; } /// /// Категория камеры /// [ Display(Name = @"Категория камеры") ] public partial class CategoryModel { /// /// Идентификатор группы /// [ Display(Name = @"Идентификатор группы"), CustomRequired ] public int Id { get; set; } /// /// Тип группы /// [ Display(Name = @"Тип группы"), CustomRequired ] public string Type { get; set; } = null!; /// /// Имя группы /// [ Display(Name = @"Имя группы"), CustomRequired ] public string Title { get; set; } = null!; } /// /// Статус камеры /// [ Display(Name = @"Статус камеры") ] public partial class StatusModel { /// /// Идентификатор статуса /// [ Display(Name = @"Идентификатор статуса"), CustomRequired ] public int Id { get; set; } /// /// online/offline /// [ Display(Name = @"online/offline"), CustomRequired ] public string Type { get; set; } = null!; /// /// Доступна/Не доступна /// [ Display(Name = @"Доступна/Не доступна"), CustomRequired ] public string Title { get; set; } = null!; } /// /// Координаты месторасположения /// [ Display(Name = @"Координаты месторасположения") ] public partial class LocationModel { /// /// Широта /// [ Display(Name = @"Широта"), CustomRequired ] public double Lat { get; set; } /// /// Долгота /// [ Display(Name = @"Долгота"), CustomRequired ] public double Lng { get; set; } } } /// /// Фильтр камер /// [ Display(Name = @"Фильтр камер") ] public partial class CameraVideoDataFilterModel { /// /// Идентификатор камеры в системе Видеокомфорт. /// Тип: Guid /// [ Display(Name = @"Идентификатор камеры в системе Видеокомфорт"), Description(@"Тип: Guid") ] public List Uids { get; set; } = new(0); /// /// Наименование камеры /// [ Display(Name = @"Наименование камеры") ] public List Title { get; set; } = new(0); /// /// MAC-адрес камеры /// [ Display(Name = @"MAC-адрес камеры") ] public List Mac { get; set; } = new(0); /// /// IP камеры /// [ Display(Name = @"IP камеры") ] public List Ip { get; set; } = new(0); /// /// Серийный номер камеры /// [ Display(Name = @"Серийный номер камеры") ] public List SerialNumber { get; set; } = new(0); /// /// Категория камеры /// [ Display(Name = @"Категория камеры") ] public List Category { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class CameraVideoDataPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// По умолчанию: UID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: UID") ] public CameraVideoDataPagingModel.CameraVideoDataPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public CameraVideoDataPagingModel.CameraVideoDataPagingDirectionType DirectionType { get; set; } = CameraVideoDataPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraVideoDataPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По дате создания /// [ Display(Name = @"По дате создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 1, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraVideoDataPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Ограничение выборки камер /// [ Display(Name = @"Ограничение выборки камер") ] public partial class CameraVideoDataScopeModel { /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании") ] public long CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraVideoDataScope.company_id /// /// Идентификатор пользователя /// [ Display(Name = @"Идентификатор пользователя") ] public int UserId { get; set; } // WARNING Не удалось найти свойство навигации для поля CameraVideoDataScope.user_id } /// /// Запрос на получение количества камер /// [ Display(Name = @"Запрос на получение количества камер") ] public partial class GetCameraVideoDataCountRequestModel { /// /// Ограничение выборки /// [ Display(Name = @"Ограничение выборки") ] public CameraVideoDataScopeModel? Scope { get; set; } /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraVideoDataFilterModel? Filter { get; set; } } /// /// Ответ на получение количества камер /// [ Display(Name = @"Ответ на получение количества камер") ] public partial class GetCameraVideoDataCountResponseModel { /// /// Всего количество /// [ Display(Name = @"Всего количество") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraVideoDataCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение списка камер /// [ Display(Name = @"Запрос на получение списка камер") ] public partial class GetCameraVideoDataListRequestModel { /// /// Ограничение выборки /// [ Display(Name = @"Ограничение выборки") ] public CameraVideoDataScopeModel? Scope { get; set; } /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CameraVideoDataFilterModel? Filter { get; set; } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public CameraVideoDataPagingModel? Paging { get; set; } } /// /// Ответ на получение списка камер /// [ Display(Name = @"Ответ на получение списка камер") ] public partial class GetCameraVideoDataListResponseModel { /// /// Камера /// [ Display(Name = @"Камера") ] public List Data { get; set; } = new(0); /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCameraVideoDataListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос генерации имперсонационной ссылки для компании /// [ Display(Name = @"Запрос генерации имперсонационной ссылки для компании") ] public partial class PostCompanyImpersonationRequestModel { /// /// Идентификатор компании. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля PostCompanyImpersonationRequest.company_id } /// /// Ответ на запрос генерации имперсонационной ссылки для компании /// [ Display(Name = @"Ответ на запрос генерации имперсонационной ссылки для компании") ] public partial class PostCompanyImpersonationResponseModel { /// /// Имперсонационная ссылка /// [ Display(Name = @"Имперсонационная ссылка") ] public PostCompanyImpersonationResponseModel.CompanyImpersonationModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostCompanyImpersonationResponseModel.ErrorModel? Error { get; set; } /// /// Имперсонационная ссылка /// [ Display(Name = @"Имперсонационная ссылка") ] public partial class CompanyImpersonationModel { /// /// Одноразовая ссылка для имперсонации /// [ Display(Name = @"Одноразовая ссылка для имперсонации"), CustomRequired ] public string Url { get; set; } = null!; } /// /// Ошибка генерации имперсонационной ссылки для компании /// [ Display(Name = @"Ошибка генерации имперсонационной ссылки для компании") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Владелец компании не найден /// [ Display(Name = @"Владелец компании не найден") ] public PostCompanyImpersonationResponseModel.ErrorModel.OwnerNotFoundModel? OwnerNotFound { get; set; } /// /// Ошибка взаимодействия с сервисом User /// [ Display(Name = @"Ошибка взаимодействия с сервисом User") ] public PostCompanyImpersonationResponseModel.ErrorModel.UserServiceErrorModel? UserServiceError { get; set; } /// /// Ошибка взаимодействия с сервисом vcfront /// [ Display(Name = @"Ошибка взаимодействия с сервисом vcfront") ] public PostCompanyImpersonationResponseModel.ErrorModel.VcfrontServiceErrorModel? VcfrontServiceError { get; set; } /// /// Владелец компании не найден /// [ Display(Name = @"Владелец компании не найден") ] public partial class OwnerNotFoundModel { } /// /// Ошибка взаимодействия с сервисом User /// [ Display(Name = @"Ошибка взаимодействия с сервисом User") ] public partial class UserServiceErrorModel { } /// /// Ошибка взаимодействия с сервисом vcfront /// [ Display(Name = @"Ошибка взаимодействия с сервисом vcfront") ] public partial class VcfrontServiceErrorModel { } } } /// /// Задача на создание доступа к камере. /// Очередь key.vc.create_camera_access /// [ Display(Name = @"Задача на создание доступа к камере"), Description(@"Очередь key.vc.create_camera_access") ] public partial class CreateCameraAccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CreateCameraAccessTask.request_id /// /// Идентификаторы камер в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификаторы камер в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public List ExternalIds { get; set; } = new(0); /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public CameraAccessModel.CameraAccessAccessorType CameraAccessAccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CreateCameraAccessTask.accessor_id /// /// Идентификатор компании в vcfront. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании в vcfront"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int VcCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля CreateCameraAccessTask.vc_company_id } /// /// Задача на удаление доступа к камере. /// Очередь key.vc.delete_camera_access /// [ Display(Name = @"Задача на удаление доступа к камере"), Description(@"Очередь key.vc.delete_camera_access") ] public partial class DeleteCameraAccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCameraAccessTask.request_id /// /// Идентификаторы камер в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификаторы камер в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public List ExternalIds { get; set; } = new(0); /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public CameraAccessModel.CameraAccessAccessorType CameraAccessAccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCameraAccessTask.accessor_id /// /// Идентификатор компании в vcfront. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании в vcfront"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int VcCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля DeleteCameraAccessTask.vc_company_id } /// /// Задача на отвязку камеры от точек доступа. /// Отправляется при удалении камеры. /// Очередь key.vc.detach_camera_from_access_points /// [ Display(Name = @"Задача на отвязку камеры от точек доступа"), Description(@"Отправляется при удалении камеры. Очередь key.vc.detach_camera_from_access_points") ] public partial class DetachCameraFromAccessPointTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DetachCameraFromAccessPointTask.request_id /// /// Идентификатор камер в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камер в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid ExternalId { get; set; } // WARNING Не удалось найти свойство навигации для поля DetachCameraFromAccessPointTask.external_id } /// /// Задача на отвязку камеры от устройств. /// Отправляется при удалении камеры. /// Очередь key.vc.detach_camera_from_devices /// [ Display(Name = @"Задача на отвязку камеры от устройств"), Description(@"Отправляется при удалении камеры. Очередь key.vc.detach_camera_from_devices") ] public partial class DetachCameraFromDeviceTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DetachCameraFromDeviceTask.request_id /// /// Идентификатор камер в vcfront. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камер в vcfront"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid ExternalId { get; set; } // WARNING Не удалось найти свойство навигации для поля DetachCameraFromDeviceTask.external_id }