googleapis/google/chat/v1/space.proto
Google APIs 1a9d00bed7 docs: Improve documentation of attachment.proto, event_payload.proto and space.proto
feat: Add app authorization support to space APIs
feat: Add accessory widget support for private messages

PiperOrigin-RevId: 845227338
2025-12-16 05:52:20 -08:00

824 lines
34 KiB
Protocol Buffer

// Copyright 2025 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/history_state.proto";
import "google/protobuf/field_mask.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 = "SpaceProto";
option java_package = "com.google.chat.v1";
option objc_class_prefix = "DYNAPIProto";
option php_namespace = "Google\\Apps\\Chat\\V1";
option ruby_package = "Google::Apps::Chat::V1";
// A space in Google Chat. Spaces are conversations between two or more users
// or 1:1 messages between a user and a Chat app.
message Space {
option (google.api.resource) = {
type: "chat.googleapis.com/Space"
pattern: "spaces/{space}"
};
// Deprecated: Use `SpaceType` instead.
enum Type {
// Reserved.
TYPE_UNSPECIFIED = 0;
// Conversations between two or more humans.
ROOM = 1;
// 1:1 Direct Message between a human and a Chat app, where all messages are
// flat. Note that this doesn't include direct messages between two humans.
DM = 2;
}
// The type of space. Required when creating or updating a space. Output only
// for other usage.
enum SpaceType {
// Reserved.
SPACE_TYPE_UNSPECIFIED = 0;
// A place where people send messages, share files, and collaborate.
// A `SPACE` can include Chat apps.
SPACE = 1;
// Group conversations between 3 or more people.
// A `GROUP_CHAT` can include Chat apps.
GROUP_CHAT = 2;
// 1:1 messages between two humans or a human and a Chat app.
DIRECT_MESSAGE = 3;
}
// Specifies the type of threading state in the Chat space.
enum SpaceThreadingState {
// Reserved.
SPACE_THREADING_STATE_UNSPECIFIED = 0;
// Named spaces that support message threads. When users respond to a
// message, they can reply in-thread, which keeps their response in the
// context of the original message.
THREADED_MESSAGES = 2;
// Named spaces where the conversation is organized by topic. Topics and
// their replies are grouped together.
GROUPED_MESSAGES = 3;
// Direct messages (DMs) between two people and group conversations between
// 3 or more people.
UNTHREADED_MESSAGES = 4;
}
// Details about the space including description and rules.
message SpaceDetails {
// Optional. A description of the space. For example, describe the space's
// discussion topic, functional purpose, or participants.
//
// Supports up to 150 characters.
string description = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. The space's rules, expectations, and etiquette.
//
// Supports up to 5,000 characters.
string guidelines = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Represents the count of memberships of a space, grouped into categories.
message MembershipCount {
// Output only. Count of human users that have directly joined the space,
// not counting users joined by having membership in a joined group.
int32 joined_direct_human_user_count = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Count of all groups that have directly joined the space.
int32 joined_group_count = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Represents the [access
// setting](https://support.google.com/chat/answer/11971020) of the space.
message AccessSettings {
// Represents the access state of the space.
enum AccessState {
// Access state is unknown or not supported in this API.
ACCESS_STATE_UNSPECIFIED = 0;
// Only users or Google Groups that have been individually added or
// invited by other users or Google Workspace administrators can discover
// and access the space.
PRIVATE = 1;
// A space manager has granted a target audience access to
// the space. Users or Google Groups that have been individually added or
// invited to the space can also discover and access the space. To learn
// more, see [Make a space discoverable to specific
// users](https://developers.google.com/workspace/chat/space-target-audience).
//
// Creating discoverable spaces requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user).
DISCOVERABLE = 2;
}
// Output only. Indicates the access state of the space.
AccessState access_state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The resource name of the [target
// audience](https://support.google.com/a/answer/9934697) who can discover
// the space, join the space, and preview the messages in the space. If
// unset, only users or Google Groups who have been individually invited or
// added to the space can access it. For details, see [Make a space
// discoverable to a target
// audience](https://developers.google.com/workspace/chat/space-target-audience).
//
// Format: `audiences/{audience}`
//
// To use the default target audience for the Google Workspace organization,
// set to `audiences/default`.
//
// Reading the target audience supports:
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth)
// with the `chat.app.spaces` scope.
//
// This field is not populated when using the `chat.bot` scope with [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app).
//
// Setting the target audience requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user).
string audience = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Predefined permission settings that you can only specify when creating a
// named space. More settings might be added in the future.
// For details about permission settings for named spaces, see [Learn about
// spaces](https://support.google.com/chat/answer/7659784).
enum PredefinedPermissionSettings {
// Unspecified. Don't use.
PREDEFINED_PERMISSION_SETTINGS_UNSPECIFIED = 0;
// Setting to make the space a collaboration space where all members can
// post messages.
COLLABORATION_SPACE = 1;
// Setting to make the space an announcement space where only space managers
// can post messages.
ANNOUNCEMENT_SPACE = 2;
}
// [Permission settings](https://support.google.com/chat/answer/13340792)
// that you can specify when updating an existing named space.
//
// To set permission settings when creating a space, specify the
// `PredefinedPermissionSettings` field in your request.
message PermissionSettings {
// Optional. Setting for managing members and groups in a space.
optional PermissionSetting manage_members_and_groups = 1
[(google.api.field_behavior) = OPTIONAL];
// Optional. Setting for updating space name, avatar, description and
// guidelines.
optional PermissionSetting modify_space_details = 2
[(google.api.field_behavior) = OPTIONAL];
// Optional. Setting for toggling space history on and off.
optional PermissionSetting toggle_history = 3
[(google.api.field_behavior) = OPTIONAL];
// Optional. Setting for using @all in a space.
optional PermissionSetting use_at_mention_all = 4
[(google.api.field_behavior) = OPTIONAL];
// Optional. Setting for managing apps in a space.
optional PermissionSetting manage_apps = 5
[(google.api.field_behavior) = OPTIONAL];
// Optional. Setting for managing webhooks in a space.
optional PermissionSetting manage_webhooks = 6
[(google.api.field_behavior) = OPTIONAL];
// Output only. Setting for posting messages in a space.
optional PermissionSetting post_messages = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Setting for replying to messages in a space.
optional PermissionSetting reply_messages = 8
[(google.api.field_behavior) = OPTIONAL];
}
// Represents a space permission setting.
message PermissionSetting {
// Optional. Whether space owners
// ([`ROLE_MANAGER`][google.chat.v1.Membership.MembershipRole.ROLE_MANAGER])
// have this permission.
bool managers_allowed = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Whether space managers
// [`ROLE_ASSISTANT_MANAGER`][google.chat.v1.Membership.MembershipRole.ROLE_ASSISTANT_MANAGER])
// have this permission.
optional bool assistant_managers_allowed = 3
[(google.api.field_behavior) = OPTIONAL];
// Optional. Whether basic space members
// ([`ROLE_MEMBER`][google.chat.v1.Membership.MembershipRole.ROLE_MEMBER])
// have this permission.
bool members_allowed = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Identifier. Resource name of the space.
//
// Format: `spaces/{space}`
//
// Where `{space}` represents the system-assigned ID for the space. You can
// obtain the space ID by calling the
// [`spaces.list()`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/list)
// method or from the space URL. For example, if the space URL
// is `https://mail.google.com/mail/u/0/#chat/space/AAAAAAAAA`, the space ID
// is `AAAAAAAAA`.
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Output only. Deprecated: Use `space_type` instead.
// The type of a space.
Type type = 2 [deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The type of space. Required when creating a space or updating the
// space type of a space. Output only for other usage.
SpaceType space_type = 10 [(google.api.field_behavior) = OPTIONAL];
// Optional. Whether the space is a DM between a Chat app and a single
// human.
bool single_user_bot_dm = 4 [(google.api.field_behavior) = OPTIONAL];
// Output only. Deprecated: Use `spaceThreadingState` instead.
// Whether messages are threaded in this space.
bool threaded = 5
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The space's display name. Required when [creating a
// space](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/create)
// with a `spaceType` of `SPACE`. If you receive the error message
// `ALREADY_EXISTS` when creating a space or updating the `displayName`, try a
// different `displayName`. An existing space within the Google Workspace
// organization might already use this display name.
//
// For direct messages, this field might be empty.
//
// Supports up to 128 characters.
string display_name = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Immutable. Whether this space permits any Google Chat user as a
// member. Input when creating a space in a Google Workspace organization.
// Omit this field when creating spaces in the following conditions:
//
// * The authenticated user uses a consumer account (unmanaged user
// account). By default, a space created by a consumer account permits any
// Google Chat user.
//
// For existing spaces, this field is output only.
bool external_user_allowed = 8 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = OPTIONAL
];
// Output only. The threading state in the Chat space.
SpaceThreadingState space_threading_state = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Details about the space including description and rules.
SpaceDetails space_details = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. The message history state for messages and threads in this space.
HistoryState space_history_state = 13
[(google.api.field_behavior) = OPTIONAL];
// Optional. Whether this space is created in `Import Mode` as part of a data
// migration into Google Workspace. While spaces are being imported, they
// aren't visible to users until the import is complete.
//
// Creating a space in `Import Mode`requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user).
bool import_mode = 16 [(google.api.field_behavior) = OPTIONAL];
// Optional. Immutable. For spaces created in Chat, the time the space was
// created. This field is output only, except when used in import mode spaces.
//
// For import mode spaces, set this field to the historical timestamp at which
// the space was created in the source in order to preserve the original
// creation time.
//
// Only populated in the output when `spaceType` is `GROUP_CHAT` or `SPACE`.
google.protobuf.Timestamp create_time = 17 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = OPTIONAL
];
// Output only. Timestamp of the last message in the space.
google.protobuf.Timestamp last_active_time = 18
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. For direct message (DM) spaces with a Chat app, whether the
// space was created by a Google Workspace administrator. Administrators can
// install and set up a direct message with a Chat app on behalf of users in
// their organization.
//
// To support admin install, your Chat app must feature direct messaging.
bool admin_installed = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The count of joined memberships grouped by member type.
// Populated when the `space_type` is `SPACE`, `DIRECT_MESSAGE` or
// `GROUP_CHAT`.
MembershipCount membership_count = 20
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Specifies the [access
// setting](https://support.google.com/chat/answer/11971020) of the space.
// Only populated when the `space_type` is `SPACE`.
AccessSettings access_settings = 23 [(google.api.field_behavior) = OPTIONAL];
// Optional. Immutable. The customer id of the domain of the space.
// Required only when creating a space with [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// and `SpaceType` is `SPACE`, otherwise should not be set.
//
// In the format `customers/{customer}`, where `customer` is the `id` from the
// [Admin SDK customer
// resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers).
// Private apps can also use the `customers/my_customer` alias to create
// the space in the same Google Workspace organization as the app.
//
// This field isn't populated for direct messages (DMs) or when the space is
// created by non-Google Workspace users.
optional string customer = 24 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = OPTIONAL
];
// Output only. The URI for a user to access the space.
string space_uri = 25 [(google.api.field_behavior) = OUTPUT_ONLY];
// Represents the [permission settings]
// (https://support.google.com/chat/answer/13340792) of a space. Only
// populated when the `space_type` is `SPACE`.
oneof space_permission_settings {
// Optional. Input only. Predefined space permission settings, input only
// when creating a space. If the field is not set, a collaboration space is
// created. After you create the space, settings are populated in the
// `PermissionSettings` field.
//
// Setting predefined permission settings supports:
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth) with the
// `chat.app.spaces` or `chat.app.spaces.create` scopes.
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
PredefinedPermissionSettings predefined_permission_settings = 26 [
(google.api.field_behavior) = INPUT_ONLY,
(google.api.field_behavior) = OPTIONAL
];
// Optional. Space permission settings for existing spaces. Input for
// updating exact space permission settings, where existing permission
// settings are replaced. Output lists current permission settings.
//
// Reading and updating permission settings supports:
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth) with the
// `chat.app.spaces` scope. Only populated and settable when the Chat app
// created the space.
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
PermissionSettings permission_settings = 27
[(google.api.field_behavior) = OPTIONAL];
}
// Output only. The time when the space will be automatically deleted by the
// system if it remains in import mode.
//
// Each space created in import mode must exit this mode before this expire
// time using `spaces.completeImport`.
//
// This field is only populated for spaces that were created with import mode.
google.protobuf.Timestamp import_mode_expire_time = 28
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// A request to create a named space with no members.
message CreateSpaceRequest {
// Required. The `displayName` and `spaceType` fields must be populated. Only
// `SpaceType.SPACE` and `SpaceType.GROUP_CHAT` are supported.
// `SpaceType.GROUP_CHAT` can only be used if `importMode` is set to true.
//
// If you receive the error message `ALREADY_EXISTS`,
// try a different `displayName`. An existing space within the Google
// Workspace organization might already use this display name.
//
//
// The space `name` is assigned on the server so anything specified in this
// field will be ignored.
Space space = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. A unique identifier for this request.
// A random UUID is recommended.
// Specifying an existing request ID returns the space created with that ID
// instead of creating a new space.
// Specifying an existing request ID from the same Chat app with a different
// authenticated user returns an error.
string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
}
// A request to list the spaces the caller is a member of.
message ListSpacesRequest {
// Optional. The maximum number of spaces to return. The service might return
// fewer than this value.
//
// If unspecified, at most 100 spaces are returned.
//
// The maximum value is 1000. If you use a value more than 1000, it's
// automatically changed to 1000.
//
// Negative values return an `INVALID_ARGUMENT` error.
int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous list spaces call.
// Provide this parameter to retrieve the subsequent page.
//
// When paginating, the filter value should match the call that provided the
// page token. Passing a different value may lead to unexpected results.
string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A query filter.
//
// You can filter spaces by the space type
// ([`space_type`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces#spacetype)).
//
// To filter by space type, you must specify valid enum value, such as
// `SPACE` or `GROUP_CHAT` (the `space_type` can't be
// `SPACE_TYPE_UNSPECIFIED`). To query for multiple space types, use the `OR`
// operator.
//
// For example, the following queries are valid:
//
// ```
// space_type = "SPACE"
// spaceType = "GROUP_CHAT" OR spaceType = "DIRECT_MESSAGE"
// ```
//
// Invalid queries are rejected by the server with an `INVALID_ARGUMENT`
// error.
string filter = 3 [(google.api.field_behavior) = OPTIONAL];
}
// The response for a list spaces request.
message ListSpacesResponse {
// List of spaces in the requested (or first) page.
// Note: The `permissionSettings` field is not returned in the Space
// object for list requests.
repeated Space spaces = 1;
// You can send a token as `pageToken` to retrieve the next page of
// results. If empty, there are no subsequent pages.
string next_page_token = 2;
}
// A request to return a single space.
message GetSpaceRequest {
// Required. Resource name of the space, in the form `spaces/{space}`.
//
// Format: `spaces/{space}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "chat.googleapis.com/Space" }
];
// Optional. When `true`, the method runs using the user's Google Workspace
// administrator privileges.
//
// The calling user must be a Google Workspace administrator with the
// [manage chat and spaces conversations
// privilege](https://support.google.com/a/answer/13369245).
//
// Requires the `chat.admin.spaces` or `chat.admin.spaces.readonly` [OAuth 2.0
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes).
bool use_admin_access = 2 [(google.api.field_behavior) = OPTIONAL];
}
// A request to get direct message space based on the user resource.
message FindDirectMessageRequest {
// Required. Resource name of the user to find direct message with.
//
// Format: `users/{user}`, where `{user}` is either the `id` for the
// [person](https://developers.google.com/people/api/rest/v1/people) from the
// People API, or the `id` for the
// [user](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users)
// in the Directory API. For example, if the People API profile ID is
// `123456789`, you can find a direct message with that person by using
// `users/123456789` as the `name`. When [authenticated as a
// user](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user),
// you can use the email as an alias for `{user}`. For example,
// `users/example@gmail.com` where `example@gmail.com` is the email of the
// Google Chat user.
string name = 1 [(google.api.field_behavior) = REQUIRED];
}
// A request to update a single space.
message UpdateSpaceRequest {
// Required. Space with fields to be updated. `Space.name` must be
// populated in the form of `spaces/{space}`. Only fields
// specified by `update_mask` are updated.
Space space = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The updated field paths, comma separated if there are
// multiple.
//
// You can update the following fields for a space:
//
// `space_details`: Updates the space's description and guidelines. You must
// pass both description and guidelines in the update request as
// [`SpaceDetails`][google.chat.v1.Space.SpaceDetails]. If you only want to
// update one of the fields, pass the existing value for the other field.
//
// `display_name`: Only supports updating the display name for spaces where
// `spaceType` field is `SPACE`.
// If you receive the error message `ALREADY_EXISTS`, try a different
// value. An existing space within the
// Google Workspace organization might already use this display name.
//
// `space_type`: Only supports changing a `GROUP_CHAT` space type to
// `SPACE`. Include `display_name` together
// with `space_type` in the update mask and ensure that the specified space
// has a non-empty display name and the `SPACE` space type. Including the
// `space_type` mask and the `SPACE` type in the specified space when updating
// the display name is optional if the existing space already has the `SPACE`
// type. Trying to update the space type in other ways results in an invalid
// argument error.
// `space_type` is not supported with `useAdminAccess`.
//
// `space_history_state`: Updates [space history
// settings](https://support.google.com/chat/answer/7664687) by turning
// history on or off for the space. Only supported if history settings are
// enabled for the Google Workspace organization. To update the
// space history state, you must omit all other field masks in your request.
// `space_history_state` is not supported with `useAdminAccess`.
//
// `access_settings.audience`: Updates the [access
// setting](https://support.google.com/chat/answer/11971020) of who can
// discover the space, join the space, and preview the messages in named space
// where `spaceType` field is `SPACE`. If the existing space has a
// target audience, you can remove the audience and restrict space access by
// omitting a value for this field mask. To update access settings for a
// space, the authenticating user must be a space manager and omit all other
// field masks in your request. You can't update this field if the space is in
// [import
// mode](https://developers.google.com/workspace/chat/import-data-overview).
// To learn more, see [Make a space discoverable to specific
// users](https://developers.google.com/workspace/chat/space-target-audience).
// `access_settings.audience` is not supported with `useAdminAccess`.
//
// `permission_settings`: Supports changing the
// [permission settings](https://support.google.com/chat/answer/13340792)
// of a space.
// When updating permission settings, you can only specify
// `permissionSettings` field masks; you cannot update other field masks
// at the same time.
// The supported field masks include:
//
// - `permission_settings.manageMembersAndGroups`
// - `permission_settings.modifySpaceDetails`
// - `permission_settings.toggleHistory`
// - `permission_settings.useAtMentionAll`
// - `permission_settings.manageApps`
// - `permission_settings.manageWebhooks`
// - `permission_settings.replyMessages`
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
// Optional. When `true`, the method runs using the user's Google Workspace
// administrator privileges.
//
// The calling user must be a Google Workspace administrator with the
// [manage chat and spaces conversations
// privilege](https://support.google.com/a/answer/13369245).
//
// Requires the `chat.admin.spaces` [OAuth 2.0
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes).
//
// Some `FieldMask` values are not supported using admin access. For details,
// see the description of `update_mask`.
bool use_admin_access = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Request to search for a list of spaces based on a query.
message SearchSpacesRequest {
// When `true`, the method runs using the user's Google Workspace
// administrator privileges.
//
// The calling user must be a Google Workspace administrator with the
// [manage chat and spaces conversations
// privilege](https://support.google.com/a/answer/13369245).
//
// Requires either the `chat.admin.spaces.readonly` or `chat.admin.spaces`
// [OAuth 2.0
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes).
//
// This method currently only supports admin access, thus only `true` is
// accepted for this field.
bool use_admin_access = 1;
// The maximum number of spaces to return. The service may return fewer than
// this value.
//
// If unspecified, at most 100 spaces are returned.
//
// The maximum value is 1000. If you use a value more than 1000, it's
// automatically changed to 1000.
int32 page_size = 2;
// A token, received from the previous search spaces call. Provide this
// parameter to retrieve the subsequent page.
//
// When paginating, all other parameters provided should match the call that
// provided the page token. Passing different values to the other parameters
// might lead to unexpected results.
string page_token = 3;
// Required. A search query.
//
// You can search by using the following parameters:
//
// - `create_time`
// - `customer`
// - `display_name`
// - `external_user_allowed`
// - `last_active_time`
// - `space_history_state`
// - `space_type`
//
// `create_time` and `last_active_time` accept a timestamp in
// [RFC-3339](https://www.rfc-editor.org/rfc/rfc3339) format and the supported
// comparison operators are: `=`, `<`, `>`, `<=`, `>=`.
//
// `customer` is required and is used to indicate which customer
// to fetch spaces from. `customers/my_customer` is the only supported value.
//
// `display_name` only accepts the `HAS` (`:`) operator. The text to
// match is first tokenized into tokens and each token is prefix-matched
// case-insensitively and independently as a substring anywhere in the space's
// `display_name`. For example, `Fun Eve` matches `Fun event` or `The
// evening was fun`, but not `notFun event` or `even`.
//
// `external_user_allowed` accepts either `true` or `false`.
//
// `space_history_state` only accepts values from the [`historyState`]
// (https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces#Space.HistoryState)
// field of a `space` resource.
//
// `space_type` is required and the only valid value is `SPACE`.
//
// Across different fields, only `AND` operators are supported. A valid
// example is `space_type = "SPACE" AND display_name:"Hello"` and an invalid
// example is `space_type = "SPACE" OR display_name:"Hello"`.
//
// Among the same field,
// `space_type` doesn't support `AND` or `OR` operators.
// `display_name`, 'space_history_state', and 'external_user_allowed' only
// support `OR` operators.
// `last_active_time` and `create_time` support both `AND` and `OR` operators.
// `AND` can only be used to represent an interval, such as `last_active_time
// < "2022-01-01T00:00:00+00:00" AND last_active_time >
// "2023-01-01T00:00:00+00:00"`.
//
// The following example queries are valid:
//
// ```
// customer = "customers/my_customer" AND space_type = "SPACE"
//
// customer = "customers/my_customer" AND space_type = "SPACE" AND
// display_name:"Hello World"
//
// customer = "customers/my_customer" AND space_type = "SPACE" AND
// (last_active_time < "2020-01-01T00:00:00+00:00" OR last_active_time >
// "2022-01-01T00:00:00+00:00")
//
// customer = "customers/my_customer" AND space_type = "SPACE" AND
// (display_name:"Hello World" OR display_name:"Fun event") AND
// (last_active_time > "2020-01-01T00:00:00+00:00" AND last_active_time <
// "2022-01-01T00:00:00+00:00")
//
// customer = "customers/my_customer" AND space_type = "SPACE" AND
// (create_time > "2019-01-01T00:00:00+00:00" AND create_time <
// "2020-01-01T00:00:00+00:00") AND (external_user_allowed = "true") AND
// (space_history_state = "HISTORY_ON" OR space_history_state = "HISTORY_OFF")
// ```
string query = 4 [(google.api.field_behavior) = REQUIRED];
// Optional. How the list of spaces is ordered.
//
// Supported attributes to order by are:
//
// - `membership_count.joined_direct_human_user_count` — Denotes the count of
// human users that have directly joined a space.
// - `last_active_time` — Denotes the time when last eligible item is added to
// any topic of this space.
// - `create_time` — Denotes the time of the space creation.
//
// Valid ordering operation values are:
//
// - `ASC` for ascending. Default value.
//
// - `DESC` for descending.
//
// The supported syntax are:
//
// - `membership_count.joined_direct_human_user_count DESC`
// - `membership_count.joined_direct_human_user_count ASC`
// - `last_active_time DESC`
// - `last_active_time ASC`
// - `create_time DESC`
// - `create_time ASC`
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}
// Response with a list of spaces corresponding to the search spaces request.
message SearchSpacesResponse {
// A page of the requested spaces.
repeated Space spaces = 1;
// A token that can be used to retrieve the next page. If this field is empty,
// there are no subsequent pages.
string next_page_token = 2;
// The total number of spaces that match the query, across all pages. If the
// result is over 10,000 spaces, this value is an estimate.
int32 total_size = 3;
}
// Request for deleting a space.
message DeleteSpaceRequest {
// Required. Resource name of the space to delete.
//
// Format: `spaces/{space}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "chat.googleapis.com/Space" }
];
// Optional. When `true`, the method runs using the user's Google Workspace
// administrator privileges.
//
// The calling user must be a Google Workspace administrator with the
// [manage chat and spaces conversations
// privilege](https://support.google.com/a/answer/13369245).
//
// Requires the `chat.admin.delete` [OAuth 2.0
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes).
bool use_admin_access = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Request message for completing the import process for a space.
message CompleteImportSpaceRequest {
// Required. Resource name of the import mode space.
//
// Format: `spaces/{space}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "chat.googleapis.com/Space" }
];
}
// Response message for completing the import process for a space.
message CompleteImportSpaceResponse {
// The import mode space.
Space space = 1;
}