diff --git a/.release-please-manifest.json b/.release-please-manifest.json index dd8fde77..0d1bebe1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.5.0" + ".": "1.6.0" } diff --git a/.stats.yml b/.stats.yml index 1cdc6aa6..6a6c104b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 89 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-5ce0d88003acccf6111cd40663ad7b4d468696fc439fca41d88087ab84b465c3.yml -openapi_spec_hash: ff864d7f3cad6a98a0e39fee0fb2b16a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/knock%2Fknock-e5a7933b414d403d082b34db140fc5b8dca9a5ea3ae322f640b0f9f055c47288.yml +openapi_spec_hash: 3740dc4d5c1f5a0c9ee6de9e40931fd4 config_hash: 2ae8965d371a03bd30c6a56819c04cf2 diff --git a/CHANGELOG.md b/CHANGELOG.md index a17ce3ad..8f44323a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 1.6.0 (2025-06-06) + +Full Changelog: [v1.5.0...v1.6.0](https://github.com/knocklabs/knock-ruby/compare/v1.5.0...v1.6.0) + +### Features + +* **api:** api update ([53aa9c9](https://github.com/knocklabs/knock-ruby/commit/53aa9c9ebd4a8e7be2fd5bdf08a4b749f6b9d116)) + + +### Bug Fixes + +* default content-type for text in multi-part formdata uploads should be text/plain ([de655f0](https://github.com/knocklabs/knock-ruby/commit/de655f0dd9194b4c30d7ad26e2da98f6cba51a0f)) + ## 1.5.0 (2025-06-04) Full Changelog: [v1.4.0...v1.5.0](https://github.com/knocklabs/knock-ruby/compare/v1.4.0...v1.5.0) diff --git a/Gemfile.lock b/Gemfile.lock index 6a7ba35b..31ae02fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - knockapi (1.5.0) + knockapi (1.6.0) connection_pool GEM diff --git a/README.md b/README.md index 248d28fb..951e0a24 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.5.0" +gem "knockapi", "~> 1.6.0" ``` diff --git a/lib/knockapi/internal/util.rb b/lib/knockapi/internal/util.rb index c65ef386..f5c8a3cc 100644 --- a/lib/knockapi/internal/util.rb +++ b/lib/knockapi/internal/util.rb @@ -497,7 +497,7 @@ class << self # @param closing [Array] # @param content_type [String, nil] private def write_multipart_content(y, val:, closing:, content_type: nil) - content_type ||= "application/octet-stream" + content_line = "Content-Type: %s\r\n\r\n" case val in Knockapi::FilePart @@ -508,24 +508,21 @@ class << self content_type: val.content_type ) in Pathname - y << "Content-Type: #{content_type}\r\n\r\n" + y << format(content_line, content_type || "application/octet-stream") io = val.open(binmode: true) closing << io.method(:close) IO.copy_stream(io, y) in IO - y << "Content-Type: #{content_type}\r\n\r\n" + y << format(content_line, content_type || "application/octet-stream") IO.copy_stream(val, y) in StringIO - y << "Content-Type: #{content_type}\r\n\r\n" + y << format(content_line, content_type || "application/octet-stream") y << val.string - in String - y << "Content-Type: #{content_type}\r\n\r\n" - y << val.to_s in -> { primitive?(_1) } - y << "Content-Type: text/plain\r\n\r\n" + y << format(content_line, content_type || "text/plain") y << val.to_s else - y << "Content-Type: application/json\r\n\r\n" + y << format(content_line, content_type || "application/json") y << JSON.generate(val) end y << "\r\n" @@ -563,6 +560,8 @@ class << self # @api private # + # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content + # # @param body [Object] # # @return [Array(String, Enumerable)] diff --git a/lib/knockapi/models/objects/bulk_set_params.rb b/lib/knockapi/models/objects/bulk_set_params.rb index 648c8d7e..d8ffc2aa 100644 --- a/lib/knockapi/models/objects/bulk_set_params.rb +++ b/lib/knockapi/models/objects/bulk_set_params.rb @@ -11,13 +11,56 @@ class BulkSetParams < Knockapi::Internal::Type::BaseModel # @!attribute objects # A list of objects. # - # @return [Array] - required :objects, -> { Knockapi::Internal::Type::ArrayOf[Knockapi::InlineObjectRequest] } + # @return [Array] + required :objects, -> { Knockapi::Internal::Type::ArrayOf[Knockapi::Objects::BulkSetParams::Object] } # @!method initialize(objects:, request_options: {}) - # @param objects [Array] A list of objects. + # @param objects [Array] A list of objects. # # @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}] + + class Object < Knockapi::Internal::Type::BaseModel + # @!attribute id + # Unique identifier for the object. + # + # @return [String] + required :id, String + + # @!attribute channel_data + # A request to set channel data for a type of channel inline. + # + # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] + optional :channel_data, + -> { + Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem] + }, + nil?: true + + # @!attribute created_at + # Timestamp when the resource was created. + # + # @return [Time, nil] + optional :created_at, Time, nil?: true + + # @!attribute preferences + # Inline set preferences for a recipient, where the key is the preference set id. + # + # @return [Hash{Symbol=>Knockapi::Models::Recipients::PreferenceSetRequest}, nil] + optional :preferences, + -> { Knockapi::Internal::Type::HashOf[Knockapi::Recipients::PreferenceSetRequest] }, + nil?: true + + # @!method initialize(id:, channel_data: nil, created_at: nil, preferences: nil) + # A custom [Object](/concepts/objects) entity which belongs to a collection. + # + # @param id [String] Unique identifier for the object. + # + # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline. + # + # @param created_at [Time, nil] Timestamp when the resource was created. + # + # @param preferences [Hash{Symbol=>Knockapi::Models::Recipients::PreferenceSetRequest}, nil] Inline set preferences for a recipient, where the key is the preference set id. + end end end end diff --git a/lib/knockapi/models/schedule_list_params.rb b/lib/knockapi/models/schedule_list_params.rb index ab039dc9..f68a73b5 100644 --- a/lib/knockapi/models/schedule_list_params.rb +++ b/lib/knockapi/models/schedule_list_params.rb @@ -32,10 +32,10 @@ class ScheduleListParams < Knockapi::Internal::Type::BaseModel optional :page_size, Integer # @!attribute recipients - # Filter by recipient IDs. + # Filter by recipient references. # - # @return [Array, nil] - optional :recipients, Knockapi::Internal::Type::ArrayOf[String] + # @return [Array, nil] + optional :recipients, -> { Knockapi::Internal::Type::ArrayOf[union: Knockapi::RecipientReference] } # @!attribute tenant # Filter by tenant ID. @@ -52,7 +52,7 @@ class ScheduleListParams < Knockapi::Internal::Type::BaseModel # # @param page_size [Integer] The number of items per page. # - # @param recipients [Array] Filter by recipient IDs. + # @param recipients [Array] Filter by recipient references. # # @param tenant [String] Filter by tenant ID. # diff --git a/lib/knockapi/models/schedule_repeat_rule.rb b/lib/knockapi/models/schedule_repeat_rule.rb index 7a622aa4..0d48ee91 100644 --- a/lib/knockapi/models/schedule_repeat_rule.rb +++ b/lib/knockapi/models/schedule_repeat_rule.rb @@ -3,18 +3,18 @@ module Knockapi module Models class ScheduleRepeatRule < Knockapi::Internal::Type::BaseModel - # @!attribute _typename - # The typename of the schema. - # - # @return [String] - required :_typename, String, api_name: :__typename - # @!attribute frequency # The frequency of the schedule. # # @return [Symbol, Knockapi::Models::ScheduleRepeatRule::Frequency] required :frequency, enum: -> { Knockapi::ScheduleRepeatRule::Frequency } + # @!attribute _typename + # The typename of the schema. + # + # @return [String, nil] + optional :_typename, String, api_name: :__typename + # @!attribute day_of_month # The day of the month to repeat the schedule. # @@ -47,13 +47,13 @@ class ScheduleRepeatRule < Knockapi::Internal::Type::BaseModel # @return [Integer, nil] optional :minutes, Integer, nil?: true - # @!method initialize(_typename:, frequency:, day_of_month: nil, days: nil, hours: nil, interval: nil, minutes: nil) + # @!method initialize(frequency:, _typename: nil, day_of_month: nil, days: nil, hours: nil, interval: nil, minutes: nil) # The repeat rule for the schedule. # - # @param _typename [String] The typename of the schema. - # # @param frequency [Symbol, Knockapi::Models::ScheduleRepeatRule::Frequency] The frequency of the schedule. # + # @param _typename [String] The typename of the schema. + # # @param day_of_month [Integer, nil] The day of the month to repeat the schedule. # # @param days [Array, nil] The days of the week to repeat the schedule. diff --git a/lib/knockapi/models/tenant_set_params.rb b/lib/knockapi/models/tenant_set_params.rb index 5cc31851..8716050f 100644 --- a/lib/knockapi/models/tenant_set_params.rb +++ b/lib/knockapi/models/tenant_set_params.rb @@ -17,25 +17,15 @@ class TenantSetParams < Knockapi::Internal::Type::BaseModel }, nil?: true - # @!attribute preferences - # Inline set preferences for a recipient, where the key is the preference set id. - # - # @return [Hash{Symbol=>Knockapi::Models::Recipients::PreferenceSetRequest}, nil] - optional :preferences, - -> { Knockapi::Internal::Type::HashOf[Knockapi::Recipients::PreferenceSetRequest] }, - nil?: true - # @!attribute settings # The settings for the tenant. Includes branding and preference set. # # @return [Knockapi::Models::TenantSetParams::Settings, nil] optional :settings, -> { Knockapi::TenantSetParams::Settings } - # @!method initialize(channel_data: nil, preferences: nil, settings: nil, request_options: {}) + # @!method initialize(channel_data: nil, settings: nil, request_options: {}) # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline. # - # @param preferences [Hash{Symbol=>Knockapi::Models::Recipients::PreferenceSetRequest}, nil] Inline set preferences for a recipient, where the key is the preference set id. - # # @param settings [Knockapi::Models::TenantSetParams::Settings] The settings for the tenant. Includes branding and preference set. # # @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/knockapi/models/user_list_subscriptions_params.rb b/lib/knockapi/models/user_list_subscriptions_params.rb index 21f6c18a..45433cbb 100644 --- a/lib/knockapi/models/user_list_subscriptions_params.rb +++ b/lib/knockapi/models/user_list_subscriptions_params.rb @@ -27,10 +27,10 @@ class UserListSubscriptionsParams < Knockapi::Internal::Type::BaseModel -> { Knockapi::Internal::Type::ArrayOf[enum: Knockapi::UserListSubscriptionsParams::Include] } # @!attribute objects - # Only returns subscriptions for the specified object GIDs. + # Only returns subscriptions for the specified object references. # - # @return [Array, nil] - optional :objects, Knockapi::Internal::Type::ArrayOf[String] + # @return [Array, nil] + optional :objects, -> { Knockapi::Internal::Type::ArrayOf[union: Knockapi::RecipientReference] } # @!attribute page_size # The number of items per page. @@ -45,7 +45,7 @@ class UserListSubscriptionsParams < Knockapi::Internal::Type::BaseModel # # @param include [Array] Associated resources to include in the response. # - # @param objects [Array] Only returns subscriptions for the specified object GIDs. + # @param objects [Array] Only returns subscriptions for the specified object references. # # @param page_size [Integer] The number of items per page. # diff --git a/lib/knockapi/resources/objects/bulk.rb b/lib/knockapi/resources/objects/bulk.rb index b978bbf2..2bdd5275 100644 --- a/lib/knockapi/resources/objects/bulk.rb +++ b/lib/knockapi/resources/objects/bulk.rb @@ -62,7 +62,7 @@ def add_subscriptions(collection, params) # # @param collection [String] The collection this object belongs to. # - # @param objects [Array] A list of objects. + # @param objects [Array] A list of objects. # # @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil] # diff --git a/lib/knockapi/resources/schedules.rb b/lib/knockapi/resources/schedules.rb index 1dff85bf..7d604885 100644 --- a/lib/knockapi/resources/schedules.rb +++ b/lib/knockapi/resources/schedules.rb @@ -103,7 +103,7 @@ def update(params) # # @param page_size [Integer] The number of items per page. # - # @param recipients [Array] Filter by recipient IDs. + # @param recipients [Array] Filter by recipient references. # # @param tenant [String] Filter by tenant ID. # diff --git a/lib/knockapi/resources/tenants.rb b/lib/knockapi/resources/tenants.rb index 07874fb8..63674852 100644 --- a/lib/knockapi/resources/tenants.rb +++ b/lib/knockapi/resources/tenants.rb @@ -80,14 +80,12 @@ def get(id, params = {}) # Sets a tenant within an environment, performing an upsert operation. Any # existing properties will be merged with the incoming properties. # - # @overload set(id, channel_data: nil, preferences: nil, settings: nil, request_options: {}) + # @overload set(id, channel_data: nil, settings: nil, request_options: {}) # # @param id [String] The unique identifier for the tenant. # # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline. # - # @param preferences [Hash{Symbol=>Knockapi::Models::Recipients::PreferenceSetRequest}, nil] Inline set preferences for a recipient, where the key is the preference set id. - # # @param settings [Knockapi::Models::TenantSetParams::Settings] The settings for the tenant. Includes branding and preference set. # # @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil] diff --git a/lib/knockapi/resources/users.rb b/lib/knockapi/resources/users.rb index 4b2c09f9..15839b75 100644 --- a/lib/knockapi/resources/users.rb +++ b/lib/knockapi/resources/users.rb @@ -298,7 +298,7 @@ def list_schedules(user_id, params = {}) # # @param include [Array] Associated resources to include in the response. # - # @param objects [Array] Only returns subscriptions for the specified object GIDs. + # @param objects [Array] Only returns subscriptions for the specified object references. # # @param page_size [Integer] The number of items per page. # diff --git a/lib/knockapi/version.rb b/lib/knockapi/version.rb index 98599890..3f412b6f 100644 --- a/lib/knockapi/version.rb +++ b/lib/knockapi/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Knockapi - VERSION = "1.5.0" + VERSION = "1.6.0" end diff --git a/rbi/knockapi/internal/util.rbi b/rbi/knockapi/internal/util.rbi index 9592b86f..abe36d10 100644 --- a/rbi/knockapi/internal/util.rbi +++ b/rbi/knockapi/internal/util.rbi @@ -332,6 +332,8 @@ module Knockapi end # @api private + # + # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content sig do params(body: T.anything).returns([String, T::Enumerable[String]]) end diff --git a/rbi/knockapi/models/objects/bulk_set_params.rbi b/rbi/knockapi/models/objects/bulk_set_params.rbi index 14b9b53a..256fd7b1 100644 --- a/rbi/knockapi/models/objects/bulk_set_params.rbi +++ b/rbi/knockapi/models/objects/bulk_set_params.rbi @@ -13,12 +13,12 @@ module Knockapi end # A list of objects. - sig { returns(T::Array[Knockapi::InlineObjectRequest]) } + sig { returns(T::Array[Knockapi::Objects::BulkSetParams::Object]) } attr_accessor :objects sig do params( - objects: T::Array[Knockapi::InlineObjectRequest::OrHash], + objects: T::Array[Knockapi::Objects::BulkSetParams::Object::OrHash], request_options: Knockapi::RequestOptions::OrHash ).returns(T.attached_class) end @@ -32,13 +32,127 @@ module Knockapi sig do override.returns( { - objects: T::Array[Knockapi::InlineObjectRequest], + objects: T::Array[Knockapi::Objects::BulkSetParams::Object], request_options: Knockapi::RequestOptions } ) end def to_hash end + + class Object < Knockapi::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Knockapi::Objects::BulkSetParams::Object, + Knockapi::Internal::AnyHash + ) + end + + # Unique identifier for the object. + sig { returns(String) } + attr_accessor :id + + # A request to set channel data for a type of channel inline. + sig do + returns( + T.nilable( + T::Hash[ + Symbol, + T.any( + Knockapi::Recipients::PushChannelData, + Knockapi::Recipients::OneSignalChannelData, + Knockapi::Recipients::SlackChannelData, + Knockapi::Recipients::MsTeamsChannelData, + Knockapi::Recipients::DiscordChannelData + ) + ] + ) + ) + end + attr_accessor :channel_data + + # Timestamp when the resource was created. + sig { returns(T.nilable(Time)) } + attr_accessor :created_at + + # Inline set preferences for a recipient, where the key is the preference set id. + sig do + returns( + T.nilable( + T::Hash[Symbol, Knockapi::Recipients::PreferenceSetRequest] + ) + ) + end + attr_accessor :preferences + + # A custom [Object](/concepts/objects) entity which belongs to a collection. + sig do + params( + id: String, + channel_data: + T.nilable( + T::Hash[ + Symbol, + T.any( + Knockapi::Recipients::PushChannelData::OrHash, + Knockapi::Recipients::OneSignalChannelData::OrHash, + Knockapi::Recipients::SlackChannelData::OrHash, + Knockapi::Recipients::MsTeamsChannelData::OrHash, + Knockapi::Recipients::DiscordChannelData::OrHash + ) + ] + ), + created_at: T.nilable(Time), + preferences: + T.nilable( + T::Hash[ + Symbol, + Knockapi::Recipients::PreferenceSetRequest::OrHash + ] + ) + ).returns(T.attached_class) + end + def self.new( + # Unique identifier for the object. + id:, + # A request to set channel data for a type of channel inline. + channel_data: nil, + # Timestamp when the resource was created. + created_at: nil, + # Inline set preferences for a recipient, where the key is the preference set id. + preferences: nil + ) + end + + sig do + override.returns( + { + id: String, + channel_data: + T.nilable( + T::Hash[ + Symbol, + T.any( + Knockapi::Recipients::PushChannelData, + Knockapi::Recipients::OneSignalChannelData, + Knockapi::Recipients::SlackChannelData, + Knockapi::Recipients::MsTeamsChannelData, + Knockapi::Recipients::DiscordChannelData + ) + ] + ), + created_at: T.nilable(Time), + preferences: + T.nilable( + T::Hash[Symbol, Knockapi::Recipients::PreferenceSetRequest] + ) + } + ) + end + def to_hash + end + end end end end diff --git a/rbi/knockapi/models/schedule_list_params.rbi b/rbi/knockapi/models/schedule_list_params.rbi index 96e275b7..bfeb590a 100644 --- a/rbi/knockapi/models/schedule_list_params.rbi +++ b/rbi/knockapi/models/schedule_list_params.rbi @@ -36,11 +36,29 @@ module Knockapi sig { params(page_size: Integer).void } attr_writer :page_size - # Filter by recipient IDs. - sig { returns(T.nilable(T::Array[String])) } + # Filter by recipient references. + sig do + returns( + T.nilable( + T::Array[ + T.any(String, Knockapi::RecipientReference::ObjectReference) + ] + ) + ) + end attr_reader :recipients - sig { params(recipients: T::Array[String]).void } + sig do + params( + recipients: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ] + ).void + end attr_writer :recipients # Filter by tenant ID. @@ -56,7 +74,13 @@ module Knockapi after: String, before: String, page_size: Integer, - recipients: T::Array[String], + recipients: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ], tenant: String, request_options: Knockapi::RequestOptions::OrHash ).returns(T.attached_class) @@ -70,7 +94,7 @@ module Knockapi before: nil, # The number of items per page. page_size: nil, - # Filter by recipient IDs. + # Filter by recipient references. recipients: nil, # Filter by tenant ID. tenant: nil, @@ -85,7 +109,10 @@ module Knockapi after: String, before: String, page_size: Integer, - recipients: T::Array[String], + recipients: + T::Array[ + T.any(String, Knockapi::RecipientReference::ObjectReference) + ], tenant: String, request_options: Knockapi::RequestOptions } diff --git a/rbi/knockapi/models/schedule_repeat_rule.rbi b/rbi/knockapi/models/schedule_repeat_rule.rbi index d380cdc1..89efc25c 100644 --- a/rbi/knockapi/models/schedule_repeat_rule.rbi +++ b/rbi/knockapi/models/schedule_repeat_rule.rbi @@ -8,14 +8,17 @@ module Knockapi T.any(Knockapi::ScheduleRepeatRule, Knockapi::Internal::AnyHash) end - # The typename of the schema. - sig { returns(String) } - attr_accessor :_typename - # The frequency of the schedule. sig { returns(Knockapi::ScheduleRepeatRule::Frequency::OrSymbol) } attr_accessor :frequency + # The typename of the schema. + sig { returns(T.nilable(String)) } + attr_reader :_typename + + sig { params(_typename: String).void } + attr_writer :_typename + # The day of the month to repeat the schedule. sig { returns(T.nilable(Integer)) } attr_accessor :day_of_month @@ -46,8 +49,8 @@ module Knockapi # The repeat rule for the schedule. sig do params( - _typename: String, frequency: Knockapi::ScheduleRepeatRule::Frequency::OrSymbol, + _typename: String, day_of_month: T.nilable(Integer), days: T.nilable(T::Array[Knockapi::ScheduleRepeatRule::Day::OrSymbol]), @@ -57,10 +60,10 @@ module Knockapi ).returns(T.attached_class) end def self.new( - # The typename of the schema. - _typename:, # The frequency of the schedule. frequency:, + # The typename of the schema. + _typename: nil, # The day of the month to repeat the schedule. day_of_month: nil, # The days of the week to repeat the schedule. @@ -77,8 +80,8 @@ module Knockapi sig do override.returns( { - _typename: String, frequency: Knockapi::ScheduleRepeatRule::Frequency::OrSymbol, + _typename: String, day_of_month: T.nilable(Integer), days: T.nilable(T::Array[Knockapi::ScheduleRepeatRule::Day::OrSymbol]), diff --git a/rbi/knockapi/models/tenant_set_params.rbi b/rbi/knockapi/models/tenant_set_params.rbi index 23a1571d..6f4e8e76 100644 --- a/rbi/knockapi/models/tenant_set_params.rbi +++ b/rbi/knockapi/models/tenant_set_params.rbi @@ -30,14 +30,6 @@ module Knockapi end attr_accessor :channel_data - # Inline set preferences for a recipient, where the key is the preference set id. - sig do - returns( - T.nilable(T::Hash[Symbol, Knockapi::Recipients::PreferenceSetRequest]) - ) - end - attr_accessor :preferences - # The settings for the tenant. Includes branding and preference set. sig { returns(T.nilable(Knockapi::TenantSetParams::Settings)) } attr_reader :settings @@ -60,13 +52,6 @@ module Knockapi ) ] ), - preferences: - T.nilable( - T::Hash[ - Symbol, - Knockapi::Recipients::PreferenceSetRequest::OrHash - ] - ), settings: Knockapi::TenantSetParams::Settings::OrHash, request_options: Knockapi::RequestOptions::OrHash ).returns(T.attached_class) @@ -74,8 +59,6 @@ module Knockapi def self.new( # A request to set channel data for a type of channel inline. channel_data: nil, - # Inline set preferences for a recipient, where the key is the preference set id. - preferences: nil, # The settings for the tenant. Includes branding and preference set. settings: nil, request_options: {} @@ -98,10 +81,6 @@ module Knockapi ) ] ), - preferences: - T.nilable( - T::Hash[Symbol, Knockapi::Recipients::PreferenceSetRequest] - ), settings: Knockapi::TenantSetParams::Settings, request_options: Knockapi::RequestOptions } diff --git a/rbi/knockapi/models/user_list_subscriptions_params.rbi b/rbi/knockapi/models/user_list_subscriptions_params.rbi index 8333c702..8bb1da2e 100644 --- a/rbi/knockapi/models/user_list_subscriptions_params.rbi +++ b/rbi/knockapi/models/user_list_subscriptions_params.rbi @@ -46,11 +46,29 @@ module Knockapi end attr_writer :include - # Only returns subscriptions for the specified object GIDs. - sig { returns(T.nilable(T::Array[String])) } + # Only returns subscriptions for the specified object references. + sig do + returns( + T.nilable( + T::Array[ + T.any(String, Knockapi::RecipientReference::ObjectReference) + ] + ) + ) + end attr_reader :objects - sig { params(objects: T::Array[String]).void } + sig do + params( + objects: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ] + ).void + end attr_writer :objects # The number of items per page. @@ -66,7 +84,13 @@ module Knockapi before: String, include: T::Array[Knockapi::UserListSubscriptionsParams::Include::OrSymbol], - objects: T::Array[String], + objects: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ], page_size: Integer, request_options: Knockapi::RequestOptions::OrHash ).returns(T.attached_class) @@ -78,7 +102,7 @@ module Knockapi before: nil, # Associated resources to include in the response. include: nil, - # Only returns subscriptions for the specified object GIDs. + # Only returns subscriptions for the specified object references. objects: nil, # The number of items per page. page_size: nil, @@ -95,7 +119,10 @@ module Knockapi T::Array[ Knockapi::UserListSubscriptionsParams::Include::OrSymbol ], - objects: T::Array[String], + objects: + T::Array[ + T.any(String, Knockapi::RecipientReference::ObjectReference) + ], page_size: Integer, request_options: Knockapi::RequestOptions } diff --git a/rbi/knockapi/resources/objects/bulk.rbi b/rbi/knockapi/resources/objects/bulk.rbi index e1a2d95b..3aae7014 100644 --- a/rbi/knockapi/resources/objects/bulk.rbi +++ b/rbi/knockapi/resources/objects/bulk.rbi @@ -49,7 +49,7 @@ module Knockapi sig do params( collection: String, - objects: T::Array[Knockapi::InlineObjectRequest::OrHash], + objects: T::Array[Knockapi::Objects::BulkSetParams::Object::OrHash], request_options: Knockapi::RequestOptions::OrHash ).returns(Knockapi::BulkOperation) end diff --git a/rbi/knockapi/resources/schedules.rbi b/rbi/knockapi/resources/schedules.rbi index 670da3d3..50d5bf97 100644 --- a/rbi/knockapi/resources/schedules.rbi +++ b/rbi/knockapi/resources/schedules.rbi @@ -118,7 +118,13 @@ module Knockapi after: String, before: String, page_size: Integer, - recipients: T::Array[String], + recipients: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ], tenant: String, request_options: Knockapi::RequestOptions::OrHash ).returns(Knockapi::Internal::EntriesCursor[Knockapi::Schedule]) @@ -132,7 +138,7 @@ module Knockapi before: nil, # The number of items per page. page_size: nil, - # Filter by recipient IDs. + # Filter by recipient references. recipients: nil, # Filter by tenant ID. tenant: nil, diff --git a/rbi/knockapi/resources/tenants.rbi b/rbi/knockapi/resources/tenants.rbi index cab76ae8..51598d96 100644 --- a/rbi/knockapi/resources/tenants.rbi +++ b/rbi/knockapi/resources/tenants.rbi @@ -78,13 +78,6 @@ module Knockapi ) ] ), - preferences: - T.nilable( - T::Hash[ - Symbol, - Knockapi::Recipients::PreferenceSetRequest::OrHash - ] - ), settings: Knockapi::TenantSetParams::Settings::OrHash, request_options: Knockapi::RequestOptions::OrHash ).returns(Knockapi::Tenant) @@ -94,8 +87,6 @@ module Knockapi id, # A request to set channel data for a type of channel inline. channel_data: nil, - # Inline set preferences for a recipient, where the key is the preference set id. - preferences: nil, # The settings for the tenant. Includes branding and preference set. settings: nil, request_options: {} diff --git a/rbi/knockapi/resources/users.rbi b/rbi/knockapi/resources/users.rbi index d4c80610..6add9c97 100644 --- a/rbi/knockapi/resources/users.rbi +++ b/rbi/knockapi/resources/users.rbi @@ -283,7 +283,13 @@ module Knockapi before: String, include: T::Array[Knockapi::UserListSubscriptionsParams::Include::OrSymbol], - objects: T::Array[String], + objects: + T::Array[ + T.any( + String, + Knockapi::RecipientReference::ObjectReference::OrHash + ) + ], page_size: Integer, request_options: Knockapi::RequestOptions::OrHash ).returns( @@ -299,7 +305,7 @@ module Knockapi before: nil, # Associated resources to include in the response. include: nil, - # Only returns subscriptions for the specified object GIDs. + # Only returns subscriptions for the specified object references. objects: nil, # The number of items per page. page_size: nil, diff --git a/sig/knockapi/models/objects/bulk_set_params.rbs b/sig/knockapi/models/objects/bulk_set_params.rbs index cb9c5dfc..2aab9d1d 100644 --- a/sig/knockapi/models/objects/bulk_set_params.rbs +++ b/sig/knockapi/models/objects/bulk_set_params.rbs @@ -2,24 +2,56 @@ module Knockapi module Models module Objects type bulk_set_params = - { objects: ::Array[Knockapi::InlineObjectRequest] } + { objects: ::Array[Knockapi::Objects::BulkSetParams::Object] } & Knockapi::Internal::Type::request_parameters class BulkSetParams < Knockapi::Internal::Type::BaseModel extend Knockapi::Internal::Type::RequestParameters::Converter include Knockapi::Internal::Type::RequestParameters - attr_accessor objects: ::Array[Knockapi::InlineObjectRequest] + attr_accessor objects: ::Array[Knockapi::Objects::BulkSetParams::Object] def initialize: ( - objects: ::Array[Knockapi::InlineObjectRequest], + objects: ::Array[Knockapi::Objects::BulkSetParams::Object], ?request_options: Knockapi::request_opts ) -> void def to_hash: -> { - objects: ::Array[Knockapi::InlineObjectRequest], + objects: ::Array[Knockapi::Objects::BulkSetParams::Object], request_options: Knockapi::RequestOptions } + + type object = + { + id: String, + channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, + created_at: Time?, + preferences: Knockapi::Models::Recipients::inline_preference_set_request? + } + + class Object < Knockapi::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor channel_data: Knockapi::Models::Recipients::inline_channel_data_request? + + attr_accessor created_at: Time? + + attr_accessor preferences: Knockapi::Models::Recipients::inline_preference_set_request? + + def initialize: ( + id: String, + ?channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, + ?created_at: Time?, + ?preferences: Knockapi::Models::Recipients::inline_preference_set_request? + ) -> void + + def to_hash: -> { + id: String, + channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, + created_at: Time?, + preferences: Knockapi::Models::Recipients::inline_preference_set_request? + } + end end end end diff --git a/sig/knockapi/models/schedule_list_params.rbs b/sig/knockapi/models/schedule_list_params.rbs index 4a166dbb..280025fa 100644 --- a/sig/knockapi/models/schedule_list_params.rbs +++ b/sig/knockapi/models/schedule_list_params.rbs @@ -6,7 +6,7 @@ module Knockapi after: String, before: String, page_size: Integer, - recipients: ::Array[String], + recipients: ::Array[Knockapi::Models::recipient_reference], tenant: String } & Knockapi::Internal::Type::request_parameters @@ -29,9 +29,11 @@ module Knockapi def page_size=: (Integer) -> Integer - attr_reader recipients: ::Array[String]? + attr_reader recipients: ::Array[Knockapi::Models::recipient_reference]? - def recipients=: (::Array[String]) -> ::Array[String] + def recipients=: ( + ::Array[Knockapi::Models::recipient_reference] + ) -> ::Array[Knockapi::Models::recipient_reference] attr_reader tenant: String? @@ -42,7 +44,7 @@ module Knockapi ?after: String, ?before: String, ?page_size: Integer, - ?recipients: ::Array[String], + ?recipients: ::Array[Knockapi::Models::recipient_reference], ?tenant: String, ?request_options: Knockapi::request_opts ) -> void @@ -52,7 +54,7 @@ module Knockapi after: String, before: String, page_size: Integer, - recipients: ::Array[String], + recipients: ::Array[Knockapi::Models::recipient_reference], tenant: String, request_options: Knockapi::RequestOptions } diff --git a/sig/knockapi/models/schedule_repeat_rule.rbs b/sig/knockapi/models/schedule_repeat_rule.rbs index 838aedc6..bb905dff 100644 --- a/sig/knockapi/models/schedule_repeat_rule.rbs +++ b/sig/knockapi/models/schedule_repeat_rule.rbs @@ -2,8 +2,8 @@ module Knockapi module Models type schedule_repeat_rule = { - _typename: String, frequency: Knockapi::Models::ScheduleRepeatRule::frequency, + _typename: String, day_of_month: Integer?, days: ::Array[Knockapi::Models::ScheduleRepeatRule::day]?, hours: Integer?, @@ -12,10 +12,12 @@ module Knockapi } class ScheduleRepeatRule < Knockapi::Internal::Type::BaseModel - attr_accessor _typename: String - attr_accessor frequency: Knockapi::Models::ScheduleRepeatRule::frequency + attr_reader _typename: String? + + def _typename=: (String) -> String + attr_accessor day_of_month: Integer? attr_accessor days: ::Array[Knockapi::Models::ScheduleRepeatRule::day]? @@ -29,8 +31,8 @@ module Knockapi attr_accessor minutes: Integer? def initialize: ( - _typename: String, frequency: Knockapi::Models::ScheduleRepeatRule::frequency, + ?_typename: String, ?day_of_month: Integer?, ?days: ::Array[Knockapi::Models::ScheduleRepeatRule::day]?, ?hours: Integer?, @@ -39,8 +41,8 @@ module Knockapi ) -> void def to_hash: -> { - _typename: String, frequency: Knockapi::Models::ScheduleRepeatRule::frequency, + _typename: String, day_of_month: Integer?, days: ::Array[Knockapi::Models::ScheduleRepeatRule::day]?, hours: Integer?, diff --git a/sig/knockapi/models/tenant_set_params.rbs b/sig/knockapi/models/tenant_set_params.rbs index d48886c4..eda53f1b 100644 --- a/sig/knockapi/models/tenant_set_params.rbs +++ b/sig/knockapi/models/tenant_set_params.rbs @@ -3,7 +3,6 @@ module Knockapi type tenant_set_params = { channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, - preferences: Knockapi::Models::Recipients::inline_preference_set_request?, settings: Knockapi::TenantSetParams::Settings } & Knockapi::Internal::Type::request_parameters @@ -14,8 +13,6 @@ module Knockapi attr_accessor channel_data: Knockapi::Models::Recipients::inline_channel_data_request? - attr_accessor preferences: Knockapi::Models::Recipients::inline_preference_set_request? - attr_reader settings: Knockapi::TenantSetParams::Settings? def settings=: ( @@ -24,14 +21,12 @@ module Knockapi def initialize: ( ?channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, - ?preferences: Knockapi::Models::Recipients::inline_preference_set_request?, ?settings: Knockapi::TenantSetParams::Settings, ?request_options: Knockapi::request_opts ) -> void def to_hash: -> { channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, - preferences: Knockapi::Models::Recipients::inline_preference_set_request?, settings: Knockapi::TenantSetParams::Settings, request_options: Knockapi::RequestOptions } diff --git a/sig/knockapi/models/user_list_subscriptions_params.rbs b/sig/knockapi/models/user_list_subscriptions_params.rbs index 6437e073..61c2a3da 100644 --- a/sig/knockapi/models/user_list_subscriptions_params.rbs +++ b/sig/knockapi/models/user_list_subscriptions_params.rbs @@ -5,7 +5,7 @@ module Knockapi after: String, before: String, include: ::Array[Knockapi::Models::UserListSubscriptionsParams::include_], - objects: ::Array[String], + objects: ::Array[Knockapi::Models::recipient_reference], page_size: Integer } & Knockapi::Internal::Type::request_parameters @@ -28,9 +28,11 @@ module Knockapi ::Array[Knockapi::Models::UserListSubscriptionsParams::include_] ) -> ::Array[Knockapi::Models::UserListSubscriptionsParams::include_] - attr_reader objects: ::Array[String]? + attr_reader objects: ::Array[Knockapi::Models::recipient_reference]? - def objects=: (::Array[String]) -> ::Array[String] + def objects=: ( + ::Array[Knockapi::Models::recipient_reference] + ) -> ::Array[Knockapi::Models::recipient_reference] attr_reader page_size: Integer? @@ -40,7 +42,7 @@ module Knockapi ?after: String, ?before: String, ?include: ::Array[Knockapi::Models::UserListSubscriptionsParams::include_], - ?objects: ::Array[String], + ?objects: ::Array[Knockapi::Models::recipient_reference], ?page_size: Integer, ?request_options: Knockapi::request_opts ) -> void @@ -49,7 +51,7 @@ module Knockapi after: String, before: String, include: ::Array[Knockapi::Models::UserListSubscriptionsParams::include_], - objects: ::Array[String], + objects: ::Array[Knockapi::Models::recipient_reference], page_size: Integer, request_options: Knockapi::RequestOptions } diff --git a/sig/knockapi/resources/objects/bulk.rbs b/sig/knockapi/resources/objects/bulk.rbs index 8d702de8..8bfe2967 100644 --- a/sig/knockapi/resources/objects/bulk.rbs +++ b/sig/knockapi/resources/objects/bulk.rbs @@ -16,7 +16,7 @@ module Knockapi def set: ( String collection, - objects: ::Array[Knockapi::InlineObjectRequest], + objects: ::Array[Knockapi::Objects::BulkSetParams::Object], ?request_options: Knockapi::request_opts ) -> Knockapi::BulkOperation diff --git a/sig/knockapi/resources/schedules.rbs b/sig/knockapi/resources/schedules.rbs index f30ca516..734fdc9d 100644 --- a/sig/knockapi/resources/schedules.rbs +++ b/sig/knockapi/resources/schedules.rbs @@ -31,7 +31,7 @@ module Knockapi ?after: String, ?before: String, ?page_size: Integer, - ?recipients: ::Array[String], + ?recipients: ::Array[Knockapi::Models::recipient_reference], ?tenant: String, ?request_options: Knockapi::request_opts ) -> Knockapi::Internal::EntriesCursor[Knockapi::Schedule] diff --git a/sig/knockapi/resources/tenants.rbs b/sig/knockapi/resources/tenants.rbs index 001e879d..d243a909 100644 --- a/sig/knockapi/resources/tenants.rbs +++ b/sig/knockapi/resources/tenants.rbs @@ -25,7 +25,6 @@ module Knockapi def set: ( String id, ?channel_data: Knockapi::Models::Recipients::inline_channel_data_request?, - ?preferences: Knockapi::Models::Recipients::inline_preference_set_request?, ?settings: Knockapi::TenantSetParams::Settings, ?request_options: Knockapi::request_opts ) -> Knockapi::Tenant diff --git a/sig/knockapi/resources/users.rbs b/sig/knockapi/resources/users.rbs index 2a525a79..43009e22 100644 --- a/sig/knockapi/resources/users.rbs +++ b/sig/knockapi/resources/users.rbs @@ -91,7 +91,7 @@ module Knockapi ?after: String, ?before: String, ?include: ::Array[Knockapi::Models::UserListSubscriptionsParams::include_], - ?objects: ::Array[String], + ?objects: ::Array[Knockapi::Models::recipient_reference], ?page_size: Integer, ?request_options: Knockapi::request_opts ) -> Knockapi::Internal::EntriesCursor[Knockapi::Recipients::Subscription] diff --git a/test/knockapi/resources/objects/bulk_test.rb b/test/knockapi/resources/objects/bulk_test.rb index c15220dd..df9af092 100644 --- a/test/knockapi/resources/objects/bulk_test.rb +++ b/test/knockapi/resources/objects/bulk_test.rb @@ -73,7 +73,7 @@ def test_set_required_params "skipped: currently no good way to test endpoints defining callbacks, Prism mock server will fail trying to reach the provided callback url" ) - response = @knock.objects.bulk.set("collection", objects: [{id: "project_1", collection: "projects"}]) + response = @knock.objects.bulk.set("collection", objects: [{id: "project_1"}]) assert_pattern do response => Knockapi::BulkOperation