This guide explains how to use the
create()
method on the Membership
resource of the Google Chat API to invite or add a user,
Google Group, or Chat app to a space also known as
creating a membership. 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.
If you're a Google Workspace administrator, you can add users, Google Groups, or Chat apps to any space in your Google Workspace organization.
The
Membership
resource
represents whether a human user or Google Chat app is invited to,
part of, or absent from a space.
Prerequisites
Node.js
- A Business or Enterprise Google Workspace account with access to Google Chat.
- Set up your environment:
- Create a Google Cloud project.
- Configure the OAuth consent screen.
- Enable and configure the Google Chat API with a name, icon, and description for your Chat app.
- Install the Node.js Cloud Client Library.
- Create access credentials based on how you want to authenticate in your Google Chat API
request:
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
client_secrets.json
to your local directory. - To authenticate as the Chat app,
create service account
credentials and save the credentials as a JSON file named
credentials.json
.
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
- Choose an authorization scope based on whether you want to authenticate as a user or the Chat app.
Python
- A Business or Enterprise Google Workspace account with access to Google Chat.
- Set up your environment:
- Create a Google Cloud project.
- Configure the OAuth consent screen.
- Enable and configure the Google Chat API with a name, icon, and description for your Chat app.
- Install the Python Cloud Client Library.
- Create access credentials based on how you want to authenticate in your Google Chat API
request:
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
client_secrets.json
to your local directory. - To authenticate as the Chat app,
create service account
credentials and save the credentials as a JSON file named
credentials.json
.
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
- Choose an authorization scope based on whether you want to authenticate as a user or the Chat app.
Java
- A Business or Enterprise Google Workspace account with access to Google Chat.
- Set up your environment:
- Create a Google Cloud project.
- Configure the OAuth consent screen.
- Enable and configure the Google Chat API with a name, icon, and description for your Chat app.
- Install the Java Cloud Client Library.
- Create access credentials based on how you want to authenticate in your Google Chat API
request:
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
client_secrets.json
to your local directory. - To authenticate as the Chat app,
create service account
credentials and save the credentials as a JSON file named
credentials.json
.
- To authenticate as a Chat user,
create OAuth client ID
credentials and save the credentials as a JSON file named
- Choose an authorization scope based on whether you want to authenticate as a user or the Chat app.
Apps Script
- A Business or Enterprise Google Workspace account with access to Google Chat.
- Set up your environment:
- Create a Google Cloud project.
- Configure the OAuth consent screen.
- Enable and configure the Google Chat API with a name, icon, and description for your Chat app.
- Create a standalone Apps Script project, and turn on the Advanced Chat Service.
- In this guide, you must use either user or app authentication. To authenticate as the Chat app, create service account credentials. For steps, see Authenticate and authorize as a Google Chat app.
- Choose an authorization scope based on whether you want to authenticate as a user or the Chat app.
Invite or add a user to a space as a user
To invite or add a user to a space with user authentication, pass the following in your request:
- Specify the
chat.memberships
authorization scope. - Call the
CreateMembership()
method. - Pass
parent
as the resource name of the space in which to create membership. - Pass
membership
as an instance ofMembership
with its fieldmember
set with the following:- The
type
field set toHUMAN
. - The
name
field set tousers/{user}
where{user}
is the person that you want to add to the space. To specify the Chat user, replace{user}
with any of the following:- The ID for the
person
in the People API. For example, if the People API
person
resourceName
ispeople/123456789
, then user the valueusers/123456789
. - The ID for the user in the Directory API.
- The user's email address. For example,
users/222larabrown@gmail.com
orusers/larabrown@cymbalgroup.com
. If the user uses a Google Account or belongs to a different Google Workspace organization, you must use their email address.
- The ID for the
person
in the People API. For example, if the People API
person
- The
The following example adds a user to a space with user authentication:
Node.js
Python
Java
Apps Script
To run the sample, replace the following:
SPACE_NAME
: the ID from the space'sname
. You can obtain the ID by calling theListSpaces()
method or from the space's URL.USER_NAME
: a user ID.
The Chat API returns an instance of
Membership
that details the user membership that was created.
Invite or add a Google Group to a space
To invite or add a Google Group to a space with user authentication (App authentication doesn't support inviting or adding a Google Group to a space), pass the following in your request:
- Specify the
chat.memberships
authorization scope. - Call the
CreateMembership()
method. - Pass
parent
as the resource name of the space in which to create membership. - Pass
membership
as an instance ofMembership
with the fieldname
ofgroupMember
set togroups/{group}
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.
Google Groups can't be added to a group chat or direct message, but only to a named space.
The following example adds a group to a named space with user authentication:
Node.js
Python
Java
Apps Script
To run the sample, replace the following:
SPACE_NAME
: the ID from the space'sname
. You can obtain the ID by calling theListSpaces()
method or from the space's URL.GROUP_NAME
: a group ID.
The Chat API returns an instance of
Membership
that details the user membership that was created.
Add a Chat app to a space
A Chat app can't add another app as a member to a space. To add a Chat app to a space or a direct message between two human users, pass the following in your request with user authentication (App authentication doesn't support inviting or adding a Chat app to a space):
- Specify the
chat.memberships.app
authorization scope. - Call the
CreateMembership()
method. - Pass
parent
as the resource name of the space in which to create membership. - Pass
membership
as an instance ofMembership
with its fieldmember
set with the following:- The
type
field set toBOT
. - The
name
field set tousers/app
; an alias that represents the app calling the Chat API.
- The
The following example adds a Chat app to a space:
Node.js
Python
Java
Apps Script
To run the sample, replace SPACE_NAME
with the ID from
the space's
name
.
You can obtain the ID by calling the
ListSpaces()
method or from the space's URL.
The Chat API returns an instance of
Membership
that details the user membership that was created.
Invite or add a user to a space as a Chat app
App authentication requires one-time administrator approval.
To invite or add a user to a space with app authentication, pass the following in your request:
- Specify the
chat.app.memberships
authorization scope. - Call the
create
method on themembership
resource. - Set
parent
to the resource name of the space in which to create membership. - Set
member
tousers/{user}
where{user}
is the person that you want to create membership for, and is either:- The ID for the
person
in the People API. For example, if the People API
person
resourceName
ispeople/123456789
, then setmembership.member.name
tousers/123456789
. - The ID for the user in the Directory API.
- The user's email address. For example,
users/222larabrown@gmail.com
orusers/larabrown@cymbalgroup.com
. If the user uses a Google Account or belongs to a different Google Workspace organization, you must use their email address.
- The ID for the
person
in the People API. For example, if the People API
person
Create an API key
To call a Developer Preview API method, you must use a non-public developer preview version of the API discovery document. To authenticate the request, you must pass an API key.
To create the API Key, open your app's Google Cloud project and do the following:
- In the Google Cloud console, go to Menu > APIs & Services > Credentials.
- Click Create credentials > API key.
- Your new API key is displayed.
- Click Copy to copy your API key for use in your app's code. The API key can also be found in the "API keys" section of your project's credentials.
- Click Restrict key to update advanced settings and limit use of your API key. For more details, see Applying API key restrictions.
Write a script that calls Chat API
The following example adds a user to a space with app authentication:
Python
- In your working directory, create a file named
chat_membership_app_create.py
. Include the following code in
chat_membership_app_create.py
:from google.oauth2 import service_account from apiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships"] def main(): ''' Authenticates with Chat API using app authentication, then adds a user to a Chat space by creating a membership. ''' # Specify service account details. creds = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY') # Use the service endpoint to call Chat API. result = chat.spaces().members().create( # The space in which to create a membership. parent = 'spaces/SPACE', # Specify which user the membership is for. body = { 'member': { 'name':'users/USER', 'type': 'HUMAN' } } ).execute() # Prints details about the created membership. print(result) if __name__ == '__main__': main()
In the code, replace the following:
API_KEY
: the API key you created to build the service endpoint for Chat API.SPACE
: a space name, which you can obtain from thespaces.list
method in the Chat API, or from a space's URL.USER
: a user ID.
In your working directory, build and run the sample:
python3 chat_membership_app_create.py
Add users or Google Groups to a space as a Google Workspace administrator
If you're a Google Workspace administrator, you can call the create()
method to add users, Google Groups, or Chat apps to any space in
your Google Workspace organization.
To call this method as a Google Workspace administrator, do the following:
- Call the method using user authentication, and specify an authorization scope that supports calling the method using administrator privileges.
- In your request, specify the query parameter
useAdminAccess
totrue
.
For more information and examples, see Manage Google Chat spaces as a Google Workspace administrator.
Limitations and considerations
- With App authentication,
a Chat app can invite or add users, but not
Google Groups or Chat apps. To add itself, a
Chat app must use
user authentication
with the
chat.memberships
authorization scope.
Related topics
- Get details about a user's or Chat app's membership.
- List members in a space.
- Update a user's membership in a Google Chat space.
- Remove a user or Chat app from a space.