const client = stream.connect(
"{{ api_key }}",
"{{ feed_token }}",
"{{ app_id }}",
);
// ensure the user data is stored on Stream
await client.setUser({
name: "John Doe",
occupation: "Software Engineer",
gender: "male",
});Users
Stream allows you to store user information and embed them inside activities or use them for personalization. When stored in activities, users are automatically enriched by Stream.
# The Go API client exposes users methods on Client.Users.
# When adding reactions, collections or reading feeds with enrichment
# you can provide `user_id` as an argumentAdding Users
This endpoint allows you to insert a new user.
| Name | Type | Description |
|---|---|---|
| id | string | The unique identifier for the new user (eg. username, user id, etc.). The value is restricted to alphanumeric characters, dashes and underscore symbols. |
| data | object | The data related to the user. |
// create a new user, if the user already exist an error is returned
userData := stream.User{
ID: "123",
Data: map[string]any{
"name": "John Doe",
"occupation": "Software Engineer",
"gender": "male",
},
}
resp, err := client.Users().Add(context.TODO(), userData, false)
if err != nil {
panic(err)
}
// get or create a new user, if the user already exist the user is returned
resp, err := client.Users().Add(context.TODO(), userData, true)
if err != nil {
panic(err)
}The size of a user object can not exceed 10kB
Retrieving Users
The retrieving users endpoint allows you to retrieve a user by their ID.
resp, err := client.Users().Get(context.TODO(), "123")
if err != nil {
panic(err)
}Removing Users
The delete endpoint removes a user by their ID.
resp, err := client.Users().Delete(context.TODO(), "123")
if err != nil {
panic(err)
}When you delete a user it will be converted to a missing reference and throw an error when enriching.
Updating Users
This endpoint allows you to update a user by their ID.
Parameters
| name | type | description | default | optional |
|---|---|---|---|---|
| id | string | The ID of the user to update | - | |
| data | object | The data related to the user | - |
data := map[string]any{
"name": "John Doe",
"occupation": "Software Engineer",
"gender": "female",
}
resp, err := client.Users().Update(context.TODO(), "123", data)
if err != nil {
panic(err)
}