hatchet-sdk 0.4.0 → 0.5.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/lib/hatchet/clients/rest/.openapi-generator/FILES +24 -0
  4. data/lib/hatchet/clients/rest/README.md +31 -1
  5. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/durable_tasks_api.rb +113 -0
  6. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/feature_flags_api.rb +107 -0
  7. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/log_api.rb +156 -52
  8. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/observability_api.rb +114 -0
  9. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/rate_limits_api.rb +78 -0
  10. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/task_api.rb +71 -0
  11. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/tenant_api.rb +3 -0
  12. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/worker_api.rb +9 -0
  13. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/workflow_api.rb +170 -0
  14. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api/workflow_runs_api.rb +94 -0
  15. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/api_model_base.rb +88 -0
  16. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/api_meta.rb +44 -4
  17. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/feature_flag_evaluation_result.rb +238 -0
  18. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/feature_flag_id.rb +41 -0
  19. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/otel_span.rb +525 -0
  20. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/otel_span_kind.rb +44 -0
  21. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/otel_span_list.rb +242 -0
  22. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/otel_status_code.rb +41 -0
  23. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/task_status_stat.rb +13 -4
  24. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/tenant.rb +24 -4
  25. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/tenant_member.rb +14 -4
  26. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/trigger_run_result.rb +256 -0
  27. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_additional_metadata_operator.rb +40 -0
  28. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_branch_durable_task_request.rb +310 -0
  29. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_branch_durable_task_response.rb +310 -0
  30. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_create_webhook_request_api_key.rb +14 -4
  31. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_create_webhook_request_base.rb +14 -4
  32. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_create_webhook_request_basic_auth.rb +14 -4
  33. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_create_webhook_request_hmac.rb +14 -4
  34. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_durable_event_log_entry.rb +470 -0
  35. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_durable_event_log_kind.rb +41 -0
  36. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_durable_wait_condition.rb +286 -0
  37. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_durable_wait_condition_kind.rb +41 -0
  38. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_log_line.rb +49 -1
  39. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_logs_point_metric.rb +341 -0
  40. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_logs_point_metrics.rb +222 -0
  41. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_restore_task_response.rb +237 -0
  42. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_running_detail_count.rb +265 -0
  43. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_running_filter.rb +41 -0
  44. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_task_event_type.rb +3 -1
  45. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_task_run_metric.rb +13 -4
  46. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_task_summary.rb +34 -4
  47. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_task_timing.rb +11 -1
  48. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_trigger_workflow_run_request.rb +14 -4
  49. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_update_webhook_request.rb +14 -4
  50. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_wait_item.rb +280 -0
  51. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/v1_webhook.rb +14 -4
  52. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/worker.rb +1 -13
  53. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/worker_status.rb +41 -0
  54. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/workflow_version_idempotency.rb +265 -0
  55. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/workflow_version_task.rb +393 -0
  56. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/workflow_version_task_desired_worker_label.rb +288 -0
  57. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest/models/workflow_version_task_rate_limit.rb +271 -0
  58. data/lib/hatchet/clients/rest/lib/hatchet-sdk-rest.rb +24 -0
  59. data/lib/hatchet/contracts/v1/workflows_pb.rb +3 -1
  60. data/lib/hatchet/idempotency.rb +35 -1
  61. data/lib/hatchet/version.rb +1 -1
  62. data/lib/hatchet/workflow.rb +2 -2
  63. data/sig/hatchet/idempotency.rbs +8 -0
  64. metadata +31 -2
@@ -0,0 +1,242 @@
1
+ =begin
2
+ #Hatchet API
3
+
4
+ #The Hatchet API
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.14.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module HatchetSdkRest
17
+ class OtelSpanList
18
+ attr_accessor :pagination
19
+
20
+ attr_accessor :retry_counts
21
+
22
+ attr_accessor :rows
23
+
24
+ # Attribute mapping from ruby-style variable name to JSON key.
25
+ def self.attribute_map
26
+ {
27
+ :'pagination' => :'pagination',
28
+ :'retry_counts' => :'retryCounts',
29
+ :'rows' => :'rows'
30
+ }
31
+ end
32
+
33
+ # Returns attribute mapping this model knows about
34
+ def self.acceptable_attribute_map
35
+ attribute_map
36
+ end
37
+
38
+ # Returns all the JSON keys this model knows about
39
+ def self.acceptable_attributes
40
+ acceptable_attribute_map.values
41
+ end
42
+
43
+ # Attribute type mapping.
44
+ def self.openapi_types
45
+ {
46
+ :'pagination' => :'PaginationResponse',
47
+ :'retry_counts' => :'Array<Integer>',
48
+ :'rows' => :'Array<OtelSpan>'
49
+ }
50
+ end
51
+
52
+ # List of attributes with nullable: true
53
+ def self.openapi_nullable
54
+ Set.new([
55
+ ])
56
+ end
57
+
58
+ # Initializes the object
59
+ # @param [Hash] attributes Model attributes in the form of hash
60
+ def initialize(attributes = {})
61
+ if (!attributes.is_a?(Hash))
62
+ fail ArgumentError, "The input argument (attributes) must be a hash in `HatchetSdkRest::OtelSpanList` initialize method"
63
+ end
64
+
65
+ # check to see if the attribute exists and convert string to symbol for hash key
66
+ acceptable_attribute_map = self.class.acceptable_attribute_map
67
+ attributes = attributes.each_with_object({}) { |(k, v), h|
68
+ if (!acceptable_attribute_map.key?(k.to_sym))
69
+ fail ArgumentError, "`#{k}` is not a valid attribute in `HatchetSdkRest::OtelSpanList`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
70
+ end
71
+ h[k.to_sym] = v
72
+ }
73
+
74
+ if attributes.key?(:'pagination')
75
+ self.pagination = attributes[:'pagination']
76
+ end
77
+
78
+ if attributes.key?(:'retry_counts')
79
+ if (value = attributes[:'retry_counts']).is_a?(Array)
80
+ self.retry_counts = value
81
+ end
82
+ end
83
+
84
+ if attributes.key?(:'rows')
85
+ if (value = attributes[:'rows']).is_a?(Array)
86
+ self.rows = value
87
+ end
88
+ end
89
+ end
90
+
91
+ # Show invalid properties with the reasons. Usually used together with valid?
92
+ # @return Array for valid properties with the reasons
93
+ def list_invalid_properties
94
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
95
+ invalid_properties = Array.new
96
+ invalid_properties
97
+ end
98
+
99
+ # Check to see if the all the properties in the model are valid
100
+ # @return true if the model is valid
101
+ def valid?
102
+ warn '[DEPRECATED] the `valid?` method is obsolete'
103
+ true
104
+ end
105
+
106
+ # Checks equality by comparing each attribute.
107
+ # @param [Object] Object to be compared
108
+ def ==(o)
109
+ return true if self.equal?(o)
110
+ self.class == o.class &&
111
+ pagination == o.pagination &&
112
+ retry_counts == o.retry_counts &&
113
+ rows == o.rows
114
+ end
115
+
116
+ # @see the `==` method
117
+ # @param [Object] Object to be compared
118
+ def eql?(o)
119
+ self == o
120
+ end
121
+
122
+ # Calculates hash code according to all attributes.
123
+ # @return [Integer] Hash code
124
+ def hash
125
+ [pagination, retry_counts, rows].hash
126
+ end
127
+
128
+ # Builds the object from hash
129
+ # @param [Hash] attributes Model attributes in the form of hash
130
+ # @return [Object] Returns the model itself
131
+ def self.build_from_hash(attributes)
132
+ return nil unless attributes.is_a?(Hash)
133
+ attributes = attributes.transform_keys(&:to_sym)
134
+ transformed_hash = {}
135
+ openapi_types.each_pair do |key, type|
136
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
137
+ transformed_hash["#{key}"] = nil
138
+ elsif type =~ /\AArray<(.*)>/i
139
+ # check to ensure the input is an array given that the attribute
140
+ # is documented as an array but the input is not
141
+ if attributes[attribute_map[key]].is_a?(Array)
142
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
143
+ end
144
+ elsif !attributes[attribute_map[key]].nil?
145
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
146
+ end
147
+ end
148
+ new(transformed_hash)
149
+ end
150
+
151
+ # Deserializes the data based on type
152
+ # @param string type Data type
153
+ # @param string value Value to be deserialized
154
+ # @return [Object] Deserialized data
155
+ def self._deserialize(type, value)
156
+ case type.to_sym
157
+ when :Time
158
+ Time.parse(value)
159
+ when :Date
160
+ Date.parse(value)
161
+ when :String
162
+ value.to_s
163
+ when :Integer
164
+ value.to_i
165
+ when :Float
166
+ value.to_f
167
+ when :Boolean
168
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
169
+ true
170
+ else
171
+ false
172
+ end
173
+ when :Object
174
+ # generic object (usually a Hash), return directly
175
+ value
176
+ when /\AArray<(?<inner_type>.+)>\z/
177
+ inner_type = Regexp.last_match[:inner_type]
178
+ value.map { |v| _deserialize(inner_type, v) }
179
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
180
+ k_type = Regexp.last_match[:k_type]
181
+ v_type = Regexp.last_match[:v_type]
182
+ {}.tap do |hash|
183
+ value.each do |k, v|
184
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
185
+ end
186
+ end
187
+ else # model
188
+ # models (e.g. Pet) or oneOf
189
+ klass = HatchetSdkRest.const_get(type)
190
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
191
+ end
192
+ end
193
+
194
+ # Returns the string representation of the object
195
+ # @return [String] String presentation of the object
196
+ def to_s
197
+ to_hash.to_s
198
+ end
199
+
200
+ # to_body is an alias to to_hash (backward compatibility)
201
+ # @return [Hash] Returns the object in the form of hash
202
+ def to_body
203
+ to_hash
204
+ end
205
+
206
+ # Returns the object in the form of hash
207
+ # @return [Hash] Returns the object in the form of hash
208
+ def to_hash
209
+ hash = {}
210
+ self.class.attribute_map.each_pair do |attr, param|
211
+ value = self.send(attr)
212
+ if value.nil?
213
+ is_nullable = self.class.openapi_nullable.include?(attr)
214
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
215
+ end
216
+
217
+ hash[param] = _to_hash(value)
218
+ end
219
+ hash
220
+ end
221
+
222
+ # Outputs non-array value in the form of hash
223
+ # For object, use to_hash. Otherwise, just return the value
224
+ # @param [Object] value Any valid value
225
+ # @return [Hash] Returns the value in the form of hash
226
+ def _to_hash(value)
227
+ if value.is_a?(Array)
228
+ value.compact.map { |v| _to_hash(v) }
229
+ elsif value.is_a?(Hash)
230
+ {}.tap do |hash|
231
+ value.each { |k, v| hash[k] = _to_hash(v) }
232
+ end
233
+ elsif value.respond_to? :to_hash
234
+ value.to_hash
235
+ else
236
+ value
237
+ end
238
+ end
239
+
240
+ end
241
+
242
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+ #Hatchet API
3
+
4
+ #The Hatchet API
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.14.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module HatchetSdkRest
17
+ class OtelStatusCode
18
+ UNSET = "UNSET".freeze
19
+ OK = "OK".freeze
20
+ ERROR = "ERROR".freeze
21
+
22
+ def self.all_vars
23
+ @all_vars ||= [UNSET, OK, ERROR].freeze
24
+ end
25
+
26
+ # Builds the enum from string
27
+ # @param [String] The enum value in the form of the string
28
+ # @return [String] The enum value
29
+ def self.build_from_hash(value)
30
+ new.build_from_hash(value)
31
+ end
32
+
33
+ # Builds the enum from string
34
+ # @param [String] The enum value in the form of the string
35
+ # @return [String] The enum value
36
+ def build_from_hash(value)
37
+ return value if OtelStatusCode.all_vars.include?(value)
38
+ raise "Invalid ENUM value #{value} for class #OtelStatusCode"
39
+ end
40
+ end
41
+ end
@@ -23,13 +23,16 @@ module HatchetSdkRest
23
23
 
24
24
  attr_accessor :oldest
25
25
 
26
+ attr_accessor :oldest_excluding_retries
27
+
26
28
  # Attribute mapping from ruby-style variable name to JSON key.
27
29
  def self.attribute_map
28
30
  {
29
31
  :'total' => :'total',
30
32
  :'queues' => :'queues',
31
33
  :'concurrency' => :'concurrency',
32
- :'oldest' => :'oldest'
34
+ :'oldest' => :'oldest',
35
+ :'oldest_excluding_retries' => :'oldestExcludingRetries'
33
36
  }
34
37
  end
35
38
 
@@ -49,7 +52,8 @@ module HatchetSdkRest
49
52
  :'total' => :'Integer',
50
53
  :'queues' => :'Hash<String, Integer>',
51
54
  :'concurrency' => :'Array<ConcurrencyStat>',
52
- :'oldest' => :'Time'
55
+ :'oldest' => :'Time',
56
+ :'oldest_excluding_retries' => :'Time'
53
57
  }
54
58
  end
55
59
 
@@ -94,6 +98,10 @@ module HatchetSdkRest
94
98
  if attributes.key?(:'oldest')
95
99
  self.oldest = attributes[:'oldest']
96
100
  end
101
+
102
+ if attributes.key?(:'oldest_excluding_retries')
103
+ self.oldest_excluding_retries = attributes[:'oldest_excluding_retries']
104
+ end
97
105
  end
98
106
 
99
107
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -119,7 +127,8 @@ module HatchetSdkRest
119
127
  total == o.total &&
120
128
  queues == o.queues &&
121
129
  concurrency == o.concurrency &&
122
- oldest == o.oldest
130
+ oldest == o.oldest &&
131
+ oldest_excluding_retries == o.oldest_excluding_retries
123
132
  end
124
133
 
125
134
  # @see the `==` method
@@ -131,7 +140,7 @@ module HatchetSdkRest
131
140
  # Calculates hash code according to all attributes.
132
141
  # @return [Integer] Hash code
133
142
  def hash
134
- [total, queues, concurrency, oldest].hash
143
+ [total, queues, concurrency, oldest, oldest_excluding_retries].hash
135
144
  end
136
145
 
137
146
  # Builds the object from hash
@@ -35,6 +35,12 @@ module HatchetSdkRest
35
35
  # The environment type of the tenant.
36
36
  attr_accessor :environment
37
37
 
38
+ # The server URL for the tenant (includes scheme)
39
+ attr_accessor :server_url
40
+
41
+ # Control-plane shard region for the tenant (e.g. aws:us-west-2).
42
+ attr_accessor :region
43
+
38
44
  class EnumAttributeValidator
39
45
  attr_reader :datatype
40
46
  attr_reader :allowable_values
@@ -66,7 +72,9 @@ module HatchetSdkRest
66
72
  :'version' => :'version',
67
73
  :'analytics_opt_out' => :'analyticsOptOut',
68
74
  :'alert_member_emails' => :'alertMemberEmails',
69
- :'environment' => :'environment'
75
+ :'environment' => :'environment',
76
+ :'server_url' => :'serverUrl',
77
+ :'region' => :'region'
70
78
  }
71
79
  end
72
80
 
@@ -89,7 +97,9 @@ module HatchetSdkRest
89
97
  :'version' => :'TenantVersion',
90
98
  :'analytics_opt_out' => :'Boolean',
91
99
  :'alert_member_emails' => :'Boolean',
92
- :'environment' => :'TenantEnvironment'
100
+ :'environment' => :'TenantEnvironment',
101
+ :'server_url' => :'String',
102
+ :'region' => :'String'
93
103
  }
94
104
  end
95
105
 
@@ -150,6 +160,14 @@ module HatchetSdkRest
150
160
  if attributes.key?(:'environment')
151
161
  self.environment = attributes[:'environment']
152
162
  end
163
+
164
+ if attributes.key?(:'server_url')
165
+ self.server_url = attributes[:'server_url']
166
+ end
167
+
168
+ if attributes.key?(:'region')
169
+ self.region = attributes[:'region']
170
+ end
153
171
  end
154
172
 
155
173
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -238,7 +256,9 @@ module HatchetSdkRest
238
256
  version == o.version &&
239
257
  analytics_opt_out == o.analytics_opt_out &&
240
258
  alert_member_emails == o.alert_member_emails &&
241
- environment == o.environment
259
+ environment == o.environment &&
260
+ server_url == o.server_url &&
261
+ region == o.region
242
262
  end
243
263
 
244
264
  # @see the `==` method
@@ -250,7 +270,7 @@ module HatchetSdkRest
250
270
  # Calculates hash code according to all attributes.
251
271
  # @return [Integer] Hash code
252
272
  def hash
253
- [metadata, name, slug, version, analytics_opt_out, alert_member_emails, environment].hash
273
+ [metadata, name, slug, version, analytics_opt_out, alert_member_emails, environment, server_url, region].hash
254
274
  end
255
275
 
256
276
  # Builds the object from hash
@@ -26,6 +26,9 @@ module HatchetSdkRest
26
26
  # The tenant associated with this tenant member.
27
27
  attr_accessor :tenant
28
28
 
29
+ # Whether this membership was explicitly granted (as opposed to synced via user-group tags). Only explicit members can have their role edited or be removed.
30
+ attr_accessor :manually_added
31
+
29
32
  class EnumAttributeValidator
30
33
  attr_reader :datatype
31
34
  attr_reader :allowable_values
@@ -54,7 +57,8 @@ module HatchetSdkRest
54
57
  :'metadata' => :'metadata',
55
58
  :'user' => :'user',
56
59
  :'role' => :'role',
57
- :'tenant' => :'tenant'
60
+ :'tenant' => :'tenant',
61
+ :'manually_added' => :'manually_added'
58
62
  }
59
63
  end
60
64
 
@@ -74,7 +78,8 @@ module HatchetSdkRest
74
78
  :'metadata' => :'APIResourceMeta',
75
79
  :'user' => :'UserTenantPublic',
76
80
  :'role' => :'TenantMemberRole',
77
- :'tenant' => :'Tenant'
81
+ :'tenant' => :'Tenant',
82
+ :'manually_added' => :'Boolean'
78
83
  }
79
84
  end
80
85
 
@@ -121,6 +126,10 @@ module HatchetSdkRest
121
126
  if attributes.key?(:'tenant')
122
127
  self.tenant = attributes[:'tenant']
123
128
  end
129
+
130
+ if attributes.key?(:'manually_added')
131
+ self.manually_added = attributes[:'manually_added']
132
+ end
124
133
  end
125
134
 
126
135
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -191,7 +200,8 @@ module HatchetSdkRest
191
200
  metadata == o.metadata &&
192
201
  user == o.user &&
193
202
  role == o.role &&
194
- tenant == o.tenant
203
+ tenant == o.tenant &&
204
+ manually_added == o.manually_added
195
205
  end
196
206
 
197
207
  # @see the `==` method
@@ -203,7 +213,7 @@ module HatchetSdkRest
203
213
  # Calculates hash code according to all attributes.
204
214
  # @return [Integer] Hash code
205
215
  def hash
206
- [metadata, user, role, tenant].hash
216
+ [metadata, user, role, tenant, manually_added].hash
207
217
  end
208
218
 
209
219
  # Builds the object from hash