From 3a1d05d96b3dbf0abe14f9f4c58e2b16f2ffbbd0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 17:57:27 +0000 Subject: [PATCH 1/6] feat(api): api update --- .stats.yml | 4 +- .../models/audience_add_members_params.rb | 28 ++++++---- .../models/audience_remove_members_params.rb | 28 ++++++---- .../models/audience_add_members_params.rbi | 51 ++++++++++++++----- .../models/audience_remove_members_params.rbi | 51 ++++++++++++++----- .../models/audience_add_members_params.rbs | 23 +++++++-- .../models/audience_remove_members_params.rbs | 23 +++++++-- test/knockapi/resources/audiences_test.rb | 4 +- 8 files changed, 156 insertions(+), 56 deletions(-) diff --git a/.stats.yml b/.stats.yml index 87f7c8d6..075cb58e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 90 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-1847c4ab086e290a4e3a698f3bc55605fa5c24cbdef663a51a8b84d260312491.yml -openapi_spec_hash: 6ecef3ce2fc44f77781c835fefe1aa82 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-5d586855fa3ef8505e3cf0c86ea7903a7f5609853c3697c6a110c88e1c3344c1.yml +openapi_spec_hash: 1afe31150fa4b2ed126b0d809513fc0a config_hash: 2b42d138d85c524e65fa7e205d36cc4a diff --git a/lib/knockapi/models/audience_add_members_params.rb b/lib/knockapi/models/audience_add_members_params.rb index 851ceaef..9eab67dc 100644 --- a/lib/knockapi/models/audience_add_members_params.rb +++ b/lib/knockapi/models/audience_add_members_params.rb @@ -20,13 +20,10 @@ class AudienceAddMembersParams < Knockapi::Internal::Type::BaseModel class Member < Knockapi::Internal::Type::BaseModel # @!attribute user - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. + # An object containing the user's ID. # - # @return [Knockapi::Models::InlineIdentifyUserRequest] - required :user, -> { Knockapi::InlineIdentifyUserRequest } + # @return [Knockapi::Models::AudienceAddMembersParams::Member::User] + required :user, -> { Knockapi::AudienceAddMembersParams::Member::User } # @!attribute tenant # The unique identifier for the tenant. @@ -35,14 +32,25 @@ class Member < Knockapi::Internal::Type::BaseModel optional :tenant, String, nil?: true # @!method initialize(user:, tenant: nil) - # Some parameter documentations has been truncated, see - # {Knockapi::Models::AudienceAddMembersParams::Member} for more details. - # # An audience member. # - # @param user [Knockapi::Models::InlineIdentifyUserRequest] A set of parameters to inline-identify a user with. Inline identifying the user + # @param user [Knockapi::Models::AudienceAddMembersParams::Member::User] An object containing the user's ID. # # @param tenant [String, nil] The unique identifier for the tenant. + + # @see Knockapi::Models::AudienceAddMembersParams::Member#user + class User < Knockapi::Internal::Type::BaseModel + # @!attribute id + # The unique identifier of the user. + # + # @return [String, nil] + optional :id, String + + # @!method initialize(id: nil) + # An object containing the user's ID. + # + # @param id [String] The unique identifier of the user. + end end end end diff --git a/lib/knockapi/models/audience_remove_members_params.rb b/lib/knockapi/models/audience_remove_members_params.rb index 82617608..eb20b0e8 100644 --- a/lib/knockapi/models/audience_remove_members_params.rb +++ b/lib/knockapi/models/audience_remove_members_params.rb @@ -20,13 +20,10 @@ class AudienceRemoveMembersParams < Knockapi::Internal::Type::BaseModel class Member < Knockapi::Internal::Type::BaseModel # @!attribute user - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. + # An object containing the user's ID. # - # @return [Knockapi::Models::InlineIdentifyUserRequest] - required :user, -> { Knockapi::InlineIdentifyUserRequest } + # @return [Knockapi::Models::AudienceRemoveMembersParams::Member::User] + required :user, -> { Knockapi::AudienceRemoveMembersParams::Member::User } # @!attribute tenant # The unique identifier for the tenant. @@ -35,14 +32,25 @@ class Member < Knockapi::Internal::Type::BaseModel optional :tenant, String, nil?: true # @!method initialize(user:, tenant: nil) - # Some parameter documentations has been truncated, see - # {Knockapi::Models::AudienceRemoveMembersParams::Member} for more details. - # # An audience member. # - # @param user [Knockapi::Models::InlineIdentifyUserRequest] A set of parameters to inline-identify a user with. Inline identifying the user + # @param user [Knockapi::Models::AudienceRemoveMembersParams::Member::User] An object containing the user's ID. # # @param tenant [String, nil] The unique identifier for the tenant. + + # @see Knockapi::Models::AudienceRemoveMembersParams::Member#user + class User < Knockapi::Internal::Type::BaseModel + # @!attribute id + # The unique identifier of the user. + # + # @return [String, nil] + optional :id, String + + # @!method initialize(id: nil) + # An object containing the user's ID. + # + # @param id [String] The unique identifier of the user. + end end end end diff --git a/rbi/knockapi/models/audience_add_members_params.rbi b/rbi/knockapi/models/audience_add_members_params.rbi index c89150cd..c85ffdef 100644 --- a/rbi/knockapi/models/audience_add_members_params.rbi +++ b/rbi/knockapi/models/audience_add_members_params.rbi @@ -48,14 +48,15 @@ module Knockapi ) end - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. - sig { returns(Knockapi::InlineIdentifyUserRequest) } + # An object containing the user's ID. + sig { returns(Knockapi::AudienceAddMembersParams::Member::User) } attr_reader :user - sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void } + sig do + params( + user: Knockapi::AudienceAddMembersParams::Member::User::OrHash + ).void + end attr_writer :user # The unique identifier for the tenant. @@ -65,15 +66,12 @@ module Knockapi # An audience member. sig do params( - user: Knockapi::InlineIdentifyUserRequest::OrHash, + user: Knockapi::AudienceAddMembersParams::Member::User::OrHash, tenant: T.nilable(String) ).returns(T.attached_class) end def self.new( - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. + # An object containing the user's ID. user:, # The unique identifier for the tenant. tenant: nil @@ -83,13 +81,42 @@ module Knockapi sig do override.returns( { - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceAddMembersParams::Member::User, tenant: T.nilable(String) } ) end def to_hash end + + class User < Knockapi::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Knockapi::AudienceAddMembersParams::Member::User, + Knockapi::Internal::AnyHash + ) + end + + # The unique identifier of the user. + sig { returns(T.nilable(String)) } + attr_reader :id + + sig { params(id: String).void } + attr_writer :id + + # An object containing the user's ID. + sig { params(id: String).returns(T.attached_class) } + def self.new( + # The unique identifier of the user. + id: nil + ) + end + + sig { override.returns({ id: String }) } + def to_hash + end + end end end end diff --git a/rbi/knockapi/models/audience_remove_members_params.rbi b/rbi/knockapi/models/audience_remove_members_params.rbi index 8c89bb43..56ab7639 100644 --- a/rbi/knockapi/models/audience_remove_members_params.rbi +++ b/rbi/knockapi/models/audience_remove_members_params.rbi @@ -52,14 +52,15 @@ module Knockapi ) end - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. - sig { returns(Knockapi::InlineIdentifyUserRequest) } + # An object containing the user's ID. + sig { returns(Knockapi::AudienceRemoveMembersParams::Member::User) } attr_reader :user - sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void } + sig do + params( + user: Knockapi::AudienceRemoveMembersParams::Member::User::OrHash + ).void + end attr_writer :user # The unique identifier for the tenant. @@ -69,15 +70,12 @@ module Knockapi # An audience member. sig do params( - user: Knockapi::InlineIdentifyUserRequest::OrHash, + user: Knockapi::AudienceRemoveMembersParams::Member::User::OrHash, tenant: T.nilable(String) ).returns(T.attached_class) end def self.new( - # A set of parameters to inline-identify a user with. Inline identifying the user - # will ensure that the user is available before the request is executed in Knock. - # It will perform an upsert for the user you're supplying, replacing any - # properties specified. + # An object containing the user's ID. user:, # The unique identifier for the tenant. tenant: nil @@ -87,13 +85,42 @@ module Knockapi sig do override.returns( { - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceRemoveMembersParams::Member::User, tenant: T.nilable(String) } ) end def to_hash end + + class User < Knockapi::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Knockapi::AudienceRemoveMembersParams::Member::User, + Knockapi::Internal::AnyHash + ) + end + + # The unique identifier of the user. + sig { returns(T.nilable(String)) } + attr_reader :id + + sig { params(id: String).void } + attr_writer :id + + # An object containing the user's ID. + sig { params(id: String).returns(T.attached_class) } + def self.new( + # The unique identifier of the user. + id: nil + ) + end + + sig { override.returns({ id: String }) } + def to_hash + end + end end end end diff --git a/sig/knockapi/models/audience_add_members_params.rbs b/sig/knockapi/models/audience_add_members_params.rbs index a4ddcf1d..0c7b6d26 100644 --- a/sig/knockapi/models/audience_add_members_params.rbs +++ b/sig/knockapi/models/audience_add_members_params.rbs @@ -21,22 +21,37 @@ module Knockapi } type member = - { user: Knockapi::InlineIdentifyUserRequest, tenant: String? } + { + user: Knockapi::AudienceAddMembersParams::Member::User, + tenant: String? + } class Member < Knockapi::Internal::Type::BaseModel - attr_accessor user: Knockapi::InlineIdentifyUserRequest + attr_accessor user: Knockapi::AudienceAddMembersParams::Member::User attr_accessor tenant: String? def initialize: ( - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceAddMembersParams::Member::User, ?tenant: String? ) -> void def to_hash: -> { - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceAddMembersParams::Member::User, tenant: String? } + + type user = { id: String } + + class User < Knockapi::Internal::Type::BaseModel + attr_reader id: String? + + def id=: (String) -> String + + def initialize: (?id: String) -> void + + def to_hash: -> { id: String } + end end end end diff --git a/sig/knockapi/models/audience_remove_members_params.rbs b/sig/knockapi/models/audience_remove_members_params.rbs index b51934a9..85768d5c 100644 --- a/sig/knockapi/models/audience_remove_members_params.rbs +++ b/sig/knockapi/models/audience_remove_members_params.rbs @@ -21,22 +21,37 @@ module Knockapi } type member = - { user: Knockapi::InlineIdentifyUserRequest, tenant: String? } + { + user: Knockapi::AudienceRemoveMembersParams::Member::User, + tenant: String? + } class Member < Knockapi::Internal::Type::BaseModel - attr_accessor user: Knockapi::InlineIdentifyUserRequest + attr_accessor user: Knockapi::AudienceRemoveMembersParams::Member::User attr_accessor tenant: String? def initialize: ( - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceRemoveMembersParams::Member::User, ?tenant: String? ) -> void def to_hash: -> { - user: Knockapi::InlineIdentifyUserRequest, + user: Knockapi::AudienceRemoveMembersParams::Member::User, tenant: String? } + + type user = { id: String } + + class User < Knockapi::Internal::Type::BaseModel + attr_reader id: String? + + def id=: (String) -> String + + def initialize: (?id: String) -> void + + def to_hash: -> { id: String } + end end end end diff --git a/test/knockapi/resources/audiences_test.rb b/test/knockapi/resources/audiences_test.rb index 587b78bb..e004b4ba 100644 --- a/test/knockapi/resources/audiences_test.rb +++ b/test/knockapi/resources/audiences_test.rb @@ -6,7 +6,7 @@ class Knockapi::Test::Resources::AudiencesTest < Knockapi::Test::ResourceTest def test_add_members_required_params skip("Prism doesn't support callbacks yet") - response = @knock.audiences.add_members("key", members: [{user: {id: "dr_sattler"}}]) + response = @knock.audiences.add_members("key", members: [{user: {}}]) assert_pattern do response => nil @@ -33,7 +33,7 @@ def test_list_members def test_remove_members_required_params skip("Prism doesn't support callbacks yet") - response = @knock.audiences.remove_members("key", members: [{user: {id: "dr_sattler"}}]) + response = @knock.audiences.remove_members("key", members: [{user: {}}]) assert_pattern do response => nil From 3ba63996dab0c2047a0e019a0bfd844513e0600f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 20:58:56 +0000 Subject: [PATCH 2/6] feat(api): api update --- .stats.yml | 4 +- .../models/audience_add_members_params.rb | 28 ++++------ .../models/audience_remove_members_params.rb | 28 ++++------ lib/knockapi/resources/users/feeds.rb | 3 ++ .../models/audience_add_members_params.rbi | 51 +++++-------------- .../models/audience_remove_members_params.rbi | 51 +++++-------------- rbi/knockapi/resources/users/feeds.rbi | 3 ++ .../models/audience_add_members_params.rbs | 23 ++------- .../models/audience_remove_members_params.rbs | 23 ++------- test/knockapi/resources/audiences_test.rb | 4 +- 10 files changed, 62 insertions(+), 156 deletions(-) diff --git a/.stats.yml b/.stats.yml index 075cb58e..f7645e98 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 90 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-5d586855fa3ef8505e3cf0c86ea7903a7f5609853c3697c6a110c88e1c3344c1.yml -openapi_spec_hash: 1afe31150fa4b2ed126b0d809513fc0a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-051fb64fc98086ac7435196316e0aee760dce287ac9e44eed11ea243893498c9.yml +openapi_spec_hash: c3cea367a962be6faea1e8fba430ed3c config_hash: 2b42d138d85c524e65fa7e205d36cc4a diff --git a/lib/knockapi/models/audience_add_members_params.rb b/lib/knockapi/models/audience_add_members_params.rb index 9eab67dc..851ceaef 100644 --- a/lib/knockapi/models/audience_add_members_params.rb +++ b/lib/knockapi/models/audience_add_members_params.rb @@ -20,10 +20,13 @@ class AudienceAddMembersParams < Knockapi::Internal::Type::BaseModel class Member < Knockapi::Internal::Type::BaseModel # @!attribute user - # An object containing the user's ID. + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. # - # @return [Knockapi::Models::AudienceAddMembersParams::Member::User] - required :user, -> { Knockapi::AudienceAddMembersParams::Member::User } + # @return [Knockapi::Models::InlineIdentifyUserRequest] + required :user, -> { Knockapi::InlineIdentifyUserRequest } # @!attribute tenant # The unique identifier for the tenant. @@ -32,25 +35,14 @@ class Member < Knockapi::Internal::Type::BaseModel optional :tenant, String, nil?: true # @!method initialize(user:, tenant: nil) + # Some parameter documentations has been truncated, see + # {Knockapi::Models::AudienceAddMembersParams::Member} for more details. + # # An audience member. # - # @param user [Knockapi::Models::AudienceAddMembersParams::Member::User] An object containing the user's ID. + # @param user [Knockapi::Models::InlineIdentifyUserRequest] A set of parameters to inline-identify a user with. Inline identifying the user # # @param tenant [String, nil] The unique identifier for the tenant. - - # @see Knockapi::Models::AudienceAddMembersParams::Member#user - class User < Knockapi::Internal::Type::BaseModel - # @!attribute id - # The unique identifier of the user. - # - # @return [String, nil] - optional :id, String - - # @!method initialize(id: nil) - # An object containing the user's ID. - # - # @param id [String] The unique identifier of the user. - end end end end diff --git a/lib/knockapi/models/audience_remove_members_params.rb b/lib/knockapi/models/audience_remove_members_params.rb index eb20b0e8..82617608 100644 --- a/lib/knockapi/models/audience_remove_members_params.rb +++ b/lib/knockapi/models/audience_remove_members_params.rb @@ -20,10 +20,13 @@ class AudienceRemoveMembersParams < Knockapi::Internal::Type::BaseModel class Member < Knockapi::Internal::Type::BaseModel # @!attribute user - # An object containing the user's ID. + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. # - # @return [Knockapi::Models::AudienceRemoveMembersParams::Member::User] - required :user, -> { Knockapi::AudienceRemoveMembersParams::Member::User } + # @return [Knockapi::Models::InlineIdentifyUserRequest] + required :user, -> { Knockapi::InlineIdentifyUserRequest } # @!attribute tenant # The unique identifier for the tenant. @@ -32,25 +35,14 @@ class Member < Knockapi::Internal::Type::BaseModel optional :tenant, String, nil?: true # @!method initialize(user:, tenant: nil) + # Some parameter documentations has been truncated, see + # {Knockapi::Models::AudienceRemoveMembersParams::Member} for more details. + # # An audience member. # - # @param user [Knockapi::Models::AudienceRemoveMembersParams::Member::User] An object containing the user's ID. + # @param user [Knockapi::Models::InlineIdentifyUserRequest] A set of parameters to inline-identify a user with. Inline identifying the user # # @param tenant [String, nil] The unique identifier for the tenant. - - # @see Knockapi::Models::AudienceRemoveMembersParams::Member#user - class User < Knockapi::Internal::Type::BaseModel - # @!attribute id - # The unique identifier of the user. - # - # @return [String, nil] - optional :id, String - - # @!method initialize(id: nil) - # An object containing the user's ID. - # - # @param id [String] The unique identifier of the user. - end end end end diff --git a/lib/knockapi/resources/users/feeds.rb b/lib/knockapi/resources/users/feeds.rb index 80b90eca..28c8bdf5 100644 --- a/lib/knockapi/resources/users/feeds.rb +++ b/lib/knockapi/resources/users/feeds.rb @@ -43,6 +43,9 @@ def get_settings(user_id, id, params = {}) # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. + # - Any [attachments](/integrations/email/attachments) present in trigger data are + # automatically excluded from both the `data` and `activities` fields of + # `UserInAppFeedResponse`. # # @overload list_items(user_id, id, after: nil, archived: nil, before: nil, has_tenant: nil, locale: nil, page_size: nil, source: nil, status: nil, tenant: nil, trigger_data: nil, workflow_categories: nil, request_options: {}) # diff --git a/rbi/knockapi/models/audience_add_members_params.rbi b/rbi/knockapi/models/audience_add_members_params.rbi index c85ffdef..c89150cd 100644 --- a/rbi/knockapi/models/audience_add_members_params.rbi +++ b/rbi/knockapi/models/audience_add_members_params.rbi @@ -48,15 +48,14 @@ module Knockapi ) end - # An object containing the user's ID. - sig { returns(Knockapi::AudienceAddMembersParams::Member::User) } + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. + sig { returns(Knockapi::InlineIdentifyUserRequest) } attr_reader :user - sig do - params( - user: Knockapi::AudienceAddMembersParams::Member::User::OrHash - ).void - end + sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void } attr_writer :user # The unique identifier for the tenant. @@ -66,12 +65,15 @@ module Knockapi # An audience member. sig do params( - user: Knockapi::AudienceAddMembersParams::Member::User::OrHash, + user: Knockapi::InlineIdentifyUserRequest::OrHash, tenant: T.nilable(String) ).returns(T.attached_class) end def self.new( - # An object containing the user's ID. + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. user:, # The unique identifier for the tenant. tenant: nil @@ -81,42 +83,13 @@ module Knockapi sig do override.returns( { - user: Knockapi::AudienceAddMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, tenant: T.nilable(String) } ) end def to_hash end - - class User < Knockapi::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Knockapi::AudienceAddMembersParams::Member::User, - Knockapi::Internal::AnyHash - ) - end - - # The unique identifier of the user. - sig { returns(T.nilable(String)) } - attr_reader :id - - sig { params(id: String).void } - attr_writer :id - - # An object containing the user's ID. - sig { params(id: String).returns(T.attached_class) } - def self.new( - # The unique identifier of the user. - id: nil - ) - end - - sig { override.returns({ id: String }) } - def to_hash - end - end end end end diff --git a/rbi/knockapi/models/audience_remove_members_params.rbi b/rbi/knockapi/models/audience_remove_members_params.rbi index 56ab7639..8c89bb43 100644 --- a/rbi/knockapi/models/audience_remove_members_params.rbi +++ b/rbi/knockapi/models/audience_remove_members_params.rbi @@ -52,15 +52,14 @@ module Knockapi ) end - # An object containing the user's ID. - sig { returns(Knockapi::AudienceRemoveMembersParams::Member::User) } + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. + sig { returns(Knockapi::InlineIdentifyUserRequest) } attr_reader :user - sig do - params( - user: Knockapi::AudienceRemoveMembersParams::Member::User::OrHash - ).void - end + sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void } attr_writer :user # The unique identifier for the tenant. @@ -70,12 +69,15 @@ module Knockapi # An audience member. sig do params( - user: Knockapi::AudienceRemoveMembersParams::Member::User::OrHash, + user: Knockapi::InlineIdentifyUserRequest::OrHash, tenant: T.nilable(String) ).returns(T.attached_class) end def self.new( - # An object containing the user's ID. + # A set of parameters to inline-identify a user with. Inline identifying the user + # will ensure that the user is available before the request is executed in Knock. + # It will perform an upsert for the user you're supplying, replacing any + # properties specified. user:, # The unique identifier for the tenant. tenant: nil @@ -85,42 +87,13 @@ module Knockapi sig do override.returns( { - user: Knockapi::AudienceRemoveMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, tenant: T.nilable(String) } ) end def to_hash end - - class User < Knockapi::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Knockapi::AudienceRemoveMembersParams::Member::User, - Knockapi::Internal::AnyHash - ) - end - - # The unique identifier of the user. - sig { returns(T.nilable(String)) } - attr_reader :id - - sig { params(id: String).void } - attr_writer :id - - # An object containing the user's ID. - sig { params(id: String).returns(T.attached_class) } - def self.new( - # The unique identifier of the user. - id: nil - ) - end - - sig { override.returns({ id: String }) } - def to_hash - end - end end end end diff --git a/rbi/knockapi/resources/users/feeds.rbi b/rbi/knockapi/resources/users/feeds.rbi index 12f4ad99..dd9633eb 100644 --- a/rbi/knockapi/resources/users/feeds.rbi +++ b/rbi/knockapi/resources/users/feeds.rbi @@ -35,6 +35,9 @@ module Knockapi # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. + # - Any [attachments](/integrations/email/attachments) present in trigger data are + # automatically excluded from both the `data` and `activities` fields of + # `UserInAppFeedResponse`. sig do params( user_id: String, diff --git a/sig/knockapi/models/audience_add_members_params.rbs b/sig/knockapi/models/audience_add_members_params.rbs index 0c7b6d26..a4ddcf1d 100644 --- a/sig/knockapi/models/audience_add_members_params.rbs +++ b/sig/knockapi/models/audience_add_members_params.rbs @@ -21,37 +21,22 @@ module Knockapi } type member = - { - user: Knockapi::AudienceAddMembersParams::Member::User, - tenant: String? - } + { user: Knockapi::InlineIdentifyUserRequest, tenant: String? } class Member < Knockapi::Internal::Type::BaseModel - attr_accessor user: Knockapi::AudienceAddMembersParams::Member::User + attr_accessor user: Knockapi::InlineIdentifyUserRequest attr_accessor tenant: String? def initialize: ( - user: Knockapi::AudienceAddMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, ?tenant: String? ) -> void def to_hash: -> { - user: Knockapi::AudienceAddMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, tenant: String? } - - type user = { id: String } - - class User < Knockapi::Internal::Type::BaseModel - attr_reader id: String? - - def id=: (String) -> String - - def initialize: (?id: String) -> void - - def to_hash: -> { id: String } - end end end end diff --git a/sig/knockapi/models/audience_remove_members_params.rbs b/sig/knockapi/models/audience_remove_members_params.rbs index 85768d5c..b51934a9 100644 --- a/sig/knockapi/models/audience_remove_members_params.rbs +++ b/sig/knockapi/models/audience_remove_members_params.rbs @@ -21,37 +21,22 @@ module Knockapi } type member = - { - user: Knockapi::AudienceRemoveMembersParams::Member::User, - tenant: String? - } + { user: Knockapi::InlineIdentifyUserRequest, tenant: String? } class Member < Knockapi::Internal::Type::BaseModel - attr_accessor user: Knockapi::AudienceRemoveMembersParams::Member::User + attr_accessor user: Knockapi::InlineIdentifyUserRequest attr_accessor tenant: String? def initialize: ( - user: Knockapi::AudienceRemoveMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, ?tenant: String? ) -> void def to_hash: -> { - user: Knockapi::AudienceRemoveMembersParams::Member::User, + user: Knockapi::InlineIdentifyUserRequest, tenant: String? } - - type user = { id: String } - - class User < Knockapi::Internal::Type::BaseModel - attr_reader id: String? - - def id=: (String) -> String - - def initialize: (?id: String) -> void - - def to_hash: -> { id: String } - end end end end diff --git a/test/knockapi/resources/audiences_test.rb b/test/knockapi/resources/audiences_test.rb index e004b4ba..587b78bb 100644 --- a/test/knockapi/resources/audiences_test.rb +++ b/test/knockapi/resources/audiences_test.rb @@ -6,7 +6,7 @@ class Knockapi::Test::Resources::AudiencesTest < Knockapi::Test::ResourceTest def test_add_members_required_params skip("Prism doesn't support callbacks yet") - response = @knock.audiences.add_members("key", members: [{user: {}}]) + response = @knock.audiences.add_members("key", members: [{user: {id: "dr_sattler"}}]) assert_pattern do response => nil @@ -33,7 +33,7 @@ def test_list_members def test_remove_members_required_params skip("Prism doesn't support callbacks yet") - response = @knock.audiences.remove_members("key", members: [{user: {}}]) + response = @knock.audiences.remove_members("key", members: [{user: {id: "dr_sattler"}}]) assert_pattern do response => nil From e4c9e2bbf5664f057addd6c2b8013c11de97f193 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 20:21:21 +0000 Subject: [PATCH 3/6] feat(api): api update --- .stats.yml | 4 ++-- lib/knockapi/resources/users/feeds.rb | 3 --- rbi/knockapi/resources/users/feeds.rbi | 3 --- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.stats.yml b/.stats.yml index f7645e98..87f7c8d6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 90 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-051fb64fc98086ac7435196316e0aee760dce287ac9e44eed11ea243893498c9.yml -openapi_spec_hash: c3cea367a962be6faea1e8fba430ed3c +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-1847c4ab086e290a4e3a698f3bc55605fa5c24cbdef663a51a8b84d260312491.yml +openapi_spec_hash: 6ecef3ce2fc44f77781c835fefe1aa82 config_hash: 2b42d138d85c524e65fa7e205d36cc4a diff --git a/lib/knockapi/resources/users/feeds.rb b/lib/knockapi/resources/users/feeds.rb index 28c8bdf5..80b90eca 100644 --- a/lib/knockapi/resources/users/feeds.rb +++ b/lib/knockapi/resources/users/feeds.rb @@ -43,9 +43,6 @@ def get_settings(user_id, id, params = {}) # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. - # - Any [attachments](/integrations/email/attachments) present in trigger data are - # automatically excluded from both the `data` and `activities` fields of - # `UserInAppFeedResponse`. # # @overload list_items(user_id, id, after: nil, archived: nil, before: nil, has_tenant: nil, locale: nil, page_size: nil, source: nil, status: nil, tenant: nil, trigger_data: nil, workflow_categories: nil, request_options: {}) # diff --git a/rbi/knockapi/resources/users/feeds.rbi b/rbi/knockapi/resources/users/feeds.rbi index dd9633eb..12f4ad99 100644 --- a/rbi/knockapi/resources/users/feeds.rbi +++ b/rbi/knockapi/resources/users/feeds.rbi @@ -35,9 +35,6 @@ module Knockapi # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. - # - Any [attachments](/integrations/email/attachments) present in trigger data are - # automatically excluded from both the `data` and `activities` fields of - # `UserInAppFeedResponse`. sig do params( user_id: String, From 41c78811817cdc595674b56381e396b8a5c6f96a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:46:10 +0000 Subject: [PATCH 4/6] feat(api): api update --- .stats.yml | 4 ++-- lib/knockapi/resources/users/feeds.rb | 3 +++ rbi/knockapi/resources/users/feeds.rbi | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 87f7c8d6..f7645e98 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 90 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-1847c4ab086e290a4e3a698f3bc55605fa5c24cbdef663a51a8b84d260312491.yml -openapi_spec_hash: 6ecef3ce2fc44f77781c835fefe1aa82 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-051fb64fc98086ac7435196316e0aee760dce287ac9e44eed11ea243893498c9.yml +openapi_spec_hash: c3cea367a962be6faea1e8fba430ed3c config_hash: 2b42d138d85c524e65fa7e205d36cc4a diff --git a/lib/knockapi/resources/users/feeds.rb b/lib/knockapi/resources/users/feeds.rb index 80b90eca..28c8bdf5 100644 --- a/lib/knockapi/resources/users/feeds.rb +++ b/lib/knockapi/resources/users/feeds.rb @@ -43,6 +43,9 @@ def get_settings(user_id, id, params = {}) # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. + # - Any [attachments](/integrations/email/attachments) present in trigger data are + # automatically excluded from both the `data` and `activities` fields of + # `UserInAppFeedResponse`. # # @overload list_items(user_id, id, after: nil, archived: nil, before: nil, has_tenant: nil, locale: nil, page_size: nil, source: nil, status: nil, tenant: nil, trigger_data: nil, workflow_categories: nil, request_options: {}) # diff --git a/rbi/knockapi/resources/users/feeds.rbi b/rbi/knockapi/resources/users/feeds.rbi index 12f4ad99..dd9633eb 100644 --- a/rbi/knockapi/resources/users/feeds.rbi +++ b/rbi/knockapi/resources/users/feeds.rbi @@ -35,6 +35,9 @@ module Knockapi # along with a user token. # - This endpoint’s rate limit is always scoped per-user and per-environment. This # is true even for requests made without a signed user token. + # - Any [attachments](/integrations/email/attachments) present in trigger data are + # automatically excluded from both the `data` and `activities` fields of + # `UserInAppFeedResponse`. sig do params( user_id: String, From 5082dcb9d09ef3a3bc3d496f94fd31ee018ac4ee Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 19:29:40 +0000 Subject: [PATCH 5/6] feat(api): api update --- .stats.yml | 4 +-- .../users/guide_get_channel_response.rb | 14 +++++++-- .../users/guide_get_channel_response.rbi | 29 ++++++++++++++----- .../users/guide_get_channel_response.rbs | 19 ++++++++++-- 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/.stats.yml b/.stats.yml index f7645e98..65a6aaf6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 90 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-051fb64fc98086ac7435196316e0aee760dce287ac9e44eed11ea243893498c9.yml -openapi_spec_hash: c3cea367a962be6faea1e8fba430ed3c +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-6458a8bd2021d6d33af7b8b477bd0bdef7270dd2f78fa7891048d519f0d65b22.yml +openapi_spec_hash: 37319ec82d920729dab3ab05ff75f4fc config_hash: 2b42d138d85c524e65fa7e205d36cc4a diff --git a/lib/knockapi/models/users/guide_get_channel_response.rb b/lib/knockapi/models/users/guide_get_channel_response.rb index 8e81218a..c3006989 100644 --- a/lib/knockapi/models/users/guide_get_channel_response.rb +++ b/lib/knockapi/models/users/guide_get_channel_response.rb @@ -164,10 +164,18 @@ class ActivationURLPattern < Knockapi::Internal::Type::BaseModel # @return [String, nil] optional :pathname, String - # @!method initialize(directive: nil, pathname: nil) + # @!attribute search + # The search query params to match + # + # @return [String, nil] + optional :search, String + + # @!method initialize(directive: nil, pathname: nil, search: nil) # @param directive [String] The directive for the URL pattern ('allow' or 'block') # # @param pathname [String] The pathname pattern to match (supports wildcards like /\*) + # + # @param search [String] The search query params to match end class ActivationURLRule < Knockapi::Internal::Type::BaseModel @@ -178,7 +186,7 @@ class ActivationURLRule < Knockapi::Internal::Type::BaseModel optional :argument, String # @!attribute directive - # The directive for the URL pattern ('allow' or 'block') + # The directive for the URL rule ('allow' or 'block') # # @return [String, nil] optional :directive, String @@ -198,7 +206,7 @@ class ActivationURLRule < Knockapi::Internal::Type::BaseModel # @!method initialize(argument: nil, directive: nil, operator: nil, variable: nil) # @param argument [String] The value to compare against # - # @param directive [String] The directive for the URL pattern ('allow' or 'block') + # @param directive [String] The directive for the URL rule ('allow' or 'block') # # @param operator [String] The comparison operator ('contains' or 'equal_to') # diff --git a/rbi/knockapi/models/users/guide_get_channel_response.rbi b/rbi/knockapi/models/users/guide_get_channel_response.rbi index 252b3407..4c546889 100644 --- a/rbi/knockapi/models/users/guide_get_channel_response.rbi +++ b/rbi/knockapi/models/users/guide_get_channel_response.rbi @@ -343,20 +343,35 @@ module Knockapi sig { params(pathname: String).void } attr_writer :pathname + # The search query params to match + sig { returns(T.nilable(String)) } + attr_reader :search + + sig { params(search: String).void } + attr_writer :search + sig do - params(directive: String, pathname: String).returns( - T.attached_class - ) + params( + directive: String, + pathname: String, + search: String + ).returns(T.attached_class) end def self.new( # The directive for the URL pattern ('allow' or 'block') directive: nil, # The pathname pattern to match (supports wildcards like /\*) - pathname: nil + pathname: nil, + # The search query params to match + search: nil ) end - sig { override.returns({ directive: String, pathname: String }) } + sig do + override.returns( + { directive: String, pathname: String, search: String } + ) + end def to_hash end end @@ -377,7 +392,7 @@ module Knockapi sig { params(argument: String).void } attr_writer :argument - # The directive for the URL pattern ('allow' or 'block') + # The directive for the URL rule ('allow' or 'block') sig { returns(T.nilable(String)) } attr_reader :directive @@ -409,7 +424,7 @@ module Knockapi def self.new( # The value to compare against argument: nil, - # The directive for the URL pattern ('allow' or 'block') + # The directive for the URL rule ('allow' or 'block') directive: nil, # The comparison operator ('contains' or 'equal_to') operator: nil, diff --git a/sig/knockapi/models/users/guide_get_channel_response.rbs b/sig/knockapi/models/users/guide_get_channel_response.rbs index 97557856..f2dbaae6 100644 --- a/sig/knockapi/models/users/guide_get_channel_response.rbs +++ b/sig/knockapi/models/users/guide_get_channel_response.rbs @@ -140,7 +140,8 @@ module Knockapi updated_at: Time } - type activation_url_pattern = { directive: String, pathname: String } + type activation_url_pattern = + { directive: String, pathname: String, search: String } class ActivationURLPattern < Knockapi::Internal::Type::BaseModel attr_reader directive: String? @@ -151,9 +152,21 @@ module Knockapi def pathname=: (String) -> String - def initialize: (?directive: String, ?pathname: String) -> void + attr_reader search: String? - def to_hash: -> { directive: String, pathname: String } + def search=: (String) -> String + + def initialize: ( + ?directive: String, + ?pathname: String, + ?search: String + ) -> void + + def to_hash: -> { + directive: String, + pathname: String, + search: String + } end type activation_url_rule = From a9ced3aa8fd48f59613c57bb72fb2b6db3c34009 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 19:29:58 +0000 Subject: [PATCH 6/6] release: 1.30.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ Gemfile.lock | 2 +- README.md | 2 +- lib/knockapi/version.rb | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b8af36c3..35c30adc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.29.0" + ".": "1.30.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d016931..b3036259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 1.30.0 (2026-01-29) + +Full Changelog: [v1.29.0...v1.30.0](https://github.com/knocklabs/knock-ruby/compare/v1.29.0...v1.30.0) + +### Features + +* **api:** api update ([5082dcb](https://github.com/knocklabs/knock-ruby/commit/5082dcb9d09ef3a3bc3d496f94fd31ee018ac4ee)) +* **api:** api update ([41c7881](https://github.com/knocklabs/knock-ruby/commit/41c78811817cdc595674b56381e396b8a5c6f96a)) +* **api:** api update ([e4c9e2b](https://github.com/knocklabs/knock-ruby/commit/e4c9e2bbf5664f057addd6c2b8013c11de97f193)) +* **api:** api update ([3ba6399](https://github.com/knocklabs/knock-ruby/commit/3ba63996dab0c2047a0e019a0bfd844513e0600f)) +* **api:** api update ([3a1d05d](https://github.com/knocklabs/knock-ruby/commit/3a1d05d96b3dbf0abe14f9f4c58e2b16f2ffbbd0)) + ## 1.29.0 (2026-01-23) Full Changelog: [v1.28.0...v1.29.0](https://github.com/knocklabs/knock-ruby/compare/v1.28.0...v1.29.0) diff --git a/Gemfile.lock b/Gemfile.lock index 8059fd23..2a6673f1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - knockapi (1.29.0) + knockapi (1.30.0) cgi connection_pool diff --git a/README.md b/README.md index b1b0edd2..1ad21e63 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "knockapi", "~> 1.29.0" +gem "knockapi", "~> 1.30.0" ``` diff --git a/lib/knockapi/version.rb b/lib/knockapi/version.rb index edd7e820..38daf5e1 100644 --- a/lib/knockapi/version.rb +++ b/lib/knockapi/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Knockapi - VERSION = "1.29.0" + VERSION = "1.30.0" end