// Add an activity to 1 feed
let activity = try await feed.addActivity(
    request: .init(
        text: "hello world",
        type: "post"
    )
)
// Add an activity to multiple feeds
let multiFeedActivity = try await client.addActivity(
    request: .init(
        feeds: ["user:1", "stock:apple"],
        text: "apple stock will go up",
        type: "post"
    )
)Activities
Creating Activities
The example below shows how to create an activity and add it to a feed.
// Add an activity to 1 feed
val activity: Result<ActivityData> = feed.addActivity(
    request = FeedAddActivityRequest(
        text = "hello world",
        type = "post"
    )
)
// Add an activity to multiple feeds
val multiFeedActivity: Result<ActivityData> = client.addActivity(
    request = AddActivityRequest(
        fids = listOf("user:1", "stock:apple"),
        text = "apple stock will go up",
        type = "post"
    )
)// Add an activity to 1 feed
const response = await feed.addActivity({
  type: "post",
  text: "apple stock will go up",
});
console.log(response.activity);
//...or multiple feeds
const response = await client.addActivity({
  feeds: ["user:1", "stock:apple"],
  type: "post",
  text: "apple stock will go up",
});// Add an activity to 1 feed or multiple feeds
const response = await client.feeds.addActivity({
  feeds: ["user:1", "stock:apple"],
  type: "post",
  text: "apple stock will go up",
  // Provide user id, the owner of the activity
  user_id: "<user id>",
});
console.log(response.activity);// Add an activity to 1 feed
final activity = await feed.addActivity(
  request: const FeedAddActivityRequest(text: 'Hello world', type: 'post'),
);
// Add an activity to multiple feeds
final multiFeedActivity = await feed.addActivity(
  request: const FeedAddActivityRequest(
    feeds: ['user:1', 'stock:apple'],
    text: 'apple stock will go up',
    type: 'post',
  ),
);feedsClient := client.Feeds()
response, err := feedsClient.AddActivity(context.Background(), &getstream.AddActivityRequest{
	Type:   "post",
	Feeds:  []string{"user:john", "stock:apple"},
	Text:   getstream.PtrTo("apple stock will go up"),
	UserID: getstream.PtrTo("john"),
})
if err != nil {
	log.Fatal("Error adding activity:", err)
}
log.Printf("Activity added successfully: %+v", response)AddActivityRequest activity =
    AddActivityRequest.builder()
        .type("post")
        .feeds(List.of(testFeedId))
        .text("This is a test activity from Java SDK")
        .userID(testUserId)
        .build();
AddActivityResponse response = feeds.addActivity(activity).execute().getData();// Add an activity to 1 feed or multiple feeds
$activity = new GeneratedModels\AddActivityRequest(
    type: 'post',
    feeds: ['user:1', 'stock:apple'],
    text: 'apple stock will go up',
    userID: '<user id>',
    custom: (object)[
        'test_field' => 'test_value',
        'timestamp' => time()
    ]
);
$response = $feedsClient->addActivity($activity);var activity = new AddActivityRequest
{
    Type = "post",
    Text = "This is a test activity from .NET SDK",
    UserID = _testUserId,
    Feeds = new List<string> { $"user:{_testFeedId}" }
};
var response = await _feedsV3Client.AddActivityAsync(activity);response = self.client.feeds.add_activity(
    type="post",
    feeds=[self.test_feed.get_feed_identifier()],
    text="This is a test activity from Python SDK",
    user_id=self.test_user_id,
    custom={
        "test_field": "test_value",
        "timestamp": int(datetime.now().timestamp()),
    },
)# Add an activity to 1 feed
activity_request = GetStream::Generated::Models::AddActivityRequest.new(
  type: 'post',
  text: 'hello world',
  user_id: 'user123',
  feeds: ['user:user123']
)
response = client.feeds.add_activity(activity_request)
# Add an activity to multiple feeds
multi_feed_request = GetStream::Generated::Models::AddActivityRequest.new(
  type: 'post',
  text: 'apple stock will go up',
  user_id: 'user123',
  feeds: ['user:1', 'stock:apple']
)
response = client.feeds.add_activity(multi_feed_request)The above example was quite simple. Here are a few more examples:
Image & Video
let imageActivity = try await feed.addActivity(
    request: .init(
        attachments: [
            Attachment(
                imageUrl: "https://example.com/image.jpg",
                type: "image"
            )
        ],
        text: "look at NYC",
        type: "post"
    )
)val imageActivity: Result<ActivityData> = feed.addActivity(
    request = FeedAddActivityRequest(
        attachments = listOf(
            Attachment(
                imageUrl = "https://example.com/image.jpg",
                type = "image"
            )
        ),
        text = "look at NYC",
        type = "post"
    )
)feed.addActivity({
  type: "post",
  text: "look at NYC",
  attachments: [
    {
      type: "image",
      image_url: "https://example.com/image.png",
      custom: {},
    },
  ],
});client.feeds.addActivity({
  feeds: ["user:1"],
  type: "post",
  text: "look at NYC",
  attachments: [
    {
      type: "image",
      image_url: "https://example.com/image.png",
      custom: {},
    },
  ],
  // Provide user id, the owner of the activity
  user_id: "<user id>",
});final imageActivity = await feed.addActivity(
  request: const FeedAddActivityRequest(
    attachments: [
      Attachment(
        imageUrl: 'https://example.com/image.jpg',
        type: 'image',
        custom: {'width': 600, 'height': 400},
      ),
    ],
    text: 'look at NYC',
    type: 'post',
  ),
);response, err := client.Feeds().AddActivity(context.Background(), &getstream.AddActivityRequest{
	Type:   "post",
	Feeds:  []string{"user:john"},
	Text:   getstream.PtrTo("look at NYC"),
	UserID: getstream.PtrTo("john"),
	Attachments: []getstream.Attachment{
		{
			AssetUrl: getstream.PtrTo("https://example.com/image.png"),
			Type:     getstream.PtrTo("image"),
			Title:    getstream.PtrTo("Amazing Video"),
			Custom: map[string]interface{}{},
		},
	},
})AddActivityRequest activity =
    AddActivityRequest.builder()
        .type("video")
        .feeds(List.of(testFeedId))
        .text("Check out this amazing video!")
        .userID(testUserId)
        .build();
AddActivityResponse response = feeds.addActivity(activity).execute().getData();$activity = new GeneratedModels\AddActivityRequest(
    type: 'post',
    feeds: ['user:1'],
    text: 'look at NYC',
    userID: '<user id>',
    attachments: [
        new GeneratedModels\Attachment(
            imageUrl: 'https://example.com/image.png',
            type: 'image',
            custom: (object)[]
        )
    ]
);
$response = $feedsClient->addActivity($activity);var activity = new AddActivityRequest
{
    Type = "video",
    Text = "Check out this amazing video!",
    UserID = _testUserId,
    Feeds = new List<string> { $"user:{_testFeedId}" }
    // Note: Video attachments would be added here in a real scenario
};
var response = await _feedsV3Client.AddActivityAsync(activity);response = self.client.feeds.add_activity(
    type="video",
    feeds=[self.test_feed.get_feed_identifier()],
    text="Check out this amazing video!",
    user_id=self.test_user_id,
    attachments=[
        Attachment(
            custom={"duration": 120},
            asset_url="https://example.com/amazing-video.mp4",
            type="video",
            title="Amazing Video",
        )
    ],
    custom={"video_quality": "4K", "duration_seconds": 120},
)# Image activity
attachment = GetStream::Generated::Models::Attachment.new(
  image_url: 'https://example.com/image.jpg',
  type: 'image',
  title: 'Test Image'
)
activity_request = GetStream::Generated::Models::AddActivityRequest.new(
  type: 'post',
  text: 'look at NYC',
  user_id: 'user123',
  feeds: ['user:user123'],
  attachments: [attachment]
)
response = client.feeds.add_activity(activity_request)
# Video activity
video_attachment = GetStream::Generated::Models::Attachment.new(
  asset_url: 'https://example.com/amazing-video.mp4',
  type: 'video',
  title: 'Amazing Video',
  custom: { duration: 120 }
)
video_request = GetStream::Generated::Models::AddActivityRequest.new(
  type: 'video',
  text: 'Check out this amazing video!',
  user_id: 'user123',
  feeds: ['user:user123'],
  attachments: [video_attachment],
  custom: {
    video_quality: '4K',
    duration_seconds: 120
  }
)
response = client.feeds.add_activity(video_request)Sharing activities
When creating an activity it’s possible to set parent_id, setting this field will increase the share_count of the parent activity. This feature lets you implement “retweets”.
When reading an activity with parent id set, you can access the parent activity with activity.parent.
let activity = try await feed.addActivity(
    request: .init(
        text: "Couldn't agree more",
        parentId: "<activity to share>",
        type: "post"
    )
)val activity: Result<ActivityData> = feed.addActivity(
    request = FeedAddActivityRequest(
        text = "Couldn't agree more",
        type = "post",
        parentId = "<activity to share>"
    )
)const response = await feed.addActivity({
  type: "post",
  text: `Couldn't agree more!`,
  parent_id: activityToShare.id,
});
console.log(response.activity?.parent);// Add an activity to 1 feed or multiple feeds
const response = await client.feeds.addActivity({
  feeds: ["user:1"],
  text: `Couldn't agree more!`,
  parent_id: activityToShare.id,
  // Provide user id, the owner of the activity
  user_id: "<user id>",
});
console.log(response.activity?.parent);final activity = await feed.addActivity(
  request: const FeedAddActivityRequest(text: 'Couldn\'t agree more!', type: 'post', parentId: '<activity to share>'),
);feedsClient := client.Feeds()
response, err := feedsClient.AddActivity(context.Background(), &getstream.AddActivityRequest{
	Type:   "post",
	Feeds:  []string{"user:john"},
	Text:   getstream.PtrTo("Couldn't agree more!"),
  ParentID:   getstream.PtrTo("<activity to share>"),
	UserID: getstream.PtrTo("john"),
})
if err != nil {
	log.Fatal("Error adding activity:", err)
}
log.Printf("Activity added successfully: %+v", response)AddActivityRequest activity =
    AddActivityRequest.builder()
        .type("post")
        .feeds(List.of(testFeedId))
        .text("Couldn't agree more!")
        .parentID("<activity to share>")
        .userID(testUserId)
        .build();
AddActivityResponse response = feeds.addActivity(activity).execute().getData();$activity = new GeneratedModels\AddActivityRequest(
    type: 'post',
    feeds: ['user:1'],
    text: 'Couldn\'t agree more!',
    parentID: '<activity to share>',
    userID: '<user id>',
);
$response = $feedsClient->addActivity($activity);var activity = new AddActivityRequest
{
    Type = "post",
    Text = "Couldn't agree more!",
    ParentID = "<activity to share>",
    UserID = _testUserId,
    Feeds = new List<string> { $"user:{_testFeedId}" }
};
var response = await _feedsV3Client.AddActivityAsync(activity);response = self.client.feeds.add_activity(
    type="post",
    feeds=[self.test_feed.get_feed_identifier()],
    text="Couldn't agree more!",
    parent_id="<activity to share>",
    user_id=self.test_user_id,
)activity_request = GetStream::Generated::Models::AddActivityRequest.new(
  type: 'post',
  text: 'Couldn\'t agree more!',
  parent_id: '<activity to share>',
  user_id: 'user123',
  feeds: ['user:user123']
)
response = client.feeds.add_activity(activity_request)Overview of All Activity Fields
Here’s an overview of all the fields you can add when creating an activity:
| Field | Description | 
|---|---|
id | Either set your own id, or let our server generate it. Setting your own ID can be convenient if your activity maps 1 to 1 to something in your database. | 
type | The type of activity. Defaults to “post” if not provided. | 
feeds | The list of feeds (format: “group id:feed id”) to add this activity to | 
text | The text for this activity | 
attachments | A list of attachments. Video, images, location, etc. Also supports custom attachments | 
custom | Any custom data you want to add | 
visibility | Visibility levels for the activity | 
location | Specify an activity location. This allows for feeds to show content close to you. Format: ActivityLocation(lat: 40.014984, lng: -105.270546) | 
expiresAt | When the activity expires. After this timestamp it’s only visible to the person who created this activity (or server side API calls) | 
mentionedUserIds | A list of users mentioned in this activity | 
parentId | The parent activity. Used for replies/reshares etc | 
searchData | Any extra data you want to search on for this activity | 
filterTags | Array of strings that you can filter on when querying the feed | 
interestTags | Either set the interest tags manually or enable an activity processor to have AI determine the topics for this activity. Used for “for you” style feeds | 
Adding Many Activities
You can also batch add activities. Here’s an example:
let activities = [
    ActivityRequest(
        feeds: ["user:123"],
        id: "1",
        text: "hi",
        type: "post"
    ),
    ActivityRequest(
        feeds: ["user:456"],
        id: "2",
        text: "hi",
        type: "post"
    )
]
let upsertedActivities = try await client.upsertActivities(activities)val activities = listOf(
    ActivityRequest(
        feeds = listOf("user:123"),
        id = "1",
        text = "hi",
        type = "post"
    ),
    ActivityRequest(
        feeds = listOf("user:456"),
        id = "2",
        text = "hi",
        type = "post"
    )
)
val upsertedActivities: Result<List<ActivityData>> = client.upsertActivities(activities)client.upsertActivities({
  activities: [
    {
      feeds: ["user:123"],
      id: "1",
      type: "post",
      text: "hi",
    },
    {
      feeds: ["user:456"],
      id: "2",
      type: "post",
      text: "hi",
    },
  ],
});client.feeds.upsertActivities({
  activities: [
    {
      feeds: ["user:123"],
      id: "1",
      type: "post",
      text: "hi",
      user_id: "<user id>",
    },
    {
      feeds: ["user:456"],
      id: "2",
      type: "post",
      text: "hi",
      user_id: "<user id>",
    },
  ],
});final activities = [
  const ActivityRequest(
    feeds: ['user:123'],
    id: '1',
    text: 'hi',
    type: 'post',
  ),
  const ActivityRequest(
    feeds: ['user:456'],
    id: '2',
    text: 'hi',
    type: 'post',
  ),
];
final upsertedActivities = await client.upsertActivities(
  activities: activities,
);activities := []getstream.ActivityRequest{
	{
		Type:   "post",
		Feeds:  []string{"user:123"},
		Text:   getstream.PtrTo("Batch activity 1"),
		UserID: getstream.PtrTo("john"),
	},
	{
		Type:   "post",
		Feeds:  []string{"user:456"},
		Text:   getstream.PtrTo("Batch activity 2"),
		UserID: getstream.PtrTo("alice"),
	},
}
response, err := client.Feeds().UpsertActivities(context.Background(), &getstream.UpsertActivitiesRequest{
	Activities: activities,
})List<ActivityRequest> activities =
    List.of(
        ActivityRequest.builder()
            .type("post")
            .text("Batch activity 1")
            .userID(testUserId)
            .build(),
        ActivityRequest.builder()
            .type("post")
            .text("Batch activity 2")
            .userID(testUserId)
            .build());
UpsertActivitiesRequest request =
    UpsertActivitiesRequest.builder().activities(activities).build();
UpsertActivitiesResponse response = feeds.upsertActivities(request).execute().getData();$activities = [
    [
        'feeds' => ['user:123'],
        'id' => '1',
        'type' => 'post',
        'text' => 'hi',
        'user_id' => '<user id>',
    ],
    [
        'feeds' => ['user:456'],
        'id' => '2',
        'type' => 'post',
        'text' => 'hi',
        'user_id' => '<user id>',
    ]
];
$response = $feedsClient->upsertActivities(
    new GeneratedModels\UpsertActivitiesRequest(activities: $activities)
);var activities = new List<ActivityRequest>
{
    new ActivityRequest
    {
        Type = "post",
        Text = "Batch activity 1",
        UserID = _testUserId
    },
    new ActivityRequest
    {
        Type = "post",
        Text = "Batch activity 2",
        UserID = _testUserId
    }
};
var response = await _feedsV3Client.UpsertActivitiesAsync(
    new UpsertActivitiesRequest { Activities = activities }
);activities = [
    ActivityRequest(
        type="post",
        text="Batch activity 1",
        user_id=self.test_user_id,
        feeds=[self.test_feed.get_feed_identifier()],
    ),
    ActivityRequest(
        type="post",
        text="Batch activity 2",
        user_id=self.test_user_id,
        feeds=[self.test_feed.get_feed_identifier()],
    ),
]
response = self.client.feeds.upsert_activities(activities=activities)activities = [
  {
    type: 'post',
    text: 'Batch activity 1',
    user_id: 'user123',
    feeds: ['user:user123']
  },
  {
    type: 'post',
    text: 'Batch activity 2',
    user_id: 'user123',
    feeds: ['user:user123']
  }
]
upsert_request = GetStream::Generated::Models::UpsertActivitiesRequest.new(
  activities: activities
)
response = client.feeds.upsert_activities(upsert_request)Updating & Deleting Activities
This example shows how to update or delete an activity:
// Update an activity
let updatedActivity = try await feed.updateActivity(
    id: "123",
    request: .init(
        custom: ["custom": "custom"],
        text: "Updated text"
    )
)
// Delete an activity
let hardDelete = false // Soft delete sets deleted at but retains the data, hard delete fully removes it
try await feed.deleteActivity(id: "123", hardDelete: hardDelete)
// Batch delete activities
try await client.deleteActivities(
    request: .init(
        activityIds: ["123", "456"],
        hardDelete: false
    )
)// Update an activity
val updatedActivity: Result<ActivityData> = feed.updateActivity(
    id = "123",
    request = UpdateActivityRequest(
        custom = mapOf("custom" to "custom"),
        text = "Updated text"
    )
)
// Delete an activity
val hardDelete = false // Soft delete sets deleted at but retains the data, hard delete fully removes it
feed.deleteActivity(id = "123", hardDelete = hardDelete)
// Batch delete activities
client.deleteActivities(
    request = DeleteActivitiesRequest(
        ids = listOf("123", "456"),
        hardDelete = false
    )
)// Update an activity
client.updateActivity({
  id: "123",
  text: "Updated text",
  custom: {
    color: "blue",
  },
});
client.deleteActivity({
  id: "123",
  hard_delete: false, // Soft delete sets deleted at but retains the data, hard delete fully removes it
});
// Batch delete activities
client.deleteActivities({
  id: ["123", "456"],
  hard_delete: false,
});// Update an activity
client.feeds.updateActivity({
  id: "123",
  text: "Updated text",
  custom: {
    color: "blue",
  },
  user_id: "<user id>",
});
client.feeds.deleteActivity({
  id: "123",
  hard_delete: false, // Soft delete sets deleted at but retains the data, hard delete fully removes it
  user_id: "<user id>",
});
// Batch delete activities
client.feeds.deleteActivities({
  id: ["123", "456"],
  user_id: "<user id>",
  hard_delete: false,
});// Update an activity
final updatedActivity = await feed.updateActivity(
  id: '123',
  request: const UpdateActivityRequest(
    text: 'Updated text',
    custom: {'custom': 'custom'},
  ),
);
// Delete an activity
await feed.deleteActivity(
  id: '123',
  // Soft delete sets deleted at but retains the data, hard delete fully removes it
  hardDelete: false,
);
// Batch delete activities
await client.deleteActivities(
  ids: ['123', '456'],
  hardDelete: false,
);// Update an activity
updateRequest := &getstream.UpdateActivityRequest{
  Text:   stringPtr("Updated text"),
  UserID: stringPtr("john"),
  Custom: map[string]any{
    "color": "blue",
  },
}
updateResponse, err := client.Feeds().UpdateActivity(context.Background(), "123", updateRequest)
if err != nil {
  log.Fatal("Error updating activity:", err)
}
log.Printf("Activity updated successfully: %+v", updateResponse)
// Delete a single activity (soft delete)
deleteRequest := &getstream.DeleteActivityRequest{
  HardDelete: boolPtr(false), // Soft delete
}
deleteResponse, err := client.Feeds().DeleteActivity(context.Background(), "123", deleteRequest)
if err != nil {
  log.Fatal("Error deleting activity:", err)
}
log.Printf("Activity deleted successfully: %+v", deleteResponse)
// Batch delete activities
batchDeleteRequest := &getstream.DeleteActivitiesRequest{
  Ids:        []string{"123", "456"},
  UserID:     stringPtr("john"),
  HardDelete: boolPtr(false), // Soft delete
}
batchDeleteResponse, err := client.Feeds().DeleteActivities(context.Background(), batchDeleteRequest)
if err != nil {
  log.Fatal("Error batch deleting activities:", err)
}
log.Printf("Activities batch deleted successfully: %+v", batchDeleteResponse)Map<String, Object> customData = new HashMap<>();
customData.put("updated", true);
customData.put("update_time", System.currentTimeMillis() / 1000);
UpdateActivityRequest updateRequest =
    UpdateActivityRequest.builder()
        .text("Updated activity text from Java SDK")
        .userID(testUserId) // Required for server-side auth
        .custom(customData)
        .build();
UpdateActivityResponse response =
    feeds.updateActivity(activityId, updateRequest).execute().getData();// Update an activity
$response = $feedsClient->updateActivity(
    '123',
    new GeneratedModels\UpdateActivityRequest(
        text: 'Updated text',
        userID: '<user id>',
        custom: (object)[
            'color' => 'blue'
        ]
    )
);
// Delete an activity (soft delete sets deleted at but retains the data, hard delete fully removes it)
$response = $feedsClient->deleteActivity('123', false);
// Batch delete activities
$response = $feedsClient->deleteActivities(
    new GeneratedModels\DeleteActivitiesRequest(
        ids: ['123', '456'],
        userID: '<user id>',
        hardDelete: false
    )
);var response = await _feedsV3Client.UpdateActivityAsync(
    activityId,
    new UpdateActivityRequest
    {
        Text = "Updated activity text from .NET SDK",
        UserID = _testUserId,  // Required for server-side auth
        Custom = new Dictionary<string, object>
        {
            ["updated"] = true,
            ["update_time"] = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
        }
    }
);response = self.client.feeds.update_activity(
    activity_id,
    text="Updated activity text from Python SDK",
    user_id=self.test_user_id,  # Required for server-side auth
    custom={"updated": True, "update_time": int(datetime.now().timestamp())},
)# Update an activity
update_request = GetStream::Generated::Models::UpdateActivityRequest.new(
  text: 'Updated activity text from Ruby SDK',
  user_id: 'user123',
  custom: {
    updated: true,
    update_time: Time.now.to_i
  }
)
response = client.feeds.update_activity(activity_id, update_request)
# Delete an activity (soft delete)
delete_request = GetStream::Generated::Models::DeleteActivityRequest.new(
  hard_delete: false  # Soft delete sets deleted at but retains the data
)
response = client.feeds.delete_activity(activity_id, delete_request)
# Batch delete activities
batch_delete_request = GetStream::Generated::Models::DeleteActivitiesRequest.new(
  activity_ids: ['123', '456'],
  hard_delete: false
)
response = client.feeds.delete_activities(batch_delete_request)Partial activity updates
A partial update can be used to set and unset specific fields when it is necessary to retain additional custom data fields on the object. AKA a patch style update. Both set and unset can be used in the same request. The dotted-notation is also available for both set and unset for the custom field.
// Partially set some fields
let updatedActivity = try await feed.updateActivityPartial(
    id: "123",
    request: .init(
        set: [
            "text": "Japan has over 6,800 islands.",
            "custom": [
                "topic": "fun facts",
                "color": "blue",
            ],
        ]
    )
)
// Partially unset some fields
let updatedActivity = try await feed.updateActivityPartial(
    id: "123",
    request: .init(
        unset: ["custom.color"]
    )
)// Partially set some fields
val updatedActivity: Result<ActivityData> = feed.updateActivityPartial(
    id = "123",
    request = UpdateActivityPartialRequest(
        set = mapOf(
            "text" to "Japan has over 6,800 islands.",
            "custom" to mapOf(
                "topic" to "fun facts",
                "color" to "blue",
            ),
        )
    )
)
// Partially unset some fields
val updatedActivity: Result<ActivityData> = feed.updateActivityPartial(
    id = "123",
    request = UpdateActivityPartialRequest(
        unset = listOf("custom.color")
    )
)// Partially set some fields
client.updateActivityPartial({
  id: activity.id,
  set: {
    text: "Japan has over 6,800 islands.",
    custom: {
      topic: "fun facts",
      color: "blue",
    },
  },
});
// Partially unset some fields
client.updateActivityPartial({
  id: activity.id,
  unset: ["custom.color"],
});// Partially set some fields
client.feeds.updateActivityPartial({
  id: activity.id,
  set: {
    text: "Japan has over 6,800 islands.",
    custom: {
      topic: "fun facts",
      color: "blue",
    },
  },
  user_id: "<user id>",
});
// Partially unset some fields
client.feeds.updateActivityPartial({
  id: activity.id,
  unset: ["custom.color"],
  user_id: "<user id>",
});// Partially set some fields
final updatedActivity = await feed.updateActivityPartial(
  id: '123',
  request: const UpdateActivityPartialRequest(
    set: {
      'text': 'Japan has over 6,800 islands.',
      'custom': {
        'topic': 'fun facts',
        'color': 'blue',
      },
    },
  ),
);
// Partially unset some fields
final updatedActivity = await feed.updateActivityPartial(
  id: '123',
  request: const UpdateActivityPartialRequest(
    unset: ['custom.color'],
  ),
);// Partially set some fields
updateRequest := &getstream.UpdateActivityPartialRequest{
  UserID: stringPtr("<user id>"),
  Set: map[string]any{
    "text": "Japan has over 6,800 islands.",
    "custom": map[string]any{
      "topic": "fun facts",
      "color": "blue",
    },
  }
}
updateResponse, err := client.Feeds().UpdateActivityPartial(context.Background(), "123", updateRequest)
if err != nil {
  log.Fatal("Error updating activity:", err)
}
log.Printf("Activity updated successfully: %+v", updateResponse)
// Partially unset some fields
updateRequest := &getstream.UpdateActivityPartialRequest{
  UserID: stringPtr("<user id>"),
  Unset: []string{"custom.color"},
}
updateResponse, err := client.Feeds().UpdateActivityPartial(context.Background(), "123", updateRequest)
if err != nil {
  log.Fatal("Error updating activity:", err)
}
log.Printf("Activity updated successfully: %+v", updateResponse)// Partially set some fields
Map<String, Object> customData = new HashMap<>();
customData.put("topic", "fun facts");
customData.put("color", "blue");
Map<String, Object> setData = new HashMap<>();
customData.put("text", "Japan has over 6,800 islands.");
customData.put("custom", customData);
UpdateActivityPartialRequest updateRequest =
    UpdateActivityPartialRequest.builder()
        .set(setData)
        .build();
UpdateActivityResponse response =
    feeds.updateActivity(activityId, updateRequest).execute().getData();
// Partially unset some fields
UpdateActivityPartialRequest updateRequest =
    UpdateActivityPartialRequest.builder()
        .unset(List.of("custom.color"))
        .build();
UpdateActivityResponse response =
    feeds.updateActivity(activityId, updateRequest).execute().getData();// Partially set some fields
$response = $feedsClient->updateActivityPartial(
    '123',
    new GeneratedModels\UpdateActivityPartialRequest(
        userID: '<user id>',
        set: [
            'text' => 'Japan has over 6,800 islands.',
            'custom' => [
                'topic' => 'fun facts',
                'color' => 'blue',
            ]
        ]
    )
);
// Partially unset some fields
$response = $feedsClient->updateActivityPartial(
    '123',
    new GeneratedModels\UpdateActivityPartialRequest(
        userID: '<user id>',
        unset: ['custom.color']
    )
);// Partially set some fields
var response = await _feedsV3Client.UpdateActivityPartialAsync(
    activityId,
    new UpdateActivityPartialRequest
    {
        UserID = _testUserId,  // Required for server-side auth
        Set = new Dictionary<string, object>
        {
            ["text"] = "Japan has over 6,800 islands.",
            ["custom"] = new Dictionary<string, object>
            {
                ["topic"] = "fun facts",
                ["color"] = "blue",
            }
        }
    }
);
// Partially unset some fields
var response = await _feedsV3Client.UpdateActivityPartialAsync(
    activityId,
    new UpdateActivityPartialRequest
    {
        UserID = _testUserId,  // Required for server-side auth
        Unset = new List<string> { "custom.color" }
    }
);// Partially set some fields
response = self.client.feeds.update_activity_partial(
    activity_id,
    user_id=self.test_user_id,  # Required for server-side auth
    set={
        "text": "Japan has over 6,800 islands.",
        "custom": {
            "topic": "fun facts",
            "color": "blue",
        }
    }
)
// Partially unset some fields
response = self.client.feeds.update_activity_partial(
    activity_id,
    user_id=self.test_user_id,  # Required for server-side auth
    unset=["custom.color"]
)// Partially set some fields
update_request = GetStream::Generated::Models::UpdateActivityPartialRequest.new(
  user_id: 'user123',
  set: {
    text: 'Japan has over 6,800 islands.',
    custom: {
      topic: 'fun facts',
      color: 'blue',
    }
  }
)
response = client.feeds.update_activity_partial(activity_id, update_request)
// Partially unset some fields
update_request = GetStream::Generated::Models::UpdateActivityPartialRequest.new(
  user_id: 'user123',
  unset: ['custom.color']
)
response = client.feeds.update_activity_partial(activity_id, update_request)