trycourier 4.18.0 → 4.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8dd821714bcedfb9a48185d8a9c04f669568f2fdd560bcbd58a7c21acf43be3
4
- data.tar.gz: c8730971ee6d6fbb0e38a4f3a6a213c0a9fed7aca628d5ebc3e490c8c585d362
3
+ metadata.gz: ce3813405deb188367bed5849b23a16ea329a497b654278d0a18b2f992b15bec
4
+ data.tar.gz: dd921945bf22141d5505b42420046cd6447a77b033f9866714c8f6fa7692e240
5
5
  SHA512:
6
- metadata.gz: 1c3bdee713e6ac20200c2c35ac993a34a07b52b3e4c1bc9422e0074aeffe344b39962d7703463de38d80f00ba1ecc56e5ea839654ac0a45c6c51400fc996849b
7
- data.tar.gz: 07535c3b636a1462811bd7f00685dbc3738c3ce589cc0f963baf898a2895f543c48a8e12e39135c6bebccdbabc3fb85388dea03af2aff3d0bcf6758c4ef2309e
6
+ metadata.gz: 9174a2e66c46289020fe6d1837690667a7fc1918b7035a18f964be0b46b55eb41cee98a5f8befd8c5acae02b07030e47d0c49e6fd50114be096565850981c849
7
+ data.tar.gz: 48a7ccea6a0357ae2c452a7f9e727daf41b4675a884eb7c03dc1cf20b18a052bae53b022357f69a1e3841ab4ad38662ccca5b026beea8e5261dd44238f69291e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.18.1 (2026-07-07)
4
+
5
+ Full Changelog: [v4.18.0...v4.18.1](https://github.com/trycourier/courier-ruby/compare/v4.18.0...v4.18.1)
6
+
7
+ ### Documentation
8
+
9
+ * **openapi:** document audiences filter combinator (SUP-686) ([fdf42fe](https://github.com/trycourier/courier-ruby/commit/fdf42fecbd77058dbba53a198942efa509bbc1a1))
10
+
3
11
  ## 4.18.0 (2026-07-06)
4
12
 
5
13
  Full Changelog: [v4.17.1...v4.18.0](https://github.com/trycourier/courier-ruby/compare/v4.17.1...v4.18.0)
@@ -39,7 +39,8 @@ module Courier
39
39
  optional :filter, -> { Courier::AudienceFilterConfig }, nil?: true
40
40
 
41
41
  # @!attribute operator
42
- # The logical operator (AND/OR) for the top-level filter
42
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
43
+ # Convenience alias for `filter.operator`.
43
44
  #
44
45
  # @return [Symbol, Courier::Models::Audience::Operator, nil]
45
46
  optional :operator, enum: -> { Courier::Audience::Operator }
@@ -60,9 +61,10 @@ module Courier
60
61
  #
61
62
  # @param filter [Courier::Models::AudienceFilterConfig, nil] Filter configuration for audience membership containing an array of filter rules
62
63
  #
63
- # @param operator [Symbol, Courier::Models::Audience::Operator] The logical operator (AND/OR) for the top-level filter
64
+ # @param operator [Symbol, Courier::Models::Audience::Operator] The logical operator (AND/OR) combining the top-level `filter.filters`. Convenie
64
65
 
65
- # The logical operator (AND/OR) for the top-level filter
66
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
67
+ # Convenience alias for `filter.operator`.
66
68
  #
67
69
  # @see Courier::Models::Audience#operator
68
70
  module Operator
@@ -9,10 +9,38 @@ module Courier
9
9
  # @return [Array<Courier::Models::FilterConfig>]
10
10
  required :filters, -> { Courier::Internal::Type::ArrayOf[Courier::FilterConfig] }
11
11
 
12
- # @!method initialize(filters:)
12
+ # @!attribute operator
13
+ # The logical operator (AND/OR) combining the rules in `filters`. Required when
14
+ # `filters` contains more than one rule. If omitted, the top-level `operator`
15
+ # field on the request is used instead.
16
+ #
17
+ # @return [Symbol, Courier::Models::AudienceFilterConfig::Operator, nil]
18
+ optional :operator, enum: -> { Courier::AudienceFilterConfig::Operator }
19
+
20
+ # @!method initialize(filters:, operator: nil)
21
+ # Some parameter documentations has been truncated, see
22
+ # {Courier::Models::AudienceFilterConfig} for more details.
23
+ #
13
24
  # Filter configuration for audience membership containing an array of filter rules
14
25
  #
15
26
  # @param filters [Array<Courier::Models::FilterConfig>] Array of filter rules (single conditions or nested groups)
27
+ #
28
+ # @param operator [Symbol, Courier::Models::AudienceFilterConfig::Operator] The logical operator (AND/OR) combining the rules in `filters`. Required when `f
29
+
30
+ # The logical operator (AND/OR) combining the rules in `filters`. Required when
31
+ # `filters` contains more than one rule. If omitted, the top-level `operator`
32
+ # field on the request is used instead.
33
+ #
34
+ # @see Courier::Models::AudienceFilterConfig#operator
35
+ module Operator
36
+ extend Courier::Internal::Type::Enum
37
+
38
+ AND = :AND
39
+ OR = :OR
40
+
41
+ # @!method self.values
42
+ # @return [Array<Symbol>]
43
+ end
16
44
  end
17
45
  end
18
46
  end
@@ -31,7 +31,9 @@ module Courier
31
31
  optional :name, String, nil?: true
32
32
 
33
33
  # @!attribute operator
34
- # The logical operator (AND/OR) for the top-level filter
34
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
35
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
36
+ # filter group. Prefer setting `operator` directly inside `filter`.
35
37
  #
36
38
  # @return [Symbol, Courier::Models::AudienceUpdateParams::Operator, nil]
37
39
  optional :operator, enum: -> { Courier::AudienceUpdateParams::Operator }, nil?: true
@@ -48,11 +50,13 @@ module Courier
48
50
  #
49
51
  # @param name [String, nil] The name of the audience
50
52
  #
51
- # @param operator [Symbol, Courier::Models::AudienceUpdateParams::Operator, nil] The logical operator (AND/OR) for the top-level filter
53
+ # @param operator [Symbol, Courier::Models::AudienceUpdateParams::Operator, nil] The logical operator (AND/OR) combining the top-level `filter.filters`. Convenie
52
54
  #
53
55
  # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}]
54
56
 
55
- # The logical operator (AND/OR) for the top-level filter
57
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
58
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
59
+ # filter group. Prefer setting `operator` directly inside `filter`.
56
60
  module Operator
57
61
  extend Courier::Internal::Type::Enum
58
62
 
@@ -38,7 +38,7 @@ module Courier
38
38
  #
39
39
  # @param name [String, nil] The name of the audience
40
40
  #
41
- # @param operator [Symbol, Courier::Models::AudienceUpdateParams::Operator, nil] The logical operator (AND/OR) for the top-level filter
41
+ # @param operator [Symbol, Courier::Models::AudienceUpdateParams::Operator, nil] The logical operator (AND/OR) combining the top-level `filter.filters`. Convenie
42
42
  #
43
43
  # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
44
44
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Courier
4
- VERSION = "4.18.0"
4
+ VERSION = "4.18.1"
5
5
  end
@@ -33,7 +33,8 @@ module Courier
33
33
  end
34
34
  attr_writer :filter
35
35
 
36
- # The logical operator (AND/OR) for the top-level filter
36
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
37
+ # Convenience alias for `filter.operator`.
37
38
  sig { returns(T.nilable(Courier::Audience::Operator::TaggedSymbol)) }
38
39
  attr_reader :operator
39
40
 
@@ -62,7 +63,8 @@ module Courier
62
63
  updated_at:,
63
64
  # Filter configuration for audience membership containing an array of filter rules
64
65
  filter: nil,
65
- # The logical operator (AND/OR) for the top-level filter
66
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
67
+ # Convenience alias for `filter.operator`.
66
68
  operator: nil
67
69
  )
68
70
  end
@@ -83,7 +85,8 @@ module Courier
83
85
  def to_hash
84
86
  end
85
87
 
86
- # The logical operator (AND/OR) for the top-level filter
88
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
89
+ # Convenience alias for `filter.operator`.
87
90
  module Operator
88
91
  extend Courier::Internal::Type::Enum
89
92
 
@@ -12,21 +12,70 @@ module Courier
12
12
  sig { returns(T::Array[Courier::FilterConfig]) }
13
13
  attr_accessor :filters
14
14
 
15
+ # The logical operator (AND/OR) combining the rules in `filters`. Required when
16
+ # `filters` contains more than one rule. If omitted, the top-level `operator`
17
+ # field on the request is used instead.
18
+ sig do
19
+ returns(T.nilable(Courier::AudienceFilterConfig::Operator::OrSymbol))
20
+ end
21
+ attr_reader :operator
22
+
23
+ sig do
24
+ params(operator: Courier::AudienceFilterConfig::Operator::OrSymbol).void
25
+ end
26
+ attr_writer :operator
27
+
15
28
  # Filter configuration for audience membership containing an array of filter rules
16
29
  sig do
17
- params(filters: T::Array[Courier::FilterConfig::OrHash]).returns(
18
- T.attached_class
19
- )
30
+ params(
31
+ filters: T::Array[Courier::FilterConfig::OrHash],
32
+ operator: Courier::AudienceFilterConfig::Operator::OrSymbol
33
+ ).returns(T.attached_class)
20
34
  end
21
35
  def self.new(
22
36
  # Array of filter rules (single conditions or nested groups)
23
- filters:
37
+ filters:,
38
+ # The logical operator (AND/OR) combining the rules in `filters`. Required when
39
+ # `filters` contains more than one rule. If omitted, the top-level `operator`
40
+ # field on the request is used instead.
41
+ operator: nil
24
42
  )
25
43
  end
26
44
 
27
- sig { override.returns({ filters: T::Array[Courier::FilterConfig] }) }
45
+ sig do
46
+ override.returns(
47
+ {
48
+ filters: T::Array[Courier::FilterConfig],
49
+ operator: Courier::AudienceFilterConfig::Operator::OrSymbol
50
+ }
51
+ )
52
+ end
28
53
  def to_hash
29
54
  end
55
+
56
+ # The logical operator (AND/OR) combining the rules in `filters`. Required when
57
+ # `filters` contains more than one rule. If omitted, the top-level `operator`
58
+ # field on the request is used instead.
59
+ module Operator
60
+ extend Courier::Internal::Type::Enum
61
+
62
+ TaggedSymbol =
63
+ T.type_alias do
64
+ T.all(Symbol, Courier::AudienceFilterConfig::Operator)
65
+ end
66
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
67
+
68
+ AND = T.let(:AND, Courier::AudienceFilterConfig::Operator::TaggedSymbol)
69
+ OR = T.let(:OR, Courier::AudienceFilterConfig::Operator::TaggedSymbol)
70
+
71
+ sig do
72
+ override.returns(
73
+ T::Array[Courier::AudienceFilterConfig::Operator::TaggedSymbol]
74
+ )
75
+ end
76
+ def self.values
77
+ end
78
+ end
30
79
  end
31
80
  end
32
81
  end
@@ -31,7 +31,9 @@ module Courier
31
31
  sig { returns(T.nilable(String)) }
32
32
  attr_accessor :name
33
33
 
34
- # The logical operator (AND/OR) for the top-level filter
34
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
35
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
36
+ # filter group. Prefer setting `operator` directly inside `filter`.
35
37
  sig do
36
38
  returns(T.nilable(Courier::AudienceUpdateParams::Operator::OrSymbol))
37
39
  end
@@ -56,7 +58,9 @@ module Courier
56
58
  filter: nil,
57
59
  # The name of the audience
58
60
  name: nil,
59
- # The logical operator (AND/OR) for the top-level filter
61
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
62
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
63
+ # filter group. Prefer setting `operator` directly inside `filter`.
60
64
  operator: nil,
61
65
  request_options: {}
62
66
  )
@@ -78,7 +82,9 @@ module Courier
78
82
  def to_hash
79
83
  end
80
84
 
81
- # The logical operator (AND/OR) for the top-level filter
85
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
86
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
87
+ # filter group. Prefer setting `operator` directly inside `filter`.
82
88
  module Operator
83
89
  extend Courier::Internal::Type::Enum
84
90
 
@@ -38,7 +38,9 @@ module Courier
38
38
  filter: nil,
39
39
  # The name of the audience
40
40
  name: nil,
41
- # The logical operator (AND/OR) for the top-level filter
41
+ # The logical operator (AND/OR) combining the top-level `filter.filters`.
42
+ # Convenience alias for `filter.operator`: if set, it is applied to the top-level
43
+ # filter group. Prefer setting `operator` directly inside `filter`.
42
44
  operator: nil,
43
45
  request_options: {}
44
46
  )
@@ -1,13 +1,40 @@
1
1
  module Courier
2
2
  module Models
3
- type audience_filter_config = { filters: ::Array[Courier::FilterConfig] }
3
+ type audience_filter_config =
4
+ {
5
+ filters: ::Array[Courier::FilterConfig],
6
+ operator: Courier::Models::AudienceFilterConfig::operator
7
+ }
4
8
 
5
9
  class AudienceFilterConfig < Courier::Internal::Type::BaseModel
6
10
  attr_accessor filters: ::Array[Courier::FilterConfig]
7
11
 
8
- def initialize: (filters: ::Array[Courier::FilterConfig]) -> void
12
+ attr_reader operator: Courier::Models::AudienceFilterConfig::operator?
9
13
 
10
- def to_hash: -> { filters: ::Array[Courier::FilterConfig] }
14
+ def operator=: (
15
+ Courier::Models::AudienceFilterConfig::operator
16
+ ) -> Courier::Models::AudienceFilterConfig::operator
17
+
18
+ def initialize: (
19
+ filters: ::Array[Courier::FilterConfig],
20
+ ?operator: Courier::Models::AudienceFilterConfig::operator
21
+ ) -> void
22
+
23
+ def to_hash: -> {
24
+ filters: ::Array[Courier::FilterConfig],
25
+ operator: Courier::Models::AudienceFilterConfig::operator
26
+ }
27
+
28
+ type operator = :AND | :OR
29
+
30
+ module Operator
31
+ extend Courier::Internal::Type::Enum
32
+
33
+ AND: :AND
34
+ OR: :OR
35
+
36
+ def self?.values: -> ::Array[Courier::Models::AudienceFilterConfig::operator]
37
+ end
11
38
  end
12
39
  end
13
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trycourier
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.18.0
4
+ version: 4.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Courier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-06 00:00:00.000000000 Z
11
+ date: 2026-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi