Skip to content
9 changes: 9 additions & 0 deletions aruna/api/storage/models/v2/models.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
75 changes: 64 additions & 11 deletions aruna/api/storage/services/v2/info_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
}

message GetAnnouncementRequest {
string announcement_id = 1;
}

message GetAnnouncementResponse {
Announcement announcement = 1;
}