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.Device.V1.Data.DeviceDb; public interface IDeviceDbContext : IAsyncDisposable, IDisposable { public DbSet DeviceAccesses { get; set; } public DbSet CmsPhones { get; set; } public DbSet CameraStatuses { get; set; } public DbSet Devices { get; set; } public DbSet DeviceConfigurationStatuses { get; set; } public DbSet DeviceLites { get; set; } public DbSet SyncStatuses { get; set; } public DbSet SipPhones { get; set; } public DbSet TrunkConfigs { get; set; } public Task SaveChangesAsync(CancellationToken cancellationToken = default); } public abstract class DeviceDbContextBase : DbContext, IDeviceDbContext { protected DeviceDbContextBase(DbContextOptions options) : base(options) { } public DbSet DeviceAccesses { get; set; } = null!; public DbSet CmsPhones { get; set; } = null!; public DbSet CameraStatuses { get; set; } = null!; public DbSet Devices { get; set; } = null!; public DbSet DeviceConfigurationStatuses { get; set; } = null!; public DbSet DeviceLites { get; set; } = null!; public DbSet SyncStatuses { get; set; } = null!; public DbSet SipPhones { get; set; } = null!; public DbSet TrunkConfigs { 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 => { // Для поля device_id дополнительные конфигурации свойства не нужны // Для поля device_id сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.AccessorType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля accessor_type сопоствалений с фильтром и сортировкой не найденно // Для поля accessor_id дополнительные конфигурации свойства не нужны // Для поля accessor_id сопоствалений с фильтром и сортировкой не найденно // Связь один ко многим e.HasOne(p => p.Device) .WithMany(p => p.DeviceDeviceAccesses) .HasForeignKey(p => p.DeviceId) // WARNING Обязательный FK DeviceAccess.device_id приведёт к проблемам обратной совместимости версий приложений в сценариях удаления .OnDelete(DeleteBehavior.Restrict); // WARNING Не удалось найти свойство навигации для поля DeviceAccess.accessor_id }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ order.ID e.HasIndex(p => p.Id) .HasMethod("btree") .IsDescending(); // Для поля orpon_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.orpon_id ~ filter.orpon_ids e.HasIndex(p => p.OrponId) .IsDescending(); // Для поля room дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.room ~ filter.rooms e.HasIndex(p => p.Room) .IsDescending(); // Для поля device_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.device_id ~ filter.device_ids e.HasIndex(p => p.DeviceId) .IsDescending(); e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.status_type ~ filter.status_types e.HasIndex(p => p.StatusType) .IsDescending(); e.Property(p => p.CreatedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Найдено сопоставление: model.created_at ~ order.CREATED_AT e.HasIndex(p => p.CreatedAt) .HasMethod("btree") .IsDescending(); e.Property(p => p.ChangedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance) .IsConcurrencyToken(); // Найдено сопоставление: model.changed_at ~ order.CHANGED_AT e.HasIndex(p => p.ChangedAt) .HasMethod("btree") .IsDescending(); // Для поля retry_count дополнительные конфигурации свойства не нужны // Для поля retry_count сопоствалений с фильтром и сортировкой не найденно // WARNING Не удалось найти свойство навигации для поля CmsPhone.orpon_id // Связь один ко многим e.HasOne(p => p.Device) .WithMany(p => p.DeviceCmsPhones) .HasForeignKey(p => p.DeviceId) // WARNING Обязательный FK CmsPhone.device_id приведёт к проблемам обратной совместимости версий приложений в сценариях удаления .OnDelete(DeleteBehavior.Restrict); }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Для поля id сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля status_type сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля CameraStatus.error_message не указан диапазон // Для поля error_message дополнительные конфигурации свойства не нужны // Для поля error_message сопоствалений с фильтром и сортировкой не найденно }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ order.ID e.HasIndex(p => p.Id) .HasMethod("btree") .IsDescending(); // Для поля preset_id дополнительные конфигурации свойства не нужны // Для поля preset_id сопоствалений с фильтром и сортировкой не найденно // Поле preset_status_type вычисляется в коде // WARNING Для поля Device.preset_configured_at не указан диапазон e.Property(p => p.PresetConfiguredAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Для поля preset_configured_at сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля Device.is_sl3_mode_enabled не указан диапазон e.Property(p => p.IsSl3ModeEnabled) .HasColumnName("is_sl3_mode_enabled"); // Для поля is_sl3_mode_enabled сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.Type) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.type ~ filter.device_status_types e.HasIndex(p => p.Type) .IsDescending(); // Для поля mac_address дополнительные конфигурации свойства не нужны // Для поля mac_address сопоствалений с фильтром и сортировкой не найденно // Для поля title дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.title ~ order.TITLE e.HasIndex(p => p.Title) .HasMethod("btree") .IsDescending(); e.Property(p => p.ModelType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.model_type ~ filter.device_model_types e.HasIndex(p => p.ModelType) .IsDescending(); // Для поля owner_company_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.owner_company_id ~ filter.owner_company_ids e.HasIndex(p => p.OwnerCompanyId) .IsDescending(); // Для поля serial_number дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.serial_number ~ filter.serial_numbers e.HasIndex(p => p.SerialNumber) .IsDescending(); // Для поля flatgramm_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.flatgramm_id ~ filter.flatgramm_ids e.HasIndex(p => p.FlatgrammId) .IsDescending(); // Для поля utc_offset дополнительные конфигурации свойства не нужны // Для поля utc_offset сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.status_type ~ filter.device_status_types e.HasIndex(p => p.StatusType) .IsDescending(); // Для поля ip_address дополнительные конфигурации свойства не нужны // Для поля ip_address сопоствалений с фильтром и сортировкой не найденно // Для поля port дополнительные конфигурации свойства не нужны // Для поля port сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.SputnikCredentials) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.SputnikCredentials) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.Location) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Location) .HasMethod("gin") .HasOperators("jsonb_path_ops"); // Для поля camera_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.camera_id ~ filter.camera_ids e.HasIndex(p => p.CameraId) .IsDescending(); e.Property(p => p.Tags) .HasDefaultValue(new List()); // Для поля tags сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.Settings) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Settings) .HasMethod("gin") .HasOperators("jsonb_path_ops"); // WARNING Для поля Device.hardware_version не указан диапазон // Для поля hardware_version дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.hardware_version ~ filter.hardware_version e.HasIndex(p => p.HardwareVersion) .IsDescending(); // WARNING Для поля Device.software_version не указан диапазон // Для поля software_version дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.software_version ~ filter.software_version e.HasIndex(p => p.SoftwareVersion) .IsDescending(); e.Property(p => p.Dispatching) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Dispatching) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.SipTrunk) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.SipTrunk) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.Redirect) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Redirect) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.AutochangePasswordSettings) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.AutochangePasswordSettings) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.Credentials) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter>(), new ValueComparer>( (c1, c2) => (c1 != null && c2 != null && c1.SequenceEqual(c2)), c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())), c => c.ToList() )) .HasDefaultValue(new List()) .HasColumnType("jsonb"); e.HasIndex(p => p.Credentials) .HasMethod("gin") .HasOperators("jsonb_ops"); // WARNING Для поля Device.sip_account не указан диапазон // Для поля sip_account дополнительные конфигурации свойства не нужны // Для поля sip_account сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.SyncStatus) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.SyncStatus) .HasMethod("gin") .HasOperators("jsonb_path_ops"); // Дополнительные индексы: // По полю DeviceFilter.(mac_address,title,serial_number,ip_address) e.HasIndex(p => new { p.MacAddress, p.Title, p.SerialNumber, p.IpAddress }) .HasMethod("gin") .IsTsVectorExpressionIndex("russian"); // По полю DeviceFilter.(tags) e.HasIndex(p => p.Tags) .HasMethod("gin"); // Связь один ко многим e.HasOne(p => p.Preset) .WithMany(p => p.PresetDevices) .HasForeignKey(p => p.PresetId) // WARNING Обязательный FK Device.preset_id приведёт к проблемам обратной совместимости версий приложений в сценариях удаления .OnDelete(DeleteBehavior.Restrict); // WARNING Не удалось найти свойство навигации для поля Device.owner_company_id // WARNING Не удалось найти свойство навигации для поля Device.flatgramm_id // WARNING Не удалось найти свойство навигации для поля Device.camera_id }); builder.Entity(e => { // WARNING Для поля DeviceConfigurationStatus.id не указан диапазон // Для поля id дополнительные конфигурации свойства не нужны // Для поля id сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля DeviceConfigurationStatus.device_id не указан диапазон // Для поля device_id дополнительные конфигурации свойства не нужны // Для поля device_id сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.ConfigurationType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля configuration_type сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля status_type сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля DeviceConfigurationStatus.configured_at не указан диапазон e.Property(p => p.ConfiguredAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Для поля configured_at сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля DeviceConfigurationStatus.error_message не указан диапазон // Для поля error_message дополнительные конфигурации свойства не нужны // Для поля error_message сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля DeviceConfigurationStatus.retry_count не указан диапазон // Для поля retry_count дополнительные конфигурации свойства не нужны // Для поля retry_count сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.Payload) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Payload) .HasMethod("gin") .HasOperators("jsonb_path_ops"); // WARNING Для поля DeviceConfigurationStatus.next_retry_at не указан диапазон e.Property(p => p.NextRetryAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Для поля next_retry_at сопоствалений с фильтром и сортировкой не найденно // Связь один ко многим e.HasOne(p => p.Device) .WithMany(p => p.DeviceDeviceConfigurationStatuses) .HasForeignKey(p => p.DeviceId) // WARNING Обязательный FK DeviceConfigurationStatus.device_id приведёт к проблемам обратной совместимости версий приложений в сценариях удаления .OnDelete(DeleteBehavior.Restrict); }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Для поля id сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.Type) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля type сопоствалений с фильтром и сортировкой не найденно // Для поля title дополнительные конфигурации свойства не нужны // Для поля title сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.Location) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter()); e.HasIndex(p => p.Location) .HasMethod("gin") .HasOperators("jsonb_path_ops"); e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля status_type сопоствалений с фильтром и сортировкой не найденно }); builder.Entity(e => { e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля status_type сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля SyncStatus.error_message не указан диапазон // Для поля error_message дополнительные конфигурации свойства не нужны // Для поля error_message сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля SyncStatus.retry_count не указан диапазон // Для поля retry_count дополнительные конфигурации свойства не нужны // Для поля retry_count сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля SyncStatus.successful_at не указан диапазон e.Property(p => p.SuccessfulAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Для поля successful_at сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля SyncStatus.sync_at не указан диапазон e.Property(p => p.SyncAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Для поля sync_at сопоствалений с фильтром и сортировкой не найденно }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ order.ID e.HasIndex(p => p.Id) .HasMethod("btree") .IsDescending(); // Для поля room_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.room_id ~ filter.room_ids e.HasIndex(p => p.RoomId) .IsDescending(); // Для поля sip_number дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.sip_number ~ filter.sip_numbers e.HasIndex(p => p.SipNumber) .IsDescending(); e.Property(p => p.StatusType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля status_type сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.CreatedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Найдено сопоставление: model.created_at ~ order.CREATED_AT e.HasIndex(p => p.CreatedAt) .HasMethod("btree") .IsDescending(); e.Property(p => p.ChangedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance) .IsConcurrencyToken(); // Найдено сопоставление: model.changed_at ~ order.CHANGED_AT e.HasIndex(p => p.ChangedAt) .HasMethod("btree") .IsDescending(); // WARNING Не удалось найти свойство навигации для поля SipPhone.room_id }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ order.ID e.HasIndex(p => p.Id) .HasMethod("btree") .IsDescending(); // WARNING Для поля TrunkConfig.city_orpon_id не указан диапазон // Для поля city_orpon_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.city_orpon_id ~ filter.city_orpon_ids e.HasIndex(p => p.CityOrponId) .IsDescending(); e.Property(p => p.DeviceSipTrunkSipType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Для поля device_sip_trunk_sip_type сопоствалений с фильтром и сортировкой не найденно // Для поля ip_address дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.ip_address ~ filter.ip_addresses e.HasIndex(p => p.IpAddress) .IsDescending(); // Для поля port дополнительные конфигурации свойства не нужны // Для поля port сопоствалений с фильтром и сортировкой не найденно e.Property(p => p.CreatedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Найдено сопоставление: model.created_at ~ order.CREATED_AT e.HasIndex(p => p.CreatedAt) .HasMethod("btree") .IsDescending(); e.Property(p => p.ChangedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance) .IsConcurrencyToken(); // Найдено сопоставление: model.changed_at ~ order.CHANGED_AT e.HasIndex(p => p.ChangedAt) .HasMethod("btree") .IsDescending(); // WARNING Для поля TrunkConfig.deleted_at не указан диапазон e.Property(p => p.DeletedAt) .HasColumnType("timestamp without time zone") .HasConversion(NullableDateTimeUtcConverter.Instance); // Для поля deleted_at сопоствалений с фильтром и сортировкой не найденно // WARNING Не удалось найти свойство навигации для поля TrunkConfig.city_orpon_id }); builder.HasDefaultSchema("device"); } } /// /// Доступ к устройству. /// # Описание модели /// [ Display(Name = @"Доступ к устройству"), Description(@"Описание модели") ] public partial class DeviceAccessModel { /// /// Идентификатор. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public DeviceAccessModel.DeviceAccessAccessorType AccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeviceAccess.accessor_id /// /// Тип субъекта доступа /// public enum DeviceAccessAccessorType { /// /// Значение не указно /// [ Display(Name = @"Значение не указно"), JsonPropertyName("ACCESSOR_TYPE_UNKNOWN") ] Unknown = 0, /// /// ГРуппа /// [ Display(Name = @"ГРуппа"), JsonPropertyName("GROUP") ] Group = 1, } } /// /// Аналоговая трубка. /// # Описание модели /// [ Display(Name = @"Аналоговая трубка"), Description(@"Описание модели") ] public partial class CmsPhoneModel { /// /// Идентификатор. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// ОРПОН Дома. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"ОРПОН Дома"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля CmsPhone.orpon_id /// /// Номер квартиры. /// # Диапазон: 1..5 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..5"), CustomRequired, CustomRange(1, 5) ] public string Room { get; set; } = null!; /// /// Идентификатор устройства. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор устройства"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Статус аналоговой трубки /// [ Display(Name = @"Статус аналоговой трубки"), CustomRequired ] public CmsPhoneModel.CmsPhoneStatusType StatusType { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime"), Editable(false) ] public DateTime ChangedAt { get; set; } /// /// Счетчик попыток обновления. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Счетчик попыток обновления"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int RetryCount { get; set; } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public CmsPhoneModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at оличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at оличаются") ] public partial class ConflictModel { } } /// /// Справочник статусов аналоговой трубки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CmsPhoneStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Ожидает активации /// [ Display(Name = @"Ожидает активации"), JsonPropertyName("PENDING_ACTIVE") ] PendingActive = 1, /// /// Активна /// [ Display(Name = @"Активна"), JsonPropertyName("ACTIVE") ] Active = 2, /// /// Ожидает блокировки /// [ Display(Name = @"Ожидает блокировки"), JsonPropertyName("PENDING_BLOCKED") ] PendingBlocked = 3, /// /// Заблокирована /// [ Display(Name = @"Заблокирована"), JsonPropertyName("BLOCKED") ] Blocked = 4, } } /// /// Статус камеры. /// # Описание модели /// [ Display(Name = @"Статус камеры"), Description(@"Описание модели") ] public partial class CameraStatusModel { /// /// Идентификатор камеры uid. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры uid"), Description(@"Тип: Guid"), 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 Id { get; set; } /// /// Статус камеры /// [ Display(Name = @"Статус камеры"), Editable(false) ] public CameraStatusModel.CameraStatusStatusType StatusType { get; set; } /// /// Сообщение об ошибке /// [ Display(Name = @"Сообщение об ошибке"), CustomRequired, Editable(false) ] public string ErrorMessage { get; set; } = null!; /// /// Статус камеры. /// # Тип: byte /// [ Description("Тип: byte") ] public enum CameraStatusStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// В процессе регистрации /// [ Display(Name = @"В процессе регистрации"), JsonPropertyName("PROCESSING") ] Processing = 1, /// /// Ошибка регистрации /// [ Display(Name = @"Ошибка регистрации"), JsonPropertyName("PROCESSING_ERROR") ] ProcessingError = 2, /// /// Активна /// [ Display(Name = @"Активна"), JsonPropertyName("ACTIVE") ] Active = 3, } } /// /// Устройство. /// # Описание модели /// [ Display(Name = @"Устройство"), Description(@"Описание модели") ] public partial class DeviceModel { /// /// Идентификатор. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// Идентификатор пресета. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор пресета"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int PresetId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public PresetModel Preset { get; set; } = null!; // Поле preset_status_type вычисляется в коде /// /// Дата установки пресета на устройство. /// # Тип: DateTime /// [ Obsolete("Поле использовать нельзя. Добавлено для совместимости со старыми флоу."), Display(Name = @"Дата установки пресета на устройство"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime PresetConfiguredAt { get; set; } /// /// Настройка режима SL3 /// [ Obsolete("Поле использовать нельзя. Добавлено для совместимости со старыми флоу."), Display(Name = @"Настройка режима SL3"), CustomRequired ] public bool IsSl3ModeEnabled { get; set; } /// /// Тип назначения устройства /// [ Display(Name = @"Тип назначения устройства"), CustomRequired ] public DeviceModel.DeviceType Type { 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})$/"), CustomRequired, CustomRange(17, 17), CustomPattern(@"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$") ] public string MacAddress { get; set; } = null!; /// /// Наименование устройства. /// # Диапазон: 3..256 /// [ Display(Name = @"Наименование устройства"), Description(@"Диапазон: 3..256"), CustomRequired, CustomRange(3, 256) ] public string Title { get; set; } = null!; /// /// Модель устройства /// [ Display(Name = @"Модель устройства"), CustomRequired ] public DeviceModel.DeviceModelType ModelType { get; set; } /// /// Идентификатор компании владельца. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании владельца"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int OwnerCompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Device.owner_company_id /// /// Серийный номер. /// # Диапазон: 1..16 /// [ Display(Name = @"Серийный номер"), Description(@"Диапазон: 1..16"), CustomRequired, CustomRange(1, 16) ] public string SerialNumber { get; set; } = null!; /// /// Идентификатор квартирограммы. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартирограммы"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int FlatgrammId { get; set; } // WARNING Не удалось найти свойство навигации для поля Device.flatgramm_id /// /// Смещение таймзоны в минутах. /// # Диапазон: -720..840 /// [ Display(Name = @"Смещение таймзоны в минутах"), Description(@"Диапазон: -720..840"), CustomRequired, CustomRange(-720, 840) ] public int UtcOffset { get; set; } /// /// Статус устройства /// [ Display(Name = @"Статус устройства"), Editable(false) ] public DeviceModel.DeviceStatusType StatusType { get; set; } /// /// Сетевой адрес. /// # Диапазон: 0..250 /// [ Display(Name = @"Сетевой адрес"), Description(@"Диапазон: 0..250"), CustomRange(0, 250) ] public string? IpAddress { get; set; } /// /// Сетевой порт. /// # Диапазон: 0..65535 /// [ Display(Name = @"Сетевой порт"), Description(@"Диапазон: 0..65535"), CustomRange(0, 65535) ] public int? Port { get; set; } /// /// Учетные данные. /// Используется для устройств с типом модели SPUTNIK_IO /// [ Display(Name = @"Учетные данные"), Description(@"Используется для устройств с типом модели SPUTNIK_IO") ] public DeviceModel.SputnikCredentialsModel? SputnikCredentials { get; set; } /// /// Координаты /// [ Display(Name = @"Координаты") ] public DeviceModel.LocationModel? Location { get; set; } /// /// Идентификатор камеры uid. /// # Тип: Guid /// [ Display(Name = @"Идентификатор камеры uid"), Description(@"Тип: Guid"), 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 CameraId { get; set; } // WARNING Не удалось найти свойство навигации для поля Device.camera_id /// /// Список тегов устройства. /// # Диапазон: 1..50 /// [ Display(Name = @"Список тегов устройства"), Description(@"Диапазон: 1..50"), CustomRange(1, 50) ] public List Tags { get; set; } = new(0); /// /// Настройки устройства /// [ Display(Name = @"Настройки устройства") ] public DeviceModel.SettingsModel? Settings { get; set; } /// /// Версия аппаратного обеспенения /// [ Display(Name = @"Версия аппаратного обеспенения"), CustomRequired, Editable(false) ] public string HardwareVersion { get; set; } = null!; /// /// Версия программного обеспенения /// [ Display(Name = @"Версия программного обеспенения"), CustomRequired, Editable(false) ] public string SoftwareVersion { get; set; } = null!; /// /// Диспетчеризации /// [ Display(Name = @"Диспетчеризации") ] public DeviceModel.DispatchingModel? Dispatching { get; set; } /// /// Транк /// [ Display(Name = @"Транк") ] public DeviceModel.SipTrunkModel? SipTrunk { get; set; } /// /// Переадресация /// [ Display(Name = @"Переадресация") ] public DeviceModel.RedirectModel? Redirect { get; set; } /// /// Настройки автозамены пароля /// [ Display(Name = @"Настройки автозамены пароля") ] public DeviceModel.AutochangePasswordSettingsModel? AutochangePasswordSettings { get; set; } /// /// Учетные данные пользователей /// [ Display(Name = @"Учетные данные пользователей"), Editable(false) ] public List Credentials { get; set; } = new(0); /// /// Сип-аккаунт /// [ Display(Name = @"Сип-аккаунт"), Editable(false) ] public string? SipAccount { get; set; } /// /// Статус синхронизации /// [ Display(Name = @"Статус синхронизации"), Editable(false) ] public SyncStatusModel SyncStatus { get; set; } = null!; /// /// Свойство навигации /// [ JsonIgnore ] public List DeviceDeviceAccesses { get; set; } = new(0); /// /// Свойство навигации /// [ JsonIgnore ] public List DeviceCmsPhones { get; set; } = new(0); /// /// Свойство навигации /// [ JsonIgnore ] public List DeviceDeviceConfigurationStatuses { get; set; } = new(0); /// /// Учетные данные. /// Используется для устройств с типом модели SPUTNIK_IO /// [ Display(Name = @"Учетные данные"), Description(@"Используется для устройств с типом модели SPUTNIK_IO") ] public partial class SputnikCredentialsModel { /// /// Логин. /// # Тип: Guid /// [ Display(Name = @"Логин"), 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 Login { get; set; } /// /// Пароль. /// На чтение выводится только для пользователя с типом service /// [ Display(Name = @"Пароль"), Description(@"На чтение выводится только для пользователя с типом service") ] public string? Password { get; set; } } /// /// Координаты /// [ Display(Name = @"Координаты") ] public partial class LocationModel { /// /// Широта /// [ Display(Name = @"Широта"), CustomRequired ] public float Latitude { get; set; } /// /// Долгота /// [ Display(Name = @"Долгота"), CustomRequired ] public float Longitude { get; set; } } /// /// Настройки устройства /// [ Display(Name = @"Настройки устройства") ] public partial class SettingsModel { /// /// Настройки ККМ /// [ Display(Name = @"Настройки ККМ") ] public DeviceModel.SettingsModel.CoordinateMatrixSwitchModel? CoordinateMatrixSwitch { get; set; } /// /// Настройки вызова консьержа. /// Требуется капабилити CONCIERGE_CALL /// [ Display(Name = @"Настройки вызова консьержа"), Description(@"Требуется капабилити CONCIERGE_CALL") ] public DeviceModel.SettingsModel.ConciergeCallModel? ConciergeCall { get; set; } /// /// Настройки автосбора /// [ Display(Name = @"Настройки автосбора") ] public DeviceModel.SettingsModel.AutocollectModel? Autocollect { get; set; } /// /// Настройки распознования лиц /// [ Display(Name = @"Настройки распознования лиц") ] public DeviceModel.SettingsModel.FaceRecognitionModel? FaceRecognition { get; set; } /// /// Настройки режима SL3 /// [ Display(Name = @"Настройки режима SL3") ] public DeviceModel.SettingsModel.Sl3ModeModel? Sl3Mode { get; set; } /// /// Настройки вызова экстренной службы. /// Только для устройств с CapabilityType=EMERGENCY_CALL /// [ Display(Name = @"Настройки вызова экстренной службы"), Description(@"Только для устройств с CapabilityType=EMERGENCY_CALL") ] public DeviceModel.SettingsModel.EmergencyCallModel? EmergencyCall { get; set; } /// /// Настройки ККМ. /// Коммутатор координатно-матричный (устройство для подключения аналоговых трубок к домофону) /// [ Display(Name = @"Настройки ККМ"), Description(@"Коммутатор координатно-матричный (устройство для подключения аналоговых трубок к домофону)") ] public partial class CoordinateMatrixSwitchModel { /// /// Состояние /// [ Display(Name = @"Состояние"), CustomRequired ] public bool IsEnabled { get; set; } } /// /// Настройки вызова консьержа /// [ Display(Name = @"Настройки вызова консьержа") ] public partial class ConciergeCallModel { /// /// Статус настройки вызова консьержа /// [ Display(Name = @"Статус настройки вызова консьержа"), CustomRequired ] public bool IsEnabled { get; set; } /// /// Идентификатор ОРПОН /// [ Display(Name = @"Идентификатор ОРПОН"), CustomRequired ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..5 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..5"), CustomRequired, CustomRange(1, 5) ] public string RoomNumber { get; set; } = null!; /// /// Номер сип-трубки /// [ Display(Name = @"Номер сип-трубки"), CustomRequired, Editable(false) ] public string SipNumber { get; set; } = null!; } /// /// Настройки автосбора /// [ Display(Name = @"Настройки автосбора") ] public partial class AutocollectModel { /// /// Статус настройки автосбора /// [ Display(Name = @"Статус настройки автосбора"), CustomRequired ] public bool IsEnabled { get; set; } } /// /// Настройки распознования лиц /// [ Display(Name = @"Настройки распознования лиц") ] public partial class FaceRecognitionModel { /// /// Статус настройки /// [ Display(Name = @"Статус настройки"), CustomRequired ] public bool IsEnabled { get; set; } } /// /// Настройки режима SL3 /// [ Display(Name = @"Настройки режима SL3") ] public partial class Sl3ModeModel { /// /// Статус настройки /// [ Display(Name = @"Статус настройки"), CustomRequired ] public bool IsEnabled { get; set; } /// /// Идентификатор профиля шифрования /// [ Display(Name = @"Идентификатор профиля шифрования") ] public string? EncryptionProfileId { get; set; } // WARNING Не удалось найти свойство навигации для поля Device.Settings.Sl3Mode.encryption_profile_id } /// /// Настройки вызова экстренной службы. /// Только для устройств с CapabilityType=EMERGENCY_CALL /// [ Display(Name = @"Настройки вызова экстренной службы"), Description(@"Только для устройств с CapabilityType=EMERGENCY_CALL") ] public partial class EmergencyCallModel { /// /// Возможность вызова экстренной службы /// [ Display(Name = @"Возможность вызова экстренной службы"), CustomRequired ] public bool IsCallAvailable { get; set; } /// /// АБС-номер экстренной службы. /// # Паттерн: /^\+[1-9][0-9]{10}$/ /// [ Display(Name = @"АБС-номер экстренной службы"), Description(@"Паттерн: /^\+[1-9][0-9]{10}$/"), CustomRequired, CustomPattern(@"^\+[1-9][0-9]{10}$") ] public string EmergencyNumber { get; set; } = null!; } } /// /// Диспетчеризации /// [ Display(Name = @"Диспетчеризации") ] public partial class DispatchingModel { /// /// Статус настройки диспетчеризации /// [ Display(Name = @"Статус настройки диспетчеризации"), CustomRequired ] public bool IsEnabled { get; set; } /// /// Публичный номер. /// # Паттерн: /^[1-9]\d{3,7}$/ /// [ Display(Name = @"Публичный номер"), Description(@"Паттерн: /^[1-9]\d{3,7}$/"), CustomPattern(@"^[1-9]\d{3,7}$") ] public string? PublicIdentity { get; set; } } /// /// Транк. /// Параметры для соединения между устрйоством и телефонной сетью общего пользования. /// Требуется капабилити SIP_CALLS /// [ Display(Name = @"Транк"), Description(@"Параметры для соединения между устрйоством и телефонной сетью общего пользования. Требуется капабилити SIP_CALLS") ] public partial class SipTrunkModel { /// /// ABC-номер. /// # Паттерн: /^(\+7)(\d{10})$/ /// [ Display(Name = @"ABC-номер"), Description(@"Паттерн: /^(\+7)(\d{10})$/"), CustomRequired, CustomPattern(@"^(\+7)(\d{10})$") ] public string AbcNumber { get; set; } = null!; /// /// Хост. /// # Диапазон: 0..250 /// [ Display(Name = @"Хост"), Description(@"Диапазон: 0..250"), CustomRange(0, 250) ] public string? Host { get; set; } /// /// Порт. /// # Диапазон: 0..65535 /// [ Display(Name = @"Порт"), Description(@"Диапазон: 0..65535"), CustomRange(0, 65535) ] public int? Port { get; set; } /// /// Тип сети связи /// [ Display(Name = @"Тип сети связи"), CustomRequired ] public DeviceModel.SipTrunkModel.DeviceSipTrunkSipType SipType { get; set; } /// /// Тип сети связи. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceSipTrunkSipType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("SIP_TYPE_UNKNOWN") ] Unknown = 0, /// /// Тип Viprtual IP Multimedia Subsystem /// [ Display(Name = @"Тип Viprtual IP Multimedia Subsystem"), JsonPropertyName("VIMS") ] Vims = 1, /// /// Тип Next Generation Networks /// [ Display(Name = @"Тип Next Generation Networks"), JsonPropertyName("NGN") ] Ngn = 2, } } /// /// Переадресация. /// Требуется капабилити SIP_CALLS /// [ Display(Name = @"Переадресация"), Description(@"Требуется капабилити SIP_CALLS") ] public partial class RedirectModel { /// /// Переадресация на SIP /// [ Display(Name = @"Переадресация на SIP"), CustomRequired ] public bool IsEnabledSip { get; set; } /// /// Переадресация на телефон /// [ Display(Name = @"Переадресация на телефон"), CustomRequired ] public bool IsEnabledPhone { get; set; } } /// /// Настройки автозамены пароля /// [ Display(Name = @"Настройки автозамены пароля") ] public partial class AutochangePasswordSettingsModel { /// /// Статус настройки автозамены пароля /// [ Display(Name = @"Статус настройки автозамены пароля"), CustomRequired ] public bool IsEnabled { get; set; } } /// /// Учетные данные пользователей /// [ Display(Name = @"Учетные данные пользователей") ] public partial class CredentialsModel { /// /// Логин. /// # Диапазон: 0..100 /// [ Display(Name = @"Логин"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Login { get; set; } /// /// Пароль. /// # Диапазон: 0..100 /// [ Display(Name = @"Пароль"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Password { get; set; } /// /// Тип доступа пользователя /// [ Display(Name = @"Тип доступа пользователя") ] public DeviceModel.CredentialsModel.DeviceCredentialsUserAccessType UserAccessType { get; set; } /// /// Тип доступа пользователя. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceCredentialsUserAccessType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("USER_ACCESS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Доступ к api /// [ Display(Name = @"Доступ к api"), JsonPropertyName("API") ] Api = 1, /// /// Доступ к web-интерфейсу /// [ Display(Name = @"Доступ к web-интерфейсу"), JsonPropertyName("WEB") ] Web = 2, /// /// Доступ к rtsp-потоку /// [ Display(Name = @"Доступ к rtsp-потоку"), JsonPropertyName("RTSP") ] Rtsp = 3, /// /// Полный доступ /// [ Display(Name = @"Полный доступ"), JsonPropertyName("SU") ] Su = 4, } } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Переданный мак-адрес не валидный /// [ Obsolete("Поле использовать нельзя. Добавлено для совместимости со старыми флоу."), Display(Name = @"Переданный мак-адрес не валидный") ] public DeviceModel.SavingErrorModel.MacAddressInvalidModel? MacAddressInvalid { get; set; } /// /// Переданный серийный номер не валидный /// [ Obsolete("Поле использовать нельзя. Добавлено для совместимости со старыми флоу."), Display(Name = @"Переданный серийный номер не валидный") ] public DeviceModel.SavingErrorModel.SerialNumberInvalidModel? SerialNumberInvalid { get; set; } /// /// Нельзя изменить тип назначения девайса /// [ Display(Name = @"Нельзя изменить тип назначения девайса") ] public DeviceModel.SavingErrorModel.NotAllowedForTypeModel? NotAllowedForType { get; set; } /// /// Нельзя изменить модель девайса /// [ Display(Name = @"Нельзя изменить модель девайса") ] public DeviceModel.SavingErrorModel.NotAllowedForModelModel? NotAllowedForModel { get; set; } /// /// Серийный номер для данной модели уже существует на платформе /// [ Display(Name = @"Серийный номер для данной модели уже существует на платформе") ] public DeviceModel.SavingErrorModel.SerialNumberForModelIsExistModel? SerialNumberForModelIsExist { get; set; } /// /// MAC-адрес уже существует на платформе /// [ Display(Name = @"MAC-адрес уже существует на платформе") ] public DeviceModel.SavingErrorModel.MacAddressIsExistModel? MacAddressIsExist { get; set; } /// /// Настройка не поддерживается /// [ Display(Name = @"Настройка не поддерживается") ] public DeviceModel.SavingErrorModel.CapabilityIsNotSupportedModel? CapabilityIsNotSupported { get; set; } /// /// ABC-номер присвоен другому устройству /// [ Display(Name = @"ABC-номер присвоен другому устройству") ] public DeviceModel.SavingErrorModel.AbcNumberIsExistOnAnotherDeviceModel? AbcNumberIsExistOnAnotherDevice { get; set; } /// /// Публичный номер уже существует на платформе /// [ Display(Name = @"Публичный номер уже существует на платформе") ] public DeviceModel.SavingErrorModel.PublicIdentityIsExistModel? PublicIdentityIsExist { get; set; } /// /// Не найдена квартира для консьержа /// [ Display(Name = @"Не найдена квартира для консьержа") ] public DeviceModel.SavingErrorModel.ConciergeRoomNotFoundModel? ConciergeRoomNotFound { get; set; } /// /// Логин уже существует на платформе /// [ Display(Name = @"Логин уже существует на платформе") ] public DeviceModel.SavingErrorModel.LoginIsExistModel? LoginIsExist { get; set; } /// /// Отсутствуют реквизиты для модели \"Спутник\" /// [ Display(Name = @"Отсутствуют реквизиты для модели ""Спутник""") ] public DeviceModel.SavingErrorModel.CredentialsAreRequiredModel? CredentialsAreRequired { get; set; } /// /// Переданное поле не поддерживается /// [ Display(Name = @"Переданное поле не поддерживается") ] public DeviceModel.SavingErrorModel.FieldIsNotSupportedModel? FieldIsNotSupported { get; set; } /// /// Переданный мак-адрес не валидный /// [ Display(Name = @"Переданный мак-адрес не валидный") ] public partial class MacAddressInvalidModel { } /// /// Переданный серийный номер не валидный /// [ Display(Name = @"Переданный серийный номер не валидный") ] public partial class SerialNumberInvalidModel { } /// /// Нельзя изменить тип назначения девайса /// [ Display(Name = @"Нельзя изменить тип назначения девайса") ] public partial class NotAllowedForTypeModel { } /// /// Нельзя изменить модель девайса /// [ Display(Name = @"Нельзя изменить модель девайса") ] public partial class NotAllowedForModelModel { } /// /// Серийный номер для данной модели уже существует на платформе /// [ Display(Name = @"Серийный номер для данной модели уже существует на платформе") ] public partial class SerialNumberForModelIsExistModel { } /// /// MAC-адрес уже существует на платформе /// [ Display(Name = @"MAC-адрес уже существует на платформе") ] public partial class MacAddressIsExistModel { } /// /// Функциональность не поддерживается моделью устройства /// [ Display(Name = @"Функциональность не поддерживается моделью устройства") ] public partial class CapabilityIsNotSupportedModel { /// /// Возможность /// [ Display(Name = @"Возможность") ] public ModelModel.ModelCapabilityType ModelCapabilityType { get; set; } } /// /// ABC-номер присвоен другому устройству /// [ Display(Name = @"ABC-номер присвоен другому устройству") ] public partial class AbcNumberIsExistOnAnotherDeviceModel { /// /// Идентификатор устройства на котором находится ABC-номер /// [ Display(Name = @"Идентификатор устройства на котором находится ABC-номер"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; } /// /// Публичный номер уже существует на платформе /// [ Display(Name = @"Публичный номер уже существует на платформе") ] public partial class PublicIdentityIsExistModel { } /// /// Не найдена квартира для консьержа /// [ Display(Name = @"Не найдена квартира для консьержа") ] public partial class ConciergeRoomNotFoundModel { } /// /// Логин уже существует на платформе /// [ Display(Name = @"Логин уже существует на платформе") ] public partial class LoginIsExistModel { } /// /// Отсутствуют реквизиты для модели \"Спутник\" /// [ Display(Name = @"Отсутствуют реквизиты для модели ""Спутник""") ] public partial class CredentialsAreRequiredModel { } /// /// Переданное поле не поддерживается /// [ Display(Name = @"Переданное поле не поддерживается") ] public partial class FieldIsNotSupportedModel { } } /// /// Справочник статусов установки пресета. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DevicePresetStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PRESET_STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Устанавливается /// [ Display(Name = @"Устанавливается"), JsonPropertyName("PROCESSING") ] Processing = 1, /// /// Установлен /// [ Display(Name = @"Установлен"), JsonPropertyName("SUCCESS") ] Success = 2, /// /// Ошибка /// [ Display(Name = @"Ошибка"), JsonPropertyName("ERROR") ] Error = 3, } /// /// Справочник назначений типов устройств (в качестве чего выступает устройство). /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("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, } /// /// Модель устройства. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceModelType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("MODEL_TYPE_UNKNOWN") ] Unknown = 0, /// /// Модель RODOS-8 /// [ Display(Name = @"Модель RODOS-8"), JsonPropertyName("RODOS8") ] Rodos8 = 1, /// /// Модель Beward /// [ Display(Name = @"Модель Beward"), JsonPropertyName("BEWARD") ] Beward = 2, /// /// Модель QTECH /// [ Display(Name = @"Модель QTECH"), JsonPropertyName("QTECH") ] Qtech = 3, /// /// Модель Натекс /// [ Display(Name = @"Модель Натекс"), JsonPropertyName("NATEKS") ] Nateks = 4, /// /// Модель ТНБ /// [ Display(Name = @"Модель ТНБ"), JsonPropertyName("TNB") ] Tnb = 5, /// /// Модель Maxet Line /// [ Display(Name = @"Модель Maxet Line"), JsonPropertyName("MAXETLINE") ] Maxetline = 6, /// /// Модель Двойная открывашка /// [ Display(Name = @"Модель Двойная открывашка"), JsonPropertyName("TNB_DO2") ] TnbDo2 = 7, /// /// Модель Beward DS86017CP /// [ Display(Name = @"Модель Beward DS86017CP"), JsonPropertyName("BEWARD_DS86017CP") ] BewardDs86017cp = 8, /// /// Модель Beward DS85006MP /// [ Display(Name = @"Модель Beward DS85006MP"), JsonPropertyName("BEWARD_DS85006MP") ] BewardDs85006mp = 9, /// /// Модель Dahua DHI-VTO2101E-P /// [ Display(Name = @"Модель Dahua DHI-VTO2101E-P"), JsonPropertyName("DAHUA_VTO2101E_P") ] DahuaVto2101eP = 10, /// /// Модель Hikvision DS-KV8155-IM /// [ Display(Name = @"Модель Hikvision DS-KV8155-IM"), JsonPropertyName("HIKVISION_DS_KV8155_IM") ] HikvisionDsKv8155Im = 11, /// /// Модель RODOS-8-2 /// [ Display(Name = @"Модель RODOS-8-2"), JsonPropertyName("RODOS8_2") ] Rodos82 = 12, /// /// Модель Akuvox R29C /// [ Display(Name = @"Модель Akuvox R29C"), JsonPropertyName("AKUVOX_R29C") ] AkuvoxR29c = 13, /// /// Модель Safe-logic /// [ Display(Name = @"Модель Safe-logic"), JsonPropertyName("SAFE_LOGIC") ] SafeLogic = 14, /// /// Модель Beward DS86006AP /// [ Display(Name = @"Модель Beward DS86006AP"), JsonPropertyName("BEWARD_DS86006AP") ] BewardDs86006ap = 15, /// /// Модель Спутник Ио /// [ Display(Name = @"Модель Спутник Ио"), JsonPropertyName("SPUTNIK_IO") ] SputnikIo = 16, /// /// Модель Beward c FR /// [ Display(Name = @"Модель Beward c FR"), JsonPropertyName("BEWARD_FR") ] BewardFr = 17, /// /// Модель QTECH с FR /// [ Display(Name = @"Модель QTECH с FR"), JsonPropertyName("QTECH_FR") ] QtechFr = 18, /// /// Модель Eltex IPA-ER-10 /// [ Display(Name = @"Модель Eltex IPA-ER-10"), JsonPropertyName("ELTEX_IPA_ER_010") ] EltexIpaEr010 = 19, /// /// Модель Beward с новым API ключей /// [ Display(Name = @"Модель Beward с новым API ключей"), JsonPropertyName("BEWARD_MIFARE") ] BewardMifare = 20, /// /// Модель BAS-IP AA-12FB /// [ Display(Name = @"Модель BAS-IP AA-12FB"), JsonPropertyName("BAS_IP_AA_12FB") ] BasIpAa12fb = 21, /// /// Модель Akuvox X915S /// [ Display(Name = @"Модель Akuvox X915S"), JsonPropertyName("AKUVOX_X915S") ] AkuvoxX915s = 22, /// /// Модель Rubetek RV-3434 /// [ Display(Name = @"Модель Rubetek RV-3434"), JsonPropertyName("RUBETEK_RV_3434") ] RubetekRv3434 = 23, /// /// Модель Сокол плюс /// [ Display(Name = @"Модель Сокол плюс"), JsonPropertyName("SOKOL_PLUS") ] SokolPlus = 24, /// /// Модель Beward Эконом /// [ Display(Name = @"Модель Beward Эконом"), JsonPropertyName("BEWARD_LOW_COST") ] BewardLowCost = 25, } /// /// Справочник статусов устройства. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Не в сети /// [ Display(Name = @"Не в сети"), JsonPropertyName("OFFLINE") ] Offline = 1, /// /// В сети /// [ Display(Name = @"В сети"), JsonPropertyName("ONLINE") ] Online = 2, } } /// /// Статус конфигурации устройства. /// # Описание модели /// [ Display(Name = @"Статус конфигурации устройства"), Description(@"Описание модели") ] public partial class DeviceConfigurationStatusModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор") ] public int Id { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Тип конфигурации /// [ Display(Name = @"Тип конфигурации"), CustomRequired ] public DeviceConfigurationStatusModel.DeviceConfigurationStatusConfigurationType ConfigurationType { get; set; } /// /// Статус конфигурации настройки устройства /// [ Display(Name = @"Статус конфигурации настройки устройства"), CustomRequired ] public DeviceConfigurationStatusModel.DeviceConfigurationStatusStatusType StatusType { get; set; } /// /// Дата последней конфигурации устройства. /// # Тип: DateTime /// [ Display(Name = @"Дата последней конфигурации устройства"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime ConfiguredAt { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } /// /// Количество попыток /// [ Display(Name = @"Количество попыток"), CustomRequired ] public int RetryCount { get; set; } /// /// Дополнительная полезная нагрузка /// [ Display(Name = @"Дополнительная полезная нагрузка"), Editable(false) ] public DeviceConfigurationStatusModel.PayloadModel Payload { get; set; } = null!; /// /// Минимально возможная дата выполнения следующей попытки. /// # Тип: DateTime /// [ Display(Name = @"Минимально возможная дата выполнения следующей попытки"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime NextRetryAt { get; set; } /// /// Дополнительная полезная нагрузка /// [ Display(Name = @"Дополнительная полезная нагрузка") ] public partial class PayloadModel { /// /// Автоколлект /// [ Display(Name = @"Автоколлект") ] public DeviceConfigurationStatusModel.PayloadModel.AutocollectModel? Autocollect { get; set; } /// /// Автоколлект /// [ Display(Name = @"Автоколлект") ] public partial class AutocollectModel { /// /// Дата включения автосбора. /// # Тип: DateTime /// [ Display(Name = @"Дата включения автосбора"), Description(@"Тип: DateTime") ] public DateTime EnabledAt { get; set; } /// /// Дата отключения автосбора. /// # Тип: DateTime /// [ Display(Name = @"Дата отключения автосбора"), Description(@"Тип: DateTime") ] public DateTime ToBeDisabledAt { get; set; } } } /// /// Тип конфигурации. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceConfigurationStatusConfigurationType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("CONFIGURATION_TYPE_UNKNOWN") ] Unknown = 0, /// /// Пресет /// [ Display(Name = @"Пресет"), JsonPropertyName("PRESET") ] Preset = 1, /// /// Сип-аккаунт /// [ Display(Name = @"Сип-аккаунт"), JsonPropertyName("SIP_ACCOUNT") ] SipAccount = 2, /// /// сип-номера в помещениях /// [ Display(Name = @"сип-номера в помещениях"), JsonPropertyName("SIP_ROOMS") ] SipRooms = 3, /// /// Калитка /// [ Display(Name = @"Калитка"), JsonPropertyName("GATE") ] Gate = 4, /// /// Ключи /// [ Display(Name = @"Ключи"), JsonPropertyName("RFIDS") ] Rfids = 5, /// /// Коды /// [ Display(Name = @"Коды"), JsonPropertyName("CODES") ] Codes = 6, /// /// Распознование лиц /// [ Display(Name = @"Распознование лиц"), JsonPropertyName("FACE_RECOGNITION") ] FaceRecognition = 7, /// /// Консьерж /// [ Display(Name = @"Консьерж"), JsonPropertyName("CONCIERGE") ] Concierge = 8, /// /// Автосбор /// [ Display(Name = @"Автосбор"), JsonPropertyName("AUTOCOLLECT") ] Autocollect = 9, /// /// Режим Sl3 /// [ Display(Name = @"Режим Sl3"), JsonPropertyName("SL3") ] Sl3 = 10, /// /// Вызов экстренной службы /// [ Display(Name = @"Вызов экстренной службы"), JsonPropertyName("EMERGENCY_CALL") ] EmergencyCall = 11, } /// /// Справочник статусов конфигурации настройки устройства. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceConfigurationStatusStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Настроен /// [ Display(Name = @"Настроен"), JsonPropertyName("SUCCESS") ] Success = 1, /// /// Ошибка /// [ Display(Name = @"Ошибка"), JsonPropertyName("ERROR") ] Error = 2, /// /// В ожидании обработки /// [ Display(Name = @"В ожидании обработки"), JsonPropertyName("PENDING") ] Pending = 3, /// /// В процессе обработки /// [ Display(Name = @"В процессе обработки"), JsonPropertyName("PROCESSING") ] Processing = 4, } } /// /// Облегчённое устройство. /// # Описание модели /// [ Display(Name = @"Облегчённое устройство"), Description(@"Описание модели") ] public partial class DeviceLiteModel { /// /// Идентификатор. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// Тип назначения устройства /// [ Display(Name = @"Тип назначения устройства"), CustomRequired ] public DeviceModel.DeviceType Type { get; set; } /// /// # Диапазон: 3..256 /// [ Display(Name = @"# Диапазон: 3..256"), CustomRequired, CustomRange(3, 256) ] public string Title { get; set; } = null!; /// /// Координаты /// [ Display(Name = @"Координаты") ] public DeviceModel.LocationModel? Location { get; set; } /// /// Статус устройства /// [ Display(Name = @"Статус устройства") ] public DeviceModel.DeviceStatusType StatusType { get; set; } } /// /// Статус синхронизации. /// # Описание модели /// [ Display(Name = @"Статус синхронизации"), Description(@"Описание модели") ] public partial class SyncStatusModel { /// /// Статус синхронизации /// [ Display(Name = @"Статус синхронизации"), Editable(false) ] public SyncStatusModel.SyncStatusStatusType StatusType { get; set; } /// /// Сообщение об ошибке /// [ Display(Name = @"Сообщение об ошибке"), CustomRequired, Editable(false) ] public string ErrorMessage { get; set; } = null!; /// /// Количество попыток /// [ Display(Name = @"Количество попыток"), Editable(false) ] public int RetryCount { get; set; } /// /// Дата последней успешной синхронизации. /// # Тип: DateTime /// [ Display(Name = @"Дата последней успешной синхронизации"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime SuccessfulAt { get; set; } /// /// Дата последней синхронизации. /// # Тип: DateTime /// [ Display(Name = @"Дата последней синхронизации"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime SyncAt { get; set; } /// /// Статус синхронизации. /// # Тип: byte /// [ Description("Тип: byte") ] public enum SyncStatusStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Новый /// [ Display(Name = @"Новый"), JsonPropertyName("NEW") ] New = 1, /// /// В процессе /// [ Display(Name = @"В процессе"), JsonPropertyName("PENDING") ] Pending = 2, /// /// Ошибка /// [ Display(Name = @"Ошибка"), JsonPropertyName("ERROR") ] Error = 3, /// /// Успешно /// [ Display(Name = @"Успешно"), JsonPropertyName("SUCCESS") ] Success = 4, /// /// Выключено /// [ Display(Name = @"Выключено"), JsonPropertyName("DISABLED") ] Disabled = 5, } } /// /// SIP-трубка. /// # Описание модели /// [ Display(Name = @"SIP-трубка"), Description(@"Описание модели") ] public partial class SipPhoneModel { /// /// Идентификатор трубки. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор трубки"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// Идентификатор квартиры. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор квартиры"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int RoomId { get; set; } // WARNING Не удалось найти свойство навигации для поля SipPhone.room_id /// /// SIP номер. /// # Диапазон: 1..200 /// [ Display(Name = @"SIP номер"), Description(@"Диапазон: 1..200"), CustomRange(1, 200) ] public string? SipNumber { get; set; } /// /// Статус SIP-трубки /// [ Display(Name = @"Статус SIP-трубки"), CustomRequired ] public SipPhoneModel.SipPhoneStatusType StatusType { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime"), Editable(false) ] public DateTime ChangedAt { get; set; } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public SipPhoneModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at оличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at оличаются") ] public partial class ConflictModel { } } /// /// Справочник статусов SIP-трубки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum SipPhoneStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Активна /// [ Display(Name = @"Активна"), JsonPropertyName("ACTIVE") ] Active = 1, /// /// Заблокирована /// [ Display(Name = @"Заблокирована"), JsonPropertyName("BLOCKED") ] Blocked = 2, } } /// /// Trunk-конфигурация. /// # Описание модели /// [ Display(Name = @"Trunk-конфигурация"), Description(@"Описание модели") ] public partial class TrunkConfigModel { /// /// Идентификатор. /// # Тип: Guid /// [ Display(Name = @"Идентификатор"), Description(@"Тип: Guid"), 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 Id { get; set; } /// /// ОРПОН Города /// [ Display(Name = @"ОРПОН Города"), CustomRequired ] public long CityOrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля TrunkConfig.city_orpon_id /// /// Тип Trunk-аккаунта /// [ Display(Name = @"Тип Trunk-аккаунта"), CustomRequired ] public DeviceModel.SipTrunkModel.DeviceSipTrunkSipType DeviceSipTrunkSipType { get; set; } /// /// IP-адрес. /// # Диапазон: 7..15 /// [ Display(Name = @"IP-адрес"), Description(@"Диапазон: 7..15"), CustomRequired, CustomRange(7, 15) ] public string IpAddress { get; set; } = null!; /// /// Порт. /// # Диапазон: 0..65535 /// [ Display(Name = @"Порт"), Description(@"Диапазон: 0..65535"), CustomRequired, CustomRange(0, 65535) ] public int Port { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime") ] public DateTime ChangedAt { get; set; } /// /// Дата удаления. /// # Тип: DateTime? /// [ Display(Name = @"Дата удаления"), Description(@"Тип: DateTime?"), Editable(false) ] public DateTime? DeletedAt { get; set; } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public TrunkConfigModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at оличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at оличаются") ] public partial class ConflictModel { } } } /// /// Фильтр по аналоговой трубким /// [ Display(Name = @"Фильтр по аналоговой трубким") ] public partial class CmsPhoneFilterModel { /// /// По идентификаторам устройства /// [ Display(Name = @"По идентификаторам устройства") ] public List DeviceIds { get; set; } = new(0); /// /// По статусам аналоговой трубки /// [ Display(Name = @"По статусам аналоговой трубки") ] public List StatusTypes { get; set; } = new(0); /// /// По идентификаторам ОРПОН (дома) /// [ Display(Name = @"По идентификаторам ОРПОН") ] public List OrponIds { get; set; } = new(0); /// /// По номерам квартиры /// [ Display(Name = @"По номерам квартиры") ] public List Rooms { get; set; } = new(0); } /// /// Фильтр устройств /// [ Display(Name = @"Фильтр устройств") ] public partial class DeviceFilterModel { /// /// По идентификаторам компании владельца /// [ Display(Name = @"По идентификаторам компании владельца") ] public List OwnerCompanyIds { get; set; } = new(0); /// /// Поиск по тексту. /// Если значение не передано то поиск по нему не производится. /// # Диапазон: 3..64. /// # Поиск производится по полям: /// # - Наименование; /// # - MAC-адрес; /// # - Список тегов устройства; /// # - Сетевой адрес; /// # - Серийный номер /// [ Display(Name = @"Поиск по тексту"), Description(@"Если значение не передано то поиск по нему не производится. Диапазон: 3..64. Поиск производится по полям: - Наименование; - MAC-адрес; - Список тегов устройства; - Сетевой адрес; - Серийный номер"), CustomRange(3, 64) ] public string? Text { get; set; } /// /// Идентификатор квартирограммы /// [ Display(Name = @"Идентификатор квартирограммы") ] public List FlatgrammIds { get; set; } = new(0); /// /// Серийный номер /// [ Display(Name = @"Серийный номер") ] public List SerialNumbers { get; set; } = new(0); /// /// Статус устройства /// [ Display(Name = @"Статус устройства") ] public List DeviceStatusTypes { get; set; } = new(0); /// /// Тип назначения устройства /// [ Display(Name = @"Тип назначения устройства") ] public List DeviceTypes { get; set; } = new(0); /// /// Модель устройства /// [ Display(Name = @"Модель устройства") ] public List DeviceModelTypes { get; set; } = new(0); /// /// Переадресация на консъержа /// [ Display(Name = @"Переадресация на консъержа") ] public bool? IsConciergeEnabled { get; set; } /// /// Диспетчеризация /// [ Display(Name = @"Диспетчеризация") ] public bool? IsDispatchingEnabled { get; set; } /// /// Поиск по публичному номеру диспетчеризации. /// Если значение не передано то поиск по нему не производится. /// # Диапазон: 3..64 /// [ Display(Name = @"Поиск по публичному номеру диспетчеризации"), Description(@"Если значение не передано то поиск по нему не производится. Диапазон: 3..64"), CustomRange(3, 64) ] public string? DispatchingPublicNumber { get; set; } /// /// Версия аппаратного обеспенения. /// # Диапазон: 3..64 /// [ Display(Name = @"Версия аппаратного обеспенения"), Description(@"Диапазон: 3..64"), CustomRange(3, 64) ] public string? HardwareVersion { get; set; } /// /// Версия программного обеспенения. /// # Диапазон: 3..64 /// [ Display(Name = @"Версия программного обеспенения"), Description(@"Диапазон: 3..64"), CustomRange(3, 64) ] public string? SoftwareVersion { get; set; } /// /// Автозамена пароля /// [ Display(Name = @"Автозамена пароля") ] public bool? IsAutochangePasswordEnabled { get; set; } /// /// ABC-номер /// [ Display(Name = @"ABC-номер") ] public List AbcNumber { get; set; } = new(0); /// /// Идентификаторы камер /// [ Display(Name = @"Идентификаторы камер") ] public List CameraIds { get; set; } = new(0); /// /// Фильтр по статусу синхронизации (SyncStatus.status_type) /// [ Display(Name = @"Фильтр по статусу синхронизации") ] public List SyncStatusStatusTypes { get; set; } = new(0); /// /// Пороговое значение количества попыток синхронизации. /// Возвращает записи, у которых sync_retry_count меньше этого значения /// [ Display(Name = @"Пороговое значение количества попыток синхронизации"), Description(@"Возвращает записи, у которых sync_retry_count меньше этого значения") ] public int? SyncRetryCountLessThen { get; set; } /// /// От даты успешной синхронизации включительно (>=) /// [ Display(Name = @"От даты успешной синхронизации включительно") ] public DateTime? BeginSyncSuccessfulAt { get; set; } /// /// До даты успешной синхронизации (<) /// [ Display(Name = @"До даты успешной синхронизации") ] public DateTime? EndSyncSuccessfulAt { get; set; } /// /// От даты синхронизации включительно (>=) /// [ Display(Name = @"От даты синхронизации включительно") ] public DateTime? BeginSyncAt { get; set; } /// /// До даты синхронизации (<) /// [ Display(Name = @"До даты синхронизации") ] public DateTime? EndSyncAt { get; set; } } /// /// Фильтр для SIP-трубок /// [ Display(Name = @"Фильтр для SIP-трубок") ] public partial class SipPhoneFilterModel { /// /// Фильтр по SIP номерам /// [ Display(Name = @"Фильтр по SIP номерам") ] public List SipNumbers { get; set; } = new(0); /// /// Фильтр по идентификаторам квартир /// [ Display(Name = @"Фильтр по идентификаторам квартир") ] public List RoomIds { get; set; } = new(0); } /// /// Фильтр для Trunk-конфигураций /// [ Display(Name = @"Фильтр для Trunk-конфигураций") ] public partial class TrunkConfigFilterModel { /// /// Фильтр по ОРПОН идентификаторам города /// [ Display(Name = @"Фильтр по ОРПОН идентификаторам города") ] public List CityOrponIds { get; set; } = new(0); /// /// Фильтр по IP-адресам /// [ Display(Name = @"Фильтр по IP-адресам") ] public List IpAddresses { get; set; } = new(0); /// /// Показывать удаленные /// [ Display(Name = @"Показывать удаленные") ] public bool? ShowDeleted { get; set; } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class CmsPhonePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public CmsPhonePagingModel.CmsPhonePagingOrderByType OrderByType { get; set; } = CmsPhonePagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public CmsPhonePagingModel.CmsPhonePagingDirectionType DirectionType { get; set; } = CmsPhonePagingDirectionType.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 CmsPhonePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По статусу доступности /// [ Display(Name = @"По статусу доступности"), JsonPropertyName("STATUS") ] Status = 2, /// /// Дата последнего изменения /// [ Display(Name = @"Дата последнего изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 3, /// /// Дата создания /// [ Display(Name = @"Дата создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 4, } /// /// Справочник типов направлений сортировки; /// # Тип: byte /// [ Description("Тип: byte") ] public enum CmsPhonePagingDirectionType : 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 DeleteCmsPhoneDeviceIdRequestModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; } /// /// Ответ на запрос удаления аналоговых трубок по идентификатору устройства /// [ Display(Name = @"Ответ на запрос удаления аналоговых трубок по идентификатору устройства") ] public partial class DeleteCmsPhoneDeviceIdResponseModel { } /// /// Запрос удаления аналоговых трубок по идентификатору ОРПОН /// [ Display(Name = @"Запрос удаления аналоговых трубок по идентификатору ОРПОН") ] public partial class DeleteCmsPhoneOrponIdRequestModel { /// /// Идентификатор ОРПОН /// [ Display(Name = @"Идентификатор ОРПОН"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля DeleteCmsPhoneOrponIdRequest.orpon_id } /// /// Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН /// [ Display(Name = @"Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН") ] public partial class DeleteCmsPhoneOrponIdResponseModel { } /// /// Запрос удаления аналоговых трубок по идентификатору ОРПОН и номеру квартиры /// [ Display(Name = @"Запрос удаления аналоговых трубок по идентификатору ОРПОН и номеру квартиры") ] public partial class DeleteCmsPhoneOrponIdRoomNumberRequestModel { /// /// Идентификатор ОРПОН /// [ Display(Name = @"Идентификатор ОРПОН"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля DeleteCmsPhoneOrponIdRoomNumberRequest.orpon_id /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; } /// /// Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН и номеру квартиры /// [ Display(Name = @"Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН и номеру квартиры") ] public partial class DeleteCmsPhoneOrponIdRoomNumberResponseModel { } /// /// Запрос удаления аналоговых трубок по идентификатору ОРПОН, номеру квартиры и идентификатору устройства /// [ Display(Name = @"Запрос удаления аналоговых трубок по идентификатору ОРПОН, номеру квартиры и идентификатору устройства") ] public partial class DeleteCmsPhoneOrponRoomNumberDeviceIdRequestModel { /// /// Идентификатор ОРПОН /// [ Display(Name = @"Идентификатор ОРПОН"), CustomRequired ] public long Orpon { get; set; } /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; } /// /// Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН, номеру квартиры и идентификатору устройства /// [ Display(Name = @"Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН, номеру квартиры и идентификатору устройства") ] public partial class DeleteCmsPhoneOrponRoomNumberDeviceIdResponseModel { } /// /// Запрос удаления аналоговой трубки /// [ Display(Name = @"Запрос удаления аналоговой трубки") ] public partial class DeleteCmsPhoneRequestModel { /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос удаления аналоговой трубки /// [ Display(Name = @"Ответ на запрос удаления аналоговой трубки") ] public partial class DeleteCmsPhoneResponseModel { } /// /// Запрос получения количества аналоговых трубок /// [ Display(Name = @"Запрос получения количества аналоговых трубок") ] public partial class GetCmsPhoneCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CmsPhoneFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества аналоговых трубок /// [ Display(Name = @"Ответ на запрос получения количества аналоговых трубок") ] public partial class GetCmsPhoneCountResponseModel { /// /// Всего устройтсв /// [ Display(Name = @"Всего устройтсв") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCmsPhoneCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества аналоговых трубок /// [ Display(Name = @"Ошибка запроса получения количества аналоговых трубок") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение списка аналоговых трубок /// [ Display(Name = @"Запрос на получение списка аналоговых трубок") ] public partial class GetCmsPhoneListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public CmsPhoneFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public CmsPhonePagingModel? Paging { get; set; } } /// /// Ответ на получение списка аналоговых трубок /// [ Display(Name = @"Ответ на получение списка аналоговых трубок") ] public partial class GetCmsPhoneListResponseModel { /// /// Пресет /// [ Display(Name = @"Пресет") ] public CmsPhoneModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCmsPhoneListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка аналоговых трубок /// [ Display(Name = @"Ошибка запроса получения списка аналоговых трубок") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения аналоговой трубки /// [ Display(Name = @"Запрос получения аналоговой трубки") ] public partial class GetCmsPhoneRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения аналоговой трубки /// [ Display(Name = @"Ответ на запрос получения аналоговой трубки") ] public partial class GetCmsPhoneResponseModel { /// /// Аналоговая трубка /// [ Display(Name = @"Аналоговая трубка") ] public CmsPhoneModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetCmsPhoneResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения баннера /// [ Display(Name = @"Ошибка запроса получения баннера") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на принудительное обновление статуса аналоговой трубки /// [ Display(Name = @"Запрос на принудительное обновление статуса аналоговой трубки") ] public partial class PostCmsPhoneRefreshRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public List Ids { get; set; } = new(0); } /// /// Ответ на запрос на принудительное обновление статуса аналоговой трубки /// [ Display(Name = @"Ответ на запрос на принудительное обновление статуса аналоговой трубки") ] public partial class PostCmsPhoneRefreshResponseModel { } /// /// Запрос удаления устройства /// [ Display(Name = @"Запрос удаления устройства") ] public partial class DeleteDeviceRequestModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос удаления устройства /// [ Display(Name = @"Ответ на запрос удаления устройства") ] public partial class DeleteDeviceResponseModel { } /// /// Сгруппированный по устройству список конфигураций /// [ Display(Name = @"Сгруппированный по устройству список конфигураций") ] public partial class DeviceConfigurationStatusGroupedModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Список конфигураций /// [ Display(Name = @"Список конфигураций"), CustomRequired ] public List Statuses { get; set; } = new(0); } /// /// Фильтр конфигураций сгруппированных по устройству /// [ Display(Name = @"Фильтр конфигураций сгруппированных по устройству") ] public partial class DeviceConfigurationStatusGroupedFilterModel { /// /// По идентификаторам устройства /// [ Display(Name = @"По идентификаторам устройства") ] public List DeviceIds { get; set; } = new(0); /// /// По типам конфигурации /// [ Display(Name = @"По типам конфигурации") ] public List ConfigurationTypes { get; set; } = new(0); /// /// По статусам конфигурации настройки /// [ Display(Name = @"По статусам конфигурации настройки") ] public List StatusTypes { get; set; } = new(0); /// /// Флаг, указывающий на готовность настройки к конфигурированию. /// Значение next_retry_at меньше текущей даты /// [ Display(Name = @"Флаг, указывающий на готовность настройки к конфигурированию"), Description(@"Значение next_retry_at меньше текущей даты") ] public bool? IsReadyForRetry { get; set; } /// /// Пороговое значение количества попыток. /// Возвращает записи, у которых retry_count меньше этого значения /// [ Display(Name = @"Пороговое значение количества попыток"), Description(@"Возвращает записи, у которых retry_count меньше этого значения") ] public int? RetryCountLessThen { get; set; } } /// /// Постраничный вывод конфигураций сгруппированных по устройству /// [ Display(Name = @"Постраничный вывод конфигураций сгруппированных по устройству") ] public partial class DeviceConfigurationStatusGroupedPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: DEVICE_ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: DEVICE_ID") ] public DeviceConfigurationStatusGroupedPagingModel.DeviceConfigurationStatusGroupedPagingOrderByType OrderByType { get; set; } = DeviceConfigurationStatusGroupedPagingOrderByType.DeviceId; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public DeviceConfigurationStatusGroupedPagingModel.DeviceConfigurationStatusGroupedPagingDirectionType DirectionType { get; set; } = DeviceConfigurationStatusGroupedPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..1000. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..1000. По умолчанию: 20"), CustomRange(0, 1000) ] 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 DeviceConfigurationStatusGroupedPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору устройства /// [ Display(Name = @"По идентификатору устройства"), JsonPropertyName("DEVICE_ID") ] DeviceId = 1, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeviceConfigurationStatusGroupedPagingDirectionType : 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 DevicePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: ID") ] public DevicePagingModel.DevicePagingOrderByType OrderByType { get; set; } = DevicePagingOrderByType.Id; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public DevicePagingModel.DevicePagingDirectionType DirectionType { get; set; } = DevicePagingDirectionType.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 DevicePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По наименованию /// [ Display(Name = @"По наименованию"), JsonPropertyName("TITLE") ] Title = 2, /// /// По дате последней попытки синхронизации /// [ Display(Name = @"По дате последней попытки синхронизации"), JsonPropertyName("SYNC_AT") ] SyncAt = 3, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DevicePagingDirectionType : 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 GetDeviceConfigurationStatusGroupedCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public DeviceConfigurationStatusGroupedFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества конфигураций сгруппированных по устройству /// [ Display(Name = @"Ответ на запрос получения количества конфигураций сгруппированных по устройству") ] public partial class GetDeviceConfigurationStatusGroupedCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } } /// /// Запрос получения списка конфигураций сгруппированных по устройству /// [ Display(Name = @"Запрос получения списка конфигураций сгруппированных по устройству") ] public partial class GetDeviceConfigurationStatusGroupedListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public DeviceConfigurationStatusGroupedFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public DeviceConfigurationStatusGroupedPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка конфигураций сгруппированных по устройству /// [ Display(Name = @"Ответ на запрос получения списка конфигураций сгруппированных по устройству") ] public partial class GetDeviceConfigurationStatusGroupedListResponseModel { /// /// Конфигурации устройства /// [ Display(Name = @"Конфигурации устройства") ] public DeviceConfigurationStatusGroupedModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetDeviceConfigurationStatusGroupedListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения статусов конфигурации устройства /// [ Display(Name = @"Запрос получения статусов конфигурации устройства") ] public partial class GetDeviceConfigurationStatusesRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения статусов конфигурации устройства /// [ Display(Name = @"Ответ на запрос получения статусов конфигурации устройства") ] public partial class GetDeviceConfigurationStatusesResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public GetDeviceConfigurationStatusesResponseModel.StatusesModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetDeviceConfigurationStatusesResponseModel.ErrorModel? Error { get; set; } /// /// Статусы /// [ Display(Name = @"Статусы") ] public partial class StatusesModel { /// /// Статусы конфигурации устройства /// [ Display(Name = @"Статусы конфигурации устройства") ] public List DeviceConfigurationStatuses { get; set; } = new(0); /// /// Статус камеры /// [ Display(Name = @"Статус камеры") ] public CameraStatusModel? CameraStatus { get; set; } /// /// Статус синхронизации /// [ Display(Name = @"Статус синхронизации") ] public SyncStatusModel? SyncStatus { get; set; } /// /// Статус устройства /// [ Display(Name = @"Статус устройства") ] public DeviceModel.DeviceStatusType DeviceStatusType { get; set; } } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } } } /// /// Запрос получения количества устройств /// [ Display(Name = @"Запрос получения количества устройств") ] public partial class GetDeviceCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public DeviceFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества устройств /// [ Display(Name = @"Ответ на запрос получения количества устройств") ] public partial class GetDeviceCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetDeviceCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка устройств /// [ Display(Name = @"Запрос получения списка устройств") ] public partial class GetDeviceListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public DeviceFilterModel? Filter { get; set; } /// /// Пагинация /// [ Display(Name = @"Пагинация") ] public DevicePagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка устройств /// [ Display(Name = @"Ответ на запрос получения списка устройств") ] public partial class GetDeviceListResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public DeviceModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetDeviceListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на получение списка устройств /// [ Display(Name = @"Ошибка запроса на получение списка устройств") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения устройства /// [ Display(Name = @"Запрос получения устройства") ] public partial class GetDeviceLiteRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения устройства /// [ Display(Name = @"Ответ на запрос получения устройства") ] public partial class GetDeviceLiteResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public DeviceLiteModel? Data { get; set; } } /// /// Запрос получения устройства /// [ Display(Name = @"Запрос получения устройства") ] public partial class GetDeviceRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения устройства /// [ Display(Name = @"Ответ на запрос получения устройства") ] public partial class GetDeviceResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public DeviceModel? Data { get; set; } } /// /// Запрос на изменение статуса конфигурации устройства /// [ Display(Name = @"Запрос на изменение статуса конфигурации устройства") ] public partial class PostDeviceConfigurationStatusRequestModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства"), CustomRequired ] public DeviceConfigurationStatusModel Data { get; set; } = null!; } /// /// Ответ на запрос на изменение статуса конфигурации устройства /// [ Display(Name = @"Ответ на запрос на изменение статуса конфигурации устройства") ] public partial class PostDeviceConfigurationStatusResponseModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства") ] public DeviceConfigurationStatusModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostDeviceConfigurationStatusResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения статуса конфигурации устройства /// [ Display(Name = @"Ошибка запроса сохранения статуса конфигурации устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос установки пресета на устройство /// [ Display(Name = @"Запрос установки пресета на устройство") ] public partial class PostDeviceInstallPresetRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос установки пресета на устройство /// [ Display(Name = @"Ответ на запрос установки пресета на устройство") ] public partial class PostDeviceInstallPresetResponseModel { /// /// Ошибка при установке пресета /// [ Display(Name = @"Ошибка при установке пресета") ] public PostDeviceInstallPresetResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка при установке пресета /// [ Display(Name = @"Ошибка при установке пресета") ] public partial class ErrorModel { /// /// Пресет в процессе установки /// [ Display(Name = @"Пресет в процессе установки") ] public PostDeviceInstallPresetResponseModel.ErrorModel.PresetStatusIsProcessingModel? PresetStatusIsProcessing { get; set; } /// /// Пресет в процессе установки /// [ Display(Name = @"Пресет в процессе установки") ] public partial class PresetStatusIsProcessingModel { } } } /// /// Запрос на переконфигурирование устройства /// [ Display(Name = @"Запрос на переконфигурирование устройства") ] public partial class PostDeviceReconfigureRequestModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос на переконфигурирование устройства /// [ Display(Name = @"Ответ на запрос на переконфигурирование устройства") ] public partial class PostDeviceReconfigureResponseModel { /// /// Ошибка переконфигурирования устройства /// [ Display(Name = @"Ошибка переконфигурирования устройства") ] public PostDeviceReconfigureResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка переконфигурирования устройства /// [ Display(Name = @"Ошибка переконфигурирования устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } /// /// Ошибка реинстала /// [ Display(Name = @"Ошибка реинстала") ] public ReinstallErrorModel? ReinstallError { get; set; } } } /// /// Запрос на замену устройства /// [ Display(Name = @"Запрос на замену устройства") ] public partial class PostDeviceReplaceRequestModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int Id { get; set; } /// /// Хост /// [ Display(Name = @"Хост") ] public string? Host { 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})$/"), CustomRequired, CustomRange(17, 17), CustomPattern(@"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$") ] public string MacAddress { get; set; } = null!; /// /// Серийный номер /// [ Display(Name = @"Серийный номер"), CustomRequired ] public string SerialNumber { get; set; } = null!; /// /// Логин (для модели спутник) /// [ Display(Name = @"Логин") ] public string? Login { get; set; } } /// /// Ответ на запрос на замену устройства /// [ Display(Name = @"Ответ на запрос на замену устройства") ] public partial class PostDeviceReplaceResponseModel { /// /// Ошибка замены устройства /// [ Display(Name = @"Ошибка замены устройства") ] public PostDeviceReplaceResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка замены устройства /// [ Display(Name = @"Ошибка замены устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } /// /// На платформе уже существует устройство с таким хостом /// [ Display(Name = @"На платформе уже существует устройство с таким хостом") ] public PostDeviceReplaceResponseModel.ErrorModel.HostExistsModel? HostExists { get; set; } /// /// На платформе уже существует устройство с таким MAC-адресом /// [ Display(Name = @"На платформе уже существует устройство с таким MAC-адресом") ] public PostDeviceReplaceResponseModel.ErrorModel.MacAddressExistsModel? MacAddressExists { get; set; } /// /// На платформе уже существует устройство с таким серийным номером /// [ Display(Name = @"На платформе уже существует устройство с таким серийным номером") ] public PostDeviceReplaceResponseModel.ErrorModel.SerialNumberExistsModel? SerialNumberExists { get; set; } /// /// На платформе уже существует устройство с таким логином (для устройст модели \"Спутник\") /// [ Display(Name = @"На платформе уже существует устройство с таким логином") ] public PostDeviceReplaceResponseModel.ErrorModel.LoginExistsModel? LoginExists { get; set; } /// /// Отсутствует поле Login для модели \"Спутник\" /// [ Display(Name = @"Отсутствует поле Login для модели ""Спутник""") ] public PostDeviceReplaceResponseModel.ErrorModel.LoginIsRequiredModel? LoginIsRequired { get; set; } /// /// Ошибка реинстала /// [ Display(Name = @"Ошибка реинстала") ] public ReinstallErrorModel? ReinstallError { get; set; } /// /// На платформе уже существует устройство с таким хостом /// [ Display(Name = @"На платформе уже существует устройство с таким хостом") ] public partial class HostExistsModel { } /// /// На платформе уже существует устройство с таким MAC-адресом /// [ Display(Name = @"На платформе уже существует устройство с таким MAC-адресом") ] public partial class MacAddressExistsModel { } /// /// На платформе уже существует устройство с таким серийным номером /// [ Display(Name = @"На платформе уже существует устройство с таким серийным номером") ] public partial class SerialNumberExistsModel { } /// /// На платформе уже существует устройство с таким логином (для устройст модели \"Спутник\") /// [ Display(Name = @"На платформе уже существует устройство с таким логином") ] public partial class LoginExistsModel { } /// /// Отсутствует поле Login для модели \"Спутник\" /// [ Display(Name = @"Отсутствует поле Login для модели ""Спутник""") ] public partial class LoginIsRequiredModel { } } } /// /// Запрос на создание/изменение устройства /// [ Display(Name = @"Запрос на создание/изменение устройства") ] public partial class PostDeviceRequestModel { /// /// Устройство /// [ Display(Name = @"Устройство"), CustomRequired ] public DeviceModel Data { get; set; } = null!; } /// /// Ответ на запрос на создание/изменение устройства /// [ Display(Name = @"Ответ на запрос на создание/изменение устройства") ] public partial class PostDeviceResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public DeviceModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostDeviceResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения устройства /// [ Display(Name = @"Ошибка запроса сохранения устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public DeviceModel.SavingErrorModel? Saving { get; set; } } } /// /// Пресет. /// Пресет с id=1 устанавливается при создании устройства по умолчанию /// [ Display(Name = @"Пресет"), Description(@"Пресет с id=1 устанавливается при создании устройства по умолчанию") ] public partial class PresetModel { /// /// Идентификатор. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор"), Description(@"Диапазон: 1..2147483647"), CustomRange(1, 2147483647) ] public int Id { get; set; } /// /// Наименование. /// # Диапазон: 3..256 /// [ Display(Name = @"Наименование"), Description(@"Диапазон: 3..256"), CustomRequired, CustomRange(3, 256) ] public string Title { get; set; } = null!; /// /// Идентификатор МРФ. /// # Диапазон: 0..10 /// [ Display(Name = @"Идентификатор МРФ"), Description(@"Диапазон: 0..10"), CustomRequired, CustomRange(0, 10) ] public List MrfIds { get; set; } = new(0); /// /// Идентификатор РФ. /// # Диапазон: 0..100 /// [ Display(Name = @"Идентификатор РФ"), Description(@"Диапазон: 0..100"), CustomRequired, CustomRange(0, 100) ] public List RfIds { get; set; } = new(0); /// /// Описание. /// # Диапазон: 3..1024 /// [ Display(Name = @"Описание"), Description(@"Диапазон: 3..1024"), CustomRange(3, 1024) ] public string? Description { get; set; } /// /// Дата и время создания. /// # Тип: DateTime /// [ Display(Name = @"Дата и время создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime"), Editable(false) ] public DateTime ChangedAt { get; set; } /// /// Статус /// [ Display(Name = @"Статус"), CustomRequired ] public PresetModel.PresetStatusType StatusType { get; set; } /// /// Параметр SIP /// [ Display(Name = @"Параметр SIP"), CustomRequired ] public PresetModel.SipModel Sip { get; set; } = null!; /// /// Параметр NTP /// [ Display(Name = @"Параметр NTP"), CustomRequired ] public PresetModel.NtpModel Ntp { get; set; } = null!; /// /// Параметр Syslog /// [ Display(Name = @"Параметр Syslog"), CustomRequired ] public PresetModel.SyslogModel Syslog { get; set; } = null!; /// /// Помещения. /// # Диапазон: 0..10000 /// [ Display(Name = @"Помещения"), Description(@"Диапазон: 0..10000"), CustomRequired, CustomRange(0, 10000) ] public List Rooms { get; set; } = new(0); /// /// Параметры конфигурации видео /// [ Display(Name = @"Параметры конфигурации видео"), CustomRequired ] public PresetModel.VideoConfigModel VideoConfig { get; set; } = null!; /// /// Параметр DTMF. /// # Диапазон: 0..64 /// [ Display(Name = @"Параметр DTMF"), Description(@"Диапазон: 0..64"), CustomRequired, CustomRange(0, 64) ] public List Dtmf { get; set; } = new(0); /// /// Распознование лиц /// [ Display(Name = @"Распознование лиц") ] public PresetModel.FaceRecognitionModel? FaceRecognition { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public List PresetDevices { get; set; } = new(0); /// /// Параметр SIP /// [ Display(Name = @"Параметр SIP") ] public partial class SipModel { /// /// Хост. /// # Диапазон: 5..256 /// [ Display(Name = @"Хост"), Description(@"Диапазон: 5..256"), CustomRequired, CustomRange(5, 256) ] public string Host { get; set; } = null!; /// /// Порт. /// # Диапазон: 1..65536 /// [ Display(Name = @"Порт"), Description(@"Диапазон: 1..65536"), CustomRequired, CustomRange(1, 65536) ] public int Port { get; set; } /// /// Хост reg. /// # Диапазон: 5..256 /// [ Display(Name = @"Хост reg"), Description(@"Диапазон: 5..256"), CustomRequired, CustomRange(5, 256) ] public string RegHost { get; set; } = null!; /// /// Порт reg. /// # Диапазон: 1..65536 /// [ Display(Name = @"Порт reg"), Description(@"Диапазон: 1..65536"), CustomRequired, CustomRange(1, 65536) ] public int RegPort { get; set; } /// /// Хост proxy. /// # Диапазон: 5..256 /// [ Display(Name = @"Хост proxy"), Description(@"Диапазон: 5..256"), CustomRequired, CustomRange(5, 256) ] public string ProxyHost { get; set; } = null!; /// /// Порт proxy. /// # Диапазон: 1..65536 /// [ Display(Name = @"Порт proxy"), Description(@"Диапазон: 1..65536"), CustomRequired, CustomRange(1, 65536) ] public int ProxyPort { get; set; } } /// /// Параметр NTP /// [ Display(Name = @"Параметр NTP") ] public partial class NtpModel { /// /// Хост. /// # Диапазон: 5..256 /// [ Display(Name = @"Хост"), Description(@"Диапазон: 5..256"), CustomRequired, CustomRange(5, 256) ] public string Host { get; set; } = null!; /// /// Порт. /// # Диапазон: 1..65536 /// [ Display(Name = @"Порт"), Description(@"Диапазон: 1..65536"), CustomRequired, CustomRange(1, 65536) ] public int Port { get; set; } } /// /// Параметр Syslog /// [ Display(Name = @"Параметр Syslog") ] public partial class SyslogModel { /// /// Хост. /// # Диапазон: 5..256 /// [ Display(Name = @"Хост"), Description(@"Диапазон: 5..256"), CustomRequired, CustomRange(5, 256) ] public string Host { get; set; } = null!; /// /// Порт. /// # Диапазон: 1..65536 /// [ Display(Name = @"Порт"), Description(@"Диапазон: 1..65536"), CustomRequired, CustomRange(1, 65536) ] public int Port { get; set; } /// /// Протокол /// [ Display(Name = @"Протокол"), CustomRequired ] public PresetModel.SyslogModel.PresetSyslogProtocolType ProtocolType { get; set; } /// /// Тип протокола. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PresetSyslogProtocolType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PROTOCOL_TYPE_UNKNOWN") ] Unknown = 0, /// /// Протокол UDP /// [ Display(Name = @"Протокол UDP"), JsonPropertyName("UDP") ] Udp = 1, /// /// Протокол TCP /// [ Display(Name = @"Протокол TCP"), JsonPropertyName("TCP") ] Tcp = 2, } } /// /// Помещение /// [ Display(Name = @"Помещение") ] public partial class RoomModel { /// /// Номер телефона. /// # Диапазон: 5..14 /// [ Display(Name = @"Номер телефона"), Description(@"Диапазон: 5..14"), CustomRequired, CustomRange(5, 14) ] public string Phone { get; set; } = null!; /// /// Номер помещения. /// # Диапазон: 1..10000 /// [ Display(Name = @"Номер помещения"), Description(@"Диапазон: 1..10000"), CustomRequired, CustomRange(1, 10000) ] public int Num { get; set; } } /// /// Параметры конфигурации видео /// [ Display(Name = @"Параметры конфигурации видео") ] public partial class VideoConfigModel { /// /// Тип пресета /// [ Display(Name = @"Тип пресета"), CustomRequired ] public PresetModel.VideoConfigModel.PresetVideoConfigQualityType QualityType { get; set; } /// /// Пользователь /// [ Display(Name = @"Пользователь"), CustomRequired ] public PresetModel.VideoConfigModel.RtspUserModel RtspUser { get; set; } = null!; /// /// Пользователь /// [ Display(Name = @"Пользователь") ] public partial class RtspUserModel { /// /// Имя пользователя. /// # Диапазон: 3..256 /// [ Display(Name = @"Имя пользователя"), Description(@"Диапазон: 3..256"), CustomRequired, CustomRange(3, 256) ] public string Username { get; set; } = null!; /// /// Пароль. /// # Диапазон: 3..256 /// [ Display(Name = @"Пароль"), Description(@"Диапазон: 3..256"), CustomRequired, CustomRange(3, 256) ] public string Password { get; set; } = null!; } /// /// Справочник качеств. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PresetVideoConfigQualityType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("QUALITY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Высокое качество /// [ Display(Name = @"Высокое качество"), JsonPropertyName("HIGH") ] High = 1, /// /// Среднее качество /// [ Display(Name = @"Среднее качество"), JsonPropertyName("MEDIUM") ] Medium = 2, } } /// /// Параметр DTMF /// [ Display(Name = @"Параметр DTMF") ] public partial class DtmfModel { /// /// Код. /// # Диапазон: 1..1 /// [ Display(Name = @"Код"), Description(@"Диапазон: 1..1"), CustomRequired, CustomRange(1, 1) ] public string Code { get; set; } = null!; /// /// Индекс реле. /// # Диапазон: 0..64 /// [ Display(Name = @"Индекс реле"), Description(@"Диапазон: 0..64"), CustomRange(0, 64) ] public int RelayIndex { get; set; } } /// /// Распознование лиц /// [ Display(Name = @"Распознование лиц") ] public partial class FaceRecognitionModel { /// /// Адрес /// [ Display(Name = @"Адрес"), CustomRequired ] public string Host { get; set; } = null!; /// /// Альтернативный адрес /// [ Display(Name = @"Альтернативный адрес") ] public string? AltHost { get; set; } /// /// Путь запроса к серверу /// [ Display(Name = @"Путь запроса к серверу"), CustomRequired ] public string Endpoint { get; set; } = null!; /// /// Токен /// [ Display(Name = @"Токен"), CustomRequired ] public string AuthToken { get; set; } = null!; /// /// Тип конфигурации /// [ Display(Name = @"Тип конфигурации"), CustomRequired ] public PresetModel.FaceRecognitionModel.PresetFaceRecognitionConfigurationType ConfigurationType { get; set; } /// /// Идентификатор источника в identix /// [ Display(Name = @"Идентификатор источника в identix"), CustomRequired ] public string OriginId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля Preset.FaceRecognition.origin_id /// /// Идентификаторы групп профилей в identix /// [ Display(Name = @"Идентификаторы групп профилей в identix") ] public List GroupIds { get; set; } = new(0); /// /// Тип конфигурации. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PresetFaceRecognitionConfigurationType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("CONFIGURATION_TYPE_UNKNOWN") ] Unknown = 0, /// /// По умолчанию /// [ Display(Name = @"По умолчанию"), JsonPropertyName("DEFAULT") ] Default = 1, } } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public PresetModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Запрещено для дефолтного пресета /// [ Display(Name = @"Запрещено для дефолтного пресета") ] public PresetModel.SavingErrorModel.NotAllowedForDefaultModel? NotAllowedForDefault { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at отличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at отличаются") ] public partial class ConflictModel { } /// /// Недоступно для дефолтного пресета. /// Причины: /// - Смена статуса на Архивный /// [ Display(Name = @"Недоступно для дефолтного пресета"), Description(@"Причины: - Смена статуса на Архивный") ] public partial class NotAllowedForDefaultModel { } } /// /// Справочник статусов. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PresetStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Активный /// [ Display(Name = @"Активный"), JsonPropertyName("ACTIVE") ] Active = 1, /// /// Архивный /// [ Display(Name = @"Архивный"), JsonPropertyName("ARCHIVE") ] Archive = 2, } } /// /// Запрос изменения устройства /// [ Display(Name = @"Запрос изменения устройства") ] public partial class PutDeviceRequestModel { /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int Id { get; set; } /// /// Идентификатор пресета /// [ Display(Name = @"Идентификатор пресета") ] public int PresetId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public PresetModel Preset { get; set; } = null!; /// /// Настройка режима SL3 /// [ Display(Name = @"Настройка режима SL3") ] public bool IsSl3ModeEnabled { get; set; } } /// /// ответ на завпрос изменения устройства /// [ Display(Name = @"ответ на завпрос изменения устройства") ] public partial class PutDeviceResponseModel { /// /// Устройство /// [ Display(Name = @"Устройство") ] public DeviceModel? Data { get; set; } } /// /// Ошибки реинстала /// [ Display(Name = @"Ошибки реинстала") ] public partial class ReinstallErrorModel { /// /// Сип-логин отсутствует на устройстве /// [ Display(Name = @"Сип-логин отсутствует на устройстве") ] public ReinstallErrorModel.SipLoginIsMissingModel? SipLoginIsMissing { get; set; } /// /// Сип-логин отсутствует на устройстве /// [ Display(Name = @"Сип-логин отсутствует на устройстве") ] public partial class SipLoginIsMissingModel { } } /// /// Ошибки валидации. /// Эти проверки выполняются до обращения в базу данных /// [ 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!; } /// /// Команда на старт проигрывания файла через домофон. /// Очередь key.device.alert.play_start /// [ Display(Name = @"Команда на старт проигрывания файла через домофон"), Description(@"Очередь key.device.alert.play_start") ] public partial class PlayStartTaskModel { /// /// Идентификатор запроса. /// # Тип: Guid /// [ Display(Name = @"Идентификатор запроса"), 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 RequestId { get; set; } // WARNING Не удалось найти свойство навигации для поля PlayStartTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ссылка на звуковой файл для проигрывания. /// Файл должен лежать на внутреннем хранилище. /// # Диапазон: 7..100 /// [ Display(Name = @"Ссылка на звуковой файл для проигрывания"), Description(@"Файл должен лежать на внутреннем хранилище. Диапазон: 7..100"), CustomRequired, CustomRange(7, 100) ] public string SoundFileUri { get; set; } = null!; /// /// Сетевой адрес. /// # Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ /// [ Display(Name = @"Сетевой адрес"), Description(@"Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"), CustomRequired, CustomPattern(@"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") ] public string IpAddress { get; set; } = null!; /// /// Сетевой порт. /// # Диапазон: 0..65535 /// [ Display(Name = @"Сетевой порт"), Description(@"Диапазон: 0..65535"), CustomRange(0, 65535) ] public int? Port { get; set; } /// /// Модель устройства. /// # Диапазон: 2..100 /// [ Display(Name = @"Модель устройства"), Description(@"Диапазон: 2..100"), CustomRequired, CustomRange(2, 100) ] public string Model { get; set; } = null!; /// /// Длительность воспроизведения такта в секундах. /// Такт включает в себя проигрывание файла на трубках или на динамике. /// # Диапазон: 0..65536 /// [ Display(Name = @"Длительность воспроизведения такта в секундах"), Description(@"Такт включает в себя проигрывание файла на трубках или на динамике. Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactPlayDuration { get; set; } /// /// Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactRepeatCount { get; set; } /// /// Количество повторов заданного количества тактов, где умолчание=0 - это один повтор. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество повторов заданного количества тактов, где умолчание=0 - это один повтор"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int PlayRepeatCount { get; set; } /// /// Тип проигрывания /// [ Display(Name = @"Тип проигрывания"), CustomRequired ] public PlayStartTaskModel.PlayStartTaskPlayType PlayType { get; set; } /// /// Логин. /// # Диапазон: 0..100 /// [ Display(Name = @"Логин"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Login { get; set; } /// /// Пароль. /// # Диапазон: 0..100 /// [ Display(Name = @"Пароль"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Password { get; set; } /// /// Тип проигрывания. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PlayStartTaskPlayType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PLAY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Только на аналоговые трубки /// [ Display(Name = @"Только на аналоговые трубки"), JsonPropertyName("HANDSET_ONLY") ] HandsetOnly = 1, /// /// Только на динамик домофона /// [ Display(Name = @"Только на динамик домофона"), JsonPropertyName("SPEAKER_ONLY") ] SpeakerOnly = 2, /// /// Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона /// [ Display(Name = @"Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона"), JsonPropertyName("HANDSET_AND_SPEAKER") ] HandsetAndSpeaker = 3, /// /// Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки /// [ Display(Name = @"Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки"), JsonPropertyName("SPEAKER_AND_HANDSET") ] SpeakerAndHandset = 4, } } /// /// Команда на прекращение проигрывания файла через домофон. /// Очередь key.device.alert.play_stop /// [ Display(Name = @"Команда на прекращение проигрывания файла через домофон"), Description(@"Очередь key.device.alert.play_stop") ] public partial class PlayStopTaskModel { /// /// Идентификатор запроса. /// # Тип: Guid /// [ Display(Name = @"Идентификатор запроса"), 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 RequestId { get; set; } // WARNING Не удалось найти свойство навигации для поля PlayStopTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Сетевой адрес. /// # Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ /// [ Display(Name = @"Сетевой адрес"), Description(@"Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"), CustomRequired, CustomPattern(@"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") ] public string IpAddress { get; set; } = null!; /// /// Сетевой порт. /// # Диапазон: 0..65535 /// [ Display(Name = @"Сетевой порт"), Description(@"Диапазон: 0..65535"), CustomRange(0, 65535) ] public int? Port { get; set; } /// /// Модель устройства. /// # Диапазон: 2..100 /// [ Display(Name = @"Модель устройства"), Description(@"Диапазон: 2..100"), CustomRequired, CustomRange(2, 100) ] public string Model { get; set; } = null!; /// /// Логин. /// # Диапазон: 0..100 /// [ Display(Name = @"Логин"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Login { get; set; } /// /// Пароль. /// # Диапазон: 0..100 /// [ Display(Name = @"Пароль"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public string? Password { get; set; } } /// /// Команда на подготовку и старт проигрывания файла через домофон. /// Очередь key.device.alert.prepare_start /// [ Display(Name = @"Команда на подготовку и старт проигрывания файла через домофон"), Description(@"Очередь key.device.alert.prepare_start") ] public partial class PrepareStartTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля PrepareStartTask.request_id /// /// Ссылка на звуковой файл для проигрывания. /// Файл должен лежать на внутреннем хранилище. /// # Диапазон: 2..100 /// [ Display(Name = @"Ссылка на звуковой файл для проигрывания"), Description(@"Файл должен лежать на внутреннем хранилище. Диапазон: 2..100"), CustomRequired, CustomRange(2, 100) ] public string SoundFileUri { get; set; } = null!; /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Длительность воспроизведения такта в секундах. /// Такт включает в себя проигрывание файла на трубках или на динамике. /// # Диапазон: 0..65536 /// [ Display(Name = @"Длительность воспроизведения такта в секундах"), Description(@"Такт включает в себя проигрывание файла на трубках или на динамике. Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactPlayDuration { get; set; } /// /// Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactRepeatCount { get; set; } /// /// Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int PlayRepeatCount { get; set; } /// /// Тип проигрывания /// [ Display(Name = @"Тип проигрывания"), CustomRequired ] public PrepareStartTaskModel.PrepareStartTaskPlayType PlayType { get; set; } /// /// Тип проигрывания. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PrepareStartTaskPlayType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PLAY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Только на аналоговые трубки /// [ Display(Name = @"Только на аналоговые трубки"), JsonPropertyName("HANDSET_ONLY") ] HandsetOnly = 1, /// /// Только на динамик домофона /// [ Display(Name = @"Только на динамик домофона"), JsonPropertyName("SPEAKER_ONLY") ] SpeakerOnly = 2, /// /// Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона /// [ Display(Name = @"Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона"), JsonPropertyName("HANDSET_AND_SPEAKER") ] HandsetAndSpeaker = 3, /// /// Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки /// [ Display(Name = @"Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки"), JsonPropertyName("SPEAKER_AND_HANDSET") ] SpeakerAndHandset = 4, } } /// /// Команда на подготовку и прекращение проигрывания файла через домофон. /// Очередь key.device.alert.prepare_stop /// [ Display(Name = @"Команда на подготовку и прекращение проигрывания файла через домофон"), Description(@"Очередь key.device.alert.prepare_stop") ] public partial class PrepareStopTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля PrepareStopTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; } /// /// Задача ответ на ошибку при разблокировке аналоговой трубки на устройстве для квартиры. /// Очередь key.device.cms_phone_activate_fail /// [ Display(Name = @"Задача ответ на ошибку при разблокировке аналоговой трубки на устройстве для квартиры"), Description(@"Очередь key.device.cms_phone_activate_fail") ] public partial class ActivateCmsPhoneFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ActivateCmsPhoneFailTask.request_id /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int CmsPhoneId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public CmsPhoneModel CmsPhone { get; set; } = null!; /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки"), CustomRequired ] public string ErrorMessage { get; set; } = null!; /// /// Дата и время события /// [ Display(Name = @"Дата и время события"), CustomRequired ] public DateTime OccuredAt { get; set; } } /// /// Задача ответ на успешную разблокировку аналоговой трубки на устройстве для квартиры. /// Очередь key.device.cms_phone_activate_success /// [ Display(Name = @"Задача ответ на успешную разблокировку аналоговой трубки на устройстве для квартиры"), Description(@"Очередь key.device.cms_phone_activate_success") ] public partial class ActivateCmsPhoneSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ActivateCmsPhoneSuccessTask.request_id /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int CmsPhoneId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public CmsPhoneModel CmsPhone { get; set; } = null!; /// /// Дата и время разблокировки аналоговой трубки /// [ Display(Name = @"Дата и время разблокировки аналоговой трубки"), CustomRequired ] public DateTime ActivatedAt { get; set; } } /// /// Задача разблокировку аналоговых трубок на устройстве для квартир. /// Очередь key.device.cms_phones_activate /// [ Display(Name = @"Задача разблокировку аналоговых трубок на устройстве для квартир"), Description(@"Очередь key.device.cms_phones_activate") ] public partial class ActivateCmsPhonesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ActivateCmsPhonesTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Список аналоговых трубок /// [ Display(Name = @"Список аналоговых трубок") ] public List CmsPhones { get; set; } = new(0); /// /// Аналоговая трубка /// [ Display(Name = @"Аналоговая трубка") ] public partial class CmsPhoneModel { /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int Id { get; set; } /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; } } /// /// Задача ответ на неуспешное на добавление кодов на устройство. /// Очередь key.device.add_codes_fail /// [ Display(Name = @"Задача ответ на неуспешное на добавление кодов на устройство"), Description(@"Очередь key.device.add_codes_fail") ] public partial class AddCodesFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddCodesFailTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ошибки кодов /// [ Display(Name = @"Ошибки кодов"), CustomRequired ] public List CodeErrors { get; set; } = new(0); } /// /// Задача ответ на успешное на добавление кодов на устройство. /// Очередь key.device.add_codes_success /// [ Display(Name = @"Задача ответ на успешное на добавление кодов на устройство"), Description(@"Очередь key.device.add_codes_success") ] public partial class AddCodesSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddCodesSuccessTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// коды /// [ Display(Name = @"коды"), CustomRequired ] public List Codes { get; set; } = new(0); } /// /// Задача на добавление кодов на устройство. /// Очередь key.device.add_codes /// [ Display(Name = @"Задача на добавление кодов на устройство"), Description(@"Очередь key.device.add_codes") ] public partial class AddCodesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddCodesTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Codes { get; set; } = new(0); } /// /// Задача ответ на неуспешное на добавление ключей на устройство. /// Очередь key.device.add_rfids_fail /// [ Display(Name = @"Задача ответ на неуспешное на добавление ключей на устройство"), Description(@"Очередь key.device.add_rfids_fail") ] public partial class AddRfidsFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddRfidsFailTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ошибки ключей /// [ Display(Name = @"Ошибки ключей"), CustomRequired ] public List RfidErrors { get; set; } = new(0); } /// /// Задача ответ на успешное на добавление ключей на устройство. /// Очередь key.device.add_rfids_success /// [ Display(Name = @"Задача ответ на успешное на добавление ключей на устройство"), Description(@"Очередь key.device.add_rfids_success") ] public partial class AddRfidsSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddRfidsSuccessTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Rfids { get; set; } = new(0); } /// /// Задача на добавление ключей на устройство. /// Очередь key.device.add_rfids /// [ Display(Name = @"Задача на добавление ключей на устройство"), Description(@"Очередь key.device.add_rfids") ] public partial class AddRfidsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddRfidsTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Rfids { get; set; } = new(0); } /// /// Задача на добавление Sl3 ключей на устройство. /// Очередь key.device.add_sl3_rfids /// [ Display(Name = @"Задача на добавление Sl3 ключей на устройство"), Description(@"Очередь key.device.add_sl3_rfids") ] public partial class AddSl3RfidsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля AddSl3RfidsTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Sl3Rfids { get; set; } = new(0); /// /// Ключ sl3 /// [ Display(Name = @"Ключ sl3") ] public partial class Sl3RfidModel { /// /// Идентификатор ключа /// [ Display(Name = @"Идентификатор ключа"), CustomRequired ] public int Id { get; set; } /// /// Номер помещения к которому прявязан ключ /// [ Display(Name = @"Номер помещения к которому прявязан ключ"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Секрет /// [ Display(Name = @"Секрет"), CustomRequired ] public string KeySecret { get; set; } = null!; } } /// /// Задача ответ на ошибку при блокировке аналоговой трубки на устройстве для квартиры. /// Очередь key.device.cms_phone_block_fail /// [ Display(Name = @"Задача ответ на ошибку при блокировке аналоговой трубки на устройстве для квартиры"), Description(@"Очередь key.device.cms_phone_block_fail") ] public partial class BlockCmsPhoneFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля BlockCmsPhoneFailTask.request_id /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int CmsPhoneId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public CmsPhoneModel CmsPhone { get; set; } = null!; /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки"), CustomRequired ] public string ErrorMessage { get; set; } = null!; /// /// Дата и время события /// [ Display(Name = @"Дата и время события"), CustomRequired ] public DateTime OccuredAt { get; set; } } /// /// Задача ответ на успешную блокировку аналоговой трубки на устройстве для квартиры. /// Очередь key.device.cms_phone_block_success /// [ Display(Name = @"Задача ответ на успешную блокировку аналоговой трубки на устройстве для квартиры"), Description(@"Очередь key.device.cms_phone_block_success") ] public partial class BlockCmsPhoneSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля BlockCmsPhoneSuccessTask.request_id /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int CmsPhoneId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public CmsPhoneModel CmsPhone { get; set; } = null!; /// /// Дата и время блокировки аналоговой трубки /// [ Display(Name = @"Дата и время блокировки аналоговой трубки"), CustomRequired ] public DateTime BlockedAt { get; set; } } /// /// Задача на блокировку аналоговых трубок на устройствах для квартир. /// Очередь key.device.cms_phones_block /// [ Display(Name = @"Задача на блокировку аналоговых трубок на устройствах для квартир"), Description(@"Очередь key.device.cms_phones_block") ] public partial class BlockCmsPhonesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля BlockCmsPhonesTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Список аналоговых трубок /// [ Display(Name = @"Список аналоговых трубок") ] public List CmsPhones { get; set; } = new(0); /// /// Аналоговая трубка /// [ Display(Name = @"Аналоговая трубка") ] public partial class CmsPhoneModel { /// /// Идентификатор аналоговой трубки /// [ Display(Name = @"Идентификатор аналоговой трубки"), CustomRequired ] public int Id { get; set; } /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; } } /// /// Сообщение о появлении возможности работы с аналоговыми трубками на устройстве. /// Очередь key.device.device_cms_available /// [ Display(Name = @"Сообщение о появлении возможности работы с аналоговыми трубками на устройстве"), Description(@"Очередь key.device.device_cms_available") ] public partial class CmsAvailableTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CmsAvailableTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; } /// /// Задача на использование аналоговых трубок. /// Очередь key.device.cms_available /// [ Display(Name = @"Задача на использование аналоговых трубок"), Description(@"Очередь key.device.cms_available") ] public partial class CmsServiceAvailableTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CmsServiceAvailableTask.request_id /// /// Идентификатор ОРПОН дома /// [ Display(Name = @"Идентификатор ОРПОН дома"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля CmsServiceAvailableTask.orpon_id } /// /// Код /// [ Display(Name = @"Код") ] public partial class CodeModel { /// /// Идентификатор кода /// [ Display(Name = @"Идентификатор кода"), CustomRequired ] public int Id { get; set; } /// /// Значение кода /// [ Display(Name = @"Значение кода"), CustomRequired ] public string Code { get; set; } = null!; /// /// Номер помещения к которому прявязан код /// [ Display(Name = @"Номер помещения к которому прявязан код"), CustomRequired ] public string RoomNumber { get; set; } = null!; } /// /// Ошибка кода /// [ Display(Name = @"Ошибка кода") ] public partial class CodeErrorModel { /// /// Идентификатор кода /// [ Display(Name = @"Идентификатор кода"), CustomRequired ] public int Id { get; set; } /// /// Значение кода /// [ Display(Name = @"Значение кода"), CustomRequired ] public string Code { get; set; } = null!; /// /// Номер помещения к которому прявязан код /// [ Display(Name = @"Номер помещения к которому прявязан код"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Сообщение об ошибке /// [ Display(Name = @"Сообщение об ошибке"), CustomRequired ] public string Message { get; set; } = null!; } /// /// Результат задачи на конфигурирование устройства. /// Очередь key.device.configure_device_result /// [ Display(Name = @"Результат задачи на конфигурирование устройства"), Description(@"Очередь key.device.configure_device_result") ] public partial class ConfigureDeviceResultTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ConfigureDeviceResultTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Дата конфигурации устройства /// [ Display(Name = @"Дата конфигурации устройства"), CustomRequired ] public DateTime ConfiguredAt { get; set; } /// /// Аппаратная версия /// [ Display(Name = @"Аппаратная версия") ] public string? HardwareVersion { get; set; } /// /// Версия прошивки /// [ Display(Name = @"Версия прошивки") ] public string? FirmwareVersion { get; set; } /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Результат настроек /// [ Display(Name = @"Результат настроек") ] public ConfigureDeviceResultTaskModel.SettingsModel? Settings { get; set; } /// /// Результат конфигурации устройства /// [ Display(Name = @"Результат конфигурации устройства") ] public partial class SettingsModel { /// /// Установка пресета /// [ Display(Name = @"Установка пресета"), CustomRequired ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel Preset { get; set; } = null!; /// /// Настройка SIP-аккаунта /// [ Display(Name = @"Настройка SIP-аккаунта") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? SipAccount { get; set; } /// /// Настройка сип-номеров в помещениях /// [ Display(Name = @"Настройка сип-номеров в помещениях") ] public ConfigureDeviceResultTaskModel.SettingsModel.SipRoomsModel? SipRooms { get; set; } /// /// Настройка калитки /// [ Display(Name = @"Настройка калитки") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Gate { get; set; } /// /// Настройка ключей /// [ Display(Name = @"Настройка ключей") ] public ConfigureDeviceResultTaskModel.SettingsModel.RfidsModel? Rfids { get; set; } /// /// Настройка кодов /// [ Display(Name = @"Настройка кодов") ] public ConfigureDeviceResultTaskModel.SettingsModel.CodesModel? Codes { get; set; } /// /// Настройка sl3 /// [ Display(Name = @"Настройка sl3") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Sl3 { get; set; } /// /// Настройки вызова экстренной службы /// [ Display(Name = @"Настройки вызова экстренной службы") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? EmergencyCallSettings { get; set; } /// /// Состояние настройки /// [ Display(Name = @"Состояние настройки") ] public partial class StateModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства"), CustomRequired ] public ConfigureDeviceResultTaskModel.SettingsModel.ConfigureDeviceResultTaskSettingsStatusType StatusType { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } } /// /// Настройка квартир /// [ Display(Name = @"Настройка квартир") ] public partial class SipRoomsModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства") ] public ConfigureDeviceResultTaskModel.SettingsModel.ConfigureDeviceResultTaskSettingsStatusType StatusType { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } /// /// Загруженные квартиры /// [ Display(Name = @"Загруженные квартиры") ] public List LoadedSipRooms { get; set; } = new(0); /// /// Незагруженные квартиры /// [ Display(Name = @"Незагруженные квартиры") ] public List UnloadedSipRooms { get; set; } = new(0); } /// /// Настройка ключей /// [ Display(Name = @"Настройка ключей") ] public partial class RfidsModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства") ] public ConfigureDeviceResultTaskModel.SettingsModel.ConfigureDeviceResultTaskSettingsStatusType StatusType { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } /// /// Загруженные ключи /// [ Display(Name = @"Загруженные ключи") ] public List LoadedRfids { get; set; } = new(0); /// /// Незагруженные ключи /// [ Display(Name = @"Незагруженные ключи") ] public List UnloadedRfids { get; set; } = new(0); } /// /// Настройка кодов /// [ Display(Name = @"Настройка кодов") ] public partial class CodesModel { /// /// Статус конфигурации устройства /// [ Display(Name = @"Статус конфигурации устройства") ] public ConfigureDeviceResultTaskModel.SettingsModel.ConfigureDeviceResultTaskSettingsStatusType StatusType { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } /// /// Загруженные коды /// [ Display(Name = @"Загруженные коды") ] public List LoadedCodes { get; set; } = new(0); /// /// Незагруженные коды /// [ Display(Name = @"Незагруженные коды") ] public List UnloadedCodes { get; set; } = new(0); } /// /// Справочник статусов конфигурации устройства. /// # Тип: byte /// [ Description("Тип: byte") ] public enum ConfigureDeviceResultTaskSettingsStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Настроен /// [ Display(Name = @"Настроен"), JsonPropertyName("SUCCESS") ] Success = 1, /// /// Ошибка /// [ Display(Name = @"Ошибка"), JsonPropertyName("ERROR") ] Error = 2, } } } /// /// Задача на конфигурирование устройства. /// Очередь key.device.configure_device /// [ Display(Name = @"Задача на конфигурирование устройства"), Description(@"Очередь key.device.configure_device") ] public partial class ConfigureDeviceTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ConfigureDeviceTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Адрес устройства /// [ Display(Name = @"Адрес устройства"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя устройства /// [ Display(Name = @"Имя пользователя устройства"), CustomRequired ] public string Username { get; set; } = null!; /// /// Пароль пользователья устройства /// [ Display(Name = @"Пароль пользователья устройства"), CustomRequired ] public string Password { get; set; } = null!; /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Пресет устройства /// [ Display(Name = @"Пресет устройства"), CustomRequired ] public PresetModel Preset { get; set; } = null!; /// /// Sip аккаунт /// [ Display(Name = @"Sip аккаунт") ] public ConfigureDeviceTaskModel.SipAccountModel? SipAccount { get; set; } /// /// Список сип-номеров в помещениях. /// # Диапазон: 0..10000 /// [ Display(Name = @"Список сип-номеров в помещениях"), Description(@"Диапазон: 0..10000"), CustomRange(0, 10000) ] public List SipRooms { get; set; } = new(0); /// /// Параметры калитки /// [ Display(Name = @"Параметры калитки") ] public ConfigureDeviceTaskModel.GateModel? Gate { get; set; } /// /// Ключи /// [ Display(Name = @"Ключи") ] public List Rfids { get; set; } = new(0); /// /// Коды /// [ Display(Name = @"Коды") ] public List Codes { get; set; } = new(0); /// /// Таймзона NTP /// [ Display(Name = @"Таймзона NTP"), CustomRequired ] public string NtpTimezone { get; set; } = null!; /// /// Параметр Sl3 /// [ Display(Name = @"Параметр Sl3") ] public ConfigureDeviceTaskModel.Sl3Model? Sl3 { get; set; } /// /// Настройки вызова экстренной службы /// [ Display(Name = @"Настройки вызова экстренной службы") ] public EmergencyCallSettingsModel? EmergencyCallSettings { get; set; } /// /// Sip аккаунт /// [ Display(Name = @"Sip аккаунт") ] public partial class SipAccountModel { /// /// Имя /// [ Display(Name = @"Имя"), CustomRequired ] public string Name { get; set; } = null!; /// /// Номер /// [ Display(Name = @"Номер"), CustomRequired ] public string Number { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя"), CustomRequired ] public string User { get; set; } = null!; /// /// Пароль /// [ Display(Name = @"Пароль"), CustomRequired ] public string Password { get; set; } = null!; } /// /// Параметры калитки /// [ Display(Name = @"Параметры калитки") ] public partial class GateModel { /// /// Состояние параметра калитки. /// true - используется, необходимо настроить параметы. /// false - не используется, необходимо выключить параметры калитки /// [ Display(Name = @"Состояние параметра калитки"), Description(@"true - используется, необходимо настроить параметы. false - не используется, необходимо выключить параметры калитки"), CustomRequired ] public bool IsActive { get; set; } /// /// Параметры реле /// [ Display(Name = @"Параметры реле"), CustomRequired ] public List RelaySettings { get; set; } = new(0); /// /// Диапазоны квартир /// [ Display(Name = @"Диапазоны квартир"), CustomRequired ] public List RoomRanges { get; set; } = new(0); /// /// Параметры реле /// [ Display(Name = @"Параметры реле") ] public partial class RelaySettingsModel { /// /// Состояние реле. /// true - по команде «Открыть дверь» произойдет открытие реле. /// false - по команде «Открыть дверь» не произойдет открытие реле /// [ Display(Name = @"Состояние реле"), Description(@"true - по команде «Открыть дверь» произойдет открытие реле. false - по команде «Открыть дверь» не произойдет открытие реле"), CustomRequired ] public bool IsActive { get; set; } /// /// Индекс реле. /// # Диапазон: 0..64 /// [ Display(Name = @"Индекс реле"), Description(@"Диапазон: 0..64"), CustomRange(0, 64) ] public int RelayIndex { get; set; } } /// /// Диапазон квартир /// [ Display(Name = @"Диапазон квартир") ] public partial class RoomRangeModel { /// /// Адрес дома /// [ Display(Name = @"Адрес дома"), CustomRequired ] public string Address { get; set; } = null!; /// /// Номер дома (подъезда) /// [ Display(Name = @"Номер дома"), CustomRequired ] public string Prefix { get; set; } = null!; /// /// Начало диапазона включительно /// [ Display(Name = @"Начало диапазона включительно"), CustomRequired ] public string FirstRoomNumber { get; set; } = null!; /// /// Конец диапазона включительно /// [ Display(Name = @"Конец диапазона включительно"), CustomRequired ] public string LastRoomNumber { get; set; } = null!; } } /// /// Параметр Sl3 /// [ Display(Name = @"Параметр Sl3") ] public partial class Sl3Model { /// /// Статус настройки SL3 /// [ Display(Name = @"Статус настройки SL3"), CustomRequired ] public bool IsEnabled { get; set; } /// /// Профиль шифрования /// [ Display(Name = @"Профиль шифрования") ] public ConfigureDeviceTaskModel.EncryptionProfileModel? EncryptionProfile { get; set; } } /// /// Профиль шифрования /// [ Display(Name = @"Профиль шифрования") ] public partial class EncryptionProfileModel { /// /// Номер сектора /// [ Display(Name = @"Номер сектора"), CustomRequired ] public int SectorNumber { get; set; } /// /// Номер блока /// [ Display(Name = @"Номер блока"), CustomRequired ] public int BlockNumber { get; set; } /// /// aes ключ /// [ Display(Name = @"aes ключ"), CustomRequired ] public string AesKey { get; set; } = null!; /// /// Индекс первого символа для секрета /// [ Display(Name = @"Индекс первого символа для секрета") ] public int StartIndex { get; set; } /// /// Индекс последнего символа для секрета /// [ Display(Name = @"Индекс последнего символа для секрета") ] public int EndIndex { get; set; } } } /// /// Результат задачи на конфигурирование устройства. /// Очередь key.device.control_device_result /// [ Display(Name = @"Результат задачи на конфигурирование устройства"), Description(@"Очередь key.device.control_device_result") ] public partial class ControlDeviceResultTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ControlDeviceResultTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Дата конфигурации устройства /// [ Display(Name = @"Дата конфигурации устройства"), CustomRequired ] public DateTime ConfiguredAt { get; set; } /// /// Аппаратная версия /// [ Display(Name = @"Аппаратная версия") ] public string? HardwareVersion { get; set; } /// /// Версия прошивки /// [ Display(Name = @"Версия прошивки") ] public string? FirmwareVersion { get; set; } /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Результат настроек /// [ Display(Name = @"Результат настроек") ] public ControlDeviceResultTaskModel.SettingsModel? Settings { get; set; } /// /// Результат конфигурации устройства /// [ Display(Name = @"Результат конфигурации устройства") ] public partial class SettingsModel { /// /// Настройка распознавания лиц /// [ Display(Name = @"Настройка распознавания лиц") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? FaceRecognition { get; set; } /// /// Установка пресета /// [ Display(Name = @"Установка пресета") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Preset { get; set; } /// /// Настройка SIP-аккаунта /// [ Display(Name = @"Настройка SIP-аккаунта") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? SipAccount { get; set; } /// /// Настройка калитки /// [ Display(Name = @"Настройка калитки") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Gate { get; set; } /// /// Настройка автосбора /// [ Display(Name = @"Настройка автосбора") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Autocollect { get; set; } /// /// Настройка консьержа /// [ Display(Name = @"Настройка консьержа") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Concierge { get; set; } /// /// Настройка sl3 /// [ Display(Name = @"Настройка sl3") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? Sl3 { get; set; } /// /// Настройки вызова экстренной службы /// [ Display(Name = @"Настройки вызова экстренной службы") ] public ConfigureDeviceResultTaskModel.SettingsModel.StateModel? EmergencyCallSettings { get; set; } } } /// /// Задача на конфигурирование устройства. /// Очередь key.device.control_device /// [ Display(Name = @"Задача на конфигурирование устройства"), Description(@"Очередь key.device.control_device") ] public partial class ControlDeviceTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ControlDeviceTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Адрес устройства /// [ Display(Name = @"Адрес устройства"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя устройства /// [ Display(Name = @"Имя пользователя устройства"), CustomRequired ] public string Username { get; set; } = null!; /// /// Пароль пользователья устройства /// [ Display(Name = @"Пароль пользователья устройства"), CustomRequired ] public string Password { get; set; } = null!; /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Распознование лиц /// [ Display(Name = @"Распознование лиц") ] public ControlDeviceTaskModel.FaceRecognitionModel? FaceRecognition { get; set; } /// /// Пресет устройства /// [ Display(Name = @"Пресет устройства") ] public PresetModel? Preset { get; set; } /// /// Таймзона NTP /// [ Display(Name = @"Таймзона NTP") ] public string? NtpTimezone { get; set; } /// /// Sip аккаунт /// [ Display(Name = @"Sip аккаунт") ] public ConfigureDeviceTaskModel.SipAccountModel? SipAccount { get; set; } /// /// Параметры калитки /// [ Display(Name = @"Параметры калитки") ] public ConfigureDeviceTaskModel.GateModel? Gate { get; set; } /// /// Консьерж /// [ Display(Name = @"Консьерж") ] public ControlDeviceTaskModel.ConciergeModel? Concierge { get; set; } /// /// Автосбор /// [ Display(Name = @"Автосбор") ] public ControlDeviceTaskModel.AutocollectModel? Autocollect { get; set; } /// /// Параметр sl3 /// [ Display(Name = @"Параметр sl3") ] public ConfigureDeviceTaskModel.Sl3Model? Sl3 { get; set; } /// /// Настройки вызова экстренной службы /// [ Display(Name = @"Настройки вызова экстренной службы") ] public EmergencyCallSettingsModel? EmergencyCallSettings { get; set; } /// /// Распознование лиц /// [ Display(Name = @"Распознование лиц") ] public partial class FaceRecognitionModel { /// /// Статус настройки распознавания лиц /// [ Display(Name = @"Статус настройки распознавания лиц"), CustomRequired ] public bool IsEnabled { get; set; } } /// /// Консьерж /// [ Display(Name = @"Консьерж") ] public partial class ConciergeModel { /// /// Номер сип-трубки. /// # Диапазон: 5..14 /// [ Display(Name = @"Номер сип-трубки"), Description(@"Диапазон: 5..14"), CustomRequired, CustomRange(5, 14) ] public string SipNumber { get; set; } = null!; /// /// Номер помещения. /// # Диапазон: 1..10000 /// [ Display(Name = @"Номер помещения"), Description(@"Диапазон: 1..10000"), CustomRequired, CustomRange(1, 10000) ] public int RoomNumber { get; set; } } /// /// Автосбор /// [ Display(Name = @"Автосбор") ] public partial class AutocollectModel { /// /// Статус настройки автосбор /// [ Display(Name = @"Статус настройки автосбор"), CustomRequired ] public bool IsEnabled { get; set; } } } /// /// Задача на создание доступа к устройству. /// Очередь key.device.create_device_access /// [ Display(Name = @"Задача на создание доступа к устройству"), Description(@"Очередь key.device.create_device_access") ] public partial class CreateDeviceAccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CreateDeviceAccessTask.request_id /// /// Идентификаторы устройства. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификаторы устройства"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public List DeviceIds { get; set; } = new(0); /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public DeviceAccessModel.DeviceAccessAccessorType DeviceAccessAccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля CreateDeviceAccessTask.accessor_id } /// /// Задача ответ на неуспешное удаление кодов с устройства. /// Очередь key.device.delete_codes_fail /// [ Display(Name = @"Задача ответ на неуспешное удаление кодов с устройства"), Description(@"Очередь key.device.delete_codes_fail") ] public partial class DeleteCodesFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCodesFailTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ошибки кодов /// [ Display(Name = @"Ошибки кодов"), CustomRequired ] public List CodeErrors { get; set; } = new(0); } /// /// Задача ответ на успешное удаление кодов с устройства. /// Очередь key.device.delete_codes_success /// [ Display(Name = @"Задача ответ на успешное удаление кодов с устройства"), Description(@"Очередь key.device.delete_codes_success") ] public partial class DeleteCodesSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCodesSuccessTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// коды /// [ Display(Name = @"коды"), CustomRequired ] public List Codes { get; set; } = new(0); } /// /// Задача на удаление кодов с устройства. /// Очередь key.device.delete_codes /// [ Display(Name = @"Задача на удаление кодов с устройства"), Description(@"Очередь key.device.delete_codes") ] public partial class DeleteCodesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCodesTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Codes { get; set; } = new(0); /// /// При передаче этого флага в true, ответное сообщение не будет получено /// [ Display(Name = @"При передаче этого флага в true, ответное сообщение не будет получено") ] public bool? IsAnswerUnnecessary { get; set; } } /// /// Задача на удаление доступа к устройству. /// Очередь key.device.delete_device_access /// [ Display(Name = @"Задача на удаление доступа к устройству"), Description(@"Очередь key.device.delete_device_access") ] public partial class DeleteDeviceAccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteDeviceAccessTask.request_id /// /// Идентификаторы устройства. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификаторы устройства"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public List DeviceIds { get; set; } = new(0); /// /// Тип субъекта доступа /// [ Display(Name = @"Тип субъекта доступа"), CustomRequired ] public DeviceAccessModel.DeviceAccessAccessorType DeviceAccessAccessorType { get; set; } /// /// Идентификатор субъекта доступа. /// # Диапазон: 1..36 /// [ Display(Name = @"Идентификатор субъекта доступа"), Description(@"Диапазон: 1..36"), CustomRequired, CustomRange(1, 36) ] public string AccessorId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteDeviceAccessTask.accessor_id } /// /// Задача ответ на неуспешное удаление ключей с устройства. /// Очередь key.device.delete_rfids_fail /// [ Display(Name = @"Задача ответ на неуспешное удаление ключей с устройства"), Description(@"Очередь key.device.delete_rfids_fail") ] public partial class DeleteRfidsFailTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsFailTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ошибки ключей /// [ Display(Name = @"Ошибки ключей"), CustomRequired ] public List RfidErrors { get; set; } = new(0); } /// /// Задача ответ на успешное удаление ключей с устройства. /// Очередь key.device.delete_rfids_success /// [ Display(Name = @"Задача ответ на успешное удаление ключей с устройства"), Description(@"Очередь key.device.delete_rfids_success") ] public partial class DeleteRfidsSuccessTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsSuccessTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Rfids { get; set; } = new(0); } /// /// Задача на удаление ключей с устройства. /// Очередь key.device.delete_rfids /// [ Display(Name = @"Задача на удаление ключей с устройства"), Description(@"Очередь key.device.delete_rfids") ] public partial class DeleteRfidsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Rfids { get; set; } = new(0); /// /// При передаче этого флага в true, ответное сообщение не будет получено /// [ Display(Name = @"При передаче этого флага в true, ответное сообщение не будет получено") ] public bool? IsAnswerUnnecessary { get; set; } } /// /// Задача на удаление sip-аккаунта. /// Очередь key.device.delete_sip_account /// [ Display(Name = @"Задача на удаление sip-аккаунта"), Description(@"Очередь key.device.delete_sip_account") ] public partial class DeleteSipAccountTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteSipAccountTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Дата и время удаления устройства /// [ Display(Name = @"Дата и время удаления устройства"), CustomRequired ] public DateTime DeletedAt { get; set; } /// /// Sip-login устройства /// [ Display(Name = @"Sip-login устройства"), CustomRequired ] public string SipLogin { get; set; } = null!; } /// /// Задача на удаление Sl3 ключей с устройства. /// Очередь key.device.delete_sl3_rfids /// [ Display(Name = @"Задача на удаление Sl3 ключей с устройства"), Description(@"Очередь key.device.delete_sl3_rfids") ] public partial class DeleteSl3RfidsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteSl3RfidsTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Ключи /// [ Display(Name = @"Ключи"), CustomRequired ] public List Sl3Rfids { get; set; } = new(0); /// /// При передаче этого флага в true, ответное сообщение не будет получено /// [ Display(Name = @"При передаче этого флага в true, ответное сообщение не будет получено") ] public bool? IsAnswerUnnecessary { get; set; } /// /// Ключ sl3 /// [ Display(Name = @"Ключ sl3") ] public partial class Sl3RfidModel { /// /// Идентификатор ключа /// [ Display(Name = @"Идентификатор ключа"), CustomRequired ] public int Id { get; set; } /// /// Номер помещения к которому прявязан ключ /// [ Display(Name = @"Номер помещения к которому прявязан ключ"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Секрет /// [ Display(Name = @"Секрет"), CustomRequired ] public string KeySecret { get; set; } = null!; } } /// /// Настройки вызова экстренной службы /// [ Display(Name = @"Настройки вызова экстренной службы") ] public partial class EmergencyCallSettingsModel { /// /// Возможность вызова экстренной службы /// [ Display(Name = @"Возможность вызова экстренной службы") ] public bool IsCallAvailable { get; set; } /// /// Параметры вызова экстренной службы /// [ Display(Name = @"Параметры вызова экстренной службы") ] public EmergencyCallSettingsModel.EmergencyCallParameterModel? EmergencyCallParameter { get; set; } /// /// Параметры вызова экстренной службы /// [ Display(Name = @"Параметры вызова экстренной службы") ] public partial class EmergencyCallParameterModel { /// /// АБС-номер экстренной службы. /// # Паттерн: /^\+[1-9][0-9]{10}$/ /// [ Display(Name = @"АБС-номер экстренной службы"), Description(@"Паттерн: /^\+[1-9][0-9]{10}$/"), CustomRequired, CustomPattern(@"^\+[1-9][0-9]{10}$") ] public string EmergencyNumber { get; set; } = null!; /// /// Исходящий ABC-номер домофона. /// # Паттерн: /^\+[1-9][0-9]{10}$/ /// [ Display(Name = @"Исходящий ABC-номер домофона"), Description(@"Паттерн: /^\+[1-9][0-9]{10}$/"), CustomRequired, CustomPattern(@"^\+[1-9][0-9]{10}$") ] public string AbcNumber { get; set; } = null!; /// /// Адрес SIP-транка. /// # Диапазон: 5..250 /// [ Display(Name = @"Адрес SIP-транка"), Description(@"Диапазон: 5..250"), CustomRequired, CustomRange(5, 250) ] public string SipTrunkHost { get; set; } = null!; /// /// Регион вызова экстренной службы. /// # Диапазон: 3..32 /// [ Display(Name = @"Регион вызова экстренной службы"), Description(@"Диапазон: 3..32"), CustomRequired, CustomRange(3, 32) ] public string DestinationName { get; set; } = null!; } } /// /// Задача на открытие точки доступа. /// Очередь key.device.open_access_point /// [ Display(Name = @"Задача на открытие точки доступа"), Description(@"Очередь key.device.open_access_point") ] public partial class OpenAccessPointTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля OpenAccessPointTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Номер реле /// [ Display(Name = @"Номер реле") ] public int? RelayIndex { get; set; } /// /// Задержка в секундах /// [ Display(Name = @"Задержка в секундах") ] public int? Delay { get; set; } /// /// ГРЗ авто /// [ Display(Name = @"ГРЗ авто") ] public string? CarNumber { get; set; } /// /// Тип ТС /// [ Display(Name = @"Тип ТС") ] public string? Vehicle { get; set; } /// /// Наименование курьерской компании /// [ Display(Name = @"Наименование курьерской компании") ] public string? CourierCompanyName { get; set; } /// /// Номер заказа /// [ Display(Name = @"Номер заказа") ] public string? OrderNumber { get; set; } /// /// Идентификатор курьера /// [ Display(Name = @"Идентификатор курьера") ] public string? CourierId { get; set; } // WARNING Не удалось найти свойство навигации для поля OpenAccessPointTask.courier_id } /// /// Задача на открытие устройства. /// Очередь key.device.open /// [ Display(Name = @"Задача на открытие устройства"), Description(@"Очередь key.device.open") ] public partial class OpenTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля OpenTask.request_id /// /// Модель /// [ Display(Name = @"Модель"), CustomRequired ] public string Model { get; set; } = null!; /// /// Хост /// [ Display(Name = @"Хост"), CustomRequired ] public string Host { get; set; } = null!; /// /// Имя пользователя /// [ Display(Name = @"Имя пользователя") ] public string? Username { get; set; } /// /// Пароль /// [ Display(Name = @"Пароль") ] public string? Password { get; set; } /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public DeviceModel Device { get; set; } = null!; /// /// Номер реле /// [ Display(Name = @"Номер реле") ] public int? RelayIndex { get; set; } /// /// Задержка в секундах. /// Если не передано, то полставляется значение по умолчанию (5) /// [ Display(Name = @"Задержка в секундах"), Description(@"Если не передано, то полставляется значение по умолчанию (5)") ] public int? Delay { get; set; } } /// /// Ключ /// [ Display(Name = @"Ключ") ] public partial class RfidModel { /// /// Идентификатор ключа /// [ Display(Name = @"Идентификатор ключа"), CustomRequired ] public int Id { get; set; } /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Номер помещения к которому прявязан ключ /// [ Display(Name = @"Номер помещения к которому прявязан ключ"), CustomRequired ] public string RoomNumber { get; set; } = null!; } /// /// Ошибка ключа /// [ Display(Name = @"Ошибка ключа") ] public partial class RfidErrorModel { /// /// Идентификатор ключа /// [ Display(Name = @"Идентификатор ключа"), CustomRequired ] public int Id { get; set; } /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Номер помещения к которому прявязан ключ /// [ Display(Name = @"Номер помещения к которому прявязан ключ"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Сообщение об ошибке /// [ Display(Name = @"Сообщение об ошибке"), CustomRequired ] public string Message { get; set; } = null!; } /// /// Сип-номер в помещении /// [ Display(Name = @"Сип-номер в помещении") ] public partial class SipRoomModel { /// /// Номер сип-трубки. /// # Диапазон: 5..14 /// [ Display(Name = @"Номер сип-трубки"), Description(@"Диапазон: 5..14"), CustomRequired, CustomRange(5, 14) ] public string SipNumber { get; set; } = null!; /// /// Номер помещения. /// # Диапазон: 1..10000 /// [ Display(Name = @"Номер помещения"), Description(@"Диапазон: 1..10000"), CustomRequired, CustomRange(1, 10000) ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартиры"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int RoomId { get; set; } // WARNING Не удалось найти свойство навигации для поля SipRoom.room_id } /// /// Ошибка сип-номера в помещении /// [ Display(Name = @"Ошибка сип-номера в помещении") ] public partial class SipRoomErrorModel { /// /// Номер сип-трубки. /// # Диапазон: 5..14 /// [ Display(Name = @"Номер сип-трубки"), Description(@"Диапазон: 5..14"), CustomRequired, CustomRange(5, 14) ] public string SipNumber { get; set; } = null!; /// /// Номер помещения. /// # Диапазон: 1..10000 /// [ Display(Name = @"Номер помещения"), Description(@"Диапазон: 1..10000"), CustomRequired, CustomRange(1, 10000) ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартиры"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int RoomId { get; set; } // WARNING Не удалось найти свойство навигации для поля SipRoomError.room_id /// /// Сообщение об ошибке /// [ Display(Name = @"Сообщение об ошибке"), CustomRequired ] public string Message { get; set; } = null!; } /// /// Модель устройства /// [ Display(Name = @"Модель устройства") ] public partial class ModelModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор") ] public int Id { get; set; } /// /// Список возможностей /// public enum ModelCapabilityType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("CAPABILITY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Возможность смены пароля /// [ Display(Name = @"Возможность смены пароля"), JsonPropertyName("CHANGE_PASSWORD") ] ChangePassword = 1, /// /// DTMF коды /// [ Display(Name = @"DTMF коды"), JsonPropertyName("DTMF_CODE") ] DtmfCode = 2, /// /// Поддержка квартирного автосбора /// [ Display(Name = @"Поддержка квартирного автосбора"), JsonPropertyName("FLAT_AUTOCOLLECT") ] FlatAutocollect = 3, /// /// Поддержка звонков /// [ Display(Name = @"Поддержка звонков"), JsonPropertyName("SIP_CALL") ] SipCall = 4, /// /// Поддержка реконфигурирования устройства /// [ Display(Name = @"Поддержка реконфигурирования устройства"), JsonPropertyName("REINSTALL") ] Reinstall = 5, /// /// Аварийное открытие двери /// [ Display(Name = @"Аварийное открытие двери"), JsonPropertyName("EMERGENCY_DOOR") ] EmergencyDoor = 6, /// /// Поддержка бегущей строки /// [ Display(Name = @"Поддержка бегущей строки"), JsonPropertyName("TICKER") ] Ticker = 7, /// /// Вызов на номер консьержа /// [ Display(Name = @"Вызов на номер консьержа"), JsonPropertyName("CONCIERGE_CALL") ] ConciergeCall = 8, /// /// Поддержка умного автосбора /// [ Display(Name = @"Поддержка умного автосбора"), JsonPropertyName("AUTOCOLLECT") ] Autocollect = 9, /// /// Временные ключи /// [ Display(Name = @"Временные ключи"), JsonPropertyName("TEMPORARY_KEY") ] TemporaryKey = 10, /// /// Открытие двери /// [ Display(Name = @"Открытие двери"), JsonPropertyName("OPEN_DOOR") ] OpenDoor = 11, /// /// Поддержка калитки /// [ Display(Name = @"Поддержка калитки"), JsonPropertyName("GATE") ] Gate = 12, /// /// SIP видео вызов /// [ Display(Name = @"SIP видео вызов"), JsonPropertyName("SIP_VIDEO") ] SipVideo = 13, /// /// Постоянные ключи /// [ Display(Name = @"Постоянные ключи"), JsonPropertyName("CONSTANT_KEY") ] ConstantKey = 14, /// /// Поддержка аналоговых трубок /// [ Display(Name = @"Поддержка аналоговых трубок"), JsonPropertyName("CMS_PHONES") ] CmsPhones = 15, /// /// Поддержка шифрования ключей SL3 /// [ Display(Name = @"Поддержка шифрования ключей SL3"), JsonPropertyName("SL3") ] Sl3 = 16, /// /// Поддержка стандарта Syslog /// [ Display(Name = @"Поддержка стандарта Syslog"), JsonPropertyName("SYSLOG") ] Syslog = 17, /// /// Поддержка протокола NTP /// [ Display(Name = @"Поддержка протокола NTP"), JsonPropertyName("NTP") ] Ntp = 18, /// /// Распознавание лиц /// [ Display(Name = @"Распознавание лиц"), JsonPropertyName("FACE_RECOGNITION") ] FaceRecognition = 19, /// /// Видеокамера /// [ Display(Name = @"Видеокамера"), JsonPropertyName("CAMERA") ] Camera = 20, /// /// Вызов экстренной службы /// [ Display(Name = @"Вызов экстренной службы"), JsonPropertyName("EMERGENCY_CALL") ] EmergencyCall = 21, } } /// /// Запрос на получение количества SIP-трубок /// [ Display(Name = @"Запрос на получение количества SIP-трубок") ] public partial class GetSipPhoneCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public SipPhoneFilterModel? Filter { get; set; } } /// /// Ответ на запрос количества SIP-трубок /// [ Display(Name = @"Ответ на запрос количества SIP-трубок") ] public partial class GetSipPhoneCountResponseModel { /// /// Всего трубок /// [ Display(Name = @"Всего трубок") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetSipPhoneCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества SIP-трубок /// [ Display(Name = @"Ошибка запроса получения количества SIP-трубок") ] public partial class ErrorModel { } } /// /// Запрос на получение списка SIP-трубок /// [ Display(Name = @"Запрос на получение списка SIP-трубок") ] public partial class GetSipPhoneListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public SipPhoneFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public SipPhonePagingModel? Paging { get; set; } } /// /// Ответ на запрос списка SIP-трубок /// [ Display(Name = @"Ответ на запрос списка SIP-трубок") ] public partial class GetSipPhoneListResponseModel { /// /// SIP-трубка /// [ Display(Name = @"SIP-трубка") ] public SipPhoneModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetSipPhoneListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка SIP-трубок /// [ Display(Name = @"Ошибка запроса получения списка SIP-трубок") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } } } /// /// Запрос на получение SIP-трубки /// [ Display(Name = @"Запрос на получение SIP-трубки") ] public partial class GetSipPhoneRequestModel { /// /// Идентификатор трубки /// [ Display(Name = @"Идентификатор трубки"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос SIP-трубки /// [ Display(Name = @"Ответ на запрос SIP-трубки") ] public partial class GetSipPhoneResponseModel { /// /// SIP-трубка /// [ Display(Name = @"SIP-трубка") ] public SipPhoneModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetSipPhoneResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения баннера /// [ Display(Name = @"Ошибка запроса получения баннера") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение количества SIP-трубок /// [ Display(Name = @"Запрос на получение количества SIP-трубок") ] public partial class PostSipPhoneGetCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public SipPhoneFilterModel? Filter { get; set; } } /// /// Ответ на запрос количества SIP-трубок /// [ Display(Name = @"Ответ на запрос количества SIP-трубок") ] public partial class PostSipPhoneGetCountResponseModel { /// /// Всего трубок /// [ Display(Name = @"Всего трубок") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostSipPhoneGetCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества SIP-трубок /// [ Display(Name = @"Ошибка запроса получения количества SIP-трубок") ] public partial class ErrorModel { } } /// /// Запрос на получение списка SIP-трубок /// [ Display(Name = @"Запрос на получение списка SIP-трубок") ] public partial class PostSipPhoneGetListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public SipPhoneFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public SipPhonePagingModel? Paging { get; set; } } /// /// Ответ на запрос списка SIP-трубок /// [ Display(Name = @"Ответ на запрос списка SIP-трубок") ] public partial class PostSipPhoneGetListResponseModel { /// /// Список SIP-трубок /// [ Display(Name = @"Список SIP-трубок") ] public List Items { get; set; } = new(0); /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostSipPhoneGetListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка SIP-трубок /// [ Display(Name = @"Ошибка запроса получения списка SIP-трубок") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class SipPhonePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public SipPhonePagingModel.SipPhonePagingOrderByType OrderByType { get; set; } = SipPhonePagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public SipPhonePagingModel.SipPhonePagingDirectionType DirectionType { get; set; } = SipPhonePagingDirectionType.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 SipPhonePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По статусу доступности /// [ Display(Name = @"По статусу доступности"), JsonPropertyName("STATUS") ] Status = 2, /// /// Дата последнего изменения /// [ Display(Name = @"Дата последнего изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 3, /// /// Дата создания /// [ Display(Name = @"Дата создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 4, } /// /// Справочник типов направлений сортировки; /// # Тип: byte /// [ Description("Тип: byte") ] public enum SipPhonePagingDirectionType : 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 GetSystemStatusRequestModel { } /// /// Ответ на запрос проверки доступности сервиса /// [ Display(Name = @"Ответ на запрос проверки доступности сервиса") ] public partial class GetSystemStatusResponseModel { } /// /// Запрос удаления Trunk-конфигурации /// [ Display(Name = @"Запрос удаления Trunk-конфигурации") ] public partial class DeleteTrunkConfigRequestModel { /// /// Идентификатор. /// # Тип: Guid /// [ Display(Name = @"Идентификатор"), 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 Id { get; set; } } /// /// Ответ на запрос удаления Trunk-конфигурации /// [ Display(Name = @"Ответ на запрос удаления Trunk-конфигурации") ] public partial class DeleteTrunkConfigResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public DeleteTrunkConfigResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса восстановления Trunk-конфигурации /// [ Display(Name = @"Ошибка запроса восстановления Trunk-конфигурации") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение количества Trunk-конфигураций /// [ Display(Name = @"Запрос на получение количества Trunk-конфигураций") ] public partial class GetTrunkConfigCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public TrunkConfigFilterModel? Filter { get; set; } } /// /// Ответ на запрос количества Trunk-конфигураций /// [ Display(Name = @"Ответ на запрос количества Trunk-конфигураций") ] public partial class GetTrunkConfigCountResponseModel { /// /// Всего Trunk-конфигураций /// [ Display(Name = @"Всего Trunk-конфигураций") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetTrunkConfigCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества Trunk-конфигураций /// [ Display(Name = @"Ошибка запроса получения количества Trunk-конфигураций") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } } } /// /// Запрос на получение списка Trunk-конфигураций /// [ Display(Name = @"Запрос на получение списка Trunk-конфигураций") ] public partial class GetTrunkConfigListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public TrunkConfigFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public TrunkConfigPagingModel? Paging { get; set; } } /// /// Ответ на запрос списка Trunk-конфигураций /// [ Display(Name = @"Ответ на запрос списка Trunk-конфигураций") ] public partial class GetTrunkConfigListResponseModel { /// /// Trunk-конфигурация /// [ Display(Name = @"Trunk-конфигурация") ] public TrunkConfigModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetTrunkConfigListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка Trunk-конфигураций /// [ Display(Name = @"Ошибка запроса получения списка Trunk-конфигураций") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? ValidationError { get; set; } } } /// /// Запрос на получение Trunk-конфигурации /// [ Display(Name = @"Запрос на получение Trunk-конфигурации") ] public partial class GetTrunkConfigRequestModel { /// /// Идентификатор трубки. /// # Тип: Guid /// [ Display(Name = @"Идентификатор трубки"), 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 Id { get; set; } } /// /// Ответ на запрос Trunk-конфигурации /// [ Display(Name = @"Ответ на запрос Trunk-конфигурации") ] public partial class GetTrunkConfigResponseModel { /// /// Trunk-конфигурация /// [ Display(Name = @"Trunk-конфигурация") ] public TrunkConfigModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetTrunkConfigResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения баннера /// [ Display(Name = @"Ошибка запроса получения баннера") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос сохранения Trunk-конфигурации по идентификатору /// [ Display(Name = @"Запрос сохранения Trunk-конфигурации по идентификатору") ] public partial class PostTrunkConfigRequestModel { /// /// Trunk-конфигурации /// [ Display(Name = @"Trunk-конфигурации"), CustomRequired ] public TrunkConfigModel Data { get; set; } = null!; } /// /// Ответ на запрос сохранения Trunk-конфигурации по идентификатору /// [ Display(Name = @"Ответ на запрос сохранения Trunk-конфигурации по идентификатору") ] public partial class PostTrunkConfigResponseModel { /// /// Профиль шифрования /// [ Display(Name = @"Профиль шифрования") ] public TrunkConfigModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostTrunkConfigResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения Trunk-конфигурации /// [ Display(Name = @"Ошибка запроса сохранения Trunk-конфигурации") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public TrunkConfigModel.SavingErrorModel? Saving { get; set; } } } /// /// Запрос разархивации Trunk-конфигурации по идентификатору /// [ Display(Name = @"Запрос разархивации Trunk-конфигурации по идентификатору") ] public partial class PostTrunkConfigRestoreRequestModel { /// /// Идентификатор. /// # Тип: Guid /// [ Display(Name = @"Идентификатор"), 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 Id { get; set; } } /// /// Отвест на запрос разархивации Trunk-конфигурации по идентификатору /// [ Display(Name = @"Отвест на запрос разархивации Trunk-конфигурации по идентификатору") ] public partial class PostTrunkConfigRestoreResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostTrunkConfigRestoreResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса разархивации Trunk-конфигурации /// [ Display(Name = @"Ошибка запроса разархивации Trunk-конфигурации") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class TrunkConfigPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public TrunkConfigPagingModel.TrunkConfigPagingOrderByType OrderByType { get; set; } = TrunkConfigPagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public TrunkConfigPagingModel.TrunkConfigPagingDirectionType DirectionType { get; set; } = TrunkConfigPagingDirectionType.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 TrunkConfigPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// Дата последнего изменения /// [ Display(Name = @"Дата последнего изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 2, /// /// Дата создания /// [ Display(Name = @"Дата создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 3, } /// /// Справочник типов направлений сортировки; /// # Тип: byte /// [ Description("Тип: byte") ] public enum TrunkConfigPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } }