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 Python API client exposes users methods on client.users
# when adding reactions, collections or reading feeds with enrichment
# you can provide `user_id` as an argument
# The Ruby API client exposes user method on client.users
# when adding reactions, collections or reading feeds with enrichment
# you can provide `:user_id` as an argument
// The PHP API client exposes users methods on $client->users()
// when adding reactions, collections or reading feeds with enrichment
// you can provide `$user_id` as argument
// Java API client exposes users methods on client.user object
// when adding reactions, collections you can provide `userID` as argument
let client = Client(apiKey: "c38bmrz86x8y", appId: "64184", token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidXNlcjEifQ.BQudnXB4B8wyoVDW403IaRG3zDs31L65VrVtf87prho")
let user = User(id: "john-doe")
client.create(user: user) { result in
if let createdUser = try? result.get() {
client.currentUser = createdUser
}
}
final client = StreamFeedClient.connect('{{ api_key }}', token: '{{ feed_token }}',appId: '{{ app_id }}');
// ensure the user data is stored on Stream
await client.setUserData({
'name': 'John Doe',
'occupation': 'Software Engineer',
'gender': 'male'
});
# 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 argument
Adding 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
const userData = new Dictionary<string, object>
{
{"name", "John Doe" },
{"occupation", "Software Engineer"},
{"gender", "male"},
};
await client.Users.AddAsync("john-doe", userData);
// get or create a new user, if the user already exist the user is returned
await client.Users.AddAsync("john-doe", userData, true);
// create a new user, if the user already exist an error is returned
client.user("john-doe").create({
name: "John Doe",
occupation: "Software Engineer",
gender: 'male'
});
// get or create a new user, if the user already exist the user is returned
client.user("john-doe").getOrCreate({
name: "John Doe",
occupation: "Software Engineer",
gender: 'male'
});
# create a new user, if the user already exist an error is returned
client.users.add(
"john-doe",
{"name": "John Doe", "occupation": "Software Engineer", "gender": "male"},
)
# get or create a new user, if the user already exist the user is returned
client.users.add(
"john-doe",
{"name": "John Doe", "occupation": "Software Engineer", "gender": "male"},
get_or_create=True,
)
# create a new user, if the user already exists, an error is returned
client.users.add(
"john-doe",
:data => {:name => "John Doe", :occupation => "Software Engineer", :gender => "male"},
)
# get or create a new user, if the user already exists, the user is returned
client.users.add(
"john-doe",
:data => {:name => "John Doe", :occupation => "Software Engineer", :gender => "male"},
:get_or_create => true,
)
// create a new user with the name in userdata
$user = $client->users()->add('42', array('name' => 'Arthur Dent'));
// get OR create the user
$user = $client->users()->add('42', array('name' => 'Arthur Dent'), true);
// create a new user, if the user already exist an error is returned
client.user("john-doe").create(new Data()
.set("name", "John Doe")
.set("occupation", "Software Engineer")
.set("gender", "male")).join();
// get or create a new user, if the user already exist the user is returned
client.user("john-doe").getOrCreate(new Data()
.set("name", "John Doe")
.set("occupation", "Software Engineer")
.set("gender", "male")).join();
// 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)
}
// create a new user, if the user already exist an error is returned
client.create(user: User(id: "john-doe"), getOrCreate: false) { result in /* ... */ }
// get or create a new user, if the user already exist the user is returned
client.create(user: User(id: "john-doe"), getOrCreate: true) { result in /* ... */ }
// create a new user, if the user already exist an error is returned
await client.user('john-doe').create({
'name': 'John Doe',
'occupation': 'Software Engineer',
'gender': 'male'
});
// get or create a new user, if the user already exist the user is returned
await client.user('john-doe').getOrCreate({
'name': 'John Doe',
'occupation': 'Software Engineer',
'gender': 'male'
});
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.
await client.Users.GetAsync("123");
client.user('123').get();
client.users.get("123")
client.users.get("123")
$client->users()->get('42');
client.user("123").get().join();
resp, err := client.Users().Get(context.TODO(), "123")
if err != nil {
panic(err)
}
client.get(userId: "123") { result in /* ... */ }
//retrieving users
await client.user('john-doe').get();
Removing Users
The delete endpoint removes a user by their ID.
await client.Users.DeleteAsync("123")
client.user('123').delete();
client.users.delete("123")
client.users.delete("123")
$client->users()->delete('42');
client.user("123").delete().join();
resp, err := client.Users().Delete(context.TODO(), "123")
if err != nil {
panic(err)
}
client.delete(userId: "123") { result in /* ... */ }
await client.user('john-doe').delete();
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 | - |
var userData = new Dictionary<string, object>
{
{"name", "Jane Doe" },
{"occupation", "Software Engineer"},
{"gender", "female"},
};
await client.Users.UpdateAsync("123", userData)
client.user('123').update({ name: "Jane Doe", occupation: "Software Engineer", gender: "female" });
client.users.update("123",
{"name": "Jane Doe", "occupation": "Software Engineer", "gender": "female"}
)
client.users.update("123",
:data => {:name => "Jane Doe", :occupation => "Software Engineer", :gender => "female"}
)
$user = $client->users()->update('42', array('name' => 'Arthur Dent');
client.user("123").update(new Data()
.set("name", "Jane Doe")
.set("occupation", "Software Engineer")
.set("gender", "female")).join();
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)
}
client.update(user: User(id: "john-doe")) { result in /* ... */ }
await client.user('john-doe').update({
'name': 'Jane Doe',
'occupation': 'Software Engineer',
'gender': 'female'
});