diff --git a/aruna/api/storage/models/v2/models.proto b/aruna/api/storage/models/v2/models.proto index 7073fc9f..c0da33e2 100644 --- a/aruna/api/storage/models/v2/models.proto +++ b/aruna/api/storage/models/v2/models.proto @@ -5,6 +5,15 @@ option go_package = "github.com/ArunaStorage/go-api/v2/aruna/api/storage/models/ package aruna.api.storage.models.v2; // --------------- ENUMS ------------------------ +// Defines the public announcement type +enum AnnouncementType { + ANNOUNCEMENT_TYPE_UNSPECIFIED = 0; + ANNOUNCEMENT_TYPE_ORGA = 1; + ANNOUNCEMENT_TYPE_RELEASE = 2; + ANNOUNCEMENT_TYPE_UPDATE = 3; + ANNOUNCEMENT_TYPE_MAINTENANCE = 4; + ANNOUNCEMENT_TYPE_BLOG = 5; +} // Dataclass defines the confidentiality of the object enum DataClass { diff --git a/aruna/api/storage/services/v2/info_service.proto b/aruna/api/storage/services/v2/info_service.proto index 2e28431b..c3abfa33 100644 --- a/aruna/api/storage/services/v2/info_service.proto +++ b/aruna/api/storage/services/v2/info_service.proto @@ -53,17 +53,41 @@ service StorageStatusService { }; } - // GetAnnouncements + // Get Announcements // // Status: BETA // - // Query global announcements + // Query global announcements optionally filtered by specific ids. + // - Returns all announcements if no ids are provided + // - Returns only the specific announcements if ids are provided rpc GetAnnouncements(GetAnnouncementsRequest) returns (GetAnnouncementsResponse) { option (google.api.http) = { get : "/v2/info/announcements" }; } + // GetAnnouncementsByType + // + // Status: BETA + // + // Query global announcements by type + rpc GetAnnouncementsByType(GetAnnouncementsByTypeRequest) returns (GetAnnouncementsByTypeResponse) { + option (google.api.http) = { + get : "/v2/info/announcements/{announcement_type}" + }; + } + + // Get a specific Announcement + // + // Status: BETA + // + // Query a specific global announcement by its id + rpc GetAnnouncement(GetAnnouncementRequest) returns (GetAnnouncementResponse) { + option (google.api.http) = { + get : "/v2/info/announcements/{announcement_id}" + }; + } + // SetAnnouncements // // Status: BETA @@ -131,23 +155,52 @@ message GetPubkeysResponse { repeated storage.models.v2.Pubkey pubkeys = 1; } +/* -------------------------------------*/ +/* ----- Public Announcements ----------*/ +/* -------------------------------------*/ message Announcement { - string id = 1; - string content = 2; - google.protobuf.Timestamp created_at = 3; + string announcement_id = 1; + storage.models.v2.AnnouncementType announcement_type = 2; + string title = 3; + string teaser = 4; + string content = 5; + string created_by = 6; + google.protobuf.Timestamp created_at = 7; + string modified_by = 8; + google.protobuf.Timestamp modified_at = 9; } -message GetAnnouncementsRequest {} +message SetAnnouncementsRequest { + repeated Announcement announcements_upsert = 1; + repeated string announcements_delete = 2; +} + +message SetAnnouncementsResponse { + repeated Announcement announcements = 1; +} + +message GetAnnouncementsRequest { + repeated string announcement_ids = 1; + storage.models.v2.PageRequest page = 2; +} message GetAnnouncementsResponse { repeated Announcement announcements = 1; } -message SetAnnouncementsRequest { - repeated Announcement announcements_upsert = 1; - repeated string announcements_delete = 2; +message GetAnnouncementsByTypeRequest { + storage.models.v2.AnnouncementType announcement_type = 1; + storage.models.v2.PageRequest page = 2; } -message SetAnnouncementsResponse { +message GetAnnouncementsByTypeResponse { repeated Announcement announcements = 1; -} \ No newline at end of file +} + +message GetAnnouncementRequest { + string announcement_id = 1; +} + +message GetAnnouncementResponse { + Announcement announcement = 1; +}