shipeasy-sdk 4.0.0 → 4.1.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: 9f974f7f31df4a3c30015d2ec1149d32814f7e54a79fed06fd215bfe4c40bf84
4
- data.tar.gz: c165ac01e2f01449538b7bdbaba217fd42c79b63481cacde1071fedaf2bd164e
3
+ metadata.gz: 54ea0b134073140b279ab8891d142a061e2164b3a31a0b6c7ec8d011e0877220
4
+ data.tar.gz: 3dcf6911b34004a46768b2205ee175557d073e3789cbbeeb32b7437ddccb13ae
5
5
  SHA512:
6
- metadata.gz: 192d9656ff82682fccd90e94ece252f67ddb904e20faa50f13ea16ae291c6eb129aef61da23d3262c90b9b24edcc342ccd178e55c0aec639d4bbabad4a9458eb
7
- data.tar.gz: ea186acc91a8dd5bb78956c013e298b8b3decbb9194a5432065ccd4c5d633385ea123998bd5845802b0c2b5e062a80865aa2a58fc3189855ecbba4040147fb23
6
+ metadata.gz: a793c67f011c56bd247f96f2824c074a50847c273e3b8541fd4da65900750b0f749d5d082630b4577b9af3be15c56842ef1bccf1549362c40f544c122d80ba06
7
+ data.tar.gz: b43aabff009ccd7ffdd5bd8a841fb27e786349fe3e40e421f3a4ddeeff86c3b5affce6d1e68a0c113daa3c7a09e1fe846d3077a1ceec3a84bb12de995cfe0dd2
data/README.md CHANGED
@@ -128,4 +128,4 @@ More — the on-the-spot override helpers and a working example
128
128
 
129
129
  [Shipeasy-SAL 1.0](./LICENSE) — source-available, non-commercial-use, permitted
130
130
  as a Shipeasy client. Evaluation is tested against the cross-language
131
- MurmurHash3 vectors in `experiment-platform/04-evaluation.md`.
131
+ MurmurHash3 vectors in [Rollouts & bucketing](https://docs.shipeasy.ai/flags/gates/rollouts).
@@ -1,5 +1,5 @@
1
1
  module Shipeasy
2
2
  module SDK
3
- VERSION = "4.0.0"
3
+ VERSION = "4.1.0"
4
4
  end
5
5
  end
@@ -20,7 +20,7 @@ module Shipeasy::Admin::Generated
20
20
  @api_client = api_client
21
21
  end
22
22
  # File a bug
23
- # Files one bug onto a project's queue, awaiting human approval. This is the **public** intake: it authenticates with a *client* SDK key rather than an admin key, so it can be called from a CLI, an installer script, a devtools overlay, or any shipped code — the same places a client key already lives. Three gates decide whether a ticket is filed, and nothing else the caller sends can widen them: 1. the key is a `client` key carrying the `tickets:public_create` scope, 2. the key's project has public ticket creation enabled, and 3. the item is filed as `pending_approval` — parked out of the work queue until a human promotes it in the dashboard. The project is the key's own project; there is no `X-Project-Id` to pass and no way to file into someone else's queue. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** `shipeasy setup` fails on a customer's machine and self-reports the failure with the user's consent — `{ \"title\": \"Setup failed at Feature installs\", \"stepsToReproduce\": \"…\", \"actualResult\": \"…\" }`.
23
+ # Files one bug onto a project's queue, awaiting human approval. This is the **public** intake: it authenticates with a *client* SDK key rather than an admin key, so it can be called from a CLI, an installer script, a devtools overlay, or any shipped code — the same places a client key already lives. Three gates decide whether a ticket is filed, and nothing else the caller sends can widen them: 1. the key is a `client` key carrying the `tickets:public_create` scope, 2. the key's project has public ticket creation enabled, and 3. the item is filed as `pending_approval` — parked out of the work queue until a human promotes it in the dashboard. The project is the key's own project; there is no `X-Project-Id` to pass and no way to file into someone else's queue. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. Send a `dedupKey` to own that grain yourself — the same key from a monitor, a job, or a retried install re-triggers its open ticket: the ticket's fields are refreshed from the new payload and a \"re-triggered\" comment is appended (`200` with `deduped: true, updated: true`), so one recurring failure stays one ticket with its history intact. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** `shipeasy setup` fails on a customer's machine and self-reports the failure with the user's consent — `{ \"title\": \"Setup failed at Feature installs\", \"stepsToReproduce\": \"…\", \"actualResult\": \"…\" }`.
24
24
  # @param create_public_bug_request [CreatePublicBugRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [CreatePublicTicketResponse]
@@ -30,7 +30,7 @@ module Shipeasy::Admin::Generated
30
30
  end
31
31
 
32
32
  # File a bug
33
- # Files one bug onto a project's queue, awaiting human approval. This is the **public** intake: it authenticates with a *client* SDK key rather than an admin key, so it can be called from a CLI, an installer script, a devtools overlay, or any shipped code — the same places a client key already lives. Three gates decide whether a ticket is filed, and nothing else the caller sends can widen them: 1. the key is a `client` key carrying the `tickets:public_create` scope, 2. the key's project has public ticket creation enabled, and 3. the item is filed as `pending_approval` — parked out of the work queue until a human promotes it in the dashboard. The project is the key's own project; there is no `X-Project-Id` to pass and no way to file into someone else's queue. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** `shipeasy setup` fails on a customer's machine and self-reports the failure with the user's consent — `{ \"title\": \"Setup failed at Feature installs\", \"stepsToReproduce\": \"…\", \"actualResult\": \"…\" }`.
33
+ # Files one bug onto a project's queue, awaiting human approval. This is the **public** intake: it authenticates with a *client* SDK key rather than an admin key, so it can be called from a CLI, an installer script, a devtools overlay, or any shipped code — the same places a client key already lives. Three gates decide whether a ticket is filed, and nothing else the caller sends can widen them: 1. the key is a `client` key carrying the `tickets:public_create` scope, 2. the key's project has public ticket creation enabled, and 3. the item is filed as `pending_approval` — parked out of the work queue until a human promotes it in the dashboard. The project is the key's own project; there is no `X-Project-Id` to pass and no way to file into someone else's queue. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. Send a `dedupKey` to own that grain yourself — the same key from a monitor, a job, or a retried install re-triggers its open ticket: the ticket's fields are refreshed from the new payload and a \"re-triggered\" comment is appended (`200` with `deduped: true, updated: true`), so one recurring failure stays one ticket with its history intact. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** `shipeasy setup` fails on a customer's machine and self-reports the failure with the user's consent — `{ \"title\": \"Setup failed at Feature installs\", \"stepsToReproduce\": \"…\", \"actualResult\": \"…\" }`.
34
34
  # @param create_public_bug_request [CreatePublicBugRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(CreatePublicTicketResponse, Integer, Hash)>] CreatePublicTicketResponse data, response status code and response headers
@@ -88,7 +88,7 @@ module Shipeasy::Admin::Generated
88
88
  end
89
89
 
90
90
  # File a feature request
91
- # Files one feature request onto a project's queue, awaiting human approval. The feature-request counterpart to `POST /ops/bug`, with the same three gates: a `client` key carrying `tickets:public_create`, a project that has opted in, and a `pending_approval` state forced server-side. The project is the key's own project; there is no `X-Project-Id` to pass. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** An in-product \"request a feature\" form posts what the user asked for — `{ \"title\": \"Dark mode\", \"useCase\": \"Reduce eye strain at night\" }`.
91
+ # Files one feature request onto a project's queue, awaiting human approval. The feature-request counterpart to `POST /ops/bug`, with the same three gates: a `client` key carrying `tickets:public_create`, a project that has opted in, and a `pending_approval` state forced server-side. The project is the key's own project; there is no `X-Project-Id` to pass. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns `200` with `deduped: true` instead of filing again. A `dedupKey` works exactly as on `POST /ops/bug`: a repeat carrying the same key refreshes the open ticket and comments that it was re-triggered. This endpoint is served by the Shipeasy **edge worker** (`api.shipeasy.ai`), not the admin API — see `servers` below. **Use case:** An in-product \"request a feature\" form posts what the user asked for — `{ \"title\": \"Dark mode\", \"useCase\": \"Reduce eye strain at night\" }`.
92
92
  # @param create_public_feature_request_request [CreatePublicFeatureRequestRequest]
93
93
  # @param [Hash] opts the optional parameters
94
94
  # @return [CreatePublicTicketResponse]
@@ -98,7 +98,7 @@ module Shipeasy::Admin::Generated
98
98
  end
99
99
 
100
100
  # File a feature request
101
- # Files one feature request onto a project&#39;s queue, awaiting human approval. The feature-request counterpart to &#x60;POST /ops/bug&#x60;, with the same three gates: a &#x60;client&#x60; key carrying &#x60;tickets:public_create&#x60;, a project that has opted in, and a &#x60;pending_approval&#x60; state forced server-side. The project is the key&#39;s own project; there is no &#x60;X-Project-Id&#x60; to pass. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns &#x60;200&#x60; with &#x60;deduped: true&#x60; instead of filing again. This endpoint is served by the Shipeasy **edge worker** (&#x60;api.shipeasy.ai&#x60;), not the admin API — see &#x60;servers&#x60; below. **Use case:** An in-product \&quot;request a feature\&quot; form posts what the user asked for — &#x60;{ \&quot;title\&quot;: \&quot;Dark mode\&quot;, \&quot;useCase\&quot;: \&quot;Reduce eye strain at night\&quot; }&#x60;.
101
+ # Files one feature request onto a project&#39;s queue, awaiting human approval. The feature-request counterpart to &#x60;POST /ops/bug&#x60;, with the same three gates: a &#x60;client&#x60; key carrying &#x60;tickets:public_create&#x60;, a project that has opted in, and a &#x60;pending_approval&#x60; state forced server-side. The project is the key&#39;s own project; there is no &#x60;X-Project-Id&#x60; to pass. Repeat submissions of the same title dedupe against the open ticket already tracking it, which returns &#x60;200&#x60; with &#x60;deduped: true&#x60; instead of filing again. A &#x60;dedupKey&#x60; works exactly as on &#x60;POST /ops/bug&#x60;: a repeat carrying the same key refreshes the open ticket and comments that it was re-triggered. This endpoint is served by the Shipeasy **edge worker** (&#x60;api.shipeasy.ai&#x60;), not the admin API — see &#x60;servers&#x60; below. **Use case:** An in-product \&quot;request a feature\&quot; form posts what the user asked for — &#x60;{ \&quot;title\&quot;: \&quot;Dark mode\&quot;, \&quot;useCase\&quot;: \&quot;Reduce eye strain at night\&quot; }&#x60;.
102
102
  # @param create_public_feature_request_request [CreatePublicFeatureRequestRequest]
103
103
  # @param [Hash] opts the optional parameters
104
104
  # @return [Array<(CreatePublicTicketResponse, Integer, Hash)>] CreatePublicTicketResponse data, response status code and response headers
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- # Body for `POST /ops/bug`. The same bug fields as `CreateBugRequest`, minus the `type` discriminator — the path already says what is being filed.
17
+ # Body for `POST /ops/bug`. The same bug fields as `CreateBugRequest`, minus the `type` discriminator — the path already says what is being filed, plus the public intake's own `dedupKey`.
18
18
  class CreatePublicBugRequest < ApiModelBase
19
19
  # One-line bug title (no leading/trailing whitespace).
20
20
  attr_accessor :title
@@ -58,6 +58,9 @@ module Shipeasy::Admin::Generated
58
58
  # Arbitrary capture context, or `null`.
59
59
  attr_accessor :context
60
60
 
61
+ # Caller-chosen dedupe identity for this report, stored on the ticket. A repeat submission carrying the same key does NOT file a second ticket: the open ticket already holding that key is refreshed from this payload (title and the report fields overwritten, a \"re-triggered\" comment appended) and returned with `deduped: true` and `updated: true`. Triage state a human owns — status, priority, assignee, tags — is left untouched, and a `resolved`/`wont_fix` ticket no longer holds the key, so a failure that comes back after being closed files a fresh ticket. Omit it to fall back to the derived (title + `context.step`) dedupe, whose repeats return the existing ticket unchanged.
62
+ attr_accessor :dedup_key
63
+
61
64
  # Where this bug's completion notification lands.
62
65
  attr_accessor :notify
63
66
 
@@ -100,6 +103,7 @@ module Shipeasy::Admin::Generated
100
103
  :'user_agent' => :'userAgent',
101
104
  :'viewport' => :'viewport',
102
105
  :'context' => :'context',
106
+ :'dedup_key' => :'dedupKey',
103
107
  :'notify' => :'notify'
104
108
  }
105
109
  end
@@ -131,6 +135,7 @@ module Shipeasy::Admin::Generated
131
135
  :'user_agent' => :'String',
132
136
  :'viewport' => :'String',
133
137
  :'context' => :'Hash<String, Object>',
138
+ :'dedup_key' => :'String',
134
139
  :'notify' => :'NotificationTarget'
135
140
  }
136
141
  end
@@ -235,6 +240,10 @@ module Shipeasy::Admin::Generated
235
240
  end
236
241
  end
237
242
 
243
+ if attributes.key?(:'dedup_key')
244
+ self.dedup_key = attributes[:'dedup_key']
245
+ end
246
+
238
247
  if attributes.key?(:'notify')
239
248
  self.notify = attributes[:'notify']
240
249
  end
@@ -282,6 +291,10 @@ module Shipeasy::Admin::Generated
282
291
  invalid_properties.push('invalid value for "viewport", the character length must be smaller than or equal to 40.')
283
292
  end
284
293
 
294
+ if !@dedup_key.nil? && @dedup_key.to_s.length > 200
295
+ invalid_properties.push('invalid value for "dedup_key", the character length must be smaller than or equal to 200.')
296
+ end
297
+
285
298
  invalid_properties
286
299
  end
287
300
 
@@ -298,6 +311,7 @@ module Shipeasy::Admin::Generated
298
311
  return false if !@expected_result.nil? && @expected_result.to_s.length > 8000
299
312
  return false if !@user_agent.nil? && @user_agent.to_s.length > 500
300
313
  return false if !@viewport.nil? && @viewport.to_s.length > 40
314
+ return false if !@dedup_key.nil? && @dedup_key.to_s.length > 200
301
315
  true
302
316
  end
303
317
 
@@ -386,6 +400,20 @@ module Shipeasy::Admin::Generated
386
400
  @viewport = viewport
387
401
  end
388
402
 
403
+ # Custom attribute writer method with validation
404
+ # @param [Object] dedup_key Value to be assigned
405
+ def dedup_key=(dedup_key)
406
+ if dedup_key.nil?
407
+ fail ArgumentError, 'dedup_key cannot be nil'
408
+ end
409
+
410
+ if dedup_key.to_s.length > 200
411
+ fail ArgumentError, 'invalid value for "dedup_key", the character length must be smaller than or equal to 200.'
412
+ end
413
+
414
+ @dedup_key = dedup_key
415
+ end
416
+
389
417
  # Checks equality by comparing each attribute.
390
418
  # @param [Object] Object to be compared
391
419
  def ==(o)
@@ -405,6 +433,7 @@ module Shipeasy::Admin::Generated
405
433
  user_agent == o.user_agent &&
406
434
  viewport == o.viewport &&
407
435
  context == o.context &&
436
+ dedup_key == o.dedup_key &&
408
437
  notify == o.notify
409
438
  end
410
439
 
@@ -417,7 +446,7 @@ module Shipeasy::Admin::Generated
417
446
  # Calculates hash code according to all attributes.
418
447
  # @return [Integer] Hash code
419
448
  def hash
420
- [title, steps_to_reproduce, actual_result, expected_result, priority, status, assignee_id, subscribers, tags, reporter_email, page_url, user_agent, viewport, context, notify].hash
449
+ [title, steps_to_reproduce, actual_result, expected_result, priority, status, assignee_id, subscribers, tags, reporter_email, page_url, user_agent, viewport, context, dedup_key, notify].hash
421
450
  end
422
451
 
423
452
  # Builds the object from hash
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- # Body for `POST /ops/feature-request`. The same feature-request fields as `CreateFeatureRequestRequest`, minus the `type` discriminator — the path already says what is being filed.
17
+ # Body for `POST /ops/feature-request`. The same feature-request fields as `CreateFeatureRequestRequest`, minus the `type` discriminator — the path already says what is being filed, plus the public intake's own `dedupKey`.
18
18
  class CreatePublicFeatureRequestRequest < ApiModelBase
19
19
  # One-line feature-request title (no leading/trailing whitespace).
20
20
  attr_accessor :title
@@ -52,6 +52,9 @@ module Shipeasy::Admin::Generated
52
52
  # Arbitrary capture context, or `null`.
53
53
  attr_accessor :context
54
54
 
55
+ # Caller-chosen dedupe identity for this request, stored on the ticket. Behaves exactly as on `POST /ops/bug`: a repeat carrying the same key refreshes the open ticket already holding it (fields overwritten, a \"re-triggered\" comment appended) and returns `deduped: true` with `updated: true`, instead of filing a second one.
56
+ attr_accessor :dedup_key
57
+
55
58
  # Where this request's completion notification lands.
56
59
  attr_accessor :notify
57
60
 
@@ -92,6 +95,7 @@ module Shipeasy::Admin::Generated
92
95
  :'page_url' => :'pageUrl',
93
96
  :'user_agent' => :'userAgent',
94
97
  :'context' => :'context',
98
+ :'dedup_key' => :'dedupKey',
95
99
  :'notify' => :'notify'
96
100
  }
97
101
  end
@@ -121,6 +125,7 @@ module Shipeasy::Admin::Generated
121
125
  :'page_url' => :'String',
122
126
  :'user_agent' => :'String',
123
127
  :'context' => :'Hash<String, Object>',
128
+ :'dedup_key' => :'String',
124
129
  :'notify' => :'NotificationTarget'
125
130
  }
126
131
  end
@@ -214,6 +219,10 @@ module Shipeasy::Admin::Generated
214
219
  end
215
220
  end
216
221
 
222
+ if attributes.key?(:'dedup_key')
223
+ self.dedup_key = attributes[:'dedup_key']
224
+ end
225
+
217
226
  if attributes.key?(:'notify')
218
227
  self.notify = attributes[:'notify']
219
228
  end
@@ -253,6 +262,10 @@ module Shipeasy::Admin::Generated
253
262
  invalid_properties.push('invalid value for "user_agent", the character length must be smaller than or equal to 500.')
254
263
  end
255
264
 
265
+ if !@dedup_key.nil? && @dedup_key.to_s.length > 200
266
+ invalid_properties.push('invalid value for "dedup_key", the character length must be smaller than or equal to 200.')
267
+ end
268
+
256
269
  invalid_properties
257
270
  end
258
271
 
@@ -267,6 +280,7 @@ module Shipeasy::Admin::Generated
267
280
  return false if !@description.nil? && @description.to_s.length > 8000
268
281
  return false if !@use_case.nil? && @use_case.to_s.length > 8000
269
282
  return false if !@user_agent.nil? && @user_agent.to_s.length > 500
283
+ return false if !@dedup_key.nil? && @dedup_key.to_s.length > 200
270
284
  true
271
285
  end
272
286
 
@@ -331,6 +345,20 @@ module Shipeasy::Admin::Generated
331
345
  @user_agent = user_agent
332
346
  end
333
347
 
348
+ # Custom attribute writer method with validation
349
+ # @param [Object] dedup_key Value to be assigned
350
+ def dedup_key=(dedup_key)
351
+ if dedup_key.nil?
352
+ fail ArgumentError, 'dedup_key cannot be nil'
353
+ end
354
+
355
+ if dedup_key.to_s.length > 200
356
+ fail ArgumentError, 'invalid value for "dedup_key", the character length must be smaller than or equal to 200.'
357
+ end
358
+
359
+ @dedup_key = dedup_key
360
+ end
361
+
334
362
  # Checks equality by comparing each attribute.
335
363
  # @param [Object] Object to be compared
336
364
  def ==(o)
@@ -348,6 +376,7 @@ module Shipeasy::Admin::Generated
348
376
  page_url == o.page_url &&
349
377
  user_agent == o.user_agent &&
350
378
  context == o.context &&
379
+ dedup_key == o.dedup_key &&
351
380
  notify == o.notify
352
381
  end
353
382
 
@@ -360,7 +389,7 @@ module Shipeasy::Admin::Generated
360
389
  # Calculates hash code according to all attributes.
361
390
  # @return [Integer] Hash code
362
391
  def hash
363
- [title, description, use_case, priority, status, assignee_id, subscribers, tags, reporter_email, page_url, user_agent, context, notify].hash
392
+ [title, description, use_case, priority, status, assignee_id, subscribers, tags, reporter_email, page_url, user_agent, context, dedup_key, notify].hash
364
393
  end
365
394
 
366
395
  # Builds the object from hash
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- # Response for the public ticket intake. A fresh file returns `201` with `id` + `number`; a repeat of a report already tracked by an open ticket returns `200` with that ticket's `number` and `deduped: true`.
17
+ # Response for the public ticket intake. A fresh file returns `201` with `id` + `number`; a repeat of a report already tracked by an open ticket returns `200` with that ticket's `number` and `deduped: true` — plus `updated: true` when a `dedupKey` re-triggered it and its fields were refreshed.
18
18
  class CreatePublicTicketResponse < ApiModelBase
19
19
  # The new item's id. Absent on a deduped response — nothing was created, so there is no new id to report.
20
20
  attr_accessor :id
@@ -25,12 +25,16 @@ module Shipeasy::Admin::Generated
25
25
  # `true` when an open ticket already tracked this report and nothing was filed (HTTP 200). Absent on a fresh file (HTTP 201).
26
26
  attr_accessor :deduped
27
27
 
28
+ # `true` when the deduped ticket was REFRESHED from this payload and got a \"re-triggered\" comment — only ever set alongside `deduped` on a submission that carried a `dedupKey`. Absent when the existing ticket was returned untouched.
29
+ attr_accessor :updated
30
+
28
31
  # Attribute mapping from ruby-style variable name to JSON key.
29
32
  def self.attribute_map
30
33
  {
31
34
  :'id' => :'id',
32
35
  :'number' => :'number',
33
- :'deduped' => :'deduped'
36
+ :'deduped' => :'deduped',
37
+ :'updated' => :'updated'
34
38
  }
35
39
  end
36
40
 
@@ -49,7 +53,8 @@ module Shipeasy::Admin::Generated
49
53
  {
50
54
  :'id' => :'String',
51
55
  :'number' => :'Integer',
52
- :'deduped' => :'Boolean'
56
+ :'deduped' => :'Boolean',
57
+ :'updated' => :'Boolean'
53
58
  }
54
59
  end
55
60
 
@@ -88,6 +93,10 @@ module Shipeasy::Admin::Generated
88
93
  if attributes.key?(:'deduped')
89
94
  self.deduped = attributes[:'deduped']
90
95
  end
96
+
97
+ if attributes.key?(:'updated')
98
+ self.updated = attributes[:'updated']
99
+ end
91
100
  end
92
101
 
93
102
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -127,7 +136,8 @@ module Shipeasy::Admin::Generated
127
136
  self.class == o.class &&
128
137
  id == o.id &&
129
138
  number == o.number &&
130
- deduped == o.deduped
139
+ deduped == o.deduped &&
140
+ updated == o.updated
131
141
  end
132
142
 
133
143
  # @see the `==` method
@@ -139,7 +149,7 @@ module Shipeasy::Admin::Generated
139
149
  # Calculates hash code according to all attributes.
140
150
  # @return [Integer] Hash code
141
151
  def hash
142
- [id, number, deduped].hash
152
+ [id, number, deduped, updated].hash
143
153
  end
144
154
 
145
155
  # Builds the object from hash
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shipeasy-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shipeasy, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-27 00:00:00.000000000 Z
11
+ date: 2026-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec