- Delete dead Notify Worker (NoOp handler) - Move 51 source files (endpoints, contracts, services, compat stores) - Transform namespaces from Notifier.WebService to Notify.WebService - Update DI registrations, WebSocket support, v2 endpoint mapping - Comment out notifier-web in compose, update gateway routes - Update architecture docs, port registry, rollout matrix - Notifier Worker stays as separate delivery engine container Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using System.Collections.Immutable;
|
|
|
|
namespace StellaOps.Notify.WebService.Contracts;
|
|
|
|
/// <summary>
|
|
/// Request to create or update a quiet hours schedule.
|
|
/// </summary>
|
|
public sealed class QuietHoursUpsertRequest
|
|
{
|
|
public required string Name { get; init; }
|
|
public required string CronExpression { get; init; }
|
|
public required TimeSpan Duration { get; init; }
|
|
public required string TimeZone { get; init; }
|
|
public string? ChannelId { get; init; }
|
|
public bool? Enabled { get; init; }
|
|
public string? Description { get; init; }
|
|
public ImmutableDictionary<string, string>? Metadata { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Request to create or update a maintenance window.
|
|
/// </summary>
|
|
public sealed class MaintenanceWindowUpsertRequest
|
|
{
|
|
public required string Name { get; init; }
|
|
public required DateTimeOffset StartsAt { get; init; }
|
|
public required DateTimeOffset EndsAt { get; init; }
|
|
public bool? SuppressNotifications { get; init; }
|
|
public string? Reason { get; init; }
|
|
public ImmutableArray<string> ChannelIds { get; init; } = [];
|
|
public ImmutableArray<string> RuleIds { get; init; } = [];
|
|
public ImmutableDictionary<string, string>? Metadata { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Request to create or update a throttle configuration.
|
|
/// </summary>
|
|
public sealed class ThrottleConfigUpsertRequest
|
|
{
|
|
public required string Name { get; init; }
|
|
public required TimeSpan DefaultWindow { get; init; }
|
|
public int? MaxNotificationsPerWindow { get; init; }
|
|
public string? ChannelId { get; init; }
|
|
public bool? IsDefault { get; init; }
|
|
public bool? Enabled { get; init; }
|
|
public string? Description { get; init; }
|
|
public ImmutableDictionary<string, string>? Metadata { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Request to create an operator override.
|
|
/// </summary>
|
|
public sealed class OperatorOverrideCreateRequest
|
|
{
|
|
public required string OverrideType { get; init; }
|
|
public required DateTimeOffset ExpiresAt { get; init; }
|
|
public string? ChannelId { get; init; }
|
|
public string? RuleId { get; init; }
|
|
public string? Reason { get; init; }
|
|
}
|