Create a Google Chat space and add members

This guide explains how to use the setUp() method on the Space resource of the Google Chat API to create a Chat space, and add members to it.

The Space resource represents a place where people and Chat apps can send messages, share files, and collaborate. There are several types of spaces:

  • Direct messages (DMs) are conversations between two users or a user and a Chat app.
  • Group chats are conversations between three or more users and Chat apps.
  • Named spaces are persistent places where people send messages, share files, and collaborate.

You can use the setUp() method to do any of the following:

  • Create a named space with initial members.
  • Create a direct message (DM) between two people.
  • Set up a group message between multiple people.

When setting up a space, consider the following:

  • The calling (authenticated) user is automatically added to the space, so you don't need to specify the user's membership in the request.
  • When creating a direct message (DM), if a DM exists between two users, then the DM is returned. Otherwise, a DM is created.
  • When creating a group chat, if none of the memberships provided in the request are successfully added to the group chat (for example, permission issue), then an empty group chat (including only the calling user) might be created.
  • You can't set up spaces with threaded replies or add people outside of your Google Workspace organization.
  • Duplicate memberships (including the calling user) provided in the request are filtered out instead of resulting in a request error.
  • When a Google Workspace administrator installs a Chat app for their entire Google Workspace organization , Google Chat creates a DM between the installed Chat app and each user in the organization, so there's no need to programmatically set up DMs. Instead, list spaces to return all DMs or find a direct message to get details about a specific DM.

Prerequisites

Node.js

Python

Java

Apps Script

Set up a space

To set up a space, pass the following in your request:

  • Specify the chat.spaces.create or chat.spaces authorization scope.
  • Call the SetUpSpace() method.
  • Pass space as an instance of Space with all the necessary fields such as displayName or spaceType .
  • Pass memberships as an array of Membership instances. For each instance:
    • Specify users/{user} to add a human user as a space member, where {user} is either the {person_id} for the person from the People API, or the ID of a user in the Directory API. For example, if the People API person resourceName is people/123456789 , you can add the user to the space by including a membership with users/123456789 as the member.name .
    • Specify groups/{group} to add a group as a space member, where {group} is the group ID that you want to create membership for. The ID for the group can be retrieved using the Cloud Identity API . For example, if the Cloud Identity API returns a group with name groups/123456789 , then set membership.groupMember.name to groups/123456789 . Google Groups can't be added to a group chat or DM, but only to a named space.

To create a DM between the calling user and another human user, specify a membership of the human user in your request.

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 create a membership .

The following example creates a named space and creates one membership to the space for two human users (the authenticated user and one other user).

Node.js

chat/client-libraries/cloud/set-up-space-user-cred.js
 import 
  
 { 
 createClientWithUserCredentials 
 } 
  
 from 
  
 './authentication-utils.js' 
 ; 
 const 
  
 USER_AUTH_OAUTH_SCOPES 
  
 = 
  
 [ 
 'https://www.googleapis.com/auth/chat.spaces.create' 
 ]; 
 // This sample shows how to set up a named space with one initial member 
 // with user credential 
 async 
  
 function 
  
 main 
 () 
  
 { 
  
 // Create a client 
  
 const 
  
 chatClient 
  
 = 
  
 await 
  
 createClientWithUserCredentials 
 ( 
 USER_AUTH_OAUTH_SCOPES 
 ); 
  
 // Initialize request argument(s) 
  
 const 
  
 request 
  
 = 
  
 { 
  
 space 
 : 
  
 { 
  
 spaceType 
 : 
  
 'SPACE' 
 , 
  
 // Replace DISPLAY_NAME here. 
  
 displayName 
 : 
  
 'DISPLAY_NAME' 
  
 }, 
  
 memberships 
 : 
  
 [{ 
  
 member 
 : 
  
 { 
  
 // Replace USER_NAME here. 
  
 name 
 : 
  
 'users/USER_NAME' 
 , 
  
 type 
 : 
  
 'HUMAN' 
  
 } 
  
 }] 
  
 }; 
  
 // Make the request 
  
 const 
  
 response 
  
 = 
  
 await 
  
 chatClient 
 . 
 setUpSpace 
 ( 
 request 
 ); 
  
 // Handle the response 
  
 console 
 . 
 log 
 ( 
 response 
 ); 
 } 
 main 
 (). 
 catch 
 ( 
 console 
 . 
 error 
 ); 

Python

chat/client-libraries/cloud/set_up_space_user_cred.py
 from 
  
 authentication_utils 
  
 import 
 create_client_with_user_credentials 
 from 
  
 google.apps 
  
 import 
 chat_v1 
 as 
 google_chat 
 SCOPES 
 = 
 [ 
 "https://www.googleapis.com/auth/chat.spaces.create" 
 ] 
 def 
  
 set_up_space_with_user_cred 
 (): 
 # Create a client 
 client 
 = 
 create_client_with_user_credentials 
 ( 
 SCOPES 
 ) 
 # Initialize request argument(s) 
 request 
 = 
 google_chat 
 . 
 SetUpSpaceRequest 
 ( 
 space 
 = 
 { 
 "space_type" 
 : 
 'SPACE' 
 , 
 # Replace DISPLAY_NAME here. 
 "display_name" 
 : 
 'DISPLAY_NAME' 
 }, 
 memberships 
 = 
 [{ 
 "member" 
 : 
 { 
 # Replace USER_NAME here. 
 "name" 
 : 
 'users/USER_NAME' 
 , 
 "type_" 
 : 
 'HUMAN' 
 } 
 }] 
 ) 
 # Make the request 
 response 
 = 
 client 
 . 
 set_up_space 
 ( 
 request 
 ) 
 # Handle the response 
 print 
 ( 
 response 
 ) 
 set_up_space_with_user_cred 
 () 

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/SetUpSpaceUserCred.java
 import 
  
 com.google.chat.v1.ChatServiceClient 
 ; 
 import 
  
 com.google.chat.v1.Membership 
 ; 
 import 
  
 com.google.chat.v1.SetUpSpaceRequest 
 ; 
 import 
  
 com.google.chat.v1.Space 
 ; 
 import 
  
 com.google.chat.v1.User 
 ; 
 // This sample shows how to set up a named space with one initial member with 
 // user credential. 
 public 
  
 class 
 SetUpSpaceUserCred 
  
 { 
  
 private 
  
 static 
  
 final 
  
 String 
  
 SCOPE 
  
 = 
  
 "https://www.googleapis.com/auth/chat.spaces.create" 
 ; 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 try 
  
 ( 
 ChatServiceClient 
  
 chatServiceClient 
  
 = 
  
 AuthenticationUtils 
 . 
 createClientWithUserCredentials 
 ( 
  
 ImmutableList 
 . 
 of 
 ( 
 SCOPE 
 ))) 
  
 { 
  
 SetUpSpaceRequest 
 . 
 Builder 
  
 request 
  
 = 
  
 SetUpSpaceRequest 
 . 
 newBuilder 
 () 
  
 . 
 setSpace 
 ( 
 Space 
 . 
 newBuilder 
 () 
  
 . 
 setSpaceType 
 ( 
 Space 
 . 
 SpaceType 
 . 
 SPACE 
 ) 
  
 // Replace DISPLAY_NAME here. 
  
 . 
 setDisplayName 
 ( 
 "DISPLAY_NAME" 
 )) 
  
 . 
 addAllMemberships 
 ( 
 ImmutableList 
 . 
 of 
 ( 
 Membership 
 . 
 newBuilder 
 () 
  
 . 
 setMember 
 ( 
 User 
 . 
 newBuilder 
 () 
  
 // Replace USER_NAME here. 
  
 . 
 setName 
 ( 
 "users/USER_NAME" 
 ) 
  
 . 
 setType 
 ( 
 User 
 . 
 Type 
 . 
 HUMAN 
 )). 
 build 
 ())); 
  
 Space 
  
 response 
  
 = 
  
 chatServiceClient 
 . 
 setUpSpace 
 ( 
 request 
 . 
 build 
 ()); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 JsonFormat 
 . 
 printer 
 (). 
 print 
 ( 
 response 
 )); 
  
 } 
  
 } 
 } 

Apps Script

chat/advanced-service/Main.gs
 /** 
 * This sample shows how to set up a named space with one initial member with 
 * user credential. 
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.spaces.create' 
 * referenced in the manifest file (appsscript.json). 
 */ 
 function 
  
 setUpSpaceUserCred 
 () 
  
 { 
  
 // Initialize request argument(s) 
  
 const 
  
 space 
  
 = 
  
 { 
  
 spaceType 
 : 
  
 'SPACE' 
 , 
  
 // TODO(developer): Replace DISPLAY_NAME here 
  
 displayName 
 : 
  
 'DISPLAY_NAME' 
  
 }; 
  
 const 
  
 memberships 
  
 = 
  
 [{ 
  
 member 
 : 
  
 { 
  
 // TODO(developer): Replace USER_NAME here 
  
 name 
 : 
  
 'users/USER_NAME' 
 , 
  
 // User type for the membership 
  
 type 
 : 
  
 'HUMAN' 
  
 } 
  
 }]; 
  
 // Make the request 
  
 const 
  
 response 
  
 = 
  
 Chat 
 . 
 Spaces 
 . 
 setup 
 ({ 
  
 space 
 : 
  
 space 
 , 
  
 memberships 
 : 
  
 memberships 
  
 }); 
  
 // Handle the response 
  
 console 
 . 
 log 
 ( 
 response 
 ); 
 } 

To run the sample, replace the following:

  • DISPLAY_NAME : the display name of the new space.
  • USER_NAME : the ID of the other user to include a membership for.

To go to the space, use the space's resource ID to build the space's URL. You can get the resource ID from the space name in the Google Chat response body. For example, if your space's name is spaces/1234567 , you can go to the space using the following URL: https://mail.google.com/chat/u/0/#chat/space/1234567 .

Create a Mobile Website
View Site in Mobile | Classic
Share by: