phrase 2.20.0 → 2.22.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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +27 -5
  4. data/docs/CustomMetadataApi.md +339 -0
  5. data/docs/CustomMetadataDataType.md +16 -0
  6. data/docs/CustomMetadataPropertiesCreateParameters.md +25 -0
  7. data/docs/CustomMetadataPropertiesUpdateParameters.md +23 -0
  8. data/docs/CustomMetadataProperty.md +33 -0
  9. data/docs/CustomMetadataPropertyCreate422Response.md +19 -0
  10. data/docs/{InvitationCreate422ResponseErrorsInner.md → CustomMetadataPropertyCreate422ResponseErrorsInner.md} +2 -2
  11. data/docs/Error.md +17 -0
  12. data/docs/ErrorError.md +19 -0
  13. data/docs/KeyCreateParameters.md +4 -2
  14. data/docs/KeyUpdateParameters.md +4 -2
  15. data/docs/KeysApi.md +2 -2
  16. data/docs/KeysSearchParameters.md +1 -1
  17. data/docs/LocaleReport.md +43 -0
  18. data/docs/LocalesApi.md +3 -1
  19. data/docs/ProjectCreateParameters.md +1 -1
  20. data/docs/ProjectReport.md +31 -0
  21. data/docs/ProjectUpdateParameters.md +1 -1
  22. data/docs/ProjectsQualityPerformanceScore200Response.md +21 -0
  23. data/docs/ProjectsQualityPerformanceScore200ResponseAnyOf.md +19 -0
  24. data/docs/ProjectsQualityPerformanceScore200ResponseAnyOfData.md +17 -0
  25. data/docs/ProjectsQualityPerformanceScore200ResponseAnyOfDataTranslationsInner.md +21 -0
  26. data/docs/ProjectsQualityPerformanceScore200ResponseAnyOfErrorsInner.md +21 -0
  27. data/docs/ProjectsQualityPerformanceScoreRequest.md +17 -0
  28. data/docs/QualityPerformanceScoreApi.md +72 -0
  29. data/docs/ReportsApi.md +144 -0
  30. data/docs/ScreenshotUpdateParameters.md +1 -1
  31. data/docs/TranslationKeyDetails.md +3 -1
  32. data/docs/Upload.md +2 -0
  33. data/lib/phrase/api/custom_metadata_api.rb +390 -0
  34. data/lib/phrase/api/keys_api.rb +2 -2
  35. data/lib/phrase/api/locales_api.rb +3 -0
  36. data/lib/phrase/api/quality_performance_score_api.rb +84 -0
  37. data/lib/phrase/api/reports_api.rb +160 -0
  38. data/lib/phrase/models/custom_metadata_data_type.rb +30 -0
  39. data/lib/phrase/models/custom_metadata_properties_create_parameters.rb +272 -0
  40. data/lib/phrase/models/custom_metadata_properties_update_parameters.rb +231 -0
  41. data/lib/phrase/models/custom_metadata_property.rb +294 -0
  42. data/lib/phrase/models/{invitation_create422_response.rb → custom_metadata_property_create422_response.rb} +4 -4
  43. data/lib/phrase/models/{invitation_create422_response_errors_inner.rb → custom_metadata_property_create422_response_errors_inner.rb} +3 -3
  44. data/lib/phrase/models/error.rb +197 -0
  45. data/lib/phrase/models/error_error.rb +205 -0
  46. data/lib/phrase/models/key_create_parameters.rb +14 -4
  47. data/lib/phrase/models/key_update_parameters.rb +14 -4
  48. data/lib/phrase/models/keys_search_parameters.rb +1 -1
  49. data/lib/phrase/models/locale_report.rb +313 -0
  50. data/lib/phrase/models/project_report.rb +259 -0
  51. data/lib/phrase/models/projects_quality_performance_score200_response.rb +237 -0
  52. data/lib/phrase/models/projects_quality_performance_score200_response_any_of.rb +208 -0
  53. data/lib/phrase/models/projects_quality_performance_score200_response_any_of_data.rb +198 -0
  54. data/lib/phrase/models/projects_quality_performance_score200_response_any_of_data_translations_inner.rb +217 -0
  55. data/lib/phrase/models/projects_quality_performance_score200_response_any_of_errors_inner.rb +215 -0
  56. data/lib/phrase/models/projects_quality_performance_score_request.rb +199 -0
  57. data/lib/phrase/models/translation_key_details.rb +15 -4
  58. data/lib/phrase/models/upload.rb +11 -1
  59. data/lib/phrase/version.rb +1 -1
  60. data/lib/phrase.rb +19 -2
  61. data/spec/api/custom_metadata_api_spec.rb +99 -0
  62. data/spec/api/keys_api_spec.rb +1 -1
  63. data/spec/api/quality_performance_score_api_spec.rb +37 -0
  64. data/spec/api/reports_api_spec.rb +55 -0
  65. data/spec/models/custom_metadata_data_type_spec.rb +23 -0
  66. data/spec/models/custom_metadata_properties_create_parameters_spec.rb +53 -0
  67. data/spec/models/custom_metadata_properties_update_parameters_spec.rb +47 -0
  68. data/spec/models/{invitation_create422_response_errors_inner_spec.rb → custom_metadata_property_create422_response_errors_inner_spec.rb} +6 -6
  69. data/spec/models/custom_metadata_property_create422_response_spec.rb +35 -0
  70. data/spec/models/custom_metadata_property_spec.rb +77 -0
  71. data/spec/models/{invitation_create422_response_spec.rb → error_error_spec.rb} +7 -7
  72. data/spec/models/error_spec.rb +29 -0
  73. data/spec/models/key_create_parameters_spec.rb +6 -0
  74. data/spec/models/key_update_parameters_spec.rb +6 -0
  75. data/spec/models/locale_report_spec.rb +107 -0
  76. data/spec/models/project_report_spec.rb +71 -0
  77. data/spec/models/projects_quality_performance_score200_response_any_of_data_spec.rb +29 -0
  78. data/spec/models/projects_quality_performance_score200_response_any_of_data_translations_inner_spec.rb +41 -0
  79. data/spec/models/projects_quality_performance_score200_response_any_of_errors_inner_spec.rb +41 -0
  80. data/spec/models/projects_quality_performance_score200_response_any_of_spec.rb +35 -0
  81. data/spec/models/projects_quality_performance_score200_response_spec.rb +41 -0
  82. data/spec/models/projects_quality_performance_score_request_spec.rb +29 -0
  83. data/spec/models/translation_key_details_spec.rb +6 -0
  84. data/spec/models/upload_spec.rb +6 -0
  85. metadata +285 -217
  86. data/docs/InvitationCreate422Response.md +0 -19
@@ -0,0 +1,259 @@
1
+ require 'date'
2
+
3
+ module Phrase
4
+ class ProjectReport
5
+ attr_accessor :locales_count
6
+
7
+ attr_accessor :keys_count
8
+
9
+ attr_accessor :translations_count
10
+
11
+ attr_accessor :untranslated_keys_count
12
+
13
+ attr_accessor :unverified_translations_count
14
+
15
+ attr_accessor :reviewed_translations_count
16
+
17
+ attr_accessor :managed_words_count
18
+
19
+ attr_accessor :project
20
+
21
+ # Attribute mapping from ruby-style variable name to JSON key.
22
+ def self.attribute_map
23
+ {
24
+ :'locales_count' => :'locales_count',
25
+ :'keys_count' => :'keys_count',
26
+ :'translations_count' => :'translations_count',
27
+ :'untranslated_keys_count' => :'untranslated_keys_count',
28
+ :'unverified_translations_count' => :'unverified_translations_count',
29
+ :'reviewed_translations_count' => :'reviewed_translations_count',
30
+ :'managed_words_count' => :'managed_words_count',
31
+ :'project' => :'project'
32
+ }
33
+ end
34
+
35
+ # Attribute type mapping.
36
+ def self.openapi_types
37
+ {
38
+ :'locales_count' => :'Integer',
39
+ :'keys_count' => :'Integer',
40
+ :'translations_count' => :'Integer',
41
+ :'untranslated_keys_count' => :'Integer',
42
+ :'unverified_translations_count' => :'Integer',
43
+ :'reviewed_translations_count' => :'Integer',
44
+ :'managed_words_count' => :'Integer',
45
+ :'project' => :'ProjectShort'
46
+ }
47
+ end
48
+
49
+ # List of attributes with nullable: true
50
+ def self.openapi_nullable
51
+ Set.new([
52
+ ])
53
+ end
54
+
55
+ # Initializes the object
56
+ # @param [Hash] attributes Model attributes in the form of hash
57
+ def initialize(attributes = {})
58
+ if (!attributes.is_a?(Hash))
59
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Phrase::ProjectReport` initialize method"
60
+ end
61
+
62
+ # check to see if the attribute exists and convert string to symbol for hash key
63
+ attributes = attributes.each_with_object({}) { |(k, v), h|
64
+ if (!self.class.attribute_map.key?(k.to_sym))
65
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Phrase::ProjectReport`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
66
+ end
67
+ h[k.to_sym] = v
68
+ }
69
+
70
+ if attributes.key?(:'locales_count')
71
+ self.locales_count = attributes[:'locales_count']
72
+ end
73
+
74
+ if attributes.key?(:'keys_count')
75
+ self.keys_count = attributes[:'keys_count']
76
+ end
77
+
78
+ if attributes.key?(:'translations_count')
79
+ self.translations_count = attributes[:'translations_count']
80
+ end
81
+
82
+ if attributes.key?(:'untranslated_keys_count')
83
+ self.untranslated_keys_count = attributes[:'untranslated_keys_count']
84
+ end
85
+
86
+ if attributes.key?(:'unverified_translations_count')
87
+ self.unverified_translations_count = attributes[:'unverified_translations_count']
88
+ end
89
+
90
+ if attributes.key?(:'reviewed_translations_count')
91
+ self.reviewed_translations_count = attributes[:'reviewed_translations_count']
92
+ end
93
+
94
+ if attributes.key?(:'managed_words_count')
95
+ self.managed_words_count = attributes[:'managed_words_count']
96
+ end
97
+
98
+ if attributes.key?(:'project')
99
+ self.project = attributes[:'project']
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ invalid_properties = Array.new
107
+ invalid_properties
108
+ end
109
+
110
+ # Check to see if the all the properties in the model are valid
111
+ # @return true if the model is valid
112
+ def valid?
113
+ true
114
+ end
115
+
116
+ # Checks equality by comparing each attribute.
117
+ # @param [Object] Object to be compared
118
+ def ==(o)
119
+ return true if self.equal?(o)
120
+ self.class == o.class &&
121
+ locales_count == o.locales_count &&
122
+ keys_count == o.keys_count &&
123
+ translations_count == o.translations_count &&
124
+ untranslated_keys_count == o.untranslated_keys_count &&
125
+ unverified_translations_count == o.unverified_translations_count &&
126
+ reviewed_translations_count == o.reviewed_translations_count &&
127
+ managed_words_count == o.managed_words_count &&
128
+ project == o.project
129
+ end
130
+
131
+ # @see the `==` method
132
+ # @param [Object] Object to be compared
133
+ def eql?(o)
134
+ self == o
135
+ end
136
+
137
+ # Calculates hash code according to all attributes.
138
+ # @return [Integer] Hash code
139
+ def hash
140
+ [locales_count, keys_count, translations_count, untranslated_keys_count, unverified_translations_count, reviewed_translations_count, managed_words_count, project].hash
141
+ end
142
+
143
+ # Builds the object from hash
144
+ # @param [Hash] attributes Model attributes in the form of hash
145
+ # @return [Object] Returns the model itself
146
+ def self.build_from_hash(attributes)
147
+ new.build_from_hash(attributes)
148
+ end
149
+
150
+ # Builds the object from hash
151
+ # @param [Hash] attributes Model attributes in the form of hash
152
+ # @return [Object] Returns the model itself
153
+ def build_from_hash(attributes)
154
+ return nil unless attributes.is_a?(Hash)
155
+ self.class.openapi_types.each_pair do |key, type|
156
+ if type =~ /\AArray<(.*)>/i
157
+ # check to ensure the input is an array given that the attribute
158
+ # is documented as an array but the input is not
159
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
160
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
161
+ end
162
+ elsif !attributes[self.class.attribute_map[key]].nil?
163
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
164
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
165
+ end
166
+
167
+ self
168
+ end
169
+
170
+ # Deserializes the data based on type
171
+ # @param string type Data type
172
+ # @param string value Value to be deserialized
173
+ # @return [Object] Deserialized data
174
+ def _deserialize(type, value)
175
+ case type.to_sym
176
+ when :DateTime
177
+ DateTime.parse(value)
178
+ when :Date
179
+ Date.parse(value)
180
+ when :Time
181
+ Time.parse(value)
182
+ when :String
183
+ value.to_s
184
+ when :Integer
185
+ value.to_i
186
+ when :Float
187
+ value.to_f
188
+ when :Boolean
189
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
190
+ true
191
+ else
192
+ false
193
+ end
194
+ when :Object
195
+ # generic object (usually a Hash), return directly
196
+ value
197
+ when /\AArray<(?<inner_type>.+)>\z/
198
+ inner_type = Regexp.last_match[:inner_type]
199
+ value.map { |v| _deserialize(inner_type, v) }
200
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
201
+ k_type = Regexp.last_match[:k_type]
202
+ v_type = Regexp.last_match[:v_type]
203
+ {}.tap do |hash|
204
+ value.each do |k, v|
205
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
206
+ end
207
+ end
208
+ else # model
209
+ Phrase.const_get(type).build_from_hash(value)
210
+ end
211
+ end
212
+
213
+ # Returns the string representation of the object
214
+ # @return [String] String presentation of the object
215
+ def to_s
216
+ to_hash.to_s
217
+ end
218
+
219
+ # to_body is an alias to to_hash (backward compatibility)
220
+ # @return [Hash] Returns the object in the form of hash
221
+ def to_body
222
+ to_hash
223
+ end
224
+
225
+ # Returns the object in the form of hash
226
+ # @return [Hash] Returns the object in the form of hash
227
+ def to_hash
228
+ hash = {}
229
+ self.class.attribute_map.each_pair do |attr, param|
230
+ value = self.send(attr)
231
+ if value.nil?
232
+ is_nullable = self.class.openapi_nullable.include?(attr)
233
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
234
+ end
235
+
236
+ hash[param] = _to_hash(value)
237
+ end
238
+ hash
239
+ end
240
+
241
+ # Outputs non-array value in the form of hash
242
+ # For object, use to_hash. Otherwise, just return the value
243
+ # @param [Object] value Any valid value
244
+ # @return [Hash] Returns the value in the form of hash
245
+ def _to_hash(value)
246
+ if value.is_a?(Array)
247
+ value.compact.map { |v| _to_hash(v) }
248
+ elsif value.is_a?(Hash)
249
+ {}.tap do |hash|
250
+ value.each { |k, v| hash[k] = _to_hash(v) }
251
+ end
252
+ elsif value.respond_to? :to_hash
253
+ value.to_hash
254
+ else
255
+ value
256
+ end
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,237 @@
1
+ require 'date'
2
+
3
+ module Phrase
4
+ class ProjectsQualityPerformanceScore200Response
5
+ attr_accessor :error
6
+
7
+ attr_accessor :data
8
+
9
+ # Array of errors for any failing translation ids
10
+ attr_accessor :errors
11
+
12
+ # Attribute mapping from ruby-style variable name to JSON key.
13
+ def self.attribute_map
14
+ {
15
+ :'error' => :'error',
16
+ :'data' => :'data',
17
+ :'errors' => :'errors'
18
+ }
19
+ end
20
+
21
+ # Attribute type mapping.
22
+ def self.openapi_types
23
+ {
24
+ :'error' => :'ErrorError',
25
+ :'data' => :'ProjectsQualityPerformanceScore200ResponseAnyOfData',
26
+ :'errors' => :'Array<ProjectsQualityPerformanceScore200ResponseAnyOfErrorsInner>'
27
+ }
28
+ end
29
+
30
+ # List of attributes with nullable: true
31
+ def self.openapi_nullable
32
+ Set.new([
33
+ ])
34
+ end
35
+
36
+ # List of class defined in anyOf (OpenAPI v3)
37
+ def self.openapi_any_of
38
+ [
39
+ :'Error',
40
+ :'ProjectsQualityPerformanceScore200ResponseAnyOf'
41
+ ]
42
+ end
43
+
44
+ # Initializes the object
45
+ # @param [Hash] attributes Model attributes in the form of hash
46
+ def initialize(attributes = {})
47
+ if (!attributes.is_a?(Hash))
48
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Phrase::ProjectsQualityPerformanceScore200Response` initialize method"
49
+ end
50
+
51
+ # check to see if the attribute exists and convert string to symbol for hash key
52
+ attributes = attributes.each_with_object({}) { |(k, v), h|
53
+ if (!self.class.attribute_map.key?(k.to_sym))
54
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Phrase::ProjectsQualityPerformanceScore200Response`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
55
+ end
56
+ h[k.to_sym] = v
57
+ }
58
+
59
+ if attributes.key?(:'error')
60
+ self.error = attributes[:'error']
61
+ end
62
+
63
+ if attributes.key?(:'data')
64
+ self.data = attributes[:'data']
65
+ end
66
+
67
+ if attributes.key?(:'errors')
68
+ if (value = attributes[:'errors']).is_a?(Array)
69
+ self.errors = value
70
+ end
71
+ end
72
+ end
73
+
74
+ # Show invalid properties with the reasons. Usually used together with valid?
75
+ # @return Array for valid properties with the reasons
76
+ def list_invalid_properties
77
+ invalid_properties = Array.new
78
+ invalid_properties
79
+ end
80
+
81
+ # Check to see if the all the properties in the model are valid
82
+ # @return true if the model is valid
83
+ def valid?
84
+ _any_of_found = false
85
+ self.class.openapi_any_of.each do |_class|
86
+ _any_of = Phrase.const_get(_class).build_from_hash(self.to_hash)
87
+ if _any_of.valid?
88
+ _any_of_found = true
89
+ end
90
+ end
91
+
92
+ if !_any_of_found
93
+ return false
94
+ end
95
+
96
+ true
97
+ end
98
+
99
+ # Checks equality by comparing each attribute.
100
+ # @param [Object] Object to be compared
101
+ def ==(o)
102
+ return true if self.equal?(o)
103
+ self.class == o.class &&
104
+ error == o.error &&
105
+ data == o.data &&
106
+ errors == o.errors
107
+ end
108
+
109
+ # @see the `==` method
110
+ # @param [Object] Object to be compared
111
+ def eql?(o)
112
+ self == o
113
+ end
114
+
115
+ # Calculates hash code according to all attributes.
116
+ # @return [Integer] Hash code
117
+ def hash
118
+ [error, data, errors].hash
119
+ end
120
+
121
+ # Builds the object from hash
122
+ # @param [Hash] attributes Model attributes in the form of hash
123
+ # @return [Object] Returns the model itself
124
+ def self.build_from_hash(attributes)
125
+ new.build_from_hash(attributes)
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 build_from_hash(attributes)
132
+ return nil unless attributes.is_a?(Hash)
133
+ self.class.openapi_types.each_pair do |key, type|
134
+ if type =~ /\AArray<(.*)>/i
135
+ # check to ensure the input is an array given that the attribute
136
+ # is documented as an array but the input is not
137
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
138
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
139
+ end
140
+ elsif !attributes[self.class.attribute_map[key]].nil?
141
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
142
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
143
+ end
144
+
145
+ self
146
+ end
147
+
148
+ # Deserializes the data based on type
149
+ # @param string type Data type
150
+ # @param string value Value to be deserialized
151
+ # @return [Object] Deserialized data
152
+ def _deserialize(type, value)
153
+ case type.to_sym
154
+ when :DateTime
155
+ DateTime.parse(value)
156
+ when :Date
157
+ Date.parse(value)
158
+ when :Time
159
+ Time.parse(value)
160
+ when :String
161
+ value.to_s
162
+ when :Integer
163
+ value.to_i
164
+ when :Float
165
+ value.to_f
166
+ when :Boolean
167
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
168
+ true
169
+ else
170
+ false
171
+ end
172
+ when :Object
173
+ # generic object (usually a Hash), return directly
174
+ value
175
+ when /\AArray<(?<inner_type>.+)>\z/
176
+ inner_type = Regexp.last_match[:inner_type]
177
+ value.map { |v| _deserialize(inner_type, v) }
178
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
179
+ k_type = Regexp.last_match[:k_type]
180
+ v_type = Regexp.last_match[:v_type]
181
+ {}.tap do |hash|
182
+ value.each do |k, v|
183
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
184
+ end
185
+ end
186
+ else # model
187
+ Phrase.const_get(type).build_from_hash(value)
188
+ end
189
+ end
190
+
191
+ # Returns the string representation of the object
192
+ # @return [String] String presentation of the object
193
+ def to_s
194
+ to_hash.to_s
195
+ end
196
+
197
+ # to_body is an alias to to_hash (backward compatibility)
198
+ # @return [Hash] Returns the object in the form of hash
199
+ def to_body
200
+ to_hash
201
+ end
202
+
203
+ # Returns the object in the form of hash
204
+ # @return [Hash] Returns the object in the form of hash
205
+ def to_hash
206
+ hash = {}
207
+ self.class.attribute_map.each_pair do |attr, param|
208
+ value = self.send(attr)
209
+ if value.nil?
210
+ is_nullable = self.class.openapi_nullable.include?(attr)
211
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
212
+ end
213
+
214
+ hash[param] = _to_hash(value)
215
+ end
216
+ hash
217
+ end
218
+
219
+ # Outputs non-array value in the form of hash
220
+ # For object, use to_hash. Otherwise, just return the value
221
+ # @param [Object] value Any valid value
222
+ # @return [Hash] Returns the value in the form of hash
223
+ def _to_hash(value)
224
+ if value.is_a?(Array)
225
+ value.compact.map { |v| _to_hash(v) }
226
+ elsif value.is_a?(Hash)
227
+ {}.tap do |hash|
228
+ value.each { |k, v| hash[k] = _to_hash(v) }
229
+ end
230
+ elsif value.respond_to? :to_hash
231
+ value.to_hash
232
+ else
233
+ value
234
+ end
235
+ end
236
+ end
237
+ end
@@ -0,0 +1,208 @@
1
+ require 'date'
2
+
3
+ module Phrase
4
+ class ProjectsQualityPerformanceScore200ResponseAnyOf
5
+ attr_accessor :data
6
+
7
+ # Array of errors for any failing translation ids
8
+ attr_accessor :errors
9
+
10
+ # Attribute mapping from ruby-style variable name to JSON key.
11
+ def self.attribute_map
12
+ {
13
+ :'data' => :'data',
14
+ :'errors' => :'errors'
15
+ }
16
+ end
17
+
18
+ # Attribute type mapping.
19
+ def self.openapi_types
20
+ {
21
+ :'data' => :'ProjectsQualityPerformanceScore200ResponseAnyOfData',
22
+ :'errors' => :'Array<ProjectsQualityPerformanceScore200ResponseAnyOfErrorsInner>'
23
+ }
24
+ end
25
+
26
+ # List of attributes with nullable: true
27
+ def self.openapi_nullable
28
+ Set.new([
29
+ ])
30
+ end
31
+
32
+ # Initializes the object
33
+ # @param [Hash] attributes Model attributes in the form of hash
34
+ def initialize(attributes = {})
35
+ if (!attributes.is_a?(Hash))
36
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Phrase::ProjectsQualityPerformanceScore200ResponseAnyOf` initialize method"
37
+ end
38
+
39
+ # check to see if the attribute exists and convert string to symbol for hash key
40
+ attributes = attributes.each_with_object({}) { |(k, v), h|
41
+ if (!self.class.attribute_map.key?(k.to_sym))
42
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Phrase::ProjectsQualityPerformanceScore200ResponseAnyOf`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
43
+ end
44
+ h[k.to_sym] = v
45
+ }
46
+
47
+ if attributes.key?(:'data')
48
+ self.data = attributes[:'data']
49
+ end
50
+
51
+ if attributes.key?(:'errors')
52
+ if (value = attributes[:'errors']).is_a?(Array)
53
+ self.errors = value
54
+ end
55
+ end
56
+ end
57
+
58
+ # Show invalid properties with the reasons. Usually used together with valid?
59
+ # @return Array for valid properties with the reasons
60
+ def list_invalid_properties
61
+ invalid_properties = Array.new
62
+ invalid_properties
63
+ end
64
+
65
+ # Check to see if the all the properties in the model are valid
66
+ # @return true if the model is valid
67
+ def valid?
68
+ true
69
+ end
70
+
71
+ # Checks equality by comparing each attribute.
72
+ # @param [Object] Object to be compared
73
+ def ==(o)
74
+ return true if self.equal?(o)
75
+ self.class == o.class &&
76
+ data == o.data &&
77
+ errors == o.errors
78
+ end
79
+
80
+ # @see the `==` method
81
+ # @param [Object] Object to be compared
82
+ def eql?(o)
83
+ self == o
84
+ end
85
+
86
+ # Calculates hash code according to all attributes.
87
+ # @return [Integer] Hash code
88
+ def hash
89
+ [data, errors].hash
90
+ end
91
+
92
+ # Builds the object from hash
93
+ # @param [Hash] attributes Model attributes in the form of hash
94
+ # @return [Object] Returns the model itself
95
+ def self.build_from_hash(attributes)
96
+ new.build_from_hash(attributes)
97
+ end
98
+
99
+ # Builds the object from hash
100
+ # @param [Hash] attributes Model attributes in the form of hash
101
+ # @return [Object] Returns the model itself
102
+ def build_from_hash(attributes)
103
+ return nil unless attributes.is_a?(Hash)
104
+ self.class.openapi_types.each_pair do |key, type|
105
+ if type =~ /\AArray<(.*)>/i
106
+ # check to ensure the input is an array given that the attribute
107
+ # is documented as an array but the input is not
108
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
109
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
110
+ end
111
+ elsif !attributes[self.class.attribute_map[key]].nil?
112
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
113
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
114
+ end
115
+
116
+ self
117
+ end
118
+
119
+ # Deserializes the data based on type
120
+ # @param string type Data type
121
+ # @param string value Value to be deserialized
122
+ # @return [Object] Deserialized data
123
+ def _deserialize(type, value)
124
+ case type.to_sym
125
+ when :DateTime
126
+ DateTime.parse(value)
127
+ when :Date
128
+ Date.parse(value)
129
+ when :Time
130
+ Time.parse(value)
131
+ when :String
132
+ value.to_s
133
+ when :Integer
134
+ value.to_i
135
+ when :Float
136
+ value.to_f
137
+ when :Boolean
138
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
139
+ true
140
+ else
141
+ false
142
+ end
143
+ when :Object
144
+ # generic object (usually a Hash), return directly
145
+ value
146
+ when /\AArray<(?<inner_type>.+)>\z/
147
+ inner_type = Regexp.last_match[:inner_type]
148
+ value.map { |v| _deserialize(inner_type, v) }
149
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
150
+ k_type = Regexp.last_match[:k_type]
151
+ v_type = Regexp.last_match[:v_type]
152
+ {}.tap do |hash|
153
+ value.each do |k, v|
154
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
155
+ end
156
+ end
157
+ else # model
158
+ Phrase.const_get(type).build_from_hash(value)
159
+ end
160
+ end
161
+
162
+ # Returns the string representation of the object
163
+ # @return [String] String presentation of the object
164
+ def to_s
165
+ to_hash.to_s
166
+ end
167
+
168
+ # to_body is an alias to to_hash (backward compatibility)
169
+ # @return [Hash] Returns the object in the form of hash
170
+ def to_body
171
+ to_hash
172
+ end
173
+
174
+ # Returns the object in the form of hash
175
+ # @return [Hash] Returns the object in the form of hash
176
+ def to_hash
177
+ hash = {}
178
+ self.class.attribute_map.each_pair do |attr, param|
179
+ value = self.send(attr)
180
+ if value.nil?
181
+ is_nullable = self.class.openapi_nullable.include?(attr)
182
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
183
+ end
184
+
185
+ hash[param] = _to_hash(value)
186
+ end
187
+ hash
188
+ end
189
+
190
+ # Outputs non-array value in the form of hash
191
+ # For object, use to_hash. Otherwise, just return the value
192
+ # @param [Object] value Any valid value
193
+ # @return [Hash] Returns the value in the form of hash
194
+ def _to_hash(value)
195
+ if value.is_a?(Array)
196
+ value.compact.map { |v| _to_hash(v) }
197
+ elsif value.is_a?(Hash)
198
+ {}.tap do |hash|
199
+ value.each { |k, v| hash[k] = _to_hash(v) }
200
+ end
201
+ elsif value.respond_to? :to_hash
202
+ value.to_hash
203
+ else
204
+ value
205
+ end
206
+ end
207
+ end
208
+ end