// Copyright 2024 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.chat.v1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/chat/v1/event_payload.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Apps.Chat.V1"; option go_package = "cloud.google.com/go/chat/apiv1/chatpb;chatpb"; option java_multiple_files = true; option java_outer_classname = "SpaceEventProto"; option java_package = "com.google.chat.v1"; option php_namespace = "Google\\Apps\\Chat\\V1"; option ruby_package = "Google::Apps::Chat::V1"; // An event that represents a change or activity in a Google Chat space. To // learn more, see [Work with events from Google // Chat](https://developers.google.com/workspace/chat/events-overview). message SpaceEvent { option (google.api.resource) = { type: "chat.googleapis.com/SpaceEvent" pattern: "spaces/{space}/spaceEvents/{space_event}" }; // Resource name of the space event. // // Format: `spaces/{space}/spaceEvents/{spaceEvent}` string name = 1; // Time when the event occurred. google.protobuf.Timestamp event_time = 3; // Type of space event. Each event type has a batch version, which // represents multiple instances of the event type that occur in a short // period of time. For `spaceEvents.list()` requests, omit batch event types // in your query filter. By default, the server returns both event type and // its batch version. // // Supported event types for // [messages](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages): // // * New message: `google.workspace.chat.message.v1.created` // * Updated message: `google.workspace.chat.message.v1.updated` // * Deleted message: `google.workspace.chat.message.v1.deleted` // * Multiple new messages: `google.workspace.chat.message.v1.batchCreated` // * Multiple updated messages: // `google.workspace.chat.message.v1.batchUpdated` // * Multiple deleted messages: // `google.workspace.chat.message.v1.batchDeleted` // // Supported event types for // [memberships](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.members): // // * New membership: `google.workspace.chat.membership.v1.created` // * Updated membership: `google.workspace.chat.membership.v1.updated` // * Deleted membership: `google.workspace.chat.membership.v1.deleted` // * Multiple new memberships: // `google.workspace.chat.membership.v1.batchCreated` // * Multiple updated memberships: // `google.workspace.chat.membership.v1.batchUpdated` // * Multiple deleted memberships: // `google.workspace.chat.membership.v1.batchDeleted` // // Supported event types for // [reactions](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions): // // * New reaction: `google.workspace.chat.reaction.v1.created` // * Deleted reaction: `google.workspace.chat.reaction.v1.deleted` // * Multiple new reactions: // `google.workspace.chat.reaction.v1.batchCreated` // * Multiple deleted reactions: // `google.workspace.chat.reaction.v1.batchDeleted` // // Supported event types about the // [space](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces): // // * Updated space: `google.workspace.chat.space.v1.updated` // * Multiple space updates: `google.workspace.chat.space.v1.batchUpdated` string event_type = 6; oneof payload { // Event payload for a new message. // // Event type: `google.workspace.chat.message.v1.created` MessageCreatedEventData message_created_event_data = 12; // Event payload for an updated message. // // Event type: `google.workspace.chat.message.v1.updated` MessageUpdatedEventData message_updated_event_data = 13; // Event payload for a deleted message. // // Event type: `google.workspace.chat.message.v1.deleted` MessageDeletedEventData message_deleted_event_data = 14; // Event payload for multiple new messages. // // Event type: `google.workspace.chat.message.v1.batchCreated` MessageBatchCreatedEventData message_batch_created_event_data = 26; // Event payload for multiple updated messages. // // Event type: `google.workspace.chat.message.v1.batchUpdated` MessageBatchUpdatedEventData message_batch_updated_event_data = 27; // Event payload for multiple deleted messages. // // Event type: `google.workspace.chat.message.v1.batchDeleted` MessageBatchDeletedEventData message_batch_deleted_event_data = 28; // Event payload for a space update. // // Event type: `google.workspace.chat.space.v1.updated` SpaceUpdatedEventData space_updated_event_data = 15; // Event payload for multiple updates to a space. // // Event type: `google.workspace.chat.space.v1.batchUpdated` SpaceBatchUpdatedEventData space_batch_updated_event_data = 29; // Event payload for a new membership. // // Event type: `google.workspace.chat.membership.v1.created` MembershipCreatedEventData membership_created_event_data = 17; // Event payload for an updated membership. // // Event type: `google.workspace.chat.membership.v1.updated` MembershipUpdatedEventData membership_updated_event_data = 18; // Event payload for a deleted membership. // // Event type: `google.workspace.chat.membership.v1.deleted` MembershipDeletedEventData membership_deleted_event_data = 219; // Event payload for multiple new memberships. // // Event type: `google.workspace.chat.membership.v1.batchCreated` MembershipBatchCreatedEventData membership_batch_created_event_data = 31; // Event payload for multiple updated memberships. // // Event type: `google.workspace.chat.membership.v1.batchUpdated` MembershipBatchUpdatedEventData membership_batch_updated_event_data = 32; // Event payload for multiple deleted memberships. // // Event type: `google.workspace.chat.membership.v1.batchDeleted` MembershipBatchDeletedEventData membership_batch_deleted_event_data = 33; // Event payload for a new reaction. // // Event type: `google.workspace.chat.reaction.v1.created` ReactionCreatedEventData reaction_created_event_data = 21; // Event payload for a deleted reaction. // // Event type: `google.workspace.chat.reaction.v1.deleted` ReactionDeletedEventData reaction_deleted_event_data = 22; // Event payload for multiple new reactions. // // Event type: `google.workspace.chat.reaction.v1.batchCreated` ReactionBatchCreatedEventData reaction_batch_created_event_data = 34; // Event payload for multiple deleted reactions. // // Event type: `google.workspace.chat.reaction.v1.batchDeleted` ReactionBatchDeletedEventData reaction_batch_deleted_event_data = 35; } } // Request message for getting a space event. message GetSpaceEventRequest { // Required. The resource name of the space event. // // Format: `spaces/{space}/spaceEvents/{spaceEvent}` string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "chat.googleapis.com/SpaceEvent" } ]; } // Request message for listing space events. message ListSpaceEventsRequest { // Required. Resource name of the [Google Chat // space](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces) // where the events occurred. // // Format: `spaces/{space}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "chat.googleapis.com/SpaceEvent" } ]; // Optional. The maximum number of space events returned. The service might // return fewer than this value. // // Negative values return an `INVALID_ARGUMENT` error. int32 page_size = 5; // A page token, received from a previous list space events call. Provide this // to retrieve the subsequent page. // // When paginating, all other parameters provided to list space events must // match the call that provided the page token. Passing different values to // the other parameters might lead to unexpected results. string page_token = 6; // Required. A query filter. // // You must specify at least one event type (`event_type`) // using the has `:` operator. To filter by multiple event types, use the `OR` // operator. Omit batch event types in your filter. The request automatically // returns any related batch events. For example, if you filter by new // reactions // (`google.workspace.chat.reaction.v1.created`), the server also returns // batch new reactions events // (`google.workspace.chat.reaction.v1.batchCreated`). For a list of supported // event types, see the [`SpaceEvents` reference // documentation](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.spaceEvents#SpaceEvent.FIELDS.event_type). // // Optionally, you can also filter by start time (`start_time`) and // end time (`end_time`): // // * `start_time`: Exclusive timestamp from which to start listing space // events. // You can list events that occurred up to 28 days ago. If unspecified, lists // space events from the past 28 days. // * `end_time`: Inclusive timestamp until which space events are listed. // If unspecified, lists events up to the time of the request. // // To specify a start or end time, use the equals `=` operator and format in // [RFC-3339](https://www.rfc-editor.org/rfc/rfc3339). To filter by both // `start_time` and `end_time`, use the `AND` operator. // // For example, the following queries are valid: // // ``` // start_time="2023-08-23T19:20:33+00:00" AND // end_time="2023-08-23T19:21:54+00:00" // ``` // ``` // start_time="2023-08-23T19:20:33+00:00" AND // (event_types:"google.workspace.chat.space.v1.updated" OR // event_types:"google.workspace.chat.message.v1.created") // ``` // // The following queries are invalid: // // ``` // start_time="2023-08-23T19:20:33+00:00" OR // end_time="2023-08-23T19:21:54+00:00" // ``` // ``` // event_types:"google.workspace.chat.space.v1.updated" AND // event_types:"google.workspace.chat.message.v1.created" // ``` // // Invalid queries are rejected by the server with an `INVALID_ARGUMENT` // error. string filter = 8 [(google.api.field_behavior) = REQUIRED]; } // Response message for listing space events. message ListSpaceEventsResponse { // Results are returned in chronological order (oldest event first). repeated SpaceEvent space_events = 1; // Continuation token used to fetch more events. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; }