From 7a09f8e2f6a601627c34276bcf951df5ec9b4937 Mon Sep 17 00:00:00 2001 From: minhtrannhat Date: Tue, 17 Dec 2024 12:00:00 -0500 Subject: [PATCH] feat(contracts): add API DTOs and request/response contracts --- src/IncidentOps.Contracts/Auth/AuthResponse.cs | 5 +++++ src/IncidentOps.Contracts/Auth/LoginRequest.cs | 3 +++ src/IncidentOps.Contracts/Auth/LogoutRequest.cs | 3 +++ src/IncidentOps.Contracts/Auth/MeResponse.cs | 3 +++ .../Auth/RefreshRequest.cs | 3 +++ .../Auth/RegisterRequest.cs | 3 +++ .../Auth/SwitchOrgRequest.cs | 3 +++ .../IncidentOps.Contracts.csproj | 9 +++++++++ .../Incidents/CommentRequest.cs | 3 +++ .../Incidents/CreateIncidentRequest.cs | 3 +++ .../Incidents/IncidentDto.cs | 17 +++++++++++++++++ .../Incidents/IncidentEventDto.cs | 10 ++++++++++ .../Incidents/IncidentListResponse.cs | 3 +++ .../Incidents/TransitionRequest.cs | 3 +++ .../Orgs/CreateNotificationTargetRequest.cs | 3 +++ .../Orgs/NotificationTargetDto.cs | 3 +++ src/IncidentOps.Contracts/Orgs/OrgDto.cs | 3 +++ src/IncidentOps.Contracts/Orgs/OrgMemberDto.cs | 3 +++ .../Services/CreateServiceRequest.cs | 3 +++ .../Services/ServiceDto.cs | 3 +++ 20 files changed, 89 insertions(+) create mode 100644 src/IncidentOps.Contracts/Auth/AuthResponse.cs create mode 100644 src/IncidentOps.Contracts/Auth/LoginRequest.cs create mode 100644 src/IncidentOps.Contracts/Auth/LogoutRequest.cs create mode 100644 src/IncidentOps.Contracts/Auth/MeResponse.cs create mode 100644 src/IncidentOps.Contracts/Auth/RefreshRequest.cs create mode 100644 src/IncidentOps.Contracts/Auth/RegisterRequest.cs create mode 100644 src/IncidentOps.Contracts/Auth/SwitchOrgRequest.cs create mode 100644 src/IncidentOps.Contracts/IncidentOps.Contracts.csproj create mode 100644 src/IncidentOps.Contracts/Incidents/CommentRequest.cs create mode 100644 src/IncidentOps.Contracts/Incidents/CreateIncidentRequest.cs create mode 100644 src/IncidentOps.Contracts/Incidents/IncidentDto.cs create mode 100644 src/IncidentOps.Contracts/Incidents/IncidentEventDto.cs create mode 100644 src/IncidentOps.Contracts/Incidents/IncidentListResponse.cs create mode 100644 src/IncidentOps.Contracts/Incidents/TransitionRequest.cs create mode 100644 src/IncidentOps.Contracts/Orgs/CreateNotificationTargetRequest.cs create mode 100644 src/IncidentOps.Contracts/Orgs/NotificationTargetDto.cs create mode 100644 src/IncidentOps.Contracts/Orgs/OrgDto.cs create mode 100644 src/IncidentOps.Contracts/Orgs/OrgMemberDto.cs create mode 100644 src/IncidentOps.Contracts/Services/CreateServiceRequest.cs create mode 100644 src/IncidentOps.Contracts/Services/ServiceDto.cs diff --git a/src/IncidentOps.Contracts/Auth/AuthResponse.cs b/src/IncidentOps.Contracts/Auth/AuthResponse.cs new file mode 100644 index 0000000..d9eb5b6 --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/AuthResponse.cs @@ -0,0 +1,5 @@ +namespace IncidentOps.Contracts.Auth; + +public record AuthResponse(string AccessToken, string RefreshToken, ActiveOrgDto ActiveOrg); + +public record ActiveOrgDto(Guid Id, string Name, string Slug, string Role); diff --git a/src/IncidentOps.Contracts/Auth/LoginRequest.cs b/src/IncidentOps.Contracts/Auth/LoginRequest.cs new file mode 100644 index 0000000..1e09a8c --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/LoginRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record LoginRequest(string Email, string Password, Guid? OrgId = null); diff --git a/src/IncidentOps.Contracts/Auth/LogoutRequest.cs b/src/IncidentOps.Contracts/Auth/LogoutRequest.cs new file mode 100644 index 0000000..ca718e3 --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/LogoutRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record LogoutRequest(string RefreshToken); diff --git a/src/IncidentOps.Contracts/Auth/MeResponse.cs b/src/IncidentOps.Contracts/Auth/MeResponse.cs new file mode 100644 index 0000000..935d9b2 --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/MeResponse.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record MeResponse(Guid Id, string Email, string DisplayName, ActiveOrgDto ActiveOrg); diff --git a/src/IncidentOps.Contracts/Auth/RefreshRequest.cs b/src/IncidentOps.Contracts/Auth/RefreshRequest.cs new file mode 100644 index 0000000..e125f0b --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/RefreshRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record RefreshRequest(string RefreshToken); diff --git a/src/IncidentOps.Contracts/Auth/RegisterRequest.cs b/src/IncidentOps.Contracts/Auth/RegisterRequest.cs new file mode 100644 index 0000000..6cced21 --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/RegisterRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record RegisterRequest(string Email, string Password, string DisplayName); diff --git a/src/IncidentOps.Contracts/Auth/SwitchOrgRequest.cs b/src/IncidentOps.Contracts/Auth/SwitchOrgRequest.cs new file mode 100644 index 0000000..e8b9fe9 --- /dev/null +++ b/src/IncidentOps.Contracts/Auth/SwitchOrgRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Auth; + +public record SwitchOrgRequest(string RefreshToken, Guid OrgId); diff --git a/src/IncidentOps.Contracts/IncidentOps.Contracts.csproj b/src/IncidentOps.Contracts/IncidentOps.Contracts.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/src/IncidentOps.Contracts/IncidentOps.Contracts.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/src/IncidentOps.Contracts/Incidents/CommentRequest.cs b/src/IncidentOps.Contracts/Incidents/CommentRequest.cs new file mode 100644 index 0000000..f19cc4b --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/CommentRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Incidents; + +public record CommentRequest(string Content); diff --git a/src/IncidentOps.Contracts/Incidents/CreateIncidentRequest.cs b/src/IncidentOps.Contracts/Incidents/CreateIncidentRequest.cs new file mode 100644 index 0000000..4450c83 --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/CreateIncidentRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Incidents; + +public record CreateIncidentRequest(string Title, string? Description); diff --git a/src/IncidentOps.Contracts/Incidents/IncidentDto.cs b/src/IncidentOps.Contracts/Incidents/IncidentDto.cs new file mode 100644 index 0000000..249a1de --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/IncidentDto.cs @@ -0,0 +1,17 @@ +namespace IncidentOps.Contracts.Incidents; + +public record IncidentDto( + Guid Id, + Guid ServiceId, + string ServiceName, + string Title, + string? Description, + string Status, + int Version, + Guid? AssignedToUserId, + string? AssignedToUserName, + DateTime CreatedAt, + DateTime? AcknowledgedAt, + DateTime? MitigatedAt, + DateTime? ResolvedAt +); diff --git a/src/IncidentOps.Contracts/Incidents/IncidentEventDto.cs b/src/IncidentOps.Contracts/Incidents/IncidentEventDto.cs new file mode 100644 index 0000000..a94107d --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/IncidentEventDto.cs @@ -0,0 +1,10 @@ +namespace IncidentOps.Contracts.Incidents; + +public record IncidentEventDto( + Guid Id, + string EventType, + Guid? ActorUserId, + string? ActorUserName, + string? Payload, + DateTime CreatedAt +); diff --git a/src/IncidentOps.Contracts/Incidents/IncidentListResponse.cs b/src/IncidentOps.Contracts/Incidents/IncidentListResponse.cs new file mode 100644 index 0000000..9993930 --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/IncidentListResponse.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Incidents; + +public record IncidentListResponse(IReadOnlyList Items, string? NextCursor); diff --git a/src/IncidentOps.Contracts/Incidents/TransitionRequest.cs b/src/IncidentOps.Contracts/Incidents/TransitionRequest.cs new file mode 100644 index 0000000..e7f6b31 --- /dev/null +++ b/src/IncidentOps.Contracts/Incidents/TransitionRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Incidents; + +public record TransitionRequest(string Action, int ExpectedVersion); diff --git a/src/IncidentOps.Contracts/Orgs/CreateNotificationTargetRequest.cs b/src/IncidentOps.Contracts/Orgs/CreateNotificationTargetRequest.cs new file mode 100644 index 0000000..6107aea --- /dev/null +++ b/src/IncidentOps.Contracts/Orgs/CreateNotificationTargetRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Orgs; + +public record CreateNotificationTargetRequest(string Name, string TargetType, string Configuration, bool IsEnabled); diff --git a/src/IncidentOps.Contracts/Orgs/NotificationTargetDto.cs b/src/IncidentOps.Contracts/Orgs/NotificationTargetDto.cs new file mode 100644 index 0000000..247aab6 --- /dev/null +++ b/src/IncidentOps.Contracts/Orgs/NotificationTargetDto.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Orgs; + +public record NotificationTargetDto(Guid Id, string Name, string TargetType, string Configuration, bool IsEnabled, DateTime CreatedAt); diff --git a/src/IncidentOps.Contracts/Orgs/OrgDto.cs b/src/IncidentOps.Contracts/Orgs/OrgDto.cs new file mode 100644 index 0000000..90f369c --- /dev/null +++ b/src/IncidentOps.Contracts/Orgs/OrgDto.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Orgs; + +public record OrgDto(Guid Id, string Name, string Slug, string Role); diff --git a/src/IncidentOps.Contracts/Orgs/OrgMemberDto.cs b/src/IncidentOps.Contracts/Orgs/OrgMemberDto.cs new file mode 100644 index 0000000..fdc20c9 --- /dev/null +++ b/src/IncidentOps.Contracts/Orgs/OrgMemberDto.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Orgs; + +public record OrgMemberDto(Guid Id, Guid UserId, string Email, string DisplayName, string Role, DateTime JoinedAt); diff --git a/src/IncidentOps.Contracts/Services/CreateServiceRequest.cs b/src/IncidentOps.Contracts/Services/CreateServiceRequest.cs new file mode 100644 index 0000000..a6c4174 --- /dev/null +++ b/src/IncidentOps.Contracts/Services/CreateServiceRequest.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Services; + +public record CreateServiceRequest(string Name, string Slug, string? Description); diff --git a/src/IncidentOps.Contracts/Services/ServiceDto.cs b/src/IncidentOps.Contracts/Services/ServiceDto.cs new file mode 100644 index 0000000..b13827e --- /dev/null +++ b/src/IncidentOps.Contracts/Services/ServiceDto.cs @@ -0,0 +1,3 @@ +namespace IncidentOps.Contracts.Services; + +public record ServiceDto(Guid Id, string Name, string Slug, string? Description, DateTime CreatedAt);