blob: c2240c61208d9499b99fd68590738a32f0bcb024 [file]
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.apps.alertcenter.v1beta1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/any.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option csharp_namespace = "Google.Apps.AlertCenter.V1Beta1";
option go_package = "google.golang.org/genproto/googleapis/apps/alertcenter/v1beta1;alertcenter";
option java_multiple_files = true;
option java_outer_classname = "AlertCenterProto";
option java_package = "com.google.apps.alertcenter.v1beta1";
option objc_class_prefix = "GAIC";
option php_namespace = "Google\\Apps\\AlertCenter\\V1beta1";
option ruby_package = "Google::Apps::AlertCenter::V1beta1";
// Google Workspace Alert Center API (beta).
service AlertCenterService {
option (google.api.default_host) = "alertcenter.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/apps.alerts";
// Lists the alerts.
rpc ListAlerts(ListAlertsRequest) returns (ListAlertsResponse) {
option (google.api.http) = {
get: "/v1beta1/alerts"
};
}
// Gets the specified alert. Attempting to get a nonexistent alert returns
// `NOT_FOUND` error.
rpc GetAlert(GetAlertRequest) returns (Alert) {
option (google.api.http) = {
get: "/v1beta1/alerts/{alert_id}"
};
}
// Marks the specified alert for deletion. An alert that has been marked for
// deletion is removed from Alert Center after 30 days.
// Marking an alert for deletion has no effect on an alert which has
// already been marked for deletion. Attempting to mark a nonexistent alert
// for deletion results in a `NOT_FOUND` error.
rpc DeleteAlert(DeleteAlertRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1beta1/alerts/{alert_id}"
};
}
// Restores, or "undeletes", an alert that was marked for deletion within the
// past 30 days. Attempting to undelete an alert which was marked for deletion
// over 30 days ago (which has been removed from the Alert Center database) or
// a nonexistent alert returns a `NOT_FOUND` error. Attempting to
// undelete an alert which has not been marked for deletion has no effect.
rpc UndeleteAlert(UndeleteAlertRequest) returns (Alert) {
option (google.api.http) = {
post: "/v1beta1/alerts/{alert_id}:undelete"
body: "*"
};
}
// Creates new feedback for an alert. Attempting to create a feedback for
// a non-existent alert returns `NOT_FOUND` error. Attempting to create a
// feedback for an alert that is marked for deletion returns
// `FAILED_PRECONDITION' error.
rpc CreateAlertFeedback(CreateAlertFeedbackRequest) returns (AlertFeedback) {
option (google.api.http) = {
post: "/v1beta1/alerts/{alert_id}/feedback"
body: "feedback"
};
}
// Lists all the feedback for an alert. Attempting to list feedbacks for
// a non-existent alert returns `NOT_FOUND` error.
rpc ListAlertFeedback(ListAlertFeedbackRequest)
returns (ListAlertFeedbackResponse) {
option (google.api.http) = {
get: "/v1beta1/alerts/{alert_id}/feedback"
};
}
// Returns the metadata of an alert. Attempting to get metadata for
// a non-existent alert returns `NOT_FOUND` error.
rpc GetAlertMetadata(GetAlertMetadataRequest) returns (AlertMetadata) {
option (google.api.http) = {
get: "/v1beta1/alerts/{alert_id}/metadata"
};
}
// Returns customer-level settings.
rpc GetSettings(GetSettingsRequest) returns (Settings) {
option (google.api.http) = {
get: "/v1beta1/settings"
};
}
// Updates the customer-level settings.
rpc UpdateSettings(UpdateSettingsRequest) returns (Settings) {
option (google.api.http) = {
patch: "/v1beta1/settings"
body: "settings"
};
}
// Performs batch delete operation on alerts.
rpc BatchDeleteAlerts(BatchDeleteAlertsRequest)
returns (BatchDeleteAlertsResponse) {
option (google.api.http) = {
post: "/v1beta1/alerts:batchDelete"
body: "*"
};
}
// Performs batch undelete operation on alerts.
rpc BatchUndeleteAlerts(BatchUndeleteAlertsRequest)
returns (BatchUndeleteAlertsResponse) {
option (google.api.http) = {
post: "/v1beta1/alerts:batchUndelete"
body: "*"
};
}
}
// An alert affecting a customer.
message Alert {
// Output only. The unique identifier of the Google Workspace account of the
// customer.
string customer_id = 1;
// Output only. The unique identifier for the alert.
string alert_id = 2;
// Output only. The time this alert was created.
google.protobuf.Timestamp create_time = 3;
// Required. The time the event that caused this alert was started or
// detected.
google.protobuf.Timestamp start_time = 4;
// Optional. The time the event that caused this alert ceased being active.
// If provided, the end time must not be earlier than the start time.
// If not provided, it indicates an ongoing alert.
google.protobuf.Timestamp end_time = 5;
// Required. The type of the alert.
// This is output only after alert is created.
// For a list of available alert types see
// [Google Workspace Alert
// types](https://developers.google.com/admin-sdk/alertcenter/reference/alert-types).
string type = 6;
// Required. A unique identifier for the system that reported the alert.
// This is output only after alert is created.
//
// Supported sources are any of the following:
//
// * Google Operations
// * Mobile device management
// * Gmail phishing
// * Data Loss Prevention
// * Domain wide takeout
// * State sponsored attack
// * Google identity
// * Apps outage
string source = 7;
// Optional. The data associated with this alert, for example
// [google.apps.alertcenter.type.DeviceCompromised]
// [google.apps.alertcenter.type.DeviceCompromised].
google.protobuf.Any data = 8;
// Output only. An optional
// [Security Investigation Tool](https://support.google.com/a/answer/7575955)
// query for this alert.
string security_investigation_tool_link = 9;
// Output only. `True` if this alert is marked for deletion.
bool deleted = 11;
// Output only. The metadata associated with this alert.
AlertMetadata metadata = 12;
// Output only. The time this alert was last updated.
google.protobuf.Timestamp update_time = 13;
// Optional. `etag` is used for optimistic concurrency control as a way to
// help prevent simultaneous updates of an alert from overwriting each other.
// It is strongly suggested that systems make use of the `etag` in the
// read-modify-write cycle to perform alert updates in order to avoid race
// conditions: An `etag` is returned in the response which contains alerts,
// and systems are expected to put that etag in the request to update alert to
// ensure that their change will be applied to the same version of the alert.
//
// If no `etag` is provided in the call to update alert, then the existing
// alert is overwritten blindly.
string etag = 14;
}
// A customer feedback about an alert.
message AlertFeedback {
// Output only. The unique identifier of the Google Workspace account of the
// customer.
string customer_id = 1;
// Output only. The alert identifier.
string alert_id = 2;
// Output only. The unique identifier for the feedback.
string feedback_id = 3;
// Output only. The time this feedback was created.
google.protobuf.Timestamp create_time = 4;
// Required. The type of the feedback.
AlertFeedbackType type = 5;
// Output only. The email of the user that provided the feedback.
string email = 6;
}
// An alert metadata.
message AlertMetadata {
// Output only. The unique identifier of the Google Workspace account of the
// customer.
string customer_id = 1;
// Output only. The alert identifier.
string alert_id = 2;
// The current status of the alert.
// The supported values are the following:
//
// * NOT_STARTED
// * IN_PROGRESS
// * CLOSED
string status = 4;
// The email address of the user assigned to the alert.
string assignee = 5;
// Output only. The time this metadata was last updated.
google.protobuf.Timestamp update_time = 6;
// The severity value of the alert. Alert Center will set this field at alert
// creation time, default's to an empty string when it could not be
// determined.
// The supported values for update actions on this field are the following:
//
// * HIGH
// * MEDIUM
// * LOW
string severity = 7;
// Optional. `etag` is used for optimistic concurrency control as a way to
// help prevent simultaneous updates of an alert metadata from overwriting
// each other. It is strongly suggested that systems make use of the `etag` in
// the read-modify-write cycle to perform metadata updates in order to avoid
// race conditions: An `etag` is returned in the response which contains alert
// metadata, and systems are expected to put that etag in the request to
// update alert metadata to ensure that their change will be applied to the
// same version of the alert metadata.
//
// If no `etag` is provided in the call to update alert metadata, then the
// existing alert metadata is overwritten blindly.
string etag = 8;
}
// The type of alert feedback.
enum AlertFeedbackType {
// The feedback type is not specified.
ALERT_FEEDBACK_TYPE_UNSPECIFIED = 0;
// The alert report is not useful.
NOT_USEFUL = 1;
// The alert report is somewhat useful.
SOMEWHAT_USEFUL = 2;
// The alert report is very useful.
VERY_USEFUL = 3;
}
// Customer-level settings.
message Settings {
// Settings for callback notifications.
// For more details see [Google Workspace Alert
// Notification](https://developers.google.com/admin-sdk/alertcenter/guides/notifications).
message Notification {
// The format of the payload.
enum PayloadFormat {
// Payload format is not specified (will use JSON as default).
PAYLOAD_FORMAT_UNSPECIFIED = 0;
// Use JSON.
JSON = 1;
}
// A reference to a Cloud Pubsub topic.
//
// To register for notifications, the owner of the topic must grant
// `alerts-api-push-notifications@system.gserviceaccount.com` the
// `projects.topics.publish` permission.
message CloudPubsubTopic {
// The `name` field of a Cloud Pubsub [Topic]
// (https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics#Topic).
string topic_name = 1;
// Optional. The format of the payload that would be sent.
// If not specified the format will be JSON.
PayloadFormat payload_format = 2;
}
// Exactly one destination to be specified.
oneof destination {
// A Google Cloud Pub/sub topic destination.
CloudPubsubTopic cloud_pubsub_topic = 1;
}
}
// The list of notifications.
repeated Notification notifications = 1;
}
// A request to perform batch delete on alerts.
message BatchDeleteAlertsRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alerts are associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The list of alert IDs to delete.
repeated string alert_id = 2;
}
// Response to batch delete operation on alerts.
message BatchDeleteAlertsResponse {
// The successful list of alert IDs.
repeated string success_alert_ids = 1;
// The status details for each failed `alert_id`.
map<string, google.rpc.Status> failed_alert_status = 2;
}
// A request to perform batch undelete on alerts.
message BatchUndeleteAlertsRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alerts are associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The list of alert IDs to undelete.
repeated string alert_id = 2;
}
// Response to batch undelete operation on alerts.
message BatchUndeleteAlertsResponse {
// The successful list of alert IDs.
repeated string success_alert_ids = 1;
// The status details for each failed `alert_id`.
map<string, google.rpc.Status> failed_alert_status = 2;
}
// An alert listing request.
message ListAlertsRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alerts are associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Optional. The requested page size. Server may return fewer items than
// requested. If unspecified, server picks an appropriate default.
int32 page_size = 2;
// Optional. A token identifying a page of results the server should return.
// If empty, a new iteration is started. To continue an iteration, pass in
// the value from the previous ListAlertsResponse's
// [next_page_token][google.apps.alertcenter.v1beta1.ListAlertsResponse.next_page_token]
// field.
string page_token = 3;
// Optional. A query string for filtering alert results.
// For more details, see [Query
// filters](https://developers.google.com/admin-sdk/alertcenter/guides/query-filters)
// and [Supported query filter
// fields](https://developers.google.com/admin-sdk/alertcenter/reference/filter-fields#alerts.list).
string filter = 4;
// Optional. The sort order of the list results.
// If not specified results may be returned in arbitrary order.
// You can sort the results in descending order based on the creation
// timestamp using `order_by="create_time desc"`.
// Currently, supported sorting are `create_time asc`, `create_time desc`,
// `update_time desc`
string order_by = 5;
}
// Response message for an alert listing request.
message ListAlertsResponse {
// The list of alerts.
repeated Alert alerts = 1;
// The token for the next page. If not empty, indicates that there may be more
// alerts that match the listing request; this value can be used in a
// subsequent
// [ListAlertsRequest][google.apps.alertcenter.v1beta1.ListAlertsRequest] to
// get alerts continuing from last result of the current list call.
string next_page_token = 2;
}
// Request for a specific alert.
message GetAlertRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert is associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The identifier of the alert to retrieve.
string alert_id = 2;
}
// A request to mark a specific alert for deletion.
message DeleteAlertRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert is associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The identifier of the alert to delete.
string alert_id = 2;
}
// A request to undelete a specific alert that was marked for deletion.
message UndeleteAlertRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert is associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The identifier of the alert to undelete.
string alert_id = 2;
}
// A request to create a new alert feedback.
message CreateAlertFeedbackRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert is associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The identifier of the alert this feedback belongs to.
string alert_id = 2;
// Required. The new alert feedback to create.
AlertFeedback feedback = 3;
}
// An alert feedback listing request.
message ListAlertFeedbackRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert is associated with. The `customer_id` must have the
// initial "C" stripped (for example, `046psxkn`). Inferred from the caller
// identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The alert identifier.
// The "-" wildcard could be used to represent all alerts.
string alert_id = 2;
// Optional. A query string for filtering alert feedback results.
// For more details, see [Query
// filters](https://developers.google.com/admin-sdk/alertcenter/guides/query-filters)
// and [Supported query filter
// fields](https://developers.google.com/admin-sdk/alertcenter/reference/filter-fields#alerts.feedback.list).
string filter = 3;
}
// Response message for an alert feedback listing request.
message ListAlertFeedbackResponse {
// The list of alert feedback.
// Feedback entries for each alert are ordered by creation time descending.
repeated AlertFeedback feedback = 1;
}
// Get the alert metadata.
message GetAlertMetadataRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert metadata is associated with. The `customer_id` must
// have the initial "C" stripped (for example, `046psxkn`). Inferred from the
// caller identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// Required. The identifier of the alert this metadata belongs to.
string alert_id = 2;
}
// Get the customer level settings.
message GetSettingsRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert settings are associated with. The `customer_id` must/
// have the initial "C" stripped (for example, `046psxkn`). Inferred from the
// caller identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
}
// Update the customer level settings.
message UpdateSettingsRequest {
// Optional. The unique identifier of the Google Workspace account of the
// customer the alert settings are associated with. The `customer_id` must
// have the initial "C" stripped (for example, `046psxkn`). Inferred from the
// caller identity if not provided. [Find your customer
// ID](https://support.google.com/cloudidentity/answer/10070793).
string customer_id = 1;
// The customer settings to update.
Settings settings = 2;
}