oursprivacy-ingest 1.16.2 → 1.18.0

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: 43b9b9f2ed6e3a6555f1d5ef3760ae53925a85d09e4c5fad764f531948827f9c
4
- data.tar.gz: 10d136ae93b05263abb71e8681b52c0610bfc4d399969f0caafd48bd6e224de1
3
+ metadata.gz: 22e4ba859643905caf56c7cf4e161514503d2cf4c47662d87232bd5d22229f27
4
+ data.tar.gz: d14639768b9c3cd94b9e842bb64bdd8784ba109746be2d6eb2af0ebf24454d45
5
5
  SHA512:
6
- metadata.gz: df4c1209ecd477be51a993bfc9f8c431b8a05e56f3f033789dab96afb3a7adbed4ae157c2df7dc9cd579877cdda79ff9b927e560f172997cea12eda920f0e67b
7
- data.tar.gz: 3080aa71012f38b6df74467e9f963dcb46e382aabc96825977e7aa4c8d66f0f8a7caf2d3777f163883297f674dc564631a857e0fc8b25089b5c8c3e10105df9c
6
+ metadata.gz: 3a8582c10816b4ecbbe89a80c302c7c8ddd6654db913d12a0dd4d5eb99e9761531180b8c97a0b459b34b3cb94b64a65631e3eaf29753f4ccc0d380d16f0a08e4
7
+ data.tar.gz: b03ea599196cb64ed9bfc7e4b212df77289fba26e5b3480eebc4dde1a6fd1f1f3b97d4ec6b653cd091ac4f8e2bf32314b1585d293b35774a34facea01db1bf93
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.18.0 (2026-09-11)
4
+
5
+ Full Changelog: [v1.17.0...v1.18.0](https://github.com/with-ours/ingest-sdk-ruby/compare/v1.17.0...v1.18.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** API update.
10
+ ## 1.17.0 (2026-08-21)
11
+
12
+ Full Changelog: [v1.16.2...v1.17.0](https://github.com/with-ours/ingest-sdk-ruby/compare/v1.16.2...v1.17.0)
13
+
14
+ ### Features
15
+
16
+ * **api:** api update ([b8020be](https://github.com/with-ours/ingest-sdk-ruby/commit/b8020be57eff92f2009805eee4d558bd9dab78f0))
17
+
3
18
  ## 1.16.2 (2026-08-03)
4
19
 
5
20
  Full Changelog: [v1.16.1...v1.16.2](https://github.com/with-ours/ingest-sdk-ruby/compare/v1.16.1...v1.16.2)
data/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  The Ours Privacy Ruby library provides convenient access to the Ours Privacy REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/with-ours/ingest-sdk-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
4
4
 
5
- It is generated with [Stainless](https://www.stainless.com/).
6
-
7
5
  ## Documentation
8
6
 
9
7
  Documentation for releases of this gem can be found [on RubyDoc](https://gemdocs.org/gems/oursprivacy-ingest).
@@ -17,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
17
15
  <!-- x-release-please-start-version -->
18
16
 
19
17
  ```ruby
20
- gem "oursprivacy-ingest", "~> 1.16.2"
18
+ gem "oursprivacy-ingest", "~> 1.18.0"
21
19
  ```
22
20
 
23
21
  <!-- x-release-please-end -->
@@ -10,13 +10,31 @@ module OursprivacyIngest
10
10
  required :personalizations,
11
11
  -> { OursprivacyIngest::Internal::Type::ArrayOf[OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization] }
12
12
 
13
+ # @!attribute properties
14
+ # The visitor traits accumulated by your personalization property rules, keyed by
15
+ # property key. Values are always scalars — a string, number, or boolean, or null
16
+ # when the captured field was itself empty. Empty for a visitor who has not
17
+ # matched any rule yet. These same values are delivered to the visitor's browser
18
+ # and are readable by anyone who knows the visitor_id, so never accumulate
19
+ # secrets, credentials, PHI, or confidential data into a property.
20
+ #
21
+ # @return [Hash{Symbol=>String, Float, Boolean}]
22
+ required :properties,
23
+ -> { OursprivacyIngest::Internal::Type::HashOf[union: OursprivacyIngest::Models::ExperimentPersonalizationResponse::Property] }
24
+
13
25
  # @!attribute success
14
26
  #
15
27
  # @return [Boolean, OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success]
16
28
  required :success, enum: -> { OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success }
17
29
 
18
- # @!method initialize(personalizations:, success:)
30
+ # @!method initialize(personalizations:, properties:, success:)
31
+ # Some parameter documentations has been truncated, see
32
+ # {OursprivacyIngest::Models::ExperimentPersonalizationResponse} for more details.
33
+ #
19
34
  # @param personalizations [Array<OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization>]
35
+ #
36
+ # @param properties [Hash{Symbol=>String, Float, Boolean}] The visitor traits accumulated by your personalization property rules, keyed by
37
+ #
20
38
  # @param success [Boolean, OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success]
21
39
 
22
40
  class Personalization < OursprivacyIngest::Internal::Type::BaseModel
@@ -59,6 +77,19 @@ module OursprivacyIngest
59
77
  # @param variant_name [String, nil]
60
78
  end
61
79
 
80
+ module Property
81
+ extend OursprivacyIngest::Internal::Type::Union
82
+
83
+ variant String
84
+
85
+ variant Float
86
+
87
+ variant OursprivacyIngest::Internal::Type::Boolean
88
+
89
+ # @!method self.variants
90
+ # @return [Array(String, Float, Boolean)]
91
+ end
92
+
62
93
  # @see OursprivacyIngest::Models::ExperimentPersonalizationResponse#success
63
94
  module Success
64
95
  extend OursprivacyIngest::Internal::Type::Enum
@@ -3,9 +3,10 @@
3
3
  module OursprivacyIngest
4
4
  module Resources
5
5
  class Batch
6
- # Send multiple `/track`-shaped events in a single request. The top-level token is
7
- # authorized once for the full batch. Each batch row must include `distinctId`,
8
- # and mixed validation or queue outcomes are reported per row.
6
+ # Send multiple `/track`-shaped events in a single request. This endpoint is
7
+ # intended for replay, backfill, and asynchronous bulk delivery. The top-level
8
+ # token is authorized once for the full batch. Each batch row must include
9
+ # `distinctId`, and mixed validation or queue outcomes are reported per row.
9
10
  #
10
11
  # @overload create(token:, events:, request_options: {})
11
12
  #
@@ -51,10 +51,13 @@ module OursprivacyIngest
51
51
  )
52
52
  end
53
53
 
54
- # Return the active personalization assignments for a visitor. Read-only and never
55
- # records an impression. Personalizations are populated by the event-driven rule
56
- # engine — until that ships, this endpoint returns an empty list for every
57
- # visitor, which is the correct fail-closed behavior (no false positives).
54
+ # Return a visitor's active personalization assignments and accumulated
55
+ # personalization properties. Read-only and never records an impression.
56
+ # `personalizations` lists the personalization experiences the visitor is
57
+ # currently assigned to; `properties` returns the visitor traits your
58
+ # personalization property rules have accumulated, ready to use in server-rendered
59
+ # copy or targeting. Both are empty for a visitor who has not matched anything
60
+ # yet.
58
61
  #
59
62
  # @overload personalization(token:, visitor_id:, request_options: {})
60
63
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OursprivacyIngest
4
- VERSION = "1.16.2"
4
+ VERSION = "1.18.0"
5
5
  end
@@ -20,6 +20,22 @@ module OursprivacyIngest
20
20
  end
21
21
  attr_accessor :personalizations
22
22
 
23
+ # The visitor traits accumulated by your personalization property rules, keyed by
24
+ # property key. Values are always scalars — a string, number, or boolean, or null
25
+ # when the captured field was itself empty. Empty for a visitor who has not
26
+ # matched any rule yet. These same values are delivered to the visitor's browser
27
+ # and are readable by anyone who knows the visitor_id, so never accumulate
28
+ # secrets, credentials, PHI, or confidential data into a property.
29
+ sig do
30
+ returns(
31
+ T::Hash[
32
+ Symbol,
33
+ OursprivacyIngest::Models::ExperimentPersonalizationResponse::Property::Variants
34
+ ]
35
+ )
36
+ end
37
+ attr_accessor :properties
38
+
23
39
  sig do
24
40
  returns(
25
41
  OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success::TaggedBoolean
@@ -33,11 +49,26 @@ module OursprivacyIngest
33
49
  T::Array[
34
50
  OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization::OrHash
35
51
  ],
52
+ properties:
53
+ T::Hash[
54
+ Symbol,
55
+ OursprivacyIngest::Models::ExperimentPersonalizationResponse::Property::Variants
56
+ ],
36
57
  success:
37
58
  OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success::OrBoolean
38
59
  ).returns(T.attached_class)
39
60
  end
40
- def self.new(personalizations:, success:)
61
+ def self.new(
62
+ personalizations:,
63
+ # The visitor traits accumulated by your personalization property rules, keyed by
64
+ # property key. Values are always scalars — a string, number, or boolean, or null
65
+ # when the captured field was itself empty. Empty for a visitor who has not
66
+ # matched any rule yet. These same values are delivered to the visitor's browser
67
+ # and are readable by anyone who knows the visitor_id, so never accumulate
68
+ # secrets, credentials, PHI, or confidential data into a property.
69
+ properties:,
70
+ success:
71
+ )
41
72
  end
42
73
 
43
74
  sig do
@@ -47,6 +78,11 @@ module OursprivacyIngest
47
78
  T::Array[
48
79
  OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization
49
80
  ],
81
+ properties:
82
+ T::Hash[
83
+ Symbol,
84
+ OursprivacyIngest::Models::ExperimentPersonalizationResponse::Property::Variants
85
+ ],
50
86
  success:
51
87
  OursprivacyIngest::Models::ExperimentPersonalizationResponse::Success::TaggedBoolean
52
88
  }
@@ -118,6 +154,22 @@ module OursprivacyIngest
118
154
  end
119
155
  end
120
156
 
157
+ module Property
158
+ extend OursprivacyIngest::Internal::Type::Union
159
+
160
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
161
+
162
+ sig do
163
+ override.returns(
164
+ T::Array[
165
+ OursprivacyIngest::Models::ExperimentPersonalizationResponse::Property::Variants
166
+ ]
167
+ )
168
+ end
169
+ def self.variants
170
+ end
171
+ end
172
+
121
173
  module Success
122
174
  extend OursprivacyIngest::Internal::Type::Enum
123
175
 
@@ -3,9 +3,10 @@
3
3
  module OursprivacyIngest
4
4
  module Resources
5
5
  class Batch
6
- # Send multiple `/track`-shaped events in a single request. The top-level token is
7
- # authorized once for the full batch. Each batch row must include `distinctId`,
8
- # and mixed validation or queue outcomes are reported per row.
6
+ # Send multiple `/track`-shaped events in a single request. This endpoint is
7
+ # intended for replay, backfill, and asynchronous bulk delivery. The top-level
8
+ # token is authorized once for the full batch. Each batch row must include
9
+ # `distinctId`, and mixed validation or queue outcomes are reported per row.
9
10
  sig do
10
11
  params(
11
12
  token: String,
@@ -45,10 +45,13 @@ module OursprivacyIngest
45
45
  )
46
46
  end
47
47
 
48
- # Return the active personalization assignments for a visitor. Read-only and never
49
- # records an impression. Personalizations are populated by the event-driven rule
50
- # engine — until that ships, this endpoint returns an empty list for every
51
- # visitor, which is the correct fail-closed behavior (no false positives).
48
+ # Return a visitor's active personalization assignments and accumulated
49
+ # personalization properties. Read-only and never records an impression.
50
+ # `personalizations` lists the personalization experiences the visitor is
51
+ # currently assigned to; `properties` returns the visitor traits your
52
+ # personalization property rules have accumulated, ready to use in server-rendered
53
+ # copy or targeting. Both are empty for a visitor who has not matched anything
54
+ # yet.
52
55
  sig do
53
56
  params(
54
57
  token: String,
@@ -3,21 +3,26 @@ module OursprivacyIngest
3
3
  type experiment_personalization_response =
4
4
  {
5
5
  personalizations: ::Array[OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization],
6
+ properties: ::Hash[Symbol, OursprivacyIngest::Models::ExperimentPersonalizationResponse::property],
6
7
  success: OursprivacyIngest::Models::ExperimentPersonalizationResponse::success
7
8
  }
8
9
 
9
10
  class ExperimentPersonalizationResponse < OursprivacyIngest::Internal::Type::BaseModel
10
11
  attr_accessor personalizations: ::Array[OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization]
11
12
 
13
+ attr_accessor properties: ::Hash[Symbol, OursprivacyIngest::Models::ExperimentPersonalizationResponse::property]
14
+
12
15
  attr_accessor success: OursprivacyIngest::Models::ExperimentPersonalizationResponse::success
13
16
 
14
17
  def initialize: (
15
18
  personalizations: ::Array[OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization],
19
+ properties: ::Hash[Symbol, OursprivacyIngest::Models::ExperimentPersonalizationResponse::property],
16
20
  success: OursprivacyIngest::Models::ExperimentPersonalizationResponse::success
17
21
  ) -> void
18
22
 
19
23
  def to_hash: -> {
20
24
  personalizations: ::Array[OursprivacyIngest::Models::ExperimentPersonalizationResponse::Personalization],
25
+ properties: ::Hash[Symbol, OursprivacyIngest::Models::ExperimentPersonalizationResponse::property],
21
26
  success: OursprivacyIngest::Models::ExperimentPersonalizationResponse::success
22
27
  }
23
28
 
@@ -63,6 +68,14 @@ module OursprivacyIngest
63
68
  }
64
69
  end
65
70
 
71
+ type property = String | Float | bool
72
+
73
+ module Property
74
+ extend OursprivacyIngest::Internal::Type::Union
75
+
76
+ def self?.variants: -> ::Array[OursprivacyIngest::Models::ExperimentPersonalizationResponse::property]
77
+ end
78
+
66
79
  type success = true
67
80
 
68
81
  module Success
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oursprivacy-ingest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.2
4
+ version: 1.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ours Privacy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-07 00:00:00.000000000 Z
11
+ date: 2026-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi