googleapis/google/chat/v1/chat_service.proto
Google APIs 8d52a0bd53 feat: Support app authentication with admin-consent scopes for Chat API ListMessages, GetMessage, GetSpaceEvent and ListSpaceEvents
docs: Update reference documentation for Chat API ListMessages, GetMessage, GetSpaceEvent and ListSpaceEvents.

PiperOrigin-RevId: 893619899
2026-04-02 11:46:19 -07:00

1334 lines
61 KiB
Protocol Buffer

// Copyright 2026 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/annotations.proto";
import "google/api/client.proto";
import "google/chat/v1/attachment.proto";
import "google/chat/v1/membership.proto";
import "google/chat/v1/message.proto";
import "google/chat/v1/reaction.proto";
import "google/chat/v1/section.proto";
import "google/chat/v1/space.proto";
import "google/chat/v1/space_event.proto";
import "google/chat/v1/space_notification_setting.proto";
import "google/chat/v1/space_read_state.proto";
import "google/chat/v1/space_setup.proto";
import "google/chat/v1/thread_read_state.proto";
import "google/protobuf/empty.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 = "ChatServiceProto";
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";
// Enables developers to build Chat apps and
// integrations on Google Chat Platform.
service ChatService {
option (google.api.default_host) = "chat.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/chat.admin.delete,"
"https://www.googleapis.com/auth/chat.admin.memberships,"
"https://www.googleapis.com/auth/chat.admin.memberships.readonly,"
"https://www.googleapis.com/auth/chat.admin.spaces,"
"https://www.googleapis.com/auth/chat.admin.spaces.readonly,"
"https://www.googleapis.com/auth/chat.app.delete,"
"https://www.googleapis.com/auth/chat.app.memberships,"
"https://www.googleapis.com/auth/chat.app.memberships.readonly,"
"https://www.googleapis.com/auth/chat.app.messages.readonly,"
"https://www.googleapis.com/auth/chat.app.spaces,"
"https://www.googleapis.com/auth/chat.app.spaces.create,"
"https://www.googleapis.com/auth/chat.app.spaces.readonly,"
"https://www.googleapis.com/auth/chat.bot,"
"https://www.googleapis.com/auth/chat.customemojis,"
"https://www.googleapis.com/auth/chat.customemojis.readonly,"
"https://www.googleapis.com/auth/chat.delete,"
"https://www.googleapis.com/auth/chat.import,"
"https://www.googleapis.com/auth/chat.memberships,"
"https://www.googleapis.com/auth/chat.memberships.app,"
"https://www.googleapis.com/auth/chat.memberships.readonly,"
"https://www.googleapis.com/auth/chat.messages,"
"https://www.googleapis.com/auth/chat.messages.create,"
"https://www.googleapis.com/auth/chat.messages.reactions,"
"https://www.googleapis.com/auth/chat.messages.reactions.create,"
"https://www.googleapis.com/auth/chat.messages.reactions.readonly,"
"https://www.googleapis.com/auth/chat.messages.readonly,"
"https://www.googleapis.com/auth/chat.spaces,"
"https://www.googleapis.com/auth/chat.spaces.create,"
"https://www.googleapis.com/auth/chat.spaces.readonly,"
"https://www.googleapis.com/auth/chat.users.readstate,"
"https://www.googleapis.com/auth/chat.users.readstate.readonly,"
"https://www.googleapis.com/auth/chat.users.sections,"
"https://www.googleapis.com/auth/chat.users.sections.readonly,"
"https://www.googleapis.com/auth/chat.users.spacesettings";
// Creates a message in a Google Chat space. For an example, see [Send a
// message](https://developers.google.com/workspace/chat/create-messages).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the authorization scope:
// - `https://www.googleapis.com/auth/chat.bot`
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.messages.create`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
//
// Chat attributes the message sender differently depending on the type of
// authentication that you use in your request.
//
// The following image shows how Chat attributes a message when you use app
// authentication. Chat displays the Chat app as the message
// sender. The content of the message can contain text (`text`), cards
// (`cardsV2`), and accessory widgets (`accessoryWidgets`).
//
// ![Message sent with app
// authentication](https://developers.google.com/workspace/chat/images/message-app-auth.svg)
//
// The following image shows how Chat attributes a message when you use user
// authentication. Chat displays the user as the message sender and attributes
// the Chat app to the message by displaying its name. The content of message
// can only contain text (`text`).
//
// ![Message sent with user
// authentication](https://developers.google.com/workspace/chat/images/message-user-auth.svg)
//
// The maximum message size, including the message contents, is 32,000 bytes.
//
// For
// [webhook](https://developers.google.com/workspace/chat/quickstart/webhooks)
// requests, the response doesn't contain the full message. The response only
// populates the `name` and `thread.name` fields in addition to the
// information that was in the request.
rpc CreateMessage(CreateMessageRequest) returns (Message) {
option (google.api.http) = {
post: "/v1/{parent=spaces/*}/messages"
body: "message"
};
option (google.api.method_signature) = "parent,message,message_id";
}
// Lists messages in a space that the caller is a member of, including
// messages from blocked members and spaces. System messages, like those
// announcing new space members, aren't included. If you list messages from a
// space with no messages, the response is an empty object. When using a
// REST/HTTP interface, the response contains an empty JSON object, `{}`.
// For an example, see
// [List
// messages](https://developers.google.com/workspace/chat/api/guides/v1/messages/list).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [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 authorization scope:
// - `https://www.googleapis.com/auth/chat.app.messages.readonly`. When
// using this authentication scope, this method only returns public
// messages in a space. It doesn't include private messages.
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.messages.readonly`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
rpc ListMessages(ListMessagesRequest) returns (ListMessagesResponse) {
option (google.api.http) = {
get: "/v1/{parent=spaces/*}/messages"
};
option (google.api.method_signature) = "parent";
}
// Lists memberships in a space. For an example, see [List users and Google
// Chat apps in a
// space](https://developers.google.com/workspace/chat/list-members). Listing
// memberships with [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// lists memberships in spaces that the Chat app has
// access to, but excludes Chat app memberships,
// including its own. Listing memberships with
// [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// lists memberships in spaces that the authenticated user has access to.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.bot`
// - `https://www.googleapis.com/auth/chat.app.memberships` (requires
// [administrator approval](https://support.google.com/a?p=chat-app-auth))
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.memberships`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// one of the following authorization scopes is used:
// - `https://www.googleapis.com/auth/chat.admin.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.admin.memberships`
rpc ListMemberships(ListMembershipsRequest)
returns (ListMembershipsResponse) {
option (google.api.http) = {
get: "/v1/{parent=spaces/*}/members"
};
option (google.api.method_signature) = "parent";
}
// Returns details about a membership. For an example, see
// [Get details about a user's or Google Chat app's
// membership](https://developers.google.com/workspace/chat/get-members).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.bot`
// - `https://www.googleapis.com/auth/chat.app.memberships` (requires
// [administrator approval](https://support.google.com/a?p=chat-app-auth))
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.memberships`
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// one of the following authorization scopes is used:
// - `https://www.googleapis.com/auth/chat.admin.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.admin.memberships`
rpc GetMembership(GetMembershipRequest) returns (Membership) {
option (google.api.http) = {
get: "/v1/{name=spaces/*/members/*}"
};
option (google.api.method_signature) = "name";
}
// Returns details about a message.
// For an example, see [Get details about a
// message](https://developers.google.com/workspace/chat/get-messages).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.bot`: When using this
// authorization scope, this method returns details about a message the
// Chat app has access to, like direct messages and [slash
// commands](https://developers.google.com/workspace/chat/slash-commands)
// that invoke the Chat app.
// - `https://www.googleapis.com/auth/chat.app.messages.readonly`
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth).
// When using this authentication scope,
// this method returns details about a public message in a space.
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.messages.readonly`
// - `https://www.googleapis.com/auth/chat.messages`
//
// Note: Might return a message from a blocked member or space.
rpc GetMessage(GetMessageRequest) returns (Message) {
option (google.api.http) = {
get: "/v1/{name=spaces/*/messages/*}"
};
option (google.api.method_signature) = "name";
}
// Updates a message. There's a difference between the `patch` and `update`
// methods. The `patch`
// method uses a `patch` request while the `update` method uses a `put`
// request. We recommend using the `patch` method. For an example, see
// [Update a
// message](https://developers.google.com/workspace/chat/update-messages).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the authorization scope:
// - `https://www.googleapis.com/auth/chat.bot`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
//
// When using app authentication, requests can only update messages
// created by the calling Chat app.
rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
option (google.api.http) = {
put: "/v1/{message.name=spaces/*/messages/*}"
body: "message"
additional_bindings {
patch: "/v1/{message.name=spaces/*/messages/*}"
body: "message"
}
};
option (google.api.method_signature) = "message,update_mask";
}
// Deletes a message.
// For an example, see [Delete a
// message](https://developers.google.com/workspace/chat/delete-messages).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the authorization scope:
// - `https://www.googleapis.com/auth/chat.bot`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
//
// When using app authentication, requests can only delete messages
// created by the calling Chat app.
rpc DeleteMessage(DeleteMessageRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=spaces/*/messages/*}"
};
option (google.api.method_signature) = "name";
}
// Gets the metadata of a message attachment. The attachment data is fetched
// using the [media
// API](https://developers.google.com/workspace/chat/api/reference/rest/v1/media/download).
// For an example, see
// [Get metadata about a message
// attachment](https://developers.google.com/workspace/chat/get-media-attachments).
//
// Requires [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.bot`
rpc GetAttachment(GetAttachmentRequest) returns (Attachment) {
option (google.api.http) = {
get: "/v1/{name=spaces/*/messages/*/attachments/*}"
};
option (google.api.method_signature) = "name";
}
// Uploads an attachment. For an example, see
// [Upload media as a file
// attachment](https://developers.google.com/workspace/chat/upload-media-attachments).
//
// Requires user
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.messages.create`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces only)
//
// You can upload attachments up to 200 MB. Certain file types aren't
// supported. For details, see [File types blocked by Google
// Chat](https://support.google.com/chat/answer/7651457?&co=GENIE.Platform%3DDesktop#File%20types%20blocked%20in%20Google%20Chat).
rpc UploadAttachment(UploadAttachmentRequest)
returns (UploadAttachmentResponse) {
option (google.api.http) = {
post: "/v1/{parent=spaces/*}/attachments:upload"
body: "*"
};
}
// Lists spaces the caller is a member of. Group chats and DMs aren't listed
// until the first message is sent. For an example, see
// [List
// spaces](https://developers.google.com/workspace/chat/list-spaces).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the authorization scope:
// - `https://www.googleapis.com/auth/chat.bot`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.spaces`
//
// To list all named spaces by Google Workspace organization, use the
// [`spaces.search()`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search)
// method using Workspace administrator privileges instead.
rpc ListSpaces(ListSpacesRequest) returns (ListSpacesResponse) {
option (google.api.http) = {
get: "/v1/spaces"
};
option (google.api.method_signature) = "";
}
// Returns a list of spaces in a Google Workspace organization based on an
// administrator's search. In the request, set `use_admin_access` to `true`.
// For an example, see [Search for and manage
// spaces](https://developers.google.com/workspace/chat/search-manage-admin).
//
// Requires [user
// authentication with administrator
// privileges](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user#admin-privileges)
// and one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.admin.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.admin.spaces`
rpc SearchSpaces(SearchSpacesRequest) returns (SearchSpacesResponse) {
option (google.api.http) = {
get: "/v1/spaces:search"
};
option (google.api.method_signature) = "";
}
// Returns details about a space. For an example, see
// [Get details about a
// space](https://developers.google.com/workspace/chat/get-spaces).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.bot`
// - `https://www.googleapis.com/auth/chat.app.spaces` with [administrator
// approval](https://support.google.com/a?p=chat-app-auth)
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.spaces`
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// one of the following authorization scopes is used:
// - `https://www.googleapis.com/auth/chat.admin.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.admin.spaces`
//
// App authentication has the following limitations:
//
// - `space.access_settings` is only populated when using the
// `chat.app.spaces` scope.
// - `space.predefind_permission_settings` and `space.permission_settings` are
// only populated when using the `chat.app.spaces` scope, and only for
// spaces the app created.
rpc GetSpace(GetSpaceRequest) returns (Space) {
option (google.api.http) = {
get: "/v1/{name=spaces/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a space. Can be used to create a named space, or a
// group chat in `Import mode`. For an example, see [Create a
// space](https://developers.google.com/workspace/chat/create-spaces).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator approval](https://support.google.com/a?p=chat-app-auth)
// and one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.app.spaces.create`
// - `https://www.googleapis.com/auth/chat.app.spaces`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.create`
// - `https://www.googleapis.com/auth/chat.spaces`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
//
// When authenticating as an app, the `space.customer` field must be set in
// the request.
//
// When authenticating as an app, the Chat app is added as a member of the
// space. However, unlike human authentication, the Chat app is not added as a
// space manager. By default, the Chat app can be removed from the space by
// all space members. To allow only space managers to remove the app from a
// space, set `space.permission_settings.manage_apps` to `managers_allowed`.
//
// Space membership upon creation depends on whether the space is created in
// `Import mode`:
//
// * **Import mode:** No members are created.
// * **All other modes:** The calling user is added as a member. This is:
// * The app itself when using app authentication.
// * The human user when using user authentication.
//
// If you receive the error message `ALREADY_EXISTS` when creating
// a space, try a different `displayName`. An existing space within
// the Google Workspace organization might already use this display name.
rpc CreateSpace(CreateSpaceRequest) returns (Space) {
option (google.api.http) = {
post: "/v1/spaces"
body: "space"
};
option (google.api.method_signature) = "space";
}
// Creates a space and adds specified users to it. The calling user is
// automatically added to the space, and shouldn't be specified as a
// membership in the request. For an example, see
// [Set up a space with initial
// members](https://developers.google.com/workspace/chat/set-up-spaces).
//
// To specify the human members to add, add memberships with the appropriate
// `membership.member.name`. To add a human user, use `users/{user}`, where
// `{user}` can be the email address for the user. For users in the same
// Workspace organization `{user}` can also be the `id` for the person from
// the People API, or the `id` for the user in the Directory API. For example,
// if the People API Person profile ID for `user@example.com` is `123456789`,
// you can add the user to the space by setting the `membership.member.name`
// to `users/user@example.com` or `users/123456789`.
//
// To specify the Google groups to add, add memberships with the
// appropriate `membership.group_member.name`. To add or invite a Google
// group, use `groups/{group}`, where `{group}` is the `id` for the group from
// the Cloud Identity Groups API. For example, you can use [Cloud Identity
// Groups lookup
// API](https://cloud.google.com/identity/docs/reference/rest/v1/groups/lookup)
// to retrieve the ID `123456789` for group email `group@example.com`, then
// you can add the group to the space by setting the
// `membership.group_member.name` to `groups/123456789`. Group email is not
// supported, and Google groups can only be added as members in named spaces.
//
// For a named space or group chat, if the caller blocks, or is blocked
// by some members, or doesn't have permission to add some members, then
// those members aren't added to the created space.
//
// To create a direct message (DM) between the calling user and another human
// user, specify exactly one membership to represent the human user. If
// one user blocks the other, the request fails and the DM isn't created.
//
// To create a DM between the calling user and the calling app, set
// `Space.singleUserBotDm` to `true` and don't specify any memberships. You
// can only use this method to set up a DM with the calling app. To add the
// calling app as a member of a space or an existing DM between two human
// users, see
// [Invite or add a user or app to a
// space](https://developers.google.com/workspace/chat/create-members).
//
// If a DM already exists between two users, even when one user blocks the
// other at the time a request is made, then the existing DM is returned.
//
// Spaces with threaded replies aren't supported. If you receive the error
// message `ALREADY_EXISTS` when setting up a space, try a different
// `displayName`. An existing space within the Google Workspace organization
// might already use this display name.
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.spaces.create`
// - `https://www.googleapis.com/auth/chat.spaces`
rpc SetUpSpace(SetUpSpaceRequest) returns (Space) {
option (google.api.http) = {
post: "/v1/spaces:setup"
body: "*"
};
}
// Updates a space. For an example, see
// [Update a
// space](https://developers.google.com/workspace/chat/update-spaces).
//
// If you're updating the `displayName` field and receive the error message
// `ALREADY_EXISTS`, try a different display name.. An existing space within
// the Google Workspace organization might already use this display name.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator approval](https://support.google.com/a?p=chat-app-auth)
// and one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.app.spaces`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// the following authorization scopes is used:
// - `https://www.googleapis.com/auth/chat.admin.spaces`
//
// App authentication has the following limitations:
//
// - To update either `space.predefined_permission_settings` or
// `space.permission_settings`, the app must be the space creator.
// - Updating the `space.access_settings.audience` is not supported for app
// authentication.
rpc UpdateSpace(UpdateSpaceRequest) returns (Space) {
option (google.api.http) = {
patch: "/v1/{space.name=spaces/*}"
body: "space"
};
option (google.api.method_signature) = "space,update_mask";
}
// Deletes a named space. Always performs a cascading delete, which means
// that the space's child resources—like messages posted in the space and
// memberships in the space—are also deleted. For an example, see
// [Delete a
// space](https://developers.google.com/workspace/chat/delete-spaces).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth) and the
// authorization scope:
// - `https://www.googleapis.com/auth/chat.app.delete` (only in
// spaces the app created)
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.delete`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// the following authorization scope is used:
// - `https://www.googleapis.com/auth/chat.admin.delete`
rpc DeleteSpace(DeleteSpaceRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=spaces/*}"
};
option (google.api.method_signature) = "name";
}
// Completes the
// [import process](https://developers.google.com/workspace/chat/import-data)
// for the specified space and makes it visible to users.
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// and domain-wide delegation with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.import`
//
// For more information, see [Authorize Google
// Chat apps to import
// data](https://developers.google.com/workspace/chat/authorize-import).
rpc CompleteImportSpace(CompleteImportSpaceRequest)
returns (CompleteImportSpaceResponse) {
option (google.api.http) = {
post: "/v1/{name=spaces/*}:completeImport"
body: "*"
};
}
// Returns the existing direct message with the specified user. If no direct
// message space is found, returns a `404 NOT_FOUND` error. For an example,
// see
// [Find a direct message](/chat/api/guides/v1/spaces/find-direct-message).
//
// With [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app),
// returns the direct message space between the specified user and the calling
// Chat app.
//
// With [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user),
// returns the direct message space between the specified user and the
// authenticated user.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with the authorization scope:
// - `https://www.googleapis.com/auth/chat.bot`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.spaces`
rpc FindDirectMessage(FindDirectMessageRequest) returns (Space) {
option (google.api.http) = {
get: "/v1/spaces:findDirectMessage"
};
}
// Creates a membership for the calling Chat app, a user, or a Google Group.
// Creating memberships for other Chat apps isn't supported.
// When creating a membership, if the specified member has their auto-accept
// policy turned off, then they're invited, and must accept the space
// invitation before joining. Otherwise, creating a membership adds the member
// directly to the specified space.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator approval](https://support.google.com/a?p=chat-app-auth)
// and the authorization scope:
// - `https://www.googleapis.com/auth/chat.app.memberships`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.memberships`
// - `https://www.googleapis.com/auth/chat.memberships.app` (to add the
// calling app to the space)
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// the following authorization scope is used:
// - `https://www.googleapis.com/auth/chat.admin.memberships`
//
// App authentication is not supported for the following use cases:
//
// - Inviting users external to the Workspace organization that owns the
// space.
// - Adding a Google Group to a space.
// - Adding a Chat app to a space.
//
// For example usage, see:
//
// - [Invite or add a user to a
// space](https://developers.google.com/workspace/chat/create-members#create-user-membership).
// - [Invite or add a Google Group to a
// space](https://developers.google.com/workspace/chat/create-members#create-group-membership).
// - [Add the Chat app to a
// space](https://developers.google.com/workspace/chat/create-members#create-membership-calling-api).
rpc CreateMembership(CreateMembershipRequest) returns (Membership) {
option (google.api.http) = {
post: "/v1/{parent=spaces/*}/members"
body: "membership"
};
option (google.api.method_signature) = "parent,membership";
}
// Updates a membership. For an example, see [Update a user's membership in
// a space](https://developers.google.com/workspace/chat/update-members).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator
// approval](https://support.google.com/a?p=chat-app-auth) and the
// authorization scope:
// - `https://www.googleapis.com/auth/chat.app.memberships` (only in
// spaces the app created)
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.memberships`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// the following authorization scope is used:
// - `https://www.googleapis.com/auth/chat.admin.memberships`
rpc UpdateMembership(UpdateMembershipRequest) returns (Membership) {
option (google.api.http) = {
patch: "/v1/{membership.name=spaces/*/members/*}"
body: "membership"
};
option (google.api.method_signature) = "membership,update_mask";
}
// Deletes a membership. For an example, see
// [Remove a user or a Google Chat app from a
// space](https://developers.google.com/workspace/chat/delete-members).
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize):
//
// - [App
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// with [administrator approval](https://support.google.com/a?p=chat-app-auth)
// and the authorization scope:
// - `https://www.googleapis.com/auth/chat.app.memberships`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.memberships`
// - `https://www.googleapis.com/auth/chat.memberships.app` (to remove
// the calling app from the space)
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces
// only)
// - User authentication grants administrator privileges when an
// administrator account authenticates, `use_admin_access` is `true`, and
// the following authorization scope is used:
// - `https://www.googleapis.com/auth/chat.admin.memberships`
//
// App authentication is not supported for the following use cases:
//
// - Removing a Google Group from a space.
// - Removing a Chat app from a space.
//
// To delete memberships for space managers, the requester
// must be a space manager. If you're using [app
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-app)
// the Chat app must be the space creator.
rpc DeleteMembership(DeleteMembershipRequest) returns (Membership) {
option (google.api.http) = {
delete: "/v1/{name=spaces/*/members/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a reaction and adds it to a message. For an example, see
// [Add a reaction to a
// message](https://developers.google.com/workspace/chat/create-reactions).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.messages.reactions.create`
// - `https://www.googleapis.com/auth/chat.messages.reactions`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces only)
rpc CreateReaction(CreateReactionRequest) returns (Reaction) {
option (google.api.http) = {
post: "/v1/{parent=spaces/*/messages/*}/reactions"
body: "reaction"
};
option (google.api.method_signature) = "parent,reaction";
}
// Lists reactions to a message. For an example, see
// [List reactions for a
// message](https://developers.google.com/workspace/chat/list-reactions).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.messages.reactions.readonly`
// - `https://www.googleapis.com/auth/chat.messages.reactions`
// - `https://www.googleapis.com/auth/chat.messages.readonly`
// - `https://www.googleapis.com/auth/chat.messages`
rpc ListReactions(ListReactionsRequest) returns (ListReactionsResponse) {
option (google.api.http) = {
get: "/v1/{parent=spaces/*/messages/*}/reactions"
};
option (google.api.method_signature) = "parent";
}
// Deletes a reaction to a message. For an example, see
// [Delete a
// reaction](https://developers.google.com/workspace/chat/delete-reactions).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.messages.reactions`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.import` (import mode spaces only)
rpc DeleteReaction(DeleteReactionRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=spaces/*/messages/*/reactions/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a custom emoji.
//
// Custom emojis are only available for Google Workspace accounts, and the
// administrator must turn custom emojis on for the organization. For more
// information, see [Learn about custom emojis in Google
// Chat](https://support.google.com/chat/answer/12800149) and
// [Manage custom emoji
// permissions](https://support.google.com/a/answer/12850085).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.customemojis`
rpc CreateCustomEmoji(CreateCustomEmojiRequest) returns (CustomEmoji) {
option (google.api.http) = {
post: "/v1/customEmojis"
body: "custom_emoji"
};
option (google.api.method_signature) = "custom_emoji";
}
// Returns details about a custom emoji.
//
// Custom emojis are only available for Google Workspace accounts, and the
// administrator must turn custom emojis on for the organization. For more
// information, see [Learn about custom emojis in Google
// Chat](https://support.google.com/chat/answer/12800149) and
// [Manage custom emoji
// permissions](https://support.google.com/a/answer/12850085).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.customemojis.readonly`
// - `https://www.googleapis.com/auth/chat.customemojis`
rpc GetCustomEmoji(GetCustomEmojiRequest) returns (CustomEmoji) {
option (google.api.http) = {
get: "/v1/{name=customEmojis/*}"
};
option (google.api.method_signature) = "name";
}
// Lists custom emojis visible to the authenticated user.
//
// Custom emojis are only available for Google Workspace accounts, and the
// administrator must turn custom emojis on for the organization. For more
// information, see [Learn about custom emojis in Google
// Chat](https://support.google.com/chat/answer/12800149) and
// [Manage custom emoji
// permissions](https://support.google.com/a/answer/12850085).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.customemojis.readonly`
// - `https://www.googleapis.com/auth/chat.customemojis`
rpc ListCustomEmojis(ListCustomEmojisRequest)
returns (ListCustomEmojisResponse) {
option (google.api.http) = {
get: "/v1/customEmojis"
};
option (google.api.method_signature) = "";
}
// Deletes a custom emoji. By default, users can only delete custom emoji they
// created. [Emoji managers](https://support.google.com/a/answer/12850085)
// assigned by the administrator can delete any custom emoji in the
// organization. See [Learn about custom emojis in Google
// Chat](https://support.google.com/chat/answer/12800149).
//
// Custom emojis are only available for Google Workspace accounts, and the
// administrator must turn custom emojis on for the organization. For more
// information, see [Learn about custom emojis in Google
// Chat](https://support.google.com/chat/answer/12800149) and
// [Manage custom emoji
// permissions](https://support.google.com/a/answer/12850085).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.customemojis`
rpc DeleteCustomEmoji(DeleteCustomEmojiRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=customEmojis/*}"
};
option (google.api.method_signature) = "name";
}
// Returns details about a user's read state within a space, used to identify
// read and unread messages. For an example, see [Get details about a user's
// space read
// state](https://developers.google.com/workspace/chat/get-space-read-state).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.readstate.readonly`
// - `https://www.googleapis.com/auth/chat.users.readstate`
rpc GetSpaceReadState(GetSpaceReadStateRequest) returns (SpaceReadState) {
option (google.api.http) = {
get: "/v1/{name=users/*/spaces/*/spaceReadState}"
};
option (google.api.method_signature) = "name";
}
// Updates a user's read state within a space, used to identify read and
// unread messages. For an example, see [Update a user's space read
// state](https://developers.google.com/workspace/chat/update-space-read-state).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.readstate`
rpc UpdateSpaceReadState(UpdateSpaceReadStateRequest)
returns (SpaceReadState) {
option (google.api.http) = {
patch: "/v1/{space_read_state.name=users/*/spaces/*/spaceReadState}"
body: "space_read_state"
};
option (google.api.method_signature) = "space_read_state,update_mask";
}
// Returns details about a user's read state within a thread, used to identify
// read and unread messages. For an example, see [Get details about a user's
// thread read
// state](https://developers.google.com/workspace/chat/get-thread-read-state).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following [authorization
// scopes](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.readstate.readonly`
// - `https://www.googleapis.com/auth/chat.users.readstate`
rpc GetThreadReadState(GetThreadReadStateRequest) returns (ThreadReadState) {
option (google.api.http) = {
get: "/v1/{name=users/*/spaces/*/threads/*/threadReadState}"
};
option (google.api.method_signature) = "name";
}
// Returns an event from a Google Chat space. The [event
// payload](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.spaceEvents#SpaceEvent.FIELDS.oneof_payload)
// contains the most recent version of the resource that changed. For example,
// if you request an event about a new message but the message was later
// updated, the server returns the updated `Message` resource in the event
// payload.
//
// Note: The `permissionSettings` field is not returned in the Space
// object of the Space event data for this request.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize)
// with an
// [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes)
// appropriate for reading the requested data:
//
// - [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 one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.app.spaces`
// - `https://www.googleapis.com/auth/chat.app.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.app.messages.readonly`
// - `https://www.googleapis.com/auth/chat.app.memberships`
// - `https://www.googleapis.com/auth/chat.app.memberships.readonly`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.spaces`
// - `https://www.googleapis.com/auth/chat.messages.readonly`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.messages.reactions.readonly`
// - `https://www.googleapis.com/auth/chat.messages.reactions`
// - `https://www.googleapis.com/auth/chat.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.memberships`
//
// To get an event, the authenticated caller must be a member of the space.
//
// For an example, see [Get details about an
// event from a Google Chat
// space](https://developers.google.com/workspace/chat/get-space-event).
rpc GetSpaceEvent(GetSpaceEventRequest) returns (SpaceEvent) {
option (google.api.http) = {
get: "/v1/{name=spaces/*/spaceEvents/*}"
};
option (google.api.method_signature) = "name";
}
// Lists events from a Google Chat space. For each event, the
// [payload](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.spaceEvents#SpaceEvent.FIELDS.oneof_payload)
// contains the most recent version of the Chat resource. For example, if you
// list events about new space members, the server returns `Membership`
// resources that contain the latest membership details. If new members were
// removed during the requested period, the event payload contains an empty
// `Membership` resource.
//
// Supports the following types of
// [authentication](https://developers.google.com/workspace/chat/authenticate-authorize)
// with an
// [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes)
// appropriate for reading the requested data:
//
// - [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 one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.app.spaces`
// - `https://www.googleapis.com/auth/chat.app.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.app.messages.readonly`
// - `https://www.googleapis.com/auth/chat.app.memberships`
// - `https://www.googleapis.com/auth/chat.app.memberships.readonly`
//
// - [User
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with one of the following authorization scopes:
// - `https://www.googleapis.com/auth/chat.spaces.readonly`
// - `https://www.googleapis.com/auth/chat.spaces`
// - `https://www.googleapis.com/auth/chat.messages.readonly`
// - `https://www.googleapis.com/auth/chat.messages`
// - `https://www.googleapis.com/auth/chat.messages.reactions.readonly`
// - `https://www.googleapis.com/auth/chat.messages.reactions`
// - `https://www.googleapis.com/auth/chat.memberships.readonly`
// - `https://www.googleapis.com/auth/chat.memberships`
//
// To list events, the authenticated caller must be a member of the space.
//
// For an example, see [List events from a Google Chat
// space](https://developers.google.com/workspace/chat/list-space-events).
rpc ListSpaceEvents(ListSpaceEventsRequest)
returns (ListSpaceEventsResponse) {
option (google.api.http) = {
get: "/v1/{parent=spaces/*}/spaceEvents"
};
option (google.api.method_signature) = "parent,filter";
}
// Gets the space notification setting. For an example, see [Get the
// caller's space notification
// setting](https://developers.google.com/workspace/chat/get-space-notification-setting).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.spacesettings`
rpc GetSpaceNotificationSetting(GetSpaceNotificationSettingRequest)
returns (SpaceNotificationSetting) {
option (google.api.http) = {
get: "/v1/{name=users/*/spaces/*/spaceNotificationSetting}"
};
option (google.api.method_signature) = "name";
}
// Updates the space notification setting. For an example, see [Update
// the caller's space notification
// setting](https://developers.google.com/workspace/chat/update-space-notification-setting).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.spacesettings`
rpc UpdateSpaceNotificationSetting(UpdateSpaceNotificationSettingRequest)
returns (SpaceNotificationSetting) {
option (google.api.http) = {
patch: "/v1/{space_notification_setting.name=users/*/spaces/*/spaceNotificationSetting}"
body: "space_notification_setting"
};
option (google.api.method_signature) =
"space_notification_setting,update_mask";
}
// Creates a section in Google Chat. Sections help users group conversations
// and customize the list of spaces displayed in Chat navigation panel. Only
// sections of type `CUSTOM_SECTION` can be created. For details, see [Create
// and organize sections in Google
// Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
rpc CreateSection(CreateSectionRequest) returns (Section) {
option (google.api.http) = {
post: "/v1/{parent=users/*}/sections"
body: "section"
};
option (google.api.method_signature) = "parent,section";
}
// Deletes a section of type `CUSTOM_SECTION`.
//
// If the section contains items, such as spaces, the items are moved to
// Google Chat's default sections and are not deleted.
//
// For details, see [Create and organize sections in Google
// Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
rpc DeleteSection(DeleteSectionRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=users/*/sections/*}"
};
option (google.api.method_signature) = "name";
}
// Updates a section. Only sections of type `CUSTOM_SECTION` can be updated.
// For details, see [Create and organize sections in Google
// Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
rpc UpdateSection(UpdateSectionRequest) returns (Section) {
option (google.api.http) = {
patch: "/v1/{section.name=users/*/sections/*}"
body: "section"
};
option (google.api.method_signature) = "section,update_mask";
}
// Lists sections available to the Chat user. Sections help users group their
// conversations and customize the list of spaces displayed in Chat
// navigation panel. For details, see [Create and organize sections in Google
// Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
// - `https://www.googleapis.com/auth/chat.users.sections.readonly`
rpc ListSections(ListSectionsRequest) returns (ListSectionsResponse) {
option (google.api.http) = {
get: "/v1/{parent=users/*}/sections"
};
option (google.api.method_signature) = "parent";
}
// Changes the sort order of a section. For details, see [Create and organize
// sections in Google Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
rpc PositionSection(PositionSectionRequest)
returns (PositionSectionResponse) {
option (google.api.http) = {
post: "/v1/{name=users/*/sections/*}:position"
body: "*"
};
}
// Lists items in a section.
//
// Only spaces can be section items. For details, see [Create and organize
// sections in Google Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
// - `https://www.googleapis.com/auth/chat.users.sections.readonly`
rpc ListSectionItems(ListSectionItemsRequest)
returns (ListSectionItemsResponse) {
option (google.api.http) = {
get: "/v1/{parent=users/*/sections/*}/items"
};
option (google.api.method_signature) = "parent";
}
// Moves an item from one section to another. For example, if a section
// contains spaces, this method can be used to move a space to a different
// section. For details, see [Create and organize sections in Google
// Chat](https://support.google.com/chat/answer/16059854).
//
// Requires [user
// authentication](https://developers.google.com/workspace/chat/authenticate-authorize-chat-user)
// with the [authorization
// scope](https://developers.google.com/workspace/chat/authenticate-authorize#chat-api-scopes):
//
// - `https://www.googleapis.com/auth/chat.users.sections`
rpc MoveSectionItem(MoveSectionItemRequest)
returns (MoveSectionItemResponse) {
option (google.api.http) = {
post: "/v1/{name=users/*/sections/*/items/*}:move"
body: "*"
};
option (google.api.method_signature) = "name,target_section";
}
}