Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e9b95ce
feat: add 16 user integration tests for chat test parity
mogita Feb 25, 2026
1e450b7
feat: add 27 message integration tests for chat test parity
mogita Feb 25, 2026
604b974
feat: add 2 polls integration tests for chat test parity
mogita Feb 25, 2026
9f72360
feat: add 19 misc chat integration tests for chat test parity
mogita Feb 25, 2026
14f5b98
feat: add 3 moderation integration tests for chat test parity
mogita Feb 25, 2026
b2eed21
feat: add 18 video integration tests for SDK test parity
mogita Feb 25, 2026
c84e34a
Merge branch 'master' into cha-1578_openapi-refactor-codegen
mogita Feb 25, 2026
ce5af33
test: blocklist deletion cleanup
mogita Feb 25, 2026
f50f44d
test: minor tweaks
mogita Feb 25, 2026
0be572d
test: case fixes and performance improvement
mogita Feb 25, 2026
22d9cf0
test: improve loop time
mogita Feb 25, 2026
b9da3ed
style: fix format issues
mogita Feb 25, 2026
3c75941
test: re-get to verify updated channel
mogita Feb 25, 2026
4bbb03e
style: fix code formatting
mogita Feb 25, 2026
8d8e7d3
test: fine tuning for api limits
mogita Feb 25, 2026
ef50f1c
test: fine tuning
mogita Feb 25, 2026
4f030f9
test: fine tuning
mogita Feb 25, 2026
78cbd34
test: fine tuning
mogita Feb 26, 2026
e6b67df
test: fine tuning for rate limiting
mogita Feb 26, 2026
d0110d7
test: fine tuning
mogita Feb 26, 2026
88605ce
test: fine tuning
mogita Feb 26, 2026
49f166f
feat: update by openapi refactor
mogita Feb 26, 2026
5299865
test: add test for user group
mogita Feb 26, 2026
8465a9c
style: fix code formatting
mogita Feb 26, 2026
c8087e0
test: fine tuning
mogita Feb 26, 2026
f2891a2
style: fix code formatting
mogita Feb 26, 2026
669ad55
test: fine tuning
mogita Feb 26, 2026
12172d3
test: fine tuning
mogita Feb 26, 2026
06c757e
style: fix code formatting
mogita Feb 26, 2026
48bf3d7
test: fine tuning
mogita Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions lib/getstream_ruby/generated/common_client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1027,6 +1027,175 @@ def upload_image(image_upload_request)
)
end

# Lists user groups with cursor-based pagination
#
# @param limit [Integer]
# @param id_gt [String]
# @param created_at_gt [String]
# @param team_id [String]
# @return [Models::ListUserGroupsResponse]
def list_user_groups(limit = nil, id_gt = nil, created_at_gt = nil, team_id = nil)
path = '/api/v2/usergroups'
# Build query parameters
query_params = {}
query_params['limit'] = limit unless limit.nil?
query_params['id_gt'] = id_gt unless id_gt.nil?
query_params['created_at_gt'] = created_at_gt unless created_at_gt.nil?
query_params['team_id'] = team_id unless team_id.nil?

# Make the API request
@client.make_request(
:get,
path,
query_params: query_params
)
end

# Creates a new user group, optionally with initial members
#
# @param create_user_group_request [CreateUserGroupRequest]
# @return [Models::CreateUserGroupResponse]
def create_user_group(create_user_group_request)
path = '/api/v2/usergroups'
# Build request body
body = create_user_group_request

# Make the API request
@client.make_request(
:post,
path,
body: body
)
end

# Searches user groups by name prefix for autocomplete
#
# @param query [String]
# @param limit [Integer]
# @param name_gt [String]
# @param id_gt [String]
# @param team_id [String]
# @return [Models::SearchUserGroupsResponse]
def search_user_groups(query, limit = nil, name_gt = nil, id_gt = nil, team_id = nil)
path = '/api/v2/usergroups/search'
# Build query parameters
query_params = {}
query_params['query'] = query unless query.nil?
query_params['limit'] = limit unless limit.nil?
query_params['name_gt'] = name_gt unless name_gt.nil?
query_params['id_gt'] = id_gt unless id_gt.nil?
query_params['team_id'] = team_id unless team_id.nil?

# Make the API request
@client.make_request(
:get,
path,
query_params: query_params
)
end

# Deletes a user group and all its members
#
# @param _id [String]
# @param team_id [String]
# @return [Models::Response]
def delete_user_group(_id, team_id = nil)
path = '/api/v2/usergroups/{id}'
# Replace path parameters
path = path.gsub('{id}', _id.to_s)
# Build query parameters
query_params = {}
query_params['team_id'] = team_id unless team_id.nil?

# Make the API request
@client.make_request(
:delete,
path,
query_params: query_params
)
end

# Gets a user group by ID, including its members
#
# @param _id [String]
# @param team_id [String]
# @return [Models::GetUserGroupResponse]
def get_user_group(_id, team_id = nil)
path = '/api/v2/usergroups/{id}'
# Replace path parameters
path = path.gsub('{id}', _id.to_s)
# Build query parameters
query_params = {}
query_params['team_id'] = team_id unless team_id.nil?

# Make the API request
@client.make_request(
:get,
path,
query_params: query_params
)
end

# Updates a user group's name and/or description. team_id is immutable.
#
# @param _id [String]
# @param update_user_group_request [UpdateUserGroupRequest]
# @return [Models::UpdateUserGroupResponse]
def update_user_group(_id, update_user_group_request)
path = '/api/v2/usergroups/{id}'
# Replace path parameters
path = path.gsub('{id}', _id.to_s)
# Build request body
body = update_user_group_request

# Make the API request
@client.make_request(
:put,
path,
body: body
)
end

# Removes members from a user group. Users already not in the group are silently ignored.
#
# @param _id [String]
# @param remove_user_group_members_request [RemoveUserGroupMembersRequest]
# @return [Models::RemoveUserGroupMembersResponse]
def remove_user_group_members(_id, remove_user_group_members_request)
path = '/api/v2/usergroups/{id}/members'
# Replace path parameters
path = path.gsub('{id}', _id.to_s)
# Build request body
body = remove_user_group_members_request

# Make the API request
@client.make_request(
:delete,
path,
body: body
)
end

# Adds members to a user group. All user IDs must exist. The operation is all-or-nothing.
#
# @param _id [String]
# @param add_user_group_members_request [AddUserGroupMembersRequest]
# @return [Models::AddUserGroupMembersResponse]
def add_user_group_members(_id, add_user_group_members_request)
path = '/api/v2/usergroups/{id}/members'
# Replace path parameters
path = path.gsub('{id}', _id.to_s)
# Build request body
body = add_user_group_members_request

# Make the API request
@client.make_request(
:post,
path,
body: body
)
end

# Find and filter users
#
# @param payload [QueryUsersPayload]
Expand Down
22 changes: 19 additions & 3 deletions lib/getstream_ruby/generated/feeds_client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -481,15 +481,15 @@ def delete_collections(collection_refs)

# Read collections with optional filtering by user ID and collection name. By default, users can only read their own collections.
#
# @param collection_refs [Array<String>]
# @param user_id [String]
# @param collection_refs [Array<String>]
# @return [Models::ReadCollectionsResponse]
def read_collections(collection_refs, user_id = nil)
def read_collections(user_id = nil, collection_refs = nil)
path = '/api/v2/feeds/collections'
# Build query parameters
query_params = {}
query_params['collection_refs'] = collection_refs unless collection_refs.nil?
query_params['user_id'] = user_id unless user_id.nil?
query_params['collection_refs'] = collection_refs unless collection_refs.nil?

# Make the API request
@client.make_request(
Expand Down Expand Up @@ -1098,6 +1098,22 @@ def get_follow_suggestions(feed_group_id, limit = nil, user_id = nil)
)
end

# Restores a soft-deleted feed group by its ID. Only clears DeletedAt in the database; no other fields are updated.
#
# @param feed_group_id [String]
# @return [Models::RestoreFeedGroupResponse]
def restore_feed_group(feed_group_id)
path = '/api/v2/feeds/feed_groups/{feed_group_id}/restore'
# Replace path parameters
path = path.gsub('{feed_group_id}', feed_group_id.to_s)

# Make the API request
@client.make_request(
:post,
path
)
end

# Delete a feed group by its ID. Can perform a soft delete (default) or hard delete.
#
# @param _id [String]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

# Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT.

module GetStream
module Generated
module Models
# Request body for adding members to a user group
class AddUserGroupMembersRequest < GetStream::BaseModel

# Model attributes
# @!attribute member_ids
# @return [Array<String>] List of user IDs to add as members
attr_accessor :member_ids
# @!attribute team_id
# @return [String]
attr_accessor :team_id

# Initialize with attributes
def initialize(attributes = {})
super(attributes)
@member_ids = attributes[:member_ids] || attributes['member_ids']
@team_id = attributes[:team_id] || attributes['team_id'] || nil
end

# Override field mappings for JSON serialization
def self.json_field_mappings
{
member_ids: 'member_ids',
team_id: 'team_id'
}
end
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

# Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT.

module GetStream
module Generated
module Models
# Response for adding members to a user group
class AddUserGroupMembersResponse < GetStream::BaseModel

# Model attributes
# @!attribute duration
# @return [String]
attr_accessor :duration
# @!attribute user_group
# @return [UserGroupResponse]
attr_accessor :user_group

# Initialize with attributes
def initialize(attributes = {})
super(attributes)
@duration = attributes[:duration] || attributes['duration']
@user_group = attributes[:user_group] || attributes['user_group'] || nil
end

# Override field mappings for JSON serialization
def self.json_field_mappings
{
duration: 'duration',
user_group: 'user_group'
}
end
end
end
end
end
10 changes: 10 additions & 0 deletions lib/getstream_ruby/generated/models/app_response_fields.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ class AppResponseFields < GetStream::BaseModel
# @!attribute max_aggregated_activities_length
# @return [Integer]
attr_accessor :max_aggregated_activities_length
# @!attribute moderation_audio_call_moderation_enabled
# @return [Boolean]
attr_accessor :moderation_audio_call_moderation_enabled
# @!attribute moderation_enabled
# @return [Boolean]
attr_accessor :moderation_enabled
Expand All @@ -57,6 +60,9 @@ class AppResponseFields < GetStream::BaseModel
# @!attribute moderation_multitenant_blocklist_enabled
# @return [Boolean]
attr_accessor :moderation_multitenant_blocklist_enabled
# @!attribute moderation_video_call_moderation_enabled
# @return [Boolean]
attr_accessor :moderation_video_call_moderation_enabled
# @!attribute moderation_webhook_url
# @return [String]
attr_accessor :moderation_webhook_url
Expand Down Expand Up @@ -179,9 +185,11 @@ def initialize(attributes = {})
@id = attributes[:id] || attributes['id']
@image_moderation_enabled = attributes[:image_moderation_enabled] || attributes['image_moderation_enabled']
@max_aggregated_activities_length = attributes[:max_aggregated_activities_length] || attributes['max_aggregated_activities_length']
@moderation_audio_call_moderation_enabled = attributes[:moderation_audio_call_moderation_enabled] || attributes['moderation_audio_call_moderation_enabled']
@moderation_enabled = attributes[:moderation_enabled] || attributes['moderation_enabled']
@moderation_llm_configurability_enabled = attributes[:moderation_llm_configurability_enabled] || attributes['moderation_llm_configurability_enabled']
@moderation_multitenant_blocklist_enabled = attributes[:moderation_multitenant_blocklist_enabled] || attributes['moderation_multitenant_blocklist_enabled']
@moderation_video_call_moderation_enabled = attributes[:moderation_video_call_moderation_enabled] || attributes['moderation_video_call_moderation_enabled']
@moderation_webhook_url = attributes[:moderation_webhook_url] || attributes['moderation_webhook_url']
@multi_tenant_enabled = attributes[:multi_tenant_enabled] || attributes['multi_tenant_enabled']
@name = attributes[:name] || attributes['name']
Expand Down Expand Up @@ -235,9 +243,11 @@ def self.json_field_mappings
id: 'id',
image_moderation_enabled: 'image_moderation_enabled',
max_aggregated_activities_length: 'max_aggregated_activities_length',
moderation_audio_call_moderation_enabled: 'moderation_audio_call_moderation_enabled',
moderation_enabled: 'moderation_enabled',
moderation_llm_configurability_enabled: 'moderation_llm_configurability_enabled',
moderation_multitenant_blocklist_enabled: 'moderation_multitenant_blocklist_enabled',
moderation_video_call_moderation_enabled: 'moderation_video_call_moderation_enabled',
moderation_webhook_url: 'moderation_webhook_url',
multi_tenant_enabled: 'multi_tenant_enabled',
name: 'name',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def initialize(attributes = {})
@started_at = attributes[:started_at] || attributes['started_at']
@task_id = attributes[:task_id] || attributes['task_id']
@custom = attributes[:custom] || attributes['custom']
@type = attributes[:type] || attributes['type'] || "export.channels.error"
@type = attributes[:type] || attributes['type'] || "export.users.error"
@received_at = attributes[:received_at] || attributes['received_at'] || nil
end

Expand Down
7 changes: 6 additions & 1 deletion lib/getstream_ruby/generated/models/aws_rekognition_rule.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,26 @@ class AWSRekognitionRule < GetStream::BaseModel
# @!attribute min_confidence
# @return [Float]
attr_accessor :min_confidence
# @!attribute subclassifications
# @return [Hash<String, Boolean>]
attr_accessor :subclassifications

# Initialize with attributes
def initialize(attributes = {})
super(attributes)
@action = attributes[:action] || attributes['action']
@label = attributes[:label] || attributes['label']
@min_confidence = attributes[:min_confidence] || attributes['min_confidence']
@subclassifications = attributes[:subclassifications] || attributes['subclassifications'] || nil
end

# Override field mappings for JSON serialization
def self.json_field_mappings
{
action: 'action',
label: 'label',
min_confidence: 'min_confidence'
min_confidence: 'min_confidence',
subclassifications: 'subclassifications'
}
end
end
Expand Down
Loading