phrase 4.22.0 → 4.23.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 (204) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +8 -6
  4. data/docs/AccountDetails.md +1 -1
  5. data/docs/AuthorizationsApi.md +1 -1
  6. data/docs/Automation.md +6 -0
  7. data/docs/AutomationsApi.md +1 -1
  8. data/docs/AutomationsCreateParameters.md +5 -1
  9. data/docs/AutomationsCreateParameters1.md +5 -1
  10. data/docs/BlacklistedKeysApi.md +1 -1
  11. data/docs/Branch.md +2 -0
  12. data/docs/BranchCreateParameters.md +3 -1
  13. data/docs/BranchMergeParameters.md +1 -1
  14. data/docs/BranchSyncParameters.md +1 -1
  15. data/docs/BranchesApi.md +10 -10
  16. data/docs/CommentsApi.md +7 -7
  17. data/docs/Distribution.md +4 -4
  18. data/docs/{DistributionPreview.md → DistributionDetails.md} +9 -3
  19. data/docs/DistributionsApi.md +9 -9
  20. data/docs/DocumentDelete422Response.md +19 -0
  21. data/docs/{CustomMetadataPropertyCreate422ResponseErrorsInner.md → DocumentDelete422ResponseErrorsInner.md} +2 -2
  22. data/docs/DocumentsApi.md +4 -2
  23. data/docs/FigmaAttachmentsApi.md +1 -1
  24. data/docs/GlossariesApi.md +1 -1
  25. data/docs/Glossary.md +2 -0
  26. data/docs/GlossaryTerm.md +2 -0
  27. data/docs/GlossaryTermGlossary.md +19 -0
  28. data/docs/GlossaryTermTranslationsApi.md +1 -1
  29. data/docs/GlossaryTermsApi.md +1 -1
  30. data/docs/IcuSkeletonParameters.md +3 -1
  31. data/docs/Invitation.md +2 -2
  32. data/docs/InvitationsApi.md +1 -1
  33. data/docs/Job.md +5 -1
  34. data/docs/JobDetails.md +8 -2
  35. data/docs/JobTemplate.md +2 -0
  36. data/docs/JobTemplateDetails.md +2 -0
  37. data/docs/JobTemplatesApi.md +1 -1
  38. data/docs/JobsApi.md +15 -9
  39. data/docs/KeyCreateParameters.md +6 -2
  40. data/docs/KeyUpdateParameters.md +6 -2
  41. data/docs/KeysApi.md +1 -1
  42. data/docs/LocalesApi.md +6 -2
  43. data/docs/MembersApi.md +1 -1
  44. data/docs/NotificationsApi.md +3 -1
  45. data/docs/OrdersApi.md +4 -2
  46. data/docs/OrganizationJobTemplate.md +4 -0
  47. data/docs/OrganizationJobTemplateDetails.md +4 -0
  48. data/docs/OrganizationJobTemplatesApi.md +1 -1
  49. data/docs/ProjectCreateParameters.md +17 -1
  50. data/docs/ProjectDetails.md +7 -1
  51. data/docs/ProjectUpdateParameters.md +17 -3
  52. data/docs/ProjectsApi.md +10 -8
  53. data/docs/Release.md +2 -0
  54. data/docs/ReleasesApi.md +1 -1
  55. data/docs/RepoSync.md +2 -0
  56. data/docs/ScreenshotMarker.md +2 -2
  57. data/docs/ScreenshotMarkerPresentation.md +23 -0
  58. data/docs/ScreenshotMarkersApi.md +1 -1
  59. data/docs/ScreenshotUpdateParameters.md +1 -1
  60. data/docs/ScreenshotsApi.md +1 -1
  61. data/docs/SearchInAccountParameters.md +3 -1
  62. data/docs/StyleGuidesApi.md +1 -1
  63. data/docs/StyleguideCreateParameters.md +3 -3
  64. data/docs/StyleguideUpdateParameters.md +3 -3
  65. data/docs/Tag.md +2 -0
  66. data/docs/TagWithStats.md +2 -0
  67. data/docs/TagsApi.md +5 -3
  68. data/docs/TranslationCreateParameters.md +5 -1
  69. data/docs/TranslationOrder.md +2 -2
  70. data/docs/TranslationUpdateParameters.md +3 -1
  71. data/docs/TranslationsApi.md +4 -0
  72. data/docs/UploadBatch.md +4 -2
  73. data/docs/UploadsApi.md +3 -1
  74. data/docs/VariablesApi.md +1 -1
  75. data/docs/WebhooksApi.md +7 -6
  76. data/lib/phrase/api/authorizations_api.rb +2 -0
  77. data/lib/phrase/api/automations_api.rb +2 -0
  78. data/lib/phrase/api/blacklisted_keys_api.rb +2 -0
  79. data/lib/phrase/api/branches_api.rb +20 -14
  80. data/lib/phrase/api/comments_api.rb +18 -4
  81. data/lib/phrase/api/distributions_api.rb +14 -12
  82. data/lib/phrase/api/documents_api.rb +5 -0
  83. data/lib/phrase/api/figma_attachments_api.rb +2 -0
  84. data/lib/phrase/api/glossaries_api.rb +2 -0
  85. data/lib/phrase/api/glossary_term_translations_api.rb +2 -0
  86. data/lib/phrase/api/glossary_terms_api.rb +2 -0
  87. data/lib/phrase/api/invitations_api.rb +2 -0
  88. data/lib/phrase/api/job_templates_api.rb +2 -0
  89. data/lib/phrase/api/jobs_api.rb +18 -6
  90. data/lib/phrase/api/keys_api.rb +2 -0
  91. data/lib/phrase/api/locales_api.rb +8 -0
  92. data/lib/phrase/api/members_api.rb +2 -0
  93. data/lib/phrase/api/notifications_api.rb +3 -0
  94. data/lib/phrase/api/orders_api.rb +5 -0
  95. data/lib/phrase/api/organization_job_templates_api.rb +2 -0
  96. data/lib/phrase/api/projects_api.rb +23 -10
  97. data/lib/phrase/api/releases_api.rb +2 -0
  98. data/lib/phrase/api/screenshot_markers_api.rb +2 -0
  99. data/lib/phrase/api/screenshots_api.rb +2 -0
  100. data/lib/phrase/api/style_guides_api.rb +2 -0
  101. data/lib/phrase/api/tags_api.rb +7 -2
  102. data/lib/phrase/api/translations_api.rb +6 -0
  103. data/lib/phrase/api/uploads_api.rb +3 -0
  104. data/lib/phrase/api/variables_api.rb +2 -0
  105. data/lib/phrase/api/webhooks_api.rb +9 -5
  106. data/lib/phrase/models/account_details.rb +1 -0
  107. data/lib/phrase/models/authorization_create_parameters.rb +22 -0
  108. data/lib/phrase/models/authorization_update_parameters.rb +22 -0
  109. data/lib/phrase/models/automation.rb +34 -1
  110. data/lib/phrase/models/automations_create_parameters.rb +24 -4
  111. data/lib/phrase/models/automations_create_parameters1.rb +24 -4
  112. data/lib/phrase/models/branch.rb +46 -1
  113. data/lib/phrase/models/branch_create_parameters.rb +14 -4
  114. data/lib/phrase/models/branch_merge_parameters.rb +35 -1
  115. data/lib/phrase/models/branch_sync_parameters.rb +35 -1
  116. data/lib/phrase/models/distribution.rb +17 -20
  117. data/lib/phrase/models/{distribution_preview.rb → distribution_details.rb} +46 -7
  118. data/lib/phrase/models/{custom_metadata_property_create422_response.rb → document_delete422_response.rb} +4 -4
  119. data/lib/phrase/models/{custom_metadata_property_create422_response_errors_inner.rb → document_delete422_response_errors_inner.rb} +3 -3
  120. data/lib/phrase/models/glossary.rb +12 -1
  121. data/lib/phrase/models/glossary_term.rb +10 -1
  122. data/lib/phrase/models/glossary_term_glossary.rb +206 -0
  123. data/lib/phrase/models/icu_skeleton_parameters.rb +12 -2
  124. data/lib/phrase/models/invitation.rb +9 -8
  125. data/lib/phrase/models/job.rb +26 -4
  126. data/lib/phrase/models/job_details.rb +37 -4
  127. data/lib/phrase/models/job_template.rb +11 -1
  128. data/lib/phrase/models/job_template_details.rb +11 -1
  129. data/lib/phrase/models/key_create_parameters.rb +26 -4
  130. data/lib/phrase/models/key_update_parameters.rb +26 -4
  131. data/lib/phrase/models/organization_job_template.rb +22 -1
  132. data/lib/phrase/models/organization_job_template_details.rb +22 -1
  133. data/lib/phrase/models/project_create_parameters.rb +115 -1
  134. data/lib/phrase/models/project_details.rb +31 -4
  135. data/lib/phrase/models/project_update_parameters.rb +75 -5
  136. data/lib/phrase/models/release.rb +10 -1
  137. data/lib/phrase/models/repo_sync.rb +12 -1
  138. data/lib/phrase/models/screenshot_marker.rb +2 -1
  139. data/lib/phrase/models/screenshot_marker_presentation.rb +224 -0
  140. data/lib/phrase/models/search_in_account_parameters.rb +16 -4
  141. data/lib/phrase/models/styleguide_create_parameters.rb +61 -3
  142. data/lib/phrase/models/styleguide_update_parameters.rb +61 -3
  143. data/lib/phrase/models/tag.rb +11 -1
  144. data/lib/phrase/models/tag_with_stats.rb +11 -1
  145. data/lib/phrase/models/translation_create_parameters.rb +24 -4
  146. data/lib/phrase/models/translation_order.rb +8 -7
  147. data/lib/phrase/models/translation_update_parameters.rb +14 -4
  148. data/lib/phrase/models/upload_batch.rb +24 -14
  149. data/lib/phrase/version.rb +1 -1
  150. data/lib/phrase.rb +5 -3
  151. data/spec/api/branches_api_spec.rb +7 -7
  152. data/spec/api/comments_api_spec.rb +2 -2
  153. data/spec/api/distributions_api_spec.rb +4 -4
  154. data/spec/api/documents_api_spec.rb +1 -0
  155. data/spec/api/jobs_api_spec.rb +4 -2
  156. data/spec/api/notifications_api_spec.rb +1 -0
  157. data/spec/api/orders_api_spec.rb +1 -0
  158. data/spec/api/projects_api_spec.rb +6 -5
  159. data/spec/api/tags_api_spec.rb +2 -1
  160. data/spec/api/translations_api_spec.rb +2 -0
  161. data/spec/api/webhooks_api_spec.rb +2 -2
  162. data/spec/models/authorization_create_parameters_spec.rb +4 -0
  163. data/spec/models/authorization_update_parameters_spec.rb +4 -0
  164. data/spec/models/automation_spec.rb +18 -0
  165. data/spec/models/automations_create_parameters1_spec.rb +12 -0
  166. data/spec/models/automations_create_parameters_spec.rb +12 -0
  167. data/spec/models/branch_create_parameters_spec.rb +6 -0
  168. data/spec/models/branch_merge_parameters_spec.rb +4 -0
  169. data/spec/models/branch_spec.rb +10 -0
  170. data/spec/models/branch_sync_parameters_spec.rb +4 -0
  171. data/spec/models/{distribution_preview_spec.rb → distribution_details_spec.rb} +24 -6
  172. data/spec/models/distribution_spec.rb +3 -3
  173. data/spec/models/{custom_metadata_property_create422_response_errors_inner_spec.rb → document_delete422_response_errors_inner_spec.rb} +6 -6
  174. data/spec/models/{custom_metadata_property_create422_response_spec.rb → document_delete422_response_spec.rb} +6 -6
  175. data/spec/models/glossary_spec.rb +6 -0
  176. data/spec/models/glossary_term_glossary_spec.rb +35 -0
  177. data/spec/models/glossary_term_spec.rb +6 -0
  178. data/spec/models/icu_skeleton_parameters_spec.rb +6 -0
  179. data/spec/models/invitation_spec.rb +1 -1
  180. data/spec/models/job_details_spec.rb +18 -0
  181. data/spec/models/job_spec.rb +12 -0
  182. data/spec/models/job_template_details_spec.rb +6 -0
  183. data/spec/models/job_template_spec.rb +6 -0
  184. data/spec/models/key_create_parameters_spec.rb +12 -0
  185. data/spec/models/key_update_parameters_spec.rb +12 -0
  186. data/spec/models/organization_job_template_details_spec.rb +12 -0
  187. data/spec/models/organization_job_template_spec.rb +12 -0
  188. data/spec/models/project_create_parameters_spec.rb +52 -0
  189. data/spec/models/project_details_spec.rb +18 -0
  190. data/spec/models/project_update_parameters_spec.rb +42 -0
  191. data/spec/models/release_spec.rb +6 -0
  192. data/spec/models/repo_sync_spec.rb +6 -0
  193. data/spec/models/screenshot_marker_presentation_spec.rb +47 -0
  194. data/spec/models/search_in_account_parameters_spec.rb +6 -0
  195. data/spec/models/styleguide_create_parameters_spec.rb +12 -0
  196. data/spec/models/styleguide_update_parameters_spec.rb +12 -0
  197. data/spec/models/tag_spec.rb +6 -0
  198. data/spec/models/tag_with_stats_spec.rb +6 -0
  199. data/spec/models/translation_create_parameters_spec.rb +12 -0
  200. data/spec/models/translation_order_spec.rb +1 -1
  201. data/spec/models/translation_update_parameters_spec.rb +6 -0
  202. data/spec/models/upload_batch_spec.rb +8 -2
  203. metadata +267 -259
  204. data/docs/CustomMetadataPropertyCreate422Response.md +0 -19
@@ -26,6 +26,12 @@ module Phrase
26
26
  # Indicates whether the translation should be auto-translated. Responses with status 422 if provided for translation within a non-default locale or the project does not have the Autopilot feature enabled.
27
27
  attr_accessor :autotranslate
28
28
 
29
+ # When `true`, the translation is marked as a minor edit and does not trigger downstream re-verification on the linked locales' translations.
30
+ attr_accessor :minor_change
31
+
32
+ # When `true` and the project's review workflow is enabled, the translation is created in the `reviewed` state.
33
+ attr_accessor :reviewed
34
+
29
35
  # Attribute mapping from ruby-style variable name to JSON key.
30
36
  def self.attribute_map
31
37
  {
@@ -36,7 +42,9 @@ module Phrase
36
42
  :'plural_suffix' => :'plural_suffix',
37
43
  :'unverified' => :'unverified',
38
44
  :'excluded' => :'excluded',
39
- :'autotranslate' => :'autotranslate'
45
+ :'autotranslate' => :'autotranslate',
46
+ :'minor_change' => :'minor_change',
47
+ :'reviewed' => :'reviewed'
40
48
  }
41
49
  end
42
50
 
@@ -50,7 +58,9 @@ module Phrase
50
58
  :'plural_suffix' => :'String',
51
59
  :'unverified' => :'Boolean',
52
60
  :'excluded' => :'Boolean',
53
- :'autotranslate' => :'Boolean'
61
+ :'autotranslate' => :'Boolean',
62
+ :'minor_change' => :'Boolean',
63
+ :'reviewed' => :'Boolean'
54
64
  }
55
65
  end
56
66
 
@@ -106,6 +116,14 @@ module Phrase
106
116
  if attributes.key?(:'autotranslate')
107
117
  self.autotranslate = attributes[:'autotranslate']
108
118
  end
119
+
120
+ if attributes.key?(:'minor_change')
121
+ self.minor_change = attributes[:'minor_change']
122
+ end
123
+
124
+ if attributes.key?(:'reviewed')
125
+ self.reviewed = attributes[:'reviewed']
126
+ end
109
127
  end
110
128
 
111
129
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -133,7 +151,9 @@ module Phrase
133
151
  plural_suffix == o.plural_suffix &&
134
152
  unverified == o.unverified &&
135
153
  excluded == o.excluded &&
136
- autotranslate == o.autotranslate
154
+ autotranslate == o.autotranslate &&
155
+ minor_change == o.minor_change &&
156
+ reviewed == o.reviewed
137
157
  end
138
158
 
139
159
  # @see the `==` method
@@ -145,7 +165,7 @@ module Phrase
145
165
  # Calculates hash code according to all attributes.
146
166
  # @return [Integer] Hash code
147
167
  def hash
148
- [branch, locale_id, key_id, content, plural_suffix, unverified, excluded, autotranslate].hash
168
+ [branch, locale_id, key_id, content, plural_suffix, unverified, excluded, autotranslate, minor_change, reviewed].hash
149
169
  end
150
170
 
151
171
  # Builds the object from hash
@@ -24,7 +24,8 @@ module Phrase
24
24
 
25
25
  attr_accessor :target_locales
26
26
 
27
- attr_accessor :tag
27
+ # Name of the tag whose keys are included in the order.
28
+ attr_accessor :tag_name
28
29
 
29
30
  attr_accessor :styleguide
30
31
 
@@ -52,7 +53,7 @@ module Phrase
52
53
  :'progress_percent' => :'progress_percent',
53
54
  :'source_locale' => :'source_locale',
54
55
  :'target_locales' => :'target_locales',
55
- :'tag' => :'tag',
56
+ :'tag_name' => :'tag_name',
56
57
  :'styleguide' => :'styleguide',
57
58
  :'unverify_translations_upon_delivery' => :'unverify_translations_upon_delivery',
58
59
  :'quality' => :'quality',
@@ -76,7 +77,7 @@ module Phrase
76
77
  :'progress_percent' => :'Integer',
77
78
  :'source_locale' => :'LocalePreview',
78
79
  :'target_locales' => :'Array<LocalePreview>',
79
- :'tag' => :'String',
80
+ :'tag_name' => :'String',
80
81
  :'styleguide' => :'StyleguidePreview',
81
82
  :'unverify_translations_upon_delivery' => :'Boolean',
82
83
  :'quality' => :'Boolean',
@@ -153,8 +154,8 @@ module Phrase
153
154
  end
154
155
  end
155
156
 
156
- if attributes.key?(:'tag')
157
- self.tag = attributes[:'tag']
157
+ if attributes.key?(:'tag_name')
158
+ self.tag_name = attributes[:'tag_name']
158
159
  end
159
160
 
160
161
  if attributes.key?(:'styleguide')
@@ -211,7 +212,7 @@ module Phrase
211
212
  progress_percent == o.progress_percent &&
212
213
  source_locale == o.source_locale &&
213
214
  target_locales == o.target_locales &&
214
- tag == o.tag &&
215
+ tag_name == o.tag_name &&
215
216
  styleguide == o.styleguide &&
216
217
  unverify_translations_upon_delivery == o.unverify_translations_upon_delivery &&
217
218
  quality == o.quality &&
@@ -229,7 +230,7 @@ module Phrase
229
230
  # Calculates hash code according to all attributes.
230
231
  # @return [Integer] Hash code
231
232
  def hash
232
- [id, name, lsp, amount_in_cents, currency, message, state, translation_type, progress_percent, source_locale, target_locales, tag, styleguide, unverify_translations_upon_delivery, quality, priority, created_at, updated_at].hash
233
+ [id, name, lsp, amount_in_cents, currency, message, state, translation_type, progress_percent, source_locale, target_locales, tag_name, styleguide, unverify_translations_upon_delivery, quality, priority, created_at, updated_at].hash
233
234
  end
234
235
 
235
236
  # Builds the object from hash
@@ -23,6 +23,9 @@ module Phrase
23
23
  # When set to `true`, the translation will be marked as reviewed.
24
24
  attr_accessor :reviewed
25
25
 
26
+ # When `true`, the update is treated as a minor edit and does not trigger downstream re-verification on the linked locales' translations.
27
+ attr_accessor :minor_change
28
+
26
29
  # Attribute mapping from ruby-style variable name to JSON key.
27
30
  def self.attribute_map
28
31
  {
@@ -32,7 +35,8 @@ module Phrase
32
35
  :'unverified' => :'unverified',
33
36
  :'excluded' => :'excluded',
34
37
  :'autotranslate' => :'autotranslate',
35
- :'reviewed' => :'reviewed'
38
+ :'reviewed' => :'reviewed',
39
+ :'minor_change' => :'minor_change'
36
40
  }
37
41
  end
38
42
 
@@ -45,7 +49,8 @@ module Phrase
45
49
  :'unverified' => :'Boolean',
46
50
  :'excluded' => :'Boolean',
47
51
  :'autotranslate' => :'Boolean',
48
- :'reviewed' => :'Boolean'
52
+ :'reviewed' => :'Boolean',
53
+ :'minor_change' => :'Boolean'
49
54
  }
50
55
  end
51
56
 
@@ -97,6 +102,10 @@ module Phrase
97
102
  if attributes.key?(:'reviewed')
98
103
  self.reviewed = attributes[:'reviewed']
99
104
  end
105
+
106
+ if attributes.key?(:'minor_change')
107
+ self.minor_change = attributes[:'minor_change']
108
+ end
100
109
  end
101
110
 
102
111
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -123,7 +132,8 @@ module Phrase
123
132
  unverified == o.unverified &&
124
133
  excluded == o.excluded &&
125
134
  autotranslate == o.autotranslate &&
126
- reviewed == o.reviewed
135
+ reviewed == o.reviewed &&
136
+ minor_change == o.minor_change
127
137
  end
128
138
 
129
139
  # @see the `==` method
@@ -135,7 +145,7 @@ module Phrase
135
145
  # Calculates hash code according to all attributes.
136
146
  # @return [Integer] Hash code
137
147
  def hash
138
- [branch, content, plural_suffix, unverified, excluded, autotranslate, reviewed].hash
148
+ [branch, content, plural_suffix, unverified, excluded, autotranslate, reviewed, minor_change].hash
139
149
  end
140
150
 
141
151
  # Builds the object from hash
@@ -3,11 +3,14 @@ require 'date'
3
3
  module Phrase
4
4
  class UploadBatch
5
5
  # Processing state of the upload batch
6
- attr_accessor :state
6
+ attr_accessor :status
7
7
 
8
8
  # Indicates whether unmentioned keys will be deleted after processing all uploads in the batch
9
9
  attr_accessor :delete_unmentioned_keys
10
10
 
11
+ # Number of uploads attached to this batch.
12
+ attr_accessor :uploads_count
13
+
11
14
  attr_accessor :created_at
12
15
 
13
16
  attr_accessor :updated_at
@@ -43,8 +46,9 @@ module Phrase
43
46
  # Attribute mapping from ruby-style variable name to JSON key.
44
47
  def self.attribute_map
45
48
  {
46
- :'state' => :'state',
49
+ :'status' => :'status',
47
50
  :'delete_unmentioned_keys' => :'delete_unmentioned_keys',
51
+ :'uploads_count' => :'uploads_count',
48
52
  :'created_at' => :'created_at',
49
53
  :'updated_at' => :'updated_at',
50
54
  :'project' => :'project',
@@ -56,8 +60,9 @@ module Phrase
56
60
  # Attribute type mapping.
57
61
  def self.openapi_types
58
62
  {
59
- :'state' => :'String',
63
+ :'status' => :'String',
60
64
  :'delete_unmentioned_keys' => :'Boolean',
65
+ :'uploads_count' => :'Integer',
61
66
  :'created_at' => :'DateTime',
62
67
  :'updated_at' => :'DateTime',
63
68
  :'project' => :'ProjectShort',
@@ -87,14 +92,18 @@ module Phrase
87
92
  h[k.to_sym] = v
88
93
  }
89
94
 
90
- if attributes.key?(:'state')
91
- self.state = attributes[:'state']
95
+ if attributes.key?(:'status')
96
+ self.status = attributes[:'status']
92
97
  end
93
98
 
94
99
  if attributes.key?(:'delete_unmentioned_keys')
95
100
  self.delete_unmentioned_keys = attributes[:'delete_unmentioned_keys']
96
101
  end
97
102
 
103
+ if attributes.key?(:'uploads_count')
104
+ self.uploads_count = attributes[:'uploads_count']
105
+ end
106
+
98
107
  if attributes.key?(:'created_at')
99
108
  self.created_at = attributes[:'created_at']
100
109
  end
@@ -128,19 +137,19 @@ module Phrase
128
137
  # Check to see if the all the properties in the model are valid
129
138
  # @return true if the model is valid
130
139
  def valid?
131
- state_validator = EnumAttributeValidator.new('String', ["started", "done"])
132
- return false unless state_validator.valid?(@state)
140
+ status_validator = EnumAttributeValidator.new('String', ["started", "done"])
141
+ return false unless status_validator.valid?(@status)
133
142
  true
134
143
  end
135
144
 
136
145
  # Custom attribute writer method checking allowed values (enum).
137
- # @param [Object] state Object to be assigned
138
- def state=(state)
146
+ # @param [Object] status Object to be assigned
147
+ def status=(status)
139
148
  validator = EnumAttributeValidator.new('String', ["started", "done"])
140
- unless validator.valid?(state)
141
- fail ArgumentError, "invalid value for \"state\", must be one of #{validator.allowable_values}."
149
+ unless validator.valid?(status)
150
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
142
151
  end
143
- @state = state
152
+ @status = status
144
153
  end
145
154
 
146
155
  # Checks equality by comparing each attribute.
@@ -148,8 +157,9 @@ module Phrase
148
157
  def ==(o)
149
158
  return true if self.equal?(o)
150
159
  self.class == o.class &&
151
- state == o.state &&
160
+ status == o.status &&
152
161
  delete_unmentioned_keys == o.delete_unmentioned_keys &&
162
+ uploads_count == o.uploads_count &&
153
163
  created_at == o.created_at &&
154
164
  updated_at == o.updated_at &&
155
165
  project == o.project &&
@@ -166,7 +176,7 @@ module Phrase
166
176
  # Calculates hash code according to all attributes.
167
177
  # @return [Integer] Hash code
168
178
  def hash
169
- [state, delete_unmentioned_keys, created_at, updated_at, project, user, uploads].hash
179
+ [status, delete_unmentioned_keys, uploads_count, created_at, updated_at, project, user, uploads].hash
170
180
  end
171
181
 
172
182
  # Builds the object from hash
@@ -1,3 +1,3 @@
1
1
  module Phrase
2
- VERSION = '4.22.0'
2
+ VERSION = '4.23.0'
3
3
  end
data/lib/phrase.rb CHANGED
@@ -41,13 +41,13 @@ require 'phrase/models/custom_metadata_data_type'
41
41
  require 'phrase/models/custom_metadata_properties_create_parameters'
42
42
  require 'phrase/models/custom_metadata_properties_update_parameters'
43
43
  require 'phrase/models/custom_metadata_property'
44
- require 'phrase/models/custom_metadata_property_create422_response'
45
- require 'phrase/models/custom_metadata_property_create422_response_errors_inner'
46
44
  require 'phrase/models/distribution'
47
45
  require 'phrase/models/distribution_create_parameters'
48
- require 'phrase/models/distribution_preview'
46
+ require 'phrase/models/distribution_details'
49
47
  require 'phrase/models/distribution_update_parameters'
50
48
  require 'phrase/models/document'
49
+ require 'phrase/models/document_delete422_response'
50
+ require 'phrase/models/document_delete422_response_errors_inner'
51
51
  require 'phrase/models/error'
52
52
  require 'phrase/models/error_error'
53
53
  require 'phrase/models/figma_attachment'
@@ -58,6 +58,7 @@ require 'phrase/models/glossary'
58
58
  require 'phrase/models/glossary_create_parameters'
59
59
  require 'phrase/models/glossary_term'
60
60
  require 'phrase/models/glossary_term_create_parameters'
61
+ require 'phrase/models/glossary_term_glossary'
61
62
  require 'phrase/models/glossary_term_translation'
62
63
  require 'phrase/models/glossary_term_translation_create_parameters'
63
64
  require 'phrase/models/glossary_term_translation_update_parameters'
@@ -170,6 +171,7 @@ require 'phrase/models/repo_sync_import_parameters'
170
171
  require 'phrase/models/screenshot'
171
172
  require 'phrase/models/screenshot_marker'
172
173
  require 'phrase/models/screenshot_marker_create_parameters'
174
+ require 'phrase/models/screenshot_marker_presentation'
173
175
  require 'phrase/models/screenshot_marker_update_parameters'
174
176
  require 'phrase/models/screenshot_update_parameters'
175
177
  require 'phrase/models/search_in_account_parameters'
@@ -51,7 +51,7 @@ describe 'BranchesApi' do
51
51
 
52
52
  # unit tests for branch_create
53
53
  # Create a branch
54
- # Create a new branch. *Note: Creating a new branch may take several minutes depending on the project size.*
54
+ # Create a new branch. Branch project provisioning runs asynchronously, so the newly created branch is returned in a transitional state (typically &#x60;creating_branch&#x60;) and only reaches &#x60;success&#x60; once the underlying project has been set up. Poll the branch resource until its &#x60;state&#x60; becomes &#x60;success&#x60; before performing further operations on it. Requires the Branching feature to be enabled on the account. *Note: Creating a new branch may take several minutes depending on the project size.*
55
55
  # @param project_id Project ID
56
56
  # @param branch_create_parameters
57
57
  # @param [Hash] opts the optional parameters
@@ -65,7 +65,7 @@ describe 'BranchesApi' do
65
65
 
66
66
  # unit tests for branch_delete
67
67
  # Delete a branch
68
- # Delete an existing branch.
68
+ # Delete an existing branch. A branch cannot be deleted while it still has open jobs or open translation orders attached to its branch project — in that case the request is rejected with &#x60;409 Conflict&#x60;. A branch whose current &#x60;state&#x60; does not allow deletion (for example, while a merge or sync is in progress) is rejected with &#x60;422 Unprocessable Entity&#x60;. Requires the Branching feature to be enabled on the account.
69
69
  # @param project_id Project ID
70
70
  # @param name name
71
71
  # @param [Hash] opts the optional parameters
@@ -79,7 +79,7 @@ describe 'BranchesApi' do
79
79
 
80
80
  # unit tests for branch_merge
81
81
  # Merge a branch
82
- # Merge an existing branch. *Note: Merging a branch may take several minutes depending on diff size.*
82
+ # Merge an existing branch back into its base branch. The merge runs asynchronously. The branch transitions to &#x60;merging_branch&#x60; and settles in &#x60;merged&#x60;, &#x60;merge_error&#x60;, or &#x60;merge_conflict&#x60; once the background job completes; the response body for this request is empty. Poll the branch resource to observe the final state. A branch cannot be merged while it still has open jobs or open translation orders attached to its branch project — in that case the request is rejected with &#x60;409 Conflict&#x60;. A branch whose current &#x60;state&#x60; does not allow a merge is rejected with &#x60;422 Unprocessable Entity&#x60;. Requires the Branching feature to be enabled on the account. *Note: Merging a branch may take several minutes depending on diff size.*
83
83
  # @param project_id Project ID
84
84
  # @param name name
85
85
  # @param branch_merge_parameters
@@ -94,7 +94,7 @@ describe 'BranchesApi' do
94
94
 
95
95
  # unit tests for branch_show
96
96
  # Get a single branch
97
- # Get details on a single branch for a given project.
97
+ # Get details on a single branch for a given project. Requires the Branching feature to be enabled on the account.
98
98
  # @param project_id Project ID
99
99
  # @param name name
100
100
  # @param [Hash] opts the optional parameters
@@ -108,7 +108,7 @@ describe 'BranchesApi' do
108
108
 
109
109
  # unit tests for branch_sync
110
110
  # Sync a branch
111
- # Sync an existing branch. *Note: Only available for branches created with new branching.*
111
+ # Pull changes from the base branch into this branch, applying the chosen conflict-resolution strategy. The sync runs asynchronously. The branch transitions to &#x60;syncing_branch&#x60; and settles back into &#x60;success&#x60; (or &#x60;merge_conflict&#x60; / &#x60;branch_error&#x60;) once the background job completes; the response body for this request is empty. Poll the branch resource to observe the final state. Only branches created with the newer branching system can be synced. Requests against branches from the older system, or against branches whose current state does not allow a sync, are rejected with &#x60;422 Unprocessable Entity&#x60; and an empty body. Requires the Branching feature to be enabled on the account.
112
112
  # @param project_id Project ID
113
113
  # @param name name
114
114
  # @param branch_sync_parameters
@@ -123,7 +123,7 @@ describe 'BranchesApi' do
123
123
 
124
124
  # unit tests for branch_update
125
125
  # Update a branch
126
- # Update an existing branch.
126
+ # Update an existing branch. Only the branch name can be changed. Requires the Branching feature to be enabled on the account.
127
127
  # @param project_id Project ID
128
128
  # @param name name
129
129
  # @param branch_update_parameters
@@ -138,7 +138,7 @@ describe 'BranchesApi' do
138
138
 
139
139
  # unit tests for branches_list
140
140
  # List branches
141
- # List all branches the of the current project.
141
+ # List all branches of the current project. Requires the Branching feature to be enabled on the account.
142
142
  # @param project_id Project ID
143
143
  # @param [Hash] opts the optional parameters
144
144
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
@@ -143,8 +143,8 @@ describe 'CommentsApi' do
143
143
  # @option opts [String] :branch specify the branch to use
144
144
  # @option opts [String] :query Search query for comment messages
145
145
  # @option opts [Array<String>] :locale_ids Search comments by their assigned locales
146
- # @option opts [Array<String>] :filters Specify the filter for the comments
147
- # @option opts [String] :order Order direction. Can be one of: asc, desc.
146
+ # @option opts [Array<String>] :filters Specify the filter for the comments. Supported values are &#x60;read&#x60; and &#x60;unread&#x60;. Combine both to return all comments (read + unread) without filtering.
147
+ # @option opts [String] :order Order direction. Defaults to &#x60;desc&#x60;. Values other than &#x60;asc&#x60; and &#x60;desc&#x60; fall back to &#x60;desc&#x60;.
148
148
  # @return [Array<Comment>]
149
149
  describe 'comments_list test' do
150
150
  it 'should work' do
@@ -27,7 +27,7 @@ describe 'DistributionsApi' do
27
27
  # @param distribution_create_parameters
28
28
  # @param [Hash] opts the optional parameters
29
29
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
30
- # @return [Distribution]
30
+ # @return [DistributionDetails]
31
31
  describe 'distribution_create test' do
32
32
  it 'should work' do
33
33
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -55,7 +55,7 @@ describe 'DistributionsApi' do
55
55
  # @param id ID
56
56
  # @param [Hash] opts the optional parameters
57
57
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
58
- # @return [Distribution]
58
+ # @return [DistributionDetails]
59
59
  describe 'distribution_show test' do
60
60
  it 'should work' do
61
61
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -70,7 +70,7 @@ describe 'DistributionsApi' do
70
70
  # @param distribution_update_parameters
71
71
  # @param [Hash] opts the optional parameters
72
72
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
73
- # @return [Distribution]
73
+ # @return [DistributionDetails]
74
74
  describe 'distribution_update test' do
75
75
  it 'should work' do
76
76
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -85,7 +85,7 @@ describe 'DistributionsApi' do
85
85
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
86
86
  # @option opts [Integer] :page Page number
87
87
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
88
- # @return [Array<DistributionPreview>]
88
+ # @return [Array<Distribution>]
89
89
  describe 'distributions_list test' do
90
90
  it 'should work' do
91
91
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -42,6 +42,7 @@ describe 'DocumentsApi' do
42
42
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
43
43
  # @option opts [Integer] :page Page number
44
44
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
45
+ # @option opts [String] :q Search query. Filters documents by name (case-insensitive substring match).
45
46
  # @return [Array<Document>]
46
47
  describe 'documents_list test' do
47
48
  it 'should work' do
@@ -102,7 +102,7 @@ describe 'JobsApi' do
102
102
  # @param [Hash] opts the optional parameters
103
103
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
104
104
  # @option opts [String] :branch specify the branch to use
105
- # @return [nil]
105
+ # @return [JobDetails]
106
106
  describe 'job_lock test' do
107
107
  it 'should work' do
108
108
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -164,7 +164,7 @@ describe 'JobsApi' do
164
164
  # @param [Hash] opts the optional parameters
165
165
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
166
166
  # @option opts [String] :branch specify the branch to use
167
- # @return [nil]
167
+ # @return [JobDetails]
168
168
  describe 'job_unlock test' do
169
169
  it 'should work' do
170
170
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -217,6 +217,8 @@ describe 'JobsApi' do
217
217
  # @option opts [String] :owned_by filter by user owning job
218
218
  # @option opts [String] :assigned_to filter by user assigned to job
219
219
  # @option opts [String] :state filter by state of job; valid states are: &#x60;draft&#x60;, &#x60;in_progress&#x60;, &#x60;completed&#x60;
220
+ # @option opts [Array<String>] :states Filter by multiple job states at once. Accepted values are the same as &#x60;state&#x60;. When supplied, &#x60;state&#x60; is ignored. Rejected with &#x60;400 Bad Request&#x60; if any value is unknown.
221
+ # @option opts [String] :key_id Filter to jobs that include the translation key identified by this code (matches via the job&#39;s tags).
220
222
  # @option opts [String] :updated_since filter by jobs updated since given date
221
223
  # @return [Array<Job>]
222
224
  describe 'jobs_list test' do
@@ -28,6 +28,7 @@ describe 'NotificationsApi' do
28
28
  # @option opts [Integer] :page Page number
29
29
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
30
30
  # @option opts [Boolean] :unseen Include only unseen notifications
31
+ # @option opts [Integer] :last_days Restrict the results to notifications created within the last N days. Coerced to integer; non-numeric values resolve to 0 (returning nothing).
31
32
  # @return [Array<Notification>]
32
33
  describe 'notifications_list test' do
33
34
  it 'should work' do
@@ -88,6 +88,7 @@ describe 'OrdersApi' do
88
88
  # @option opts [Integer] :page Page number
89
89
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
90
90
  # @option opts [String] :branch specify the branch to use
91
+ # @option opts [String] :translation_id Filter the result to orders that include the given translation. When supplied with a translation code that does not exist, an empty list is returned.
91
92
  # @return [Array<TranslationOrder>]
92
93
  describe 'orders_list test' do
93
94
  it 'should work' do
@@ -22,7 +22,7 @@ describe 'ProjectsApi' do
22
22
 
23
23
  # unit tests for project_create
24
24
  # Create a project
25
- # Create a new project.
25
+ # Create a new project in the given account. When &#x60;source_project_id&#x60; is supplied, the new project is created as a clone of that project. All locales, keys, and translations are copied asynchronously after the response is returned, so they may not be available immediately. Settings from the source project are inherited unless explicitly overridden in the request; in clone mode, the &#x60;shares_translation_memory&#x60; field is ignored and inherited from the source. &#x60;shares_translation_memory&#x60; defaults to &#x60;true&#x60; when omitted on a non-clone create.
26
26
  # @param project_create_parameters
27
27
  # @param [Hash] opts the optional parameters
28
28
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
@@ -35,7 +35,7 @@ describe 'ProjectsApi' do
35
35
 
36
36
  # unit tests for project_delete
37
37
  # Delete a project
38
- # Delete an existing project.
38
+ # Delete an existing project. Associated repository syncs and OTA distributions are removed. A &#x60;project:delete&#x60; event is dispatched.
39
39
  # @param id ID
40
40
  # @param [Hash] opts the optional parameters
41
41
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
@@ -75,14 +75,15 @@ describe 'ProjectsApi' do
75
75
 
76
76
  # unit tests for projects_list
77
77
  # List projects
78
- # List all projects the current user has access to.
78
+ # List all projects the current user has access to. When the &#x60;account_id&#x60; query parameter is omitted, the response includes projects across every account the user is a member of. Pass &#x60;account_id&#x60; to scope the results to a single account.
79
79
  # @param [Hash] opts the optional parameters
80
80
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
81
81
  # @option opts [Integer] :page Page number
82
82
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
83
83
  # @option opts [String] :account_id Filter by Account ID
84
- # @option opts [String] :sort_by Sort projects. Valid options are \&quot;name_asc\&quot;, \&quot;name_desc\&quot;, \&quot;updated_at_asc\&quot;, \&quot;updated_at_desc\&quot;, \&quot;space_asc\&quot; and \&quot;space_desc\&quot;.
85
- # @option opts [Array<String>] :filters Filter projects. Valid options are [\&quot;favorites\&quot;].
84
+ # @option opts [String] :sort_by Sort projects. Valid values are &#x60;name_asc&#x60;, &#x60;name_desc&#x60;, &#x60;updated_at_asc&#x60;, &#x60;updated_at_desc&#x60;, &#x60;space_asc&#x60;, and &#x60;space_desc&#x60;. The trailing direction segment is optional; if omitted or invalid, projects are sorted ascending. Any other value is ignored and the default ordering is returned.
85
+ # @option opts [Array<String>] :filters Filter projects. The only supported value is &#x60;favorites&#x60;, which restricts the results to projects the current user has starred.
86
+ # @option opts [String] :q Search query. The only supported syntax is &#x60;name:&lt;text&gt;&#x60; — for example &#x60;name:android&#x60; returns projects whose name matches &#x60;android&#x60; (case-insensitive substring). Any value that does not match the &#x60;name:&#x60; prefix is ignored.
86
87
  # @return [Array<Project>]
87
88
  describe 'projects_list test' do
88
89
  it 'should work' do
@@ -73,7 +73,8 @@ describe 'TagsApi' do
73
73
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
74
74
  # @option opts [Integer] :page Page number
75
75
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
76
- # @option opts [Boolean] :exclude_system_tags excludes tags generated by the system, e.g. job, upload or figma tags
76
+ # @option opts [Boolean] :exclude_system_tags Excludes tags generated by the system, e.g. job, upload or figma tags. Mutually exclusive with &#x60;only_system_tags&#x60;.
77
+ # @option opts [Boolean] :only_system_tags Returns only system-generated tags (e.g. job, upload, figma) and excludes user-defined tags. Mutually exclusive with &#x60;exclude_system_tags&#x60;.
77
78
  # @option opts [String] :branch specify the branch to use
78
79
  # @option opts [String] :q Specify a query to filter tags by name.
79
80
  # @return [Array<Tag>]
@@ -233,6 +233,8 @@ describe 'TranslationsApi' do
233
233
  # @option opts [Integer] :page Page number
234
234
  # @option opts [Integer] :per_page Limit on the number of objects to be returned, between 1 and 100. 25 by default
235
235
  # @option opts [String] :branch specify the branch to use
236
+ # @option opts [String] :key_id Filter translations to those attached to the key identified by this code. Equivalent to calling &#x60;GET /projects/{project_id}/keys/{key_id}/translations&#x60;.
237
+ # @option opts [String] :locale_id Filter translations to those for the given locale (locale code or id). Equivalent to calling &#x60;GET /projects/{project_id}/locales/{locale_id}/translations&#x60;.
236
238
  # @option opts [String] :sort Sort criteria. Can be one of: key_name, created_at, updated_at.
237
239
  # @option opts [String] :order Order direction. Can be one of: asc, desc.
238
240
  # @option opts [String] :q Specify a query to find translations by content (including wildcards). *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* The following qualifiers are supported in the query: * &#x60;id:translation_id,...&#x60; for queries on a comma-separated list of ids * &#x60;tags:XYZ&#x60; for tags on the translation * &#x60;unverified:{true|false}&#x60; for verification status * &#x60;excluded:{true|false}&#x60; for exclusion status * &#x60;updated_at:{&gt;&#x3D;|&lt;&#x3D;}2013-02-21T00:00:00Z&#x60; for date range queries * &#x60;reviewed_after:2013-02-21T00:00:00Z&#x60; for fetching translations that were reviewed after the given timestamp Find more examples [here](/en/api/strings/usage-examples).
@@ -64,12 +64,12 @@ describe 'WebhooksApi' do
64
64
 
65
65
  # unit tests for webhook_test
66
66
  # Test a webhook
67
- # Perform a test request for a webhook.
67
+ # Perform a test request for a webhook. Sends a synthetic &#x60;test:event&#x60; payload to the webhook&#39;s &#x60;callback_url&#x60; and returns the webhook resource.
68
68
  # @param project_id Project ID
69
69
  # @param id ID
70
70
  # @param [Hash] opts the optional parameters
71
71
  # @option opts [String] :x_phrase_app_otp Two-Factor-Authentication token (optional)
72
- # @return [nil]
72
+ # @return [Webhook]
73
73
  describe 'webhook_test test' do
74
74
  it 'should work' do
75
75
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
@@ -29,6 +29,10 @@ describe 'AuthorizationCreateParameters' do
29
29
  describe 'test attribute "scopes"' do
30
30
  it 'should work' do
31
31
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
32
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', ["read", "write", "orders.create", "team.manage"])
33
+ # validator.allowable_values.each do |value|
34
+ # expect { @instance.scopes = value }.not_to raise_error
35
+ # end
32
36
  end
33
37
  end
34
38
 
@@ -29,6 +29,10 @@ describe 'AuthorizationUpdateParameters' do
29
29
  describe 'test attribute "scopes"' do
30
30
  it 'should work' do
31
31
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
32
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', ["read", "write", "orders.create", "team.manage"])
33
+ # validator.allowable_values.each do |value|
34
+ # expect { @instance.scopes = value }.not_to raise_error
35
+ # end
32
36
  end
33
37
  end
34
38
 
@@ -68,12 +68,30 @@ describe 'Automation' do
68
68
  end
69
69
  end
70
70
 
71
+ describe 'test attribute "project_ids"' do
72
+ it 'should work' do
73
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
74
+ end
75
+ end
76
+
71
77
  describe 'test attribute "job_template_id"' do
72
78
  it 'should work' do
73
79
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
74
80
  end
75
81
  end
76
82
 
83
+ describe 'test attribute "job_owner_id"' do
84
+ it 'should work' do
85
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
86
+ end
87
+ end
88
+
89
+ describe 'test attribute "include_only_updated_locales"' do
90
+ it 'should work' do
91
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
92
+ end
93
+ end
94
+
77
95
  describe 'test attribute "tags"' do
78
96
  it 'should work' do
79
97
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers