phrase 1.0.8 → 1.0.13

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -3
  3. data/docs/BranchName.md +17 -0
  4. data/docs/Invitation.md +9 -1
  5. data/docs/InvitationCreateParameters.md +4 -0
  6. data/docs/InvitationUpdateParameters.md +4 -0
  7. data/docs/InvitationUpdateSettingsParameters.md +19 -0
  8. data/docs/InvitationsApi.md +66 -0
  9. data/docs/Job.md +5 -3
  10. data/docs/JobDetails.md +4 -2
  11. data/docs/JobLocale.md +3 -1
  12. data/docs/LocalesApi.md +2 -0
  13. data/docs/Member.md +7 -1
  14. data/docs/MemberProjectDetail.md +35 -0
  15. data/docs/MemberProjectDetailProjectRoles.md +19 -0
  16. data/docs/MemberSpaces.md +25 -0
  17. data/docs/MemberUpdateParameters.md +4 -0
  18. data/docs/MemberUpdateSettingsParameters.md +19 -0
  19. data/docs/MembersApi.md +66 -0
  20. data/docs/ProjectUpdateParameters.md +43 -9
  21. data/docs/Variable.md +23 -0
  22. data/docs/VariableCreateParameters.md +19 -0
  23. data/docs/VariableUpdateParameters.md +19 -0
  24. data/docs/VariablesApi.md +331 -0
  25. data/docs/Webhook.md +2 -0
  26. data/docs/WebhookCreateParameters.md +3 -1
  27. data/docs/WebhookUpdateParameters.md +3 -1
  28. data/lib/phrase.rb +10 -0
  29. data/lib/phrase/api/invitations_api.rb +80 -0
  30. data/lib/phrase/api/locales_api.rb +3 -0
  31. data/lib/phrase/api/members_api.rb +80 -0
  32. data/lib/phrase/api/variables_api.rb +378 -0
  33. data/lib/phrase/models/branch_name.rb +194 -0
  34. data/lib/phrase/models/invitation.rb +48 -4
  35. data/lib/phrase/models/invitation_create_parameters.rb +25 -1
  36. data/lib/phrase/models/invitation_update_parameters.rb +25 -1
  37. data/lib/phrase/models/invitation_update_settings_parameters.rb +207 -0
  38. data/lib/phrase/models/job.rb +22 -13
  39. data/lib/phrase/models/job_details.rb +19 -10
  40. data/lib/phrase/models/job_locale.rb +13 -4
  41. data/lib/phrase/models/member.rb +35 -4
  42. data/lib/phrase/models/member_project_detail.rb +285 -0
  43. data/lib/phrase/models/member_project_detail_project_roles.rb +203 -0
  44. data/lib/phrase/models/member_spaces.rb +230 -0
  45. data/lib/phrase/models/member_update_parameters.rb +25 -1
  46. data/lib/phrase/models/member_update_settings_parameters.rb +207 -0
  47. data/lib/phrase/models/project_update_parameters.rb +183 -13
  48. data/lib/phrase/models/variable.rb +221 -0
  49. data/lib/phrase/models/variable_create_parameters.rb +205 -0
  50. data/lib/phrase/models/variable_update_parameters.rb +205 -0
  51. data/lib/phrase/models/webhook.rb +10 -1
  52. data/lib/phrase/models/webhook_create_parameters.rb +14 -4
  53. data/lib/phrase/models/webhook_update_parameters.rb +14 -4
  54. data/lib/phrase/version.rb +1 -1
  55. data/spec/api/invitations_api_spec.rb +15 -0
  56. data/spec/api/locales_api_spec.rb +1 -0
  57. data/spec/api/members_api_spec.rb +15 -0
  58. data/spec/api/variables_api_spec.rb +95 -0
  59. data/spec/models/branch_name_spec.rb +29 -0
  60. data/spec/models/invitation_create_parameters_spec.rb +12 -0
  61. data/spec/models/invitation_spec.rb +24 -0
  62. data/spec/models/invitation_update_parameters_spec.rb +12 -0
  63. data/spec/models/invitation_update_settings_parameters_spec.rb +35 -0
  64. data/spec/models/job_details_spec.rb +9 -3
  65. data/spec/models/job_locale_spec.rb +6 -0
  66. data/spec/models/job_spec.rb +9 -3
  67. data/spec/models/member_project_detail_project_roles_spec.rb +35 -0
  68. data/spec/models/member_project_detail_spec.rb +83 -0
  69. data/spec/models/member_spaces_spec.rb +53 -0
  70. data/spec/models/member_spec.rb +18 -0
  71. data/spec/models/member_update_parameters_spec.rb +12 -0
  72. data/spec/models/member_update_settings_parameters_spec.rb +35 -0
  73. data/spec/models/project_update_parameters_spec.rb +103 -1
  74. data/spec/models/variable_create_parameters_spec.rb +35 -0
  75. data/spec/models/variable_spec.rb +47 -0
  76. data/spec/models/variable_update_parameters_spec.rb +35 -0
  77. data/spec/models/webhook_create_parameters_spec.rb +6 -0
  78. data/spec/models/webhook_spec.rb +6 -0
  79. data/spec/models/webhook_update_parameters_spec.rb +6 -0
  80. metadata +205 -165
@@ -0,0 +1,207 @@
1
+ require 'date'
2
+
3
+ module Phrase
4
+ class MemberUpdateSettingsParameters
5
+ # Member role, can be any of of Manager, Developer, Translator
6
+ attr_accessor :project_role
7
+
8
+ # List of locale ids the user has access to.
9
+ attr_accessor :locale_ids
10
+
11
+ # Attribute mapping from ruby-style variable name to JSON key.
12
+ def self.attribute_map
13
+ {
14
+ :'project_role' => :'project_role',
15
+ :'locale_ids' => :'locale_ids'
16
+ }
17
+ end
18
+
19
+ # Attribute type mapping.
20
+ def self.openapi_types
21
+ {
22
+ :'project_role' => :'String',
23
+ :'locale_ids' => :'Array<String>'
24
+ }
25
+ end
26
+
27
+ # List of attributes with nullable: true
28
+ def self.openapi_nullable
29
+ Set.new([
30
+ ])
31
+ end
32
+
33
+ # Initializes the object
34
+ # @param [Hash] attributes Model attributes in the form of hash
35
+ def initialize(attributes = {})
36
+ if (!attributes.is_a?(Hash))
37
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Phrase::MemberUpdateSettingsParameters` initialize method"
38
+ end
39
+
40
+ # check to see if the attribute exists and convert string to symbol for hash key
41
+ attributes = attributes.each_with_object({}) { |(k, v), h|
42
+ if (!self.class.attribute_map.key?(k.to_sym))
43
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Phrase::MemberUpdateSettingsParameters`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
44
+ end
45
+ h[k.to_sym] = v
46
+ }
47
+
48
+ if attributes.key?(:'project_role')
49
+ self.project_role = attributes[:'project_role']
50
+ end
51
+
52
+ if attributes.key?(:'locale_ids')
53
+ if (value = attributes[:'locale_ids']).is_a?(Array)
54
+ self.locale_ids = value
55
+ end
56
+ end
57
+ end
58
+
59
+ # Show invalid properties with the reasons. Usually used together with valid?
60
+ # @return Array for valid properties with the reasons
61
+ def list_invalid_properties
62
+ invalid_properties = Array.new
63
+ invalid_properties
64
+ end
65
+
66
+ # Check to see if the all the properties in the model are valid
67
+ # @return true if the model is valid
68
+ def valid?
69
+ true
70
+ end
71
+
72
+ # Checks equality by comparing each attribute.
73
+ # @param [Object] Object to be compared
74
+ def ==(o)
75
+ return true if self.equal?(o)
76
+ self.class == o.class &&
77
+ project_role == o.project_role &&
78
+ locale_ids == o.locale_ids
79
+ end
80
+
81
+ # @see the `==` method
82
+ # @param [Object] Object to be compared
83
+ def eql?(o)
84
+ self == o
85
+ end
86
+
87
+ # Calculates hash code according to all attributes.
88
+ # @return [Integer] Hash code
89
+ def hash
90
+ [project_role, locale_ids].hash
91
+ end
92
+
93
+ # Builds the object from hash
94
+ # @param [Hash] attributes Model attributes in the form of hash
95
+ # @return [Object] Returns the model itself
96
+ def self.build_from_hash(attributes)
97
+ new.build_from_hash(attributes)
98
+ end
99
+
100
+ # Builds the object from hash
101
+ # @param [Hash] attributes Model attributes in the form of hash
102
+ # @return [Object] Returns the model itself
103
+ def build_from_hash(attributes)
104
+ return nil unless attributes.is_a?(Hash)
105
+ self.class.openapi_types.each_pair do |key, type|
106
+ if type =~ /\AArray<(.*)>/i
107
+ # check to ensure the input is an array given that the attribute
108
+ # is documented as an array but the input is not
109
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
110
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
111
+ end
112
+ elsif !attributes[self.class.attribute_map[key]].nil?
113
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
114
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
115
+ end
116
+
117
+ self
118
+ end
119
+
120
+ # Deserializes the data based on type
121
+ # @param string type Data type
122
+ # @param string value Value to be deserialized
123
+ # @return [Object] Deserialized data
124
+ def _deserialize(type, value)
125
+ case type.to_sym
126
+ when :DateTime
127
+ DateTime.parse(value)
128
+ when :Date
129
+ Date.parse(value)
130
+ when :String
131
+ value.to_s
132
+ when :Integer
133
+ value.to_i
134
+ when :Float
135
+ value.to_f
136
+ when :Boolean
137
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
138
+ true
139
+ else
140
+ false
141
+ end
142
+ when :Object
143
+ # generic object (usually a Hash), return directly
144
+ value
145
+ when /\AArray<(?<inner_type>.+)>\z/
146
+ inner_type = Regexp.last_match[:inner_type]
147
+ value.map { |v| _deserialize(inner_type, v) }
148
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
149
+ k_type = Regexp.last_match[:k_type]
150
+ v_type = Regexp.last_match[:v_type]
151
+ {}.tap do |hash|
152
+ value.each do |k, v|
153
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
154
+ end
155
+ end
156
+ else # model
157
+ Phrase.const_get(type).build_from_hash(value)
158
+ end
159
+ end
160
+
161
+ # Returns the string representation of the object
162
+ # @return [String] String presentation of the object
163
+ def to_s
164
+ to_hash.to_s
165
+ end
166
+
167
+ # to_body is an alias to to_hash (backward compatibility)
168
+ # @return [Hash] Returns the object in the form of hash
169
+ def to_body
170
+ to_hash
171
+ end
172
+
173
+ # Returns the object in the form of hash
174
+ # @return [Hash] Returns the object in the form of hash
175
+ def to_hash
176
+ hash = {}
177
+ self.class.attribute_map.each_pair do |attr, param|
178
+ value = self.send(attr)
179
+ if value.nil?
180
+ is_nullable = self.class.openapi_nullable.include?(attr)
181
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
182
+ end
183
+
184
+ hash[param] = _to_hash(value)
185
+ end
186
+ hash
187
+ end
188
+
189
+ # Outputs non-array value in the form of hash
190
+ # For object, use to_hash. Otherwise, just return the value
191
+ # @param [Object] value Any valid value
192
+ # @return [Hash] Returns the value in the form of hash
193
+ def _to_hash(value)
194
+ if value.is_a?(Array)
195
+ value.compact.map { |v| _to_hash(v) }
196
+ elsif value.is_a?(Hash)
197
+ {}.tap do |hash|
198
+ value.each { |k, v| hash[k] = _to_hash(v) }
199
+ end
200
+ elsif value.respond_to? :to_hash
201
+ value.to_hash
202
+ else
203
+ value
204
+ end
205
+ end
206
+ end
207
+ end
@@ -2,45 +2,130 @@ require 'date'
2
2
 
3
3
  module Phrase
4
4
  class ProjectUpdateParameters
5
- # Name of the project
5
+ # Required if the requesting user is a member of multiple accounts. Account ID to specify the actual account the project should be created in.
6
+ attr_accessor :account_id
7
+
8
+ # (Optional) Name of the project
6
9
  attr_accessor :name
7
10
 
8
- # Main file format specified by its API Extension name. Used for locale downloads if no format is specified. For API Extension names of available file formats see <a href=\"https://help.phrase.com/help/supported-platforms-and-formats\">Format Guide</a> or our <a href=\"#formats\">Formats API Endpoint</a>.
11
+ # (Optional) Main file format specified by its API Extension name. Used for locale downloads if no format is specified. For API Extension names of available file formats see <a href=\"https://help.phrase.com/help/supported-platforms-and-formats\">Format Guide</a> or our <a href=\"#formats\">Formats API Endpoint</a>.
9
12
  attr_accessor :main_format
10
13
 
11
- # Indicates whether the project should share the account's translation memory
14
+ # (Optional) Indicates whether the project should share the account's translation memory
12
15
  attr_accessor :shares_translation_memory
13
16
 
14
- # Image to identify the project
17
+ # (Optional) Image to identify the project
15
18
  attr_accessor :project_image
16
19
 
17
- # Indicates whether the project image should be deleted.
20
+ # (Optional) Indicates whether the project image should be deleted.
18
21
  attr_accessor :remove_project_image
19
22
 
20
- # Account ID to specify the actual account the project should be created in. Required if the requesting user is a member of multiple accounts.
21
- attr_accessor :account_id
23
+ # (Optional) Review Workflow. \"simple\" / \"review\". <a href=\"https://help.phrase.com/help/advanced-review-workflow\">Read more</a>
24
+ attr_accessor :workflow
25
+
26
+ # (Optional) Enable machine translation support in the project. Required for Autopilot and Smart Suggest
27
+ attr_accessor :machine_translation_enabled
28
+
29
+ # (Optional) Enable branching in the project
30
+ attr_accessor :enable_branching
31
+
32
+ # (Optional) Protect the master branch in project where branching is enabled
33
+ attr_accessor :protect_master_branch
34
+
35
+ # (Optional) Otherwise, translators are not allowed to edit translations other than strings
36
+ attr_accessor :enable_all_data_type_translation_keys_for_translators
37
+
38
+ # (Optional) We can validate and highlight your ICU messages. <a href=\"https://help.phrase.com/help/icu-message-format\">Read more</a>
39
+ attr_accessor :enable_icu_message_format
40
+
41
+ # (Optional) Displays the input fields for the 'ZERO' plural form for every key as well although only some languages require the 'ZERO' explicitly.
42
+ attr_accessor :zero_plural_form_enabled
43
+
44
+ # (Optional) Autopilot, requires machine_translation_enabled. <a href=\"https://help.phrase.com/help/autopilot\">Read more</a>
45
+ attr_accessor :autotranslate_enabled
46
+
47
+ # (Optional) Requires autotranslate_enabled to be true
48
+ attr_accessor :autotranslate_check_new_translation_keys
49
+
50
+ # (Optional) Requires autotranslate_enabled to be true
51
+ attr_accessor :autotranslate_check_new_uploads
52
+
53
+ # (Optional) Requires autotranslate_enabled to be true
54
+ attr_accessor :autotranslate_check_new_locales
55
+
56
+ # (Optional) Requires autotranslate_enabled to be true
57
+ attr_accessor :autotranslate_mark_as_unverified
58
+
59
+ # (Optional) Requires autotranslate_enabled to be true
60
+ attr_accessor :autotranslate_use_machine_translation
61
+
62
+ # (Optional) Requires autotranslate_enabled to be true
63
+ attr_accessor :autotranslate_use_translation_memory
64
+
65
+ # (Optional) Smart Suggest, requires machine_translation_enabled
66
+ attr_accessor :smart_suggest_enabled
67
+
68
+ # (Optional) Requires smart_suggest_enabled to be true
69
+ attr_accessor :smart_suggest_use_glossary
70
+
71
+ # (Optional) Requires smart_suggest_enabled to be true
72
+ attr_accessor :smart_suggest_use_machine_translation
22
73
 
23
74
  # Attribute mapping from ruby-style variable name to JSON key.
24
75
  def self.attribute_map
25
76
  {
77
+ :'account_id' => :'account_id',
26
78
  :'name' => :'name',
27
79
  :'main_format' => :'main_format',
28
80
  :'shares_translation_memory' => :'shares_translation_memory',
29
81
  :'project_image' => :'project_image',
30
82
  :'remove_project_image' => :'remove_project_image',
31
- :'account_id' => :'account_id'
83
+ :'workflow' => :'workflow',
84
+ :'machine_translation_enabled' => :'machine_translation_enabled',
85
+ :'enable_branching' => :'enable_branching',
86
+ :'protect_master_branch' => :'protect_master_branch',
87
+ :'enable_all_data_type_translation_keys_for_translators' => :'enable_all_data_type_translation_keys_for_translators',
88
+ :'enable_icu_message_format' => :'enable_icu_message_format',
89
+ :'zero_plural_form_enabled' => :'zero_plural_form_enabled',
90
+ :'autotranslate_enabled' => :'autotranslate_enabled',
91
+ :'autotranslate_check_new_translation_keys' => :'autotranslate_check_new_translation_keys',
92
+ :'autotranslate_check_new_uploads' => :'autotranslate_check_new_uploads',
93
+ :'autotranslate_check_new_locales' => :'autotranslate_check_new_locales',
94
+ :'autotranslate_mark_as_unverified' => :'autotranslate_mark_as_unverified',
95
+ :'autotranslate_use_machine_translation' => :'autotranslate_use_machine_translation',
96
+ :'autotranslate_use_translation_memory' => :'autotranslate_use_translation_memory',
97
+ :'smart_suggest_enabled' => :'smart_suggest_enabled',
98
+ :'smart_suggest_use_glossary' => :'smart_suggest_use_glossary',
99
+ :'smart_suggest_use_machine_translation' => :'smart_suggest_use_machine_translation'
32
100
  }
33
101
  end
34
102
 
35
103
  # Attribute type mapping.
36
104
  def self.openapi_types
37
105
  {
106
+ :'account_id' => :'String',
38
107
  :'name' => :'String',
39
108
  :'main_format' => :'String',
40
109
  :'shares_translation_memory' => :'Boolean',
41
110
  :'project_image' => :'File',
42
111
  :'remove_project_image' => :'Boolean',
43
- :'account_id' => :'String'
112
+ :'workflow' => :'String',
113
+ :'machine_translation_enabled' => :'Boolean',
114
+ :'enable_branching' => :'Boolean',
115
+ :'protect_master_branch' => :'Boolean',
116
+ :'enable_all_data_type_translation_keys_for_translators' => :'Boolean',
117
+ :'enable_icu_message_format' => :'Boolean',
118
+ :'zero_plural_form_enabled' => :'Boolean',
119
+ :'autotranslate_enabled' => :'Boolean',
120
+ :'autotranslate_check_new_translation_keys' => :'Boolean',
121
+ :'autotranslate_check_new_uploads' => :'Boolean',
122
+ :'autotranslate_check_new_locales' => :'Boolean',
123
+ :'autotranslate_mark_as_unverified' => :'Boolean',
124
+ :'autotranslate_use_machine_translation' => :'Boolean',
125
+ :'autotranslate_use_translation_memory' => :'Boolean',
126
+ :'smart_suggest_enabled' => :'Boolean',
127
+ :'smart_suggest_use_glossary' => :'Boolean',
128
+ :'smart_suggest_use_machine_translation' => :'Boolean'
44
129
  }
45
130
  end
46
131
 
@@ -65,6 +150,10 @@ module Phrase
65
150
  h[k.to_sym] = v
66
151
  }
67
152
 
153
+ if attributes.key?(:'account_id')
154
+ self.account_id = attributes[:'account_id']
155
+ end
156
+
68
157
  if attributes.key?(:'name')
69
158
  self.name = attributes[:'name']
70
159
  end
@@ -85,8 +174,72 @@ module Phrase
85
174
  self.remove_project_image = attributes[:'remove_project_image']
86
175
  end
87
176
 
88
- if attributes.key?(:'account_id')
89
- self.account_id = attributes[:'account_id']
177
+ if attributes.key?(:'workflow')
178
+ self.workflow = attributes[:'workflow']
179
+ end
180
+
181
+ if attributes.key?(:'machine_translation_enabled')
182
+ self.machine_translation_enabled = attributes[:'machine_translation_enabled']
183
+ end
184
+
185
+ if attributes.key?(:'enable_branching')
186
+ self.enable_branching = attributes[:'enable_branching']
187
+ end
188
+
189
+ if attributes.key?(:'protect_master_branch')
190
+ self.protect_master_branch = attributes[:'protect_master_branch']
191
+ end
192
+
193
+ if attributes.key?(:'enable_all_data_type_translation_keys_for_translators')
194
+ self.enable_all_data_type_translation_keys_for_translators = attributes[:'enable_all_data_type_translation_keys_for_translators']
195
+ end
196
+
197
+ if attributes.key?(:'enable_icu_message_format')
198
+ self.enable_icu_message_format = attributes[:'enable_icu_message_format']
199
+ end
200
+
201
+ if attributes.key?(:'zero_plural_form_enabled')
202
+ self.zero_plural_form_enabled = attributes[:'zero_plural_form_enabled']
203
+ end
204
+
205
+ if attributes.key?(:'autotranslate_enabled')
206
+ self.autotranslate_enabled = attributes[:'autotranslate_enabled']
207
+ end
208
+
209
+ if attributes.key?(:'autotranslate_check_new_translation_keys')
210
+ self.autotranslate_check_new_translation_keys = attributes[:'autotranslate_check_new_translation_keys']
211
+ end
212
+
213
+ if attributes.key?(:'autotranslate_check_new_uploads')
214
+ self.autotranslate_check_new_uploads = attributes[:'autotranslate_check_new_uploads']
215
+ end
216
+
217
+ if attributes.key?(:'autotranslate_check_new_locales')
218
+ self.autotranslate_check_new_locales = attributes[:'autotranslate_check_new_locales']
219
+ end
220
+
221
+ if attributes.key?(:'autotranslate_mark_as_unverified')
222
+ self.autotranslate_mark_as_unverified = attributes[:'autotranslate_mark_as_unverified']
223
+ end
224
+
225
+ if attributes.key?(:'autotranslate_use_machine_translation')
226
+ self.autotranslate_use_machine_translation = attributes[:'autotranslate_use_machine_translation']
227
+ end
228
+
229
+ if attributes.key?(:'autotranslate_use_translation_memory')
230
+ self.autotranslate_use_translation_memory = attributes[:'autotranslate_use_translation_memory']
231
+ end
232
+
233
+ if attributes.key?(:'smart_suggest_enabled')
234
+ self.smart_suggest_enabled = attributes[:'smart_suggest_enabled']
235
+ end
236
+
237
+ if attributes.key?(:'smart_suggest_use_glossary')
238
+ self.smart_suggest_use_glossary = attributes[:'smart_suggest_use_glossary']
239
+ end
240
+
241
+ if attributes.key?(:'smart_suggest_use_machine_translation')
242
+ self.smart_suggest_use_machine_translation = attributes[:'smart_suggest_use_machine_translation']
90
243
  end
91
244
  end
92
245
 
@@ -108,12 +261,29 @@ module Phrase
108
261
  def ==(o)
109
262
  return true if self.equal?(o)
110
263
  self.class == o.class &&
264
+ account_id == o.account_id &&
111
265
  name == o.name &&
112
266
  main_format == o.main_format &&
113
267
  shares_translation_memory == o.shares_translation_memory &&
114
268
  project_image == o.project_image &&
115
269
  remove_project_image == o.remove_project_image &&
116
- account_id == o.account_id
270
+ workflow == o.workflow &&
271
+ machine_translation_enabled == o.machine_translation_enabled &&
272
+ enable_branching == o.enable_branching &&
273
+ protect_master_branch == o.protect_master_branch &&
274
+ enable_all_data_type_translation_keys_for_translators == o.enable_all_data_type_translation_keys_for_translators &&
275
+ enable_icu_message_format == o.enable_icu_message_format &&
276
+ zero_plural_form_enabled == o.zero_plural_form_enabled &&
277
+ autotranslate_enabled == o.autotranslate_enabled &&
278
+ autotranslate_check_new_translation_keys == o.autotranslate_check_new_translation_keys &&
279
+ autotranslate_check_new_uploads == o.autotranslate_check_new_uploads &&
280
+ autotranslate_check_new_locales == o.autotranslate_check_new_locales &&
281
+ autotranslate_mark_as_unverified == o.autotranslate_mark_as_unverified &&
282
+ autotranslate_use_machine_translation == o.autotranslate_use_machine_translation &&
283
+ autotranslate_use_translation_memory == o.autotranslate_use_translation_memory &&
284
+ smart_suggest_enabled == o.smart_suggest_enabled &&
285
+ smart_suggest_use_glossary == o.smart_suggest_use_glossary &&
286
+ smart_suggest_use_machine_translation == o.smart_suggest_use_machine_translation
117
287
  end
118
288
 
119
289
  # @see the `==` method
@@ -125,7 +295,7 @@ module Phrase
125
295
  # Calculates hash code according to all attributes.
126
296
  # @return [Integer] Hash code
127
297
  def hash
128
- [name, main_format, shares_translation_memory, project_image, remove_project_image, account_id].hash
298
+ [account_id, name, main_format, shares_translation_memory, project_image, remove_project_image, workflow, machine_translation_enabled, enable_branching, protect_master_branch, enable_all_data_type_translation_keys_for_translators, enable_icu_message_format, zero_plural_form_enabled, autotranslate_enabled, autotranslate_check_new_translation_keys, autotranslate_check_new_uploads, autotranslate_check_new_locales, autotranslate_mark_as_unverified, autotranslate_use_machine_translation, autotranslate_use_translation_memory, smart_suggest_enabled, smart_suggest_use_glossary, smart_suggest_use_machine_translation].hash
129
299
  end
130
300
 
131
301
  # Builds the object from hash